Cosmic Ray Air Shower Array


1. Intro to the Physics & Hardware
2. Software & Analysis
  § CAMAC Crate
  § KmaxNT
  § A Typical Event
  § Analyzing the Data
  § Determining Pedestals


 

CAMAC Crate

The hardware modules discussed on the last page are not stand-alone. The ADC, Discriminator, and Level Translator are placed in slots of a CAMAC crate, a "minicrate" actually as it's

Figure 10 : The minicrate.
only 11 slots instead of the standard 25. Still they are not usable yet. In the two right-most slots of any CAMAC crate is the Crate Controller (CC). This is the module that is the middle-man between the other modules and the computer. Modules talk to the CC and the CC (ours is a SCSI-2 CC) talks to the computer.

The minicrate is shown in Figure 10. In between the blue ADC and the black Dataway Display (with nifty LED lights all over the front) you can see the back, the CAMAC dataway. All modules are plugged in here like Nintendo cartridges so the CC can communicate with them. (Also so they can get power.) The Crate Controller has the SCSI cable plugged into its front.

Some NIM bins are still used for a couple things. The Gate Generator I used was a NIM module as was the Counter, which just counts pulses sent to it. The delay boxes were made with a NIM module shell. (They're just coils of wire.) Also, the HV power supplies are NIM modules. They don't need the NIM bin for power but they have to go somewhere.

 

KmaxNT

Windows98 is not a real-time operating system so there is no guarantee that a process will execute within a certain time. This is only a problem for runs with a high data rate. For air shower runs where the data rate is only 0.02 Hz or less, this isn't a problem.

Figure 11 : View of 3 panes.

The software package we use is called KmaxNT, made by Sparrow Corporation. It has a built-in code editor and its own language, Command Sequence Language (CSL). Code is written in one pane of the screen and the user interface is created in another. Things like buttons, progress bars, text fields, and histograms can be created for humans. Widgets like buttons can be tied to specific code blocks (called "events", which is really a procedure, not a data event), so when you click a button called "DoStuff1", the CSL event called "DoStuff1" will be posted to an Event Queue and executed in turn.

Data is written to an "edf" (event data format) file, a peculiar binary format only usable by KmaxNT. Since my data-analyzing world doesn't revolve around KmaxNT, I have written an edf to text converter, named edf2txt. These txt files can be further converted by other programs I've written, such as txt4xl which creates a row of ADC data for each event in the run. This can be easily imported into Excel 2000. (Excel 97 is partial to database queries instead of text files.)

 

A Typical Event

Before the run is started, a write file (edf file) is opened. Modules are initialized and discriminator thresholds are set. So here's what happens with a normal event:
  1. A cosmic ray air shower bathes all counters with particles.
  2. While the data signals get delayed by lengths of cable, the trigger signals get sent to a discriminator.
  3. For each trigger signal that's greater than the threshold, -50mV are added to a SUM output which gets sent to a second discriminator.
  4. The second discriminator is set for a certain coincidence of triggers. If the SUM out from the first discriminator is greater than this threshold, an ECL output is sent to a level translator.
  5. The level translator converts the ECL square wave into a NIM square wave and sends it to a gate generator.
  6. The gate generator sets the duration of the pulse and sends it to the GATE input of the ADC.
  7. The ADC receives the GATE window pulse and begins to charge one capacitor for every input channel. When the GATE ends, the capacitors are discharged and the time it takes is converted to a count equivalent to the amount of charge that each input signal contained (0.25pC/count). The values are stored in registers.
  8. The ADC sends a Look-At-Me (LAM) signal over the CAMAC dataway to the crate controller (CC).
  9. The CC sends a signal over the SCSI bus to the computer.
  10. What happens next is cloudy. After an indefinite amount of time (1-170ms), KmaxNT receives the interupt and posts the event "SRQ" to the Event Queue. (SRQ is a predefined procedure in KmaxNT. It exists but you must write the code for what should happen next.)
  11. I have SRQ checking to see which slot sent the original LAM by asking the CC for its LAM register.
  12. The CC responds with all slots that presently have a LAM.
  13. If it was slot 6 (the ADC), I have KmaxNT post a couple events to the Event Queue: "WriteTime" and "ADC_READ".
  14. "WriteTime" executes when it gets to the front of the Event Queue. It writes the date and time to the open write file.
  15. When "ADC_READ" gets to the front of the Event Queue, it gets the data from the ADC channels by telling the CC to perform a read operation on slot 6, subaddress 0 through 11. The data is stored in an array. On the last read, the ADC registers are cleared.
  16. "ADC_READ" then posts another event to the Event Queue which writes the 12 integers to the open write file.
  17. After the last write to file, the event tells the CC to clear the LAM for slot 6. Things are now ready to repeat.
After the run is over (modules stopped with a toolsheet button I created), the write file is closed.

 

Analyzing the Data

I've found the quickest way to look at the data is to use Excel 2000. I can import a text file into a template I created and see if the data looks alright. First thing is to run edf2txt on the edf file. I brilliantly have edf2txt run when you click on an edf file. The conversion runs automatically and you're left with a txt file with the same name as the edf. I thought of maybe having the program ask if you also want to run txt4xl, but decided not to because I won't be working there much longer and didn't want to spend the time to code it. So I made txt4xl an option in the menu that comes up when you right-click on a txt file.

So I import the text file that results after the txt4xl conversion, into Excel. One thing to check with the run is that the data is consistent over the entire run, that no tube's gain fluctuated over the run. This would mean some kind of grounding problem in the tube and many further runs to see why. The graph for this is your basic ADC counts versus time.

Next, the pedestals (the background) must be subtracted from each channel's data. (More on how pedestals are determined later.) Another thing to check is that the ratio of high gain tube to low gain tube on each scintillator is 10:1. This is just plotting for each event the high gain data (y) versus low gain (x). The slope should basically be 10 for points in between y=15 and y=400. The reason for stopping at 400 is the ADC can only integrate so much charge and maxes out at 1129 counts. The ratio between high and low is less and less as you move to higher counts, but is fairly consistent for points in said range.

Another important plot is the one where we compare the histograms of like-gain tubes after pedestal subtraction. The shapes for all low gain tubes should look similar as should the high gains.

Looking at these plots, one can determine if voltages need to be changed or if there's a problem with one of the tubes. So everything up to this point is only what to do to calibrate everything. Only now are we finally getting around to real air shower runs. The array is for students, basically. To have them working with cosmic ray detectors. This set-up is to perform runs and compare the data with expected values, in particular air shower energy versus flux. Low energy air showers are frequent and high energy showers are less so. In short, there are equations you can use to calculate the energy of an event (i.e., an air shower) based on the number of particles in the area covered by scintillator. Plot these data and compare to expected values.

 

Determining Pedestals

I've mentionned the word "pedestal" a lot in reference to the ADC charge integration. Now to finally describe what it is and how to determine it.

If you turn off the PMT (by turning off its HV supply), you get a dead tube. Any integration of the channel associated with this tube during a GATE will give you your background for the channel because there is no signal. (The integration is affected by what cables are connected to the ADC input, so it's best to leave all cables where they normally are during a run.) This background is the minimum amount of charge on the input cable, the pedestal. (The ADC circuit doesn't seem to be able to subtract charge during the GATE, so background charge always adds.)

A pedestal run is when the trigger tubes are powered but the data tubes are not. The thresholds in the discriminators are set to the lowest they can be, -10mV. This is a rate of about 50Hz, the greatest that the PC can do. The bottleneck seems to be Windows since it's not a real-time OS. Otherwise the slow downs would be with KmaxNT's Event Queue. Software is the problem. The old VAX system could only do 3Hz, so this is a vast improvement. Improvements would be using a better OS, using better data acquisition (DAQ) software, using a newer SCSI standard, and getting a faster CC and modules that support Fast-CAMAC. Also, I understand that there's something that has replaced CAMAC though I can't remember what it is.

 


So that's about it. I have taken you through the entire system and what I did at LSU. The air shower array is set up for student projects. The actual research groups have two set-ups: a scanning table and a test stand. I really never got around to the scanning table. The test stand has drift chambers and I would have liked to work more with that as you can figure out actual paths of the particles. But there has been no push to set it up as it hasn't been touched since 1997.

I leave things in this state and wonder what's to become of all the work I put into it as no one else knows much about the software and the behavior of the modules.

 


Copyright 2002, Worldwide Center for the Study of Leif