]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONQADataMakerRec.h
Speed up CE code - Using floats instead of the TVectorF
[u/mrichter/AliRoot.git] / MUON / AliMUONQADataMakerRec.h
CommitLineData
7d5d0cc5 1#ifndef ALIMUONQADATAMAKERREC_H
2#define ALIMUONQADATAMAKERREC_H
04236e67 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
bf4d93eb 6// $Id$
7
04236e67 8/// \ingroup rec
9/// \class AliMUONQADataMakerRec
10/// \brief MUON Quality assurance data maker
11///
04236e67 12
04236e67 13// --- AliRoot header files ---
c92a8c85 14#include "AliQADataMakerRec.h"
15#include "AliMUONRecoParam.h"
16
7035694f 17class AliMUONDigitMaker;
f587a77d 18class AliMUONVClusterStore;
b9bd355c 19class AliMUONVDigitStore;
20class AliMUONVStore;
de1d4a53 21class AliMUONVTrackerData;
f587a77d 22class AliMUONVTrackerDataMaker;
df48c8a4 23class AliMUONCalibrationData;
24class AliMUONTriggerElectronics;
b9bd355c 25
26class AliMUONQAMappingCheck;
f587a77d 27
04236e67 28class AliMUONQADataMakerRec: public AliQADataMakerRec {
29
30public:
b8bd1ab8 31 AliMUONQADataMakerRec();
04236e67 32 AliMUONQADataMakerRec(const AliMUONQADataMakerRec& qadm);
33 AliMUONQADataMakerRec& operator=(const AliMUONQADataMakerRec& qadm);
34 virtual ~AliMUONQADataMakerRec();
35
de1d4a53 36 AliMUONVTrackerData* GetTrackerData() const;
8f29b706 37
38 virtual void InitRaws();
39 virtual void InitRecPoints();
40
7d5d0cc5 41protected:
42
43 virtual void StartOfDetectorCycle();
44
44ed7a66 45 virtual void InitDigits();
7d5d0cc5 46 virtual void InitESDs();
47
48 virtual void MakeRaws(AliRawReader* rawReader);
44ed7a66 49 virtual void MakeDigits(TTree* dig);
6252ceeb 50 virtual void MakeDigits() {return;}
7d5d0cc5 51 virtual void MakeRecPoints(TTree* recpo);
52 virtual void MakeESDs(AliESDEvent* esd) ;
53
4e25ac79 54 virtual void DefaultEndOfDetectorCycle(AliQAv1::TASKINDEX_t) {}
7d5d0cc5 55
4e25ac79 56 virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list);
7d5d0cc5 57
04236e67 58private:
b62881f2 59 /// Raw histograms indices
60 enum ERaw {
43b113b8 61 kTrackerData = 3, ///< Accumulated data
5bb54f70 62 kTrackerBusPatchOccupancy = 4, ///< Bus patch occupancies
8f29b706 63 kTrackerBusPatchNofPads = 5, ///< Number of pads per bus patch
64 kTrackerBusPatchNofManus = 6, ///< Number of manus per bus patch
43b113b8 65 kTriggerScalers = 22, ///< Trigger scalers histogram per plane index
66 kTriggerScalersDisplay = 30, ///< Trigger scalers display histogram per plane index
67 kTriggerScalersTime = 38, ///< Trigger scalers acquisition time index
68 kTriggerRPCi = 39, ///< Trigger chamber currents index
df48c8a4 69 kTriggerRPChv = 43, ///< Trigger chamber HV index
70 kTriggerErrorLocalXPos = 50, ///< Local board: Number of XPos Error vs Local Board Id
71 kTriggerErrorLocalYPos = 51, ///< Local board: Number of YPos Error vs Local Board Id
72 kTriggerErrorLocalDev = 52, ///< Local board: Number of Deviation Error vs Local Board
73 kTriggerErrorLocalTriggerDec = 53, ///< Local board: Number of Trigger Decision (All Pt) Error vs Local Board Id
74 kTriggerErrorLocalLPtLSB = 54, ///< Local board: Number of LSB Low Pt Error vs Local Board Id
75 kTriggerErrorLocalLPtMSB = 55, ///< Local board: Number of MSB Low Pt Error vs Local Board Id
76 kTriggerErrorLocalHPtLSB = 56, ///< Local board: Number of LSB High Pt Error vs Local Board Id
77 kTriggerErrorLocalHPtMSB = 57, ///< Local board: Number of MSB High Pt Error vs Local Board Id
78 kTriggerErrorLocal2RegionalLPtLSB = 58, ///< Local to Regional: Number of LPt LSB error vs Local Board Id
79 kTriggerErrorLocal2RegionalLPtMSB = 59, ///< Local to Regional: Number of LPt MSB error vs Local Board Id
80 kTriggerErrorLocal2RegionalHPtLSB = 60, ///< Local to Regional: Number of HPt LSB error vs Local Board Id
81 kTriggerErrorLocal2RegionalHPtMSB = 61, ///< Local to Regional: Number of HPt MSB error vs Local Board Id
82 kTriggerErrorOutGlobalFromInGlobal = 62, ///< Global board: Number of error vs output bit
83 kTriggerError = 63, ///< percentage of error for each trigger decision level (Local, Reg->Local, Reg, Reg->Glob, Global)
84 kTriggerErrorLocalTrigY = 64, ///< Local board: Number of TrigY Error vs Local Board Id
85 kTriggerErrorLocalYCopy = 65, ///< Local board: Number of Y Copy Error vs Local Board Id
86
87 kRawNAnalyzedEvents = 66 ///< Number of analyzed events per event specie
b62881f2 88 };
89
90 /// Rec points histograms indices
91 enum ERecPoints {
43b113b8 92 kTriggerDigits = 0, ///< Trigger digits histogram per plane index
93 kTriggeredBoards = 8, ///< Triggered boards histogram index
94 kTriggerDigitsDisplay = 9, ///< Trigger digits display histogram per plane index
95 kTriggerBoardsDisplay = 17, ///< Triggered boards display histogram index
719914e0 96
97 kNAnalyzedEvents = 90, ///< Number of analyzed events per event specie
c92a8c85 98
2d114b34 99 kTrackerNumberOfClustersPerChamber = 100, ///< Tracker: number of clusters per chamber
100 kTrackerClusterMultiplicityPerChMean = 101, ///< cluster size per Ch: mean
101 kTrackerClusterMultiplicityPerChSigma = 102, ///< cluster size per Ch: dispersion
102 kTrackerClusterChargePerChMean = 103, ///< cluster charge per Ch: mean
103 kTrackerClusterChargePerChSigma = 104, ///< cluster charge per Ch: dispersion
b9bd355c 104
105 kTrackerRecPoints = 105, ///< Tracker : tracker data of clusters (all and mono-cathode ones)
106
c92a8c85 107 kTrackerClusterMultiplicityPerChamber = 200, ///< Tracker: cluster multiplicity per chamber
108 kTrackerClusterChargePerChamber = 300, ///< Tracker: cluster charge per chamber
2d114b34 109 kTrackerClusterHitMapPerChamber = 400, ///< Tracker: cluster position distribution per chamber
110
111 kTrackerNumberOfClustersPerDE = 1000, ///< Tracker : number of clusters per DE
112 kTrackerClusterMultiplicityPerDEMean = 1001, ///< cluster size per DE: mean
113 kTrackerClusterChargePerDEMean = 1002, ///< cluster charge per DE: mean
114
c92a8c85 115 kTrackerClusterMultiplicityPerDE = 3000, ///< Tracker : cluster multiplicity per DE
116 kTrackerClusterChargePerDE = 5000 ///< Tracker : cluster charge per DE
b9bd355c 117
b62881f2 118 };
c92a8c85 119
b62881f2 120 /// ESD histograms indices
121 enum EESD {
5a240757 122 kESDnTracks = 0, ///< number of tracks
123 kESDMatchTrig = 1, ///< number of tracks matched with trigger
124 kESDMomentum = 2, ///< P distribution
125 kESDPt = 3, ///< Pt distribution
126 kESDRapidity = 4, ///< rapidity distribution
127 kESDChi2 = 5, ///< normalized chi2 distribution
128 kESDProbChi2 = 6, ///< distribution of probability of chi2
c92a8c85 129
5a240757 130 kESDClusterHitMap = 7, ///< cluster position distribution in chamber i
131 kESDnClustersPerTrack = 17, ///< number of clusters per track
132 kESDnClustersPerCh = 18, ///< number of clusters per chamber per track
133 kESDnClustersPerDE = 19, ///< number of clusters per DE per track
134 kESDClusterChargeInCh = 20, ///< cluster charge distribution in chamber i
135 kESDClusterChargePerChMean = 30, ///< cluster charge per Ch: mean
136 kESDClusterChargePerChSigma = 31, ///< cluster charge per Ch: dispersion
137 kESDClusterChargePerDE = 32, ///< cluster charge per DE: mean
138 kESDClusterSizeInCh = 33, ///< cluster size distribution in chamber i
139 kESDClusterSizePerChMean = 43, ///< cluster size per Ch: mean
140 kESDClusterSizePerChSigma = 44, ///< cluster size per Ch: dispersion
141 kESDClusterSizePerDE = 45, ///< cluster size per DE: mean
c92a8c85 142
5a240757 143 kESDResidualXInCh = 46, ///< cluster-track residual-X distribution in chamber i
144 kESDResidualYInCh = 56, ///< cluster-track residual-Y distribution in chamber i
145 kESDResidualXPerChMean = 66, ///< cluster-track residual-X per Ch: mean
146 kESDResidualYPerChMean = 67, ///< cluster-track residual-Y per Ch: mean
147 kESDResidualXPerChSigma = 68, ///< cluster-track residual-X per Ch: dispersion
148 kESDResidualYPerChSigma = 69, ///< cluster-track residual-Y per Ch: dispersion
149 kESDResidualXPerDEMean = 70, ///< cluster-track residual-X per DE: mean
150 kESDResidualYPerDEMean = 71, ///< cluster-track residual-Y per DE: mean
151 kESDResidualXPerDESigma = 72, ///< cluster-track residual-X per DE: dispersion
152 kESDResidualYPerDESigma = 73, ///< cluster-track residual-Y per DE: dispersion
153 kESDLocalChi2XInCh = 74, ///< local chi2-X distribution in chamber i
154 kESDLocalChi2YInCh = 84, ///< local chi2-Y distribution in chamber i
155 kESDLocalChi2XPerChMean = 94, ///< local chi2-X per Ch: mean
156 kESDLocalChi2YPerChMean = 95, ///< local chi2-Y per Ch: mean
157 kESDLocalChi2XPerDEMean = 96, ///< local chi2-X per DE: mean
abcfd6d0 158 kESDLocalChi2YPerDEMean = 97, ///< local chi2-Y per DE: mean
d1e6fdee 159 kESDLocalChi2InCh = 98, ///< local chi2-X distribution in chamber i
160 kESDLocalChi2PerChMean = 108, ///< local chi2 per Ch: mean
161 kESDLocalChi2PerDEMean = 109, ///< local chi2 per DE: mean
162
163 kESDThetaX = 110, ///< thetaX distribution
164 kESDThetaY = 111, ///< thetaY distribution
abcfd6d0 165
166 kESDnTotClustersPerCh = 1000, ///< total number of associated clusters per chamber
167 kESDnTotClustersPerDE = 1001, ///< total number of associated clusters per DE
168 kESDnTotFullClustersPerDE = 1002, ///< total number of associated clusters containing pad info per DE
169 kESDSumClusterChargePerDE = 1003, ///< sum of cluster charge per DE
170 kESDSumClusterSizePerDE = 1004, ///< sum of cluster size per DE
171 kESDSumResidualXPerDE = 1005, ///< sum of cluster-track residual-X per DE
172 kESDSumResidualYPerDE = 1006, ///< sum of cluster-track residual-Y per DE
173 kESDSumResidualX2PerDE = 1007, ///< sum of cluster-track residual-X**2 per DE
174 kESDSumResidualY2PerDE = 1008, ///< sum of cluster-track residual-Y**2 per DE
175 kESDSumLocalChi2XPerDE = 1009, ///< sum of local chi2-X per DE
d1e6fdee 176 kESDSumLocalChi2YPerDE = 1010, ///< sum of local chi2-Y per DE
2126074b 177 kESDSumLocalChi2PerDE = 1011 ///< sum of local chi2 per DE
b62881f2 178 };
abcfd6d0 179
8f29b706 180private:
181 void BeautifyTrackerBusPatchOccupancy(TH1& hbp);
182
b9bd355c 183 void EndOfDetectorCycleRaws(Int_t specie, TObjArray** list);
184 void EndOfDetectorCycleRecPoints(Int_t specie, TObjArray** list);
185 void EndOfDetectorCycleESDs();
186
187 void InsertTrackerData(Int_t specie, TObjArray** list, TObject* object,
188 Int_t indexNumber, Bool_t replace=kFALSE);
189
f587a77d 190private:
191
21973f26 192 void Ctor();
4e25ac79 193 void DisplayTriggerInfo(AliQAv1::TASKINDEX_t task);
49e110ec 194 Bool_t FillTriggerDCSHistos();
21973f26 195 void InitRecPointsTracker();
196 void InitRecPointsTrigger();
197 void MakeRawsTracker(AliRawReader* rawReader);
198 void MakeRawsTrigger(AliRawReader* rawReader);
f587a77d 199 void MakeRecPointsTracker(TTree* treeR);
200 void MakeRecPointsTrigger(TTree* treeR);
df48c8a4 201 void RawTriggerInRegional2OutRegional();
202 void RawTriggerInGlobal2OutGlobal();
203 void RawTriggerMatchOutLocal();
204 void RawTriggerMatchOutLocalInRegional();
205 void RawTriggerMatchOutGlobalFromInGlobal();
f587a77d 206
21973f26 207 /// Return reco parameters
ac624e6b 208 const AliMUONRecoParam* GetMUONRecoParam() const { return dynamic_cast<const AliMUONRecoParam *>(fRecoParam); }
a0dc65b4 209
df48c8a4 210 Int_t fTriggerOutputLocalDataTriggerDec[235]; ///< Data Local Trigger decision for each active Local Board
211 Int_t fTriggerOutputLocalDataTrigY[235]; ///< Data Local Trigger Y decision for each active Local Board
212 Int_t fTriggerOutputLocalDataLPtDec[2][235]; ///< Data Local decision Low Pt for each active Local Board (2 Bits -> 0:LSB, 1:MSB)
213 Int_t fTriggerOutputLocalDataHPtDec[2][235]; ///< Data Local decision High Pt for each active Local Board (2 Bits -> 0:LSB, 1:MSB)
214 Int_t fTriggerOutputLocalDataXPos[235]; ///< Data Local XPos for each active Local Board
215 Int_t fTriggerOutputLocalDataYPos[235]; ///< Data Local YPos for each active Local Board
216 Int_t fTriggerOutputLocalDataDev[235]; ///< Data Local deviation for each active Local Board
217
218 Int_t fTriggerOutputLocalRecTriggerDec[235]; ///< Reconstructed Local Trigger decision for each active Local Board
219 Int_t fTriggerOutputLocalRecTrigY[235]; ///< Reconstructed Local Trigger Y decision for each active Local Board
220 Int_t fTriggerOutputLocalRecLPtDec[2][235]; ///< Reconstructed Local decision Low Pt for each active Local Board (2 Bits -> 0:LSB, 1:MSB)
221 Int_t fTriggerOutputLocalRecHPtDec[2][235]; ///< Reconstructed Local decision High Pt for each active Local Board (2 Bits -> 0:LSB, 1:MSB)
222 Int_t fTriggerOutputLocalRecXPos[235]; ///< Reconstructed Local XPos for each active Local Board
223 Int_t fTriggerOutputLocalRecYPos[235]; ///< Reconstructed Local YPos for each active Local Board
224 Int_t fTriggerOutputLocalRecDev[235]; ///< Reconstructed Local deviation for each active Local Board
225
226 Int_t fTriggerInputRegionalDataLPt[2][235]; ///< Data Regional Input LPt for each Local board
227 Int_t fTriggerInputRegionalDataHPt[2][235]; ///< Data Regional Input HPt for each Local board
228 Int_t fTriggerOutputRegionalData[16]; ///< Data Regional Trigger decision for each Regional Board (1R:0, 2R:1, ... , 1L:8, ...) -> 4 bits LPt, 4 bits HPt
229 Int_t fTriggerInputRegionalRecLPt[2][16][16]; ///< Reconstructed Regional Input LPt for each Regional Board ([bit][reg][loc]) (reg -> 1R:0, 2R:1, ... , 1L:8, ...)
230 Int_t fTriggerInputRegionalRecHPt[2][16][16]; ///< Reconstructed Regional Input HPt for each Regional Board ([bit][reg][loc]) (reg -> 1R:0, 2R:1, ... , 1L:8, ...)
231 Int_t fTriggerOutputRegionalRec[16]; ///< Reconstructed Regional Trigger decision for each Regional Board (8 Bits)
232
233 Int_t fTriggerInputGlobalDataLPt[16][4]; ///< Data Global inputs LPt (1R:0, 2R:1, ... , 1L:8, ...)
234 Int_t fTriggerInputGlobalDataHPt[16][4]; ///< Data Global inputs HPt (1R:0, 2R:1, ... , 1L:8, ...)
235 Int_t fTriggerOutputGlobalData[6]; ///< Data Global outputs
236 Int_t fTriggerOutputGlobalRecFromGlobalInput[6]; //< Reconstructed Global outputs from Global inputs
237 Int_t fTriggerOutputGlobalRecFromLocalInput[6]; //< Reconstructed Global outputs from Local inputs
238 Int_t fTriggerOutputGlobalRecFromLocalOutput[6]; //< Reconstructed Global outputs from Local outputs
239 Int_t fgitmp[4]; //< Tempory used to store Global inputs
240 Int_t fgotmp[6]; //< Tempory used to store Global outputs
241
242 Int_t fTriggerPatternX1[243][16]; ///< Local pattern X1
243 Int_t fTriggerPatternX2[243][16]; ///< Local pattern X2
244 Int_t fTriggerPatternX3[243][16]; ///< Local pattern X3
245 Int_t fTriggerPatternX4[243][16]; ///< Local pattern X4
246 Int_t fTriggerPatternY1[243][16]; ///< Local pattern Y1
247 Int_t fTriggerPatternY2[243][16]; ///< Local pattern Y2
248 Int_t fTriggerPatternY3[243][16]; ///< Local pattern Y3
249 Int_t fTriggerPatternY4[243][16]; ///< Local pattern Y4
250
251 Bool_t fTriggerErrorLocalYCopy[235]; ///< True if Y copy error for Local Board i
252
b1341ab0 253 AliMUONVDigitStore* fDigitStore; //!< pointer to digits store
b1341ab0 254 AliMUONDigitMaker* fDigitMaker; //!< pointer to digit maker
f587a77d 255 AliMUONVClusterStore* fClusterStore; //!< pointer to cluster store
256
b9bd355c 257 AliMUONVTrackerDataMaker* fTrackerDataMaker; //!< tracker data accumulation (Raw)
258
259 AliMUONQAMappingCheck* fMappingCheckRecPoints; //!< mapping cross-checker (RecPoints)
5a240757 260
df48c8a4 261 AliMUONCalibrationData* fCalibrationData; //!< Used to load Local, Regional and Global masks
262
263 AliMUONTriggerElectronics* fTriggerProcessor; //!< trigger processore to re-compute response
264
265 ClassDef(AliMUONQADataMakerRec,9) // MUON Quality assurance data maker
04236e67 266
267};
268#endif