Main changes:
[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 AliMUONVDigitStore;
19 class AliMUONVTriggerStore;
20 class AliMUONVClusterStore;
21 class AliMUONVTrackerData;
22 class AliMUONVTrackerDataMaker;
23
24 class AliMUONQADataMakerRec: public AliQADataMakerRec {
25
26 public:
27   AliMUONQADataMakerRec();         
28   AliMUONQADataMakerRec(const AliMUONQADataMakerRec& qadm);   
29   AliMUONQADataMakerRec& operator=(const AliMUONQADataMakerRec& qadm);
30   virtual ~AliMUONQADataMakerRec();
31   
32   AliMUONVTrackerData* GetTrackerData() const;
33   
34 protected:
35         
36   virtual void StartOfDetectorCycle(); 
37
38   virtual void InitRaws(); 
39   virtual void InitDigits(); 
40   virtual void InitRecPoints(); 
41   virtual void InitESDs(); 
42   
43   virtual void MakeRaws(AliRawReader* rawReader); 
44   virtual void MakeDigits(TTree* dig); 
45   virtual void MakeDigits()  {return;}
46   virtual void MakeRecPoints(TTree* recpo); 
47   virtual void MakeESDs(AliESDEvent* esd) ;
48   
49   virtual void DefaultEndOfDetectorCycle(AliQAv1::TASKINDEX_t) {}
50
51   virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list);
52
53 private:
54   /// Raw histograms indices
55   enum ERaw { 
56     kTrackerData           = 3,  ///< Accumulated data
57     kTrackerBusPatchOccupancy = 4, ///< Bus patch occupancies
58     kTriggerScalersBP      = 22, ///< Trigger scalers on BP histogram per chamber index
59     kTriggerScalersNBP     = 23, ///< Trigger scalers on NBP histogram per chamber index
60     kTriggerScalersDisplay = 24, ///< Trigger scalers display histogram per chamber index
61     kTriggerScalersTime    = 32  ///< Trigger scalers acquisition time index
62   };
63          
64   /// Rec points histograms indices
65   enum ERecPoints { 
66     kTriggerDigitsBendPlane    = 0,  ///< Trigger digits on BP histogram index
67     kTriggerDigitsNonBendPlane = 1,  ///< Trigger digits on NBP histogram index
68     kTriggeredBoards           = 2,  ///< Triggered boards histogram index
69     kTriggerDigitsDisplay      = 3,  ///< Trigger digits display histogram per plane index
70     kTriggerBoardsDisplay      = 11, ///< Triggered boards display histogram index
71     kTriggerRPCi               = 12, ///< Trigger chamber currents index
72     kTriggerRPChv              = 16, ///< Trigger chamber HV index
73
74     kNAnalyzedEvents           = 90, ///< Number of analyzed events per event specie
75     
76     kTrackerNumberOfClustersPerChamber    = 100, ///< Tracker: number of clusters per chamber
77     kTrackerClusterMultiplicityPerChMean  = 101, ///< cluster size per Ch: mean
78     kTrackerClusterMultiplicityPerChSigma = 102, ///< cluster size per Ch: dispersion
79     kTrackerClusterChargePerChMean        = 103, ///< cluster charge per Ch: mean
80     kTrackerClusterChargePerChSigma       = 104, ///< cluster charge per Ch: dispersion
81     
82     kTrackerClusterMultiplicityPerChamber = 200, ///< Tracker: cluster multiplicity per chamber
83     kTrackerClusterChargePerChamber       = 300, ///< Tracker: cluster charge per chamber
84     kTrackerClusterHitMapPerChamber       = 400, ///< Tracker: cluster position distribution per chamber
85     
86     kTrackerNumberOfClustersPerDE        = 1000, ///< Tracker : number of clusters per DE               
87     kTrackerClusterMultiplicityPerDEMean = 1001, ///< cluster size per DE: mean
88     kTrackerClusterChargePerDEMean       = 1002, ///< cluster charge per DE: mean
89     
90     kTrackerClusterMultiplicityPerDE = 3000, ///< Tracker : cluster multiplicity per DE         
91     kTrackerClusterChargePerDE       = 5000  ///< Tracker : cluster charge per DE
92   };
93   
94   /// ESD histograms indices
95   enum EESD { 
96     kESDnTracks                 = 0,  ///< number of tracks
97     kESDMatchTrig               = 1,  ///< number of tracks matched with trigger
98     kESDMomentum                = 2,  ///< P distribution
99     kESDPt                      = 3,  ///< Pt distribution
100     kESDRapidity                = 4,  ///< rapidity distribution
101     kESDChi2                    = 5,  ///< normalized chi2 distribution
102     kESDProbChi2                = 6,  ///< distribution of probability of chi2
103     
104     kESDClusterHitMap           = 7,  ///< cluster position distribution in chamber i
105     kESDnClustersPerTrack       = 17, ///< number of clusters per track
106     kESDnClustersPerCh          = 18, ///< number of clusters per chamber per track
107     kESDnClustersPerDE          = 19, ///< number of clusters per DE per track
108     kESDClusterChargeInCh       = 20, ///< cluster charge distribution in chamber i
109     kESDClusterChargePerChMean  = 30, ///< cluster charge per Ch: mean
110     kESDClusterChargePerChSigma = 31, ///< cluster charge per Ch: dispersion
111     kESDClusterChargePerDE      = 32, ///< cluster charge per DE: mean
112     kESDClusterSizeInCh         = 33, ///< cluster size distribution in chamber i
113     kESDClusterSizePerChMean    = 43, ///< cluster size per Ch: mean
114     kESDClusterSizePerChSigma   = 44, ///< cluster size per Ch: dispersion
115     kESDClusterSizePerDE        = 45, ///< cluster size per DE: mean
116     
117     kESDResidualXInCh           = 46, ///< cluster-track residual-X distribution in chamber i
118     kESDResidualYInCh           = 56, ///< cluster-track residual-Y distribution in chamber i
119     kESDResidualXPerChMean      = 66, ///< cluster-track residual-X per Ch: mean
120     kESDResidualYPerChMean      = 67, ///< cluster-track residual-Y per Ch: mean
121     kESDResidualXPerChSigma     = 68, ///< cluster-track residual-X per Ch: dispersion
122     kESDResidualYPerChSigma     = 69, ///< cluster-track residual-Y per Ch: dispersion
123     kESDResidualXPerDEMean      = 70, ///< cluster-track residual-X per DE: mean
124     kESDResidualYPerDEMean      = 71, ///< cluster-track residual-Y per DE: mean
125     kESDResidualXPerDESigma     = 72, ///< cluster-track residual-X per DE: dispersion
126     kESDResidualYPerDESigma     = 73, ///< cluster-track residual-Y per DE: dispersion
127     kESDLocalChi2XInCh          = 74, ///< local chi2-X distribution in chamber i
128     kESDLocalChi2YInCh          = 84, ///< local chi2-Y distribution in chamber i
129     kESDLocalChi2XPerChMean     = 94, ///< local chi2-X per Ch: mean
130     kESDLocalChi2YPerChMean     = 95, ///< local chi2-Y per Ch: mean
131     kESDLocalChi2XPerDEMean     = 96, ///< local chi2-X per DE: mean
132     kESDLocalChi2YPerDEMean     = 97, ///< local chi2-Y per DE: mean
133     kESDLocalChi2InCh           = 98, ///< local chi2-X distribution in chamber i
134     kESDLocalChi2PerChMean      = 108, ///< local chi2 per Ch: mean
135     kESDLocalChi2PerDEMean      = 109, ///< local chi2 per DE: mean
136     
137     kESDThetaX                  = 110, ///< thetaX distribution
138     kESDThetaY                  = 111, ///< thetaY distribution
139     
140     kESDnTotClustersPerCh       = 1000, ///< total number of associated clusters per chamber
141     kESDnTotClustersPerDE       = 1001, ///< total number of associated clusters per DE
142     kESDnTotFullClustersPerDE   = 1002, ///< total number of associated clusters containing pad info per DE
143     kESDSumClusterChargePerDE   = 1003, ///< sum of cluster charge per DE
144     kESDSumClusterSizePerDE     = 1004, ///< sum of cluster size per DE
145     kESDSumResidualXPerDE       = 1005, ///< sum of cluster-track residual-X per DE
146     kESDSumResidualYPerDE       = 1006, ///< sum of cluster-track residual-Y per DE
147     kESDSumResidualX2PerDE      = 1007, ///< sum of cluster-track residual-X**2 per DE
148     kESDSumResidualY2PerDE      = 1008, ///< sum of cluster-track residual-Y**2 per DE
149     kESDSumLocalChi2XPerDE      = 1009, ///< sum of local chi2-X per DE
150     kESDSumLocalChi2YPerDE      = 1010, ///< sum of local chi2-Y per DE
151     kESDSumLocalChi2PerDE       = 1011  ///< sum of local chi2 per DE
152   };
153   
154 private:
155         
156   void Ctor();
157   void DisplayTriggerInfo(AliQAv1::TASKINDEX_t task);
158   Bool_t FillTriggerDCSHistos();
159   void InitRecPointsTracker();
160   void InitRecPointsTrigger();
161   void MakeRawsTracker(AliRawReader* rawReader);
162   void MakeRawsTrigger(AliRawReader* rawReader);
163   void MakeRecPointsTracker(TTree* treeR);
164   void MakeRecPointsTrigger(TTree* treeR);
165         
166   /// Return reco parameters
167   const AliMUONRecoParam* GetMUONRecoParam() const { return dynamic_cast<const AliMUONRecoParam *>(fRecoParam); }
168   
169   AliMUONVDigitStore*   fDigitStore; //!< pointer to digits store
170   AliMUONVTriggerStore* fTriggerStore; //!< pointer to trigger store
171   AliMUONDigitMaker*    fDigitMaker;  //!< pointer to digit maker
172   AliMUONVClusterStore* fClusterStore; //!< pointer to cluster store
173         
174   AliMUONVTrackerDataMaker* fTrackerDataMaker; //!< tracker data accumulation
175   
176   ClassDef(AliMUONQADataMakerRec,6)  // MUON Quality assurance data maker
177
178 };
179 #endif