]>
Commit | Line | Data |
---|---|---|
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 | 17 | class AliMUONDigitMaker; |
f587a77d | 18 | class AliMUONVClusterStore; |
b9bd355c | 19 | class AliMUONVDigitStore; |
20 | class AliMUONVStore; | |
de1d4a53 | 21 | class AliMUONVTrackerData; |
f587a77d | 22 | class AliMUONVTrackerDataMaker; |
df48c8a4 | 23 | class AliMUONCalibrationData; |
24 | class AliMUONTriggerElectronics; | |
b9bd355c | 25 | |
26 | class AliMUONQAMappingCheck; | |
f587a77d | 27 | |
04236e67 | 28 | class AliMUONQADataMakerRec: public AliQADataMakerRec { |
29 | ||
30 | public: | |
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 | 41 | protected: |
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 | 58 | private: |
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 | 180 | private: |
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 | 190 | private: |
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 |