Print

Print


Dear all,
I am starting to write the software that we need during the ECal 
commissioning with the LED system (I'll open a Jira item soon, after 
this first round of e-mail exchange :) ).
However, before writing any line of code, I think it is good to discuss 
with you what is the best strategy to proceed (sorry I probably can't 
attend today's software meeting).

The task that I need to accomplish is the following.

0) Take data with the ECAL in the following mode:

- For a given ECal channel, turn ON the corresponding LED with a certain 
amplitude, take 30s of data, turn it off for 10s, turn it on again with 
a new amplitude, turn it off,...
- The LED system automatically provides this feature (SCAN). For each 
channel, 3 numbers are defined, ampl_low, delta, Nsteps, so that the 
scan is performed with Nsteps LED amplitudes, starting from ampl_low, 
with delta increment. ampl_low, delta, Nsteps will be saved in the 
database (TBD).
- The trigger is provided by the LED system itself.

This will result in a data file with the following structure (for the 
LED being pulsed):

* Data for the first LED amplitude
* A series of "~0" (not necessary there if we have a threshold on the 
amplitude)
* Data for the second LED amplitude
* ....

1) Analyze this file to get the LED response curve, i.e. the measured 
amplitude from (crystal+APD+amplifier+FADC)system VS the LED set amplitude.

This will require to run the reconstruction to produce the 
EcalReadoutHits collection (raw energies). Later, when calibration 
constants will be available, the same procedure can run on the 
EcalCalHits collection.

Preliminary question: actually, the EcalReadoutHits are produced by the 
EcalEvioReader class being "called" from the TestRunEvioToLcio main 
class (to read EVIO). Is this going to be the same also in the 
production run? Will we use the same main class or will be there a 
"HpsRunEvioToLcio" equivalent for the production run?

Main question: what is the best "strategy" to analyze this file? i.e., I 
see two main options:

a) Stay within the hps-java sofware framework and do everything there

Pro1a: everything is done in the same framework.
Pro2a: can use code that is already in place. For example, I'll need to 
access the database to retrieve, for the channel being analyzed, the 3 
numbers: ampl_low, delta, Nsteps.
This is easy to done with the condition system that is already in place.


b) Use hps-java software to produce an lcio file with the 
EcalReadoutHits (or the EcalCalHits later). Then, run a ROOT macro on 
this file (using the LCIO Dictionary that I already tried and I am 
familiar with).
The interaction with the database can be done in hps-java software, 
writing at the end of the lcio reconstruction a txt file with the 
relevant information (ampl_low, delta, Nsteps), and read it in ROOT, OR
ROOT itself can interact with the database.

Pro1b: I already have a similar code (for the CLAS12-FT project) to 
accomplish this task in ROOT, and it is easy to adapt it.
Pro2b: I am more familiar with ROOT than with (any) equivalent JAVA 
analysis package (I need to perform fits with gaussians and polynomials 
and to use TH1, TGraphs, TH2).



c) (not sure how feasible!) Use ROOT within hps-java.


Personally, I would investigate if option c is feasible. If not, I'd 
proceed with option b  because of Pro1b.
However, I'd like to share this questions with you before proceeding

Bests

Andrea

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the HPS-SOFTWARE list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=HPS-SOFTWARE&A=1