]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONQADataMakerRec.h
Updating the RecPoints QA to detect more easily illegitimate mono-cathode clusters
[u/mrichter/AliRoot.git] / MUON / AliMUONQADataMakerRec.h
1 #ifndef ALIMUONQADATAMAKERREC_H
2 #define ALIMUONQADATAMAKERREC_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // $Id$
7
8 /// \ingroup rec
9 /// \class AliMUONQADataMakerRec
10 /// \brief MUON Quality assurance data maker
11 ///
12
13 // --- AliRoot header files ---
14 #include "AliQADataMakerRec.h"
15 #include "AliMUONRecoParam.h"
16
17 class AliMUONDigitMaker;
18 class AliMUONVClusterStore;
19 class AliMUONVDigitStore;
20 class AliMUONVStore;
21 class AliMUONVTrackerData;
22 class AliMUONVTrackerDataMaker;
23 class AliMUONVTriggerStore;
24
25 class AliMUONQAMappingCheck;
26
27 class AliMUONQADataMakerRec: public AliQADataMakerRec {
28
29 public:
30   AliMUONQADataMakerRec();         
31   AliMUONQADataMakerRec(const AliMUONQADataMakerRec& qadm);   
32   AliMUONQADataMakerRec& operator=(const AliMUONQADataMakerRec& qadm);
33   virtual ~AliMUONQADataMakerRec();
34   
35   AliMUONVTrackerData* GetTrackerData() const;
36
37   virtual void InitRaws(); 
38   virtual void InitRecPoints(); 
39
40 protected:
41         
42   virtual void StartOfDetectorCycle(); 
43
44   virtual void InitDigits(); 
45   virtual void InitESDs(); 
46   
47   virtual void MakeRaws(AliRawReader* rawReader); 
48   virtual void MakeDigits(TTree* dig); 
49   virtual void MakeDigits()  {return;}
50   virtual void MakeRecPoints(TTree* recpo); 
51   virtual void MakeESDs(AliESDEvent* esd) ;
52   
53   virtual void DefaultEndOfDetectorCycle(AliQAv1::TASKINDEX_t) {}
54
55   virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list);
56
57 private:
58   /// Raw histograms indices
59   enum ERaw { 
60     kTrackerData              = 3,  ///< Accumulated data
61     kTrackerBusPatchOccupancy = 4, ///< Bus patch occupancies
62     kTrackerBusPatchNofPads   = 5, ///< Number of pads per bus patch
63     kTrackerBusPatchNofManus  = 6, ///< Number of manus per bus patch
64     kTriggerScalers           = 22, ///< Trigger scalers histogram per plane index
65     kTriggerScalersDisplay    = 30, ///< Trigger scalers display histogram per plane index
66     kTriggerScalersTime       = 38, ///< Trigger scalers acquisition time index
67     kTriggerRPCi              = 39, ///< Trigger chamber currents index
68     kTriggerRPChv             = 43  ///< Trigger chamber HV index
69   };
70          
71   /// Rec points histograms indices
72   enum ERecPoints { 
73     kTriggerDigits             = 0,  ///< Trigger digits histogram per plane index
74     kTriggeredBoards           = 8,  ///< Triggered boards histogram index
75     kTriggerDigitsDisplay      = 9,  ///< Trigger digits display histogram per plane index
76     kTriggerBoardsDisplay      = 17, ///< Triggered boards display histogram index
77
78     kNAnalyzedEvents           = 90, ///< Number of analyzed events per event specie
79     
80     kTrackerNumberOfClustersPerChamber    = 100, ///< Tracker: number of clusters per chamber
81     kTrackerClusterMultiplicityPerChMean  = 101, ///< cluster size per Ch: mean
82     kTrackerClusterMultiplicityPerChSigma = 102, ///< cluster size per Ch: dispersion
83     kTrackerClusterChargePerChMean        = 103, ///< cluster charge per Ch: mean
84     kTrackerClusterChargePerChSigma       = 104, ///< cluster charge per Ch: dispersion
85
86     kTrackerRecPoints = 105, ///< Tracker : tracker data of clusters (all and mono-cathode ones)
87
88     kTrackerClusterMultiplicityPerChamber = 200, ///< Tracker: cluster multiplicity per chamber
89     kTrackerClusterChargePerChamber       = 300, ///< Tracker: cluster charge per chamber
90     kTrackerClusterHitMapPerChamber       = 400, ///< Tracker: cluster position distribution per chamber
91     
92     kTrackerNumberOfClustersPerDE        = 1000, ///< Tracker : number of clusters per DE               
93     kTrackerClusterMultiplicityPerDEMean = 1001, ///< cluster size per DE: mean
94     kTrackerClusterChargePerDEMean       = 1002, ///< cluster charge per DE: mean
95     
96     kTrackerClusterMultiplicityPerDE = 3000, ///< Tracker : cluster multiplicity per DE         
97     kTrackerClusterChargePerDE       = 5000  ///< Tracker : cluster charge per DE
98     
99   };
100   
101   /// ESD histograms indices
102   enum EESD { 
103     kESDnTracks                 = 0,  ///< number of tracks
104     kESDMatchTrig               = 1,  ///< number of tracks matched with trigger
105     kESDMomentum                = 2,  ///< P distribution
106     kESDPt                      = 3,  ///< Pt distribution
107     kESDRapidity                = 4,  ///< rapidity distribution
108     kESDChi2                    = 5,  ///< normalized chi2 distribution
109     kESDProbChi2                = 6,  ///< distribution of probability of chi2
110     
111     kESDClusterHitMap           = 7,  ///< cluster position distribution in chamber i
112     kESDnClustersPerTrack       = 17, ///< number of clusters per track
113     kESDnClustersPerCh          = 18, ///< number of clusters per chamber per track
114     kESDnClustersPerDE          = 19, ///< number of clusters per DE per track
115     kESDClusterChargeInCh       = 20, ///< cluster charge distribution in chamber i
116     kESDClusterChargePerChMean  = 30, ///< cluster charge per Ch: mean
117     kESDClusterChargePerChSigma = 31, ///< cluster charge per Ch: dispersion
118     kESDClusterChargePerDE      = 32, ///< cluster charge per DE: mean
119     kESDClusterSizeInCh         = 33, ///< cluster size distribution in chamber i
120     kESDClusterSizePerChMean    = 43, ///< cluster size per Ch: mean
121     kESDClusterSizePerChSigma   = 44, ///< cluster size per Ch: dispersion
122     kESDClusterSizePerDE        = 45, ///< cluster size per DE: mean
123     
124     kESDResidualXInCh           = 46, ///< cluster-track residual-X distribution in chamber i
125     kESDResidualYInCh           = 56, ///< cluster-track residual-Y distribution in chamber i
126     kESDResidualXPerChMean      = 66, ///< cluster-track residual-X per Ch: mean
127     kESDResidualYPerChMean      = 67, ///< cluster-track residual-Y per Ch: mean
128     kESDResidualXPerChSigma     = 68, ///< cluster-track residual-X per Ch: dispersion
129     kESDResidualYPerChSigma     = 69, ///< cluster-track residual-Y per Ch: dispersion
130     kESDResidualXPerDEMean      = 70, ///< cluster-track residual-X per DE: mean
131     kESDResidualYPerDEMean      = 71, ///< cluster-track residual-Y per DE: mean
132     kESDResidualXPerDESigma     = 72, ///< cluster-track residual-X per DE: dispersion
133     kESDResidualYPerDESigma     = 73, ///< cluster-track residual-Y per DE: dispersion
134     kESDLocalChi2XInCh          = 74, ///< local chi2-X distribution in chamber i
135     kESDLocalChi2YInCh          = 84, ///< local chi2-Y distribution in chamber i
136     kESDLocalChi2XPerChMean     = 94, ///< local chi2-X per Ch: mean
137     kESDLocalChi2YPerChMean     = 95, ///< local chi2-Y per Ch: mean
138     kESDLocalChi2XPerDEMean     = 96, ///< local chi2-X per DE: mean
139     kESDLocalChi2YPerDEMean     = 97, ///< local chi2-Y per DE: mean
140     kESDLocalChi2InCh           = 98, ///< local chi2-X distribution in chamber i
141     kESDLocalChi2PerChMean      = 108, ///< local chi2 per Ch: mean
142     kESDLocalChi2PerDEMean      = 109, ///< local chi2 per DE: mean
143     
144     kESDThetaX                  = 110, ///< thetaX distribution
145     kESDThetaY                  = 111, ///< thetaY distribution
146     
147     kESDnTotClustersPerCh       = 1000, ///< total number of associated clusters per chamber
148     kESDnTotClustersPerDE       = 1001, ///< total number of associated clusters per DE
149     kESDnTotFullClustersPerDE   = 1002, ///< total number of associated clusters containing pad info per DE
150     kESDSumClusterChargePerDE   = 1003, ///< sum of cluster charge per DE
151     kESDSumClusterSizePerDE     = 1004, ///< sum of cluster size per DE
152     kESDSumResidualXPerDE       = 1005, ///< sum of cluster-track residual-X per DE
153     kESDSumResidualYPerDE       = 1006, ///< sum of cluster-track residual-Y per DE
154     kESDSumResidualX2PerDE      = 1007, ///< sum of cluster-track residual-X**2 per DE
155     kESDSumResidualY2PerDE      = 1008, ///< sum of cluster-track residual-Y**2 per DE
156     kESDSumLocalChi2XPerDE      = 1009, ///< sum of local chi2-X per DE
157     kESDSumLocalChi2YPerDE      = 1010, ///< sum of local chi2-Y per DE
158     kESDSumLocalChi2PerDE       = 1011,  ///< sum of local chi2 per DE
159   };
160   
161 private:
162   void BeautifyTrackerBusPatchOccupancy(TH1& hbp);
163   
164   void EndOfDetectorCycleRaws(Int_t specie, TObjArray** list);
165   void EndOfDetectorCycleRecPoints(Int_t specie, TObjArray** list);
166   void EndOfDetectorCycleESDs();
167  
168   void InsertTrackerData(Int_t specie, TObjArray** list, TObject* object, 
169                          Int_t indexNumber, Bool_t replace=kFALSE);
170
171 private:
172         
173   void Ctor();
174   void DisplayTriggerInfo(AliQAv1::TASKINDEX_t task);
175   Bool_t FillTriggerDCSHistos();
176   void InitRecPointsTracker();
177   void InitRecPointsTrigger();
178   void MakeRawsTracker(AliRawReader* rawReader);
179   void MakeRawsTrigger(AliRawReader* rawReader);
180   void MakeRecPointsTracker(TTree* treeR);
181   void MakeRecPointsTrigger(TTree* treeR);
182         
183   /// Return reco parameters
184   const AliMUONRecoParam* GetMUONRecoParam() const { return dynamic_cast<const AliMUONRecoParam *>(fRecoParam); }
185   
186   AliMUONVDigitStore*   fDigitStore; //!< pointer to digits store
187   AliMUONVTriggerStore* fTriggerStore; //!< pointer to trigger store
188   AliMUONDigitMaker*    fDigitMaker;  //!< pointer to digit maker
189   AliMUONVClusterStore* fClusterStore; //!< pointer to cluster store
190         
191   AliMUONVTrackerDataMaker* fTrackerDataMaker; //!< tracker data accumulation (Raw)
192   
193   AliMUONQAMappingCheck* fMappingCheckRecPoints; //!< mapping cross-checker (RecPoints)
194   
195   ClassDef(AliMUONQADataMakerRec,8)  // MUON Quality assurance data maker
196
197 };
198 #endif