Discription of executable files (git ver. /download-gitver/ and Thomas' ver. /download-thomasver/) used to run alibava data analysis is presented here.
Converter and Convert-ped steps
Both entitled steps require following files to be executed
AlibavaConverter.cc -> git ver. and Thomas' ver.
AlibavaConverter.h -> git ver. and Thomas' ver.
remark: both ver. of this code was written by Eda, the versions are called like that for the sake of consistency
Differences between the ver. code
Thomas' code(old) | git ver. (new) |
---|---|
the sensor's temperature is being treated by reading it from the alibava data's header | the sensor's temperature is not being analyzed |
the DUT's inclination angle is being set to the header | the DUT's inclination angle is not taken to account |
reverse beetle reading order is allowed | reverse beetle reading order is not allowed |
Pedestal and pedestal2 steps
Requires the files :
AlibavaPedestalNoiseProcessor.cc
AlibavaPedestalNoiseProcessor.h
Differences between the ver. code
Thomas' code(old) | git ver. (new) |
---|---|
the sensor's temperature is not being analyzed | the sensor's temperature is being analyzed via filling corresponding histos with the use of AlibavaEventImpl.cc |
Commonmode and reco steps
Clustering-1 step
Parameters | Thomas' code: AlibavaClustering.cc | git ver. (new) AlibavaSeedClustering.cc+AlibavaCluster.cc |
---|---|---|
Seed selection criterion A strip is being selected as the seed if its signal-to-noise ratio exceeds this cut: | SeedCut | SeedSNRCut |
Cluster selection criterion A set of strips are being selected as clusters with the seed selected with the parameter above if their signal-to-noise ratios exceed this cut | ClusterCut | NeighbourSNRCut |
Cluster size
| MaxClustersize MinClustersize | |
Cross-talk (signal retardation) noise correstion and FIR (finite impulse response) filter (see details in p. 5.3 of Thomas' thesis) | Allows to correct the charge per channel distr. for the signal retardation (cross-talk) noise. _initcoefficient1 and _initcoefficient2 - the cross–talk noise coefficients, they are being defined on the header step; _readcoefficient1 and _readcoefficient2 - the FIR correction coefficients, they are being defined on the header step; _initcoefficient1, readcoefficient1 shows which fraction of the alibava ch.[i] signal was transfered from the ch.[i-1]; _initcoefficient2, readcoefficient2 shows which fraction of the alibava ch.[i] signal was transfered from the ch.[i-2]. | Doesn't allow to correct the charge per channel distr. for the signal retardation (cross-talk) noise |
Missing coordinate estimation | Calculated the missing y (or x) alibava clusters' coordinates from t |
AlibavaCluster.cc calculates all parameters of the cluster e.g.
Changes implemented by Dmitry:
The following histograms were added to the git ver.:
- Numb. of entries vs. the cluster signal-to-noise ratio, called hClusterSNR_chip_x. It should be used for setting the proper NeighbourSNRCut.
- Numb. of entries vs. the seed signal-to-noise ratio, called hSeedSNR_chip_x. It should be used for setting the proper SeedSNRCut.
- Numb. of entries vs. the cluster signal-to-noise ratio, called hClusterChargevsTDC_chip_x. It should be used for setting the proper TDC cut borders (it's being set for the AlibavaTimeCutProcessor).
(where x is the number of beetle chip, either 0, or 1)
Merge step
Thomas' ver. and git ver. codes are presented
Thomas' code | git ver. |
---|---|
The correlations plots between the telescope planes' and alibava's clusters or hits are being plotted | No histograms filling and plotting at all |
Four options to save the merged data collection(s) for a certain event:
| Write out the output collections regardless presence of clusters in the input collections, but the input collections must be availabe in the input file (i.e. no collection header corruptions etc.) |
includes two parameters for total events number difference | allows to align the events, i.e. to compensate the difference of the total event numbers between the input alibava and telescope event arrays |
allow to merge either just hits, either clusters | mergers clusters of both, sparse and pulse, collections. It's very useful for us, because sparse collections containing clusters seed's coordinates and clusters sizes is filled with zeros for the telescope collection |
Remarks to the code:
Thomas' code | git ver. |
---|---|
unclear how reading of the alibava file is happening: name of the alibava input file is defined and stored, but this variable is never being used in the code or transferred to another code. | I've added the counter of events which contain clusters on each, telescope+DUT+CMSPixRef, planes to check whatever the data losses come from merger or prev. steps. This events fraction is presented on the plot. |
Methods are in use:
EUTelEventImpl is being used to create a matrix of the telescope event's data collections |
AlibavaEventImpl is being used to create a matrix of the telescope event's data collections |
LCCollectionVec method is being used to create (read from the input data file and write to the output file) an array of the data from a certain event's data collection |
TrackerPulseImpl is being used to operate with the pulse data collection(s). It reads/writes the data from/to array element by element among all clusters |
TrackerDataImpl is being used to operate with the sparse data collection(s). It reads/writes the data from/to array with the info about seeds coord. And the clusters parameters, e.g. charge and size, for all clusters at once |
Telescope-clustering step
EUTelFFClusterImpl.cc is responsible for the Seeds coordinates determination.
Hitmaker step
Goal :
- EUTelProcessorHitMaker - to convert coordinates of the clusters' hits from the local 2D frame of each telescope, DUT and CMSPixRef planes to the global 3D telescope frame (see p. 5.3.8 of the Thomas thesis). The local frame is a right-handed Cartesian frame counter-oriented with the beam direction z; the global frame is a right-handed Cartesian frame co-oriented with the beam direction z.
- EUTelPreAlign - finds the planes shifts by minimizing the residuals/difference between the cluster pixels' coordinates of each plane and the ref. plane (tel plane 0 by default) pixels' coordinates
Input: @LcioPath@/@FilePrefix@-merger.slcio - file containing the merged sparse and pulse collections; "GearXMLFile" value="@GearFilePath@/@GearFile@" - gear file containing the telescope geometry description.
Paramters set in the steering-template:
EUTelProcessorHitMaker:
- PulseCollectionName
- HitCollectionName
- EnableLocalCoordidates
- ReferenceCollection
- ReferenceHitFile
EUTelPreAlignment
- InputHitCollectionName
- FixedPlane
- AlignmentConstantLCIOFile
- HotPixelCollectionName
- Events
- ResidualsXMin
- ResidualsXMax
- ResidualsYMin
- ResidualsYMax
- MinNumberOfCorrelatedHits
- HistogramFilling
- DumpGEAR
- NewGEARSuffix
Parameter | Default value |
---|---|
Output: database
This processor
Thomas' code | git. ver |
---|---|
preAlign processor - EUTelPreAlignment.cc. Processor's src was fully changed via used methods modification, logic is the same though | |
#include "EUTelSparseCluster2Impl.h", #include <TrackerHitImpl2.h> - these files don't exist in the current git. ver: def. method is EUTelAPIXSparsePixel | #include "EUTelGeometryTelescopeGeoDescription.h" def. method EUTelAPIXSparsePixel is EUTelGenericSparsePixel |
CombinedHitMaker processor (its code was written by antonio.bulgheroni@gmail.com) | |
EUTelHitMaker.cc - has more functions, allows to calculate more parameters, but cannot be used due to lack of some src and header files in the new EUtel ver. | EUTelProcessorHitMaker.cc - contains 6 functions for definition and calling input parameters, ref hits definition/collection function, |
EUTelVirtualCluster.h EUTelEtaFunctionImpl.h EUTelSparseCluster2Impl.h gear/GearMgr.h gear/SiPlanesParameters.h AIDA/IHistogram3D.h TrackerHitImpl2.h | EUTelGeometryTelescopeGeoDescription.h EUTelSimpleVirtualCluster.h |
Calculates the eta ditr. | doesn't calculate eta distr. |
uses Tel pulse collection as an input, but it's contained by zeros if one looks by dumpevent an idea for workaround is to use sparse collection instead and convert the hits coordinates (not only the seeds coordinates) from the local frame to the global frame. | |
| CellIDEncoder<TrackerPulseImpl> outputEncoder(EUTELESCOPE::PULSEDEFAULTENCODING, filteredCollectionVec) - on the telescope clustering stage, it's exactly where the seeds coordinates are being filled to output pulse collections which are unfortunately being shown as zeros after dumpevent. |
Alignment step
EUTelAlign.cc