Introducing event specie in QA (Yves)
[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 AliMUONVTrackerDataMaker;
22
23 class AliMUONQADataMakerRec: public AliQADataMakerRec {
24
25 public:
26   AliMUONQADataMakerRec();         
27   AliMUONQADataMakerRec(const AliMUONQADataMakerRec& qadm);   
28   AliMUONQADataMakerRec& operator=(const AliMUONQADataMakerRec& qadm);
29   virtual ~AliMUONQADataMakerRec();
30   
31 private:
32   /// Raw histograms indices
33   enum ERaw { 
34     kTrackerData           = 3,  ///< Accumulated data
35     kTrackerBusPatchOccupancy = 4, ///< Bus patch occupancies
36     kTriggerScalersBP      = 22, ///< Trigger scalers on BP histogram per chamber index
37     kTriggerScalersNBP     = 23, ///< Trigger scalers on NBP histogram per chamber index
38     kTriggerScalersDisplay = 24  ///< Trigger scalers display histogram per chamber index
39   };
40          
41   /// Rec points histograms indices
42   enum ERecPoints { 
43     kTriggerDigitsBendPlane    = 0,  ///< Trigger digits on BP histogram index
44     kTriggerDigitsNonBendPlane = 1,  ///< Trigger digits on NBP histogram index
45     kTriggeredBoards           = 2,  ///< Triggered boards histogram index
46     kTriggerDigitsDisplay      = 3,  ///< Trigger digits display histogram per plane index
47     kTriggerBoardsDisplay      = 11, ///< Triggered boards display histogram index
48     
49     kTrackerNumberOfClustersPerChamber    = 100, ///< Tracker: # of clusters per chamber
50     kTrackerClusterMultiplicityPerChamber = 200, ///< Tracker: cluster multiplicity per chamber
51     kTrackerClusterChargePerChamber       = 300, ///< Tracker: cluster charge per chamber
52                                 
53     kTrackerNumberOfClustersPerDE    = 1000, ///< Tracker : number of clusters per DE           
54     kTrackerClusterMultiplicityPerDE = 3000, ///< Tracker : cluster multiplicity per DE         
55     kTrackerClusterChargePerDE       = 5000  ///< Tracker : cluster charge per DE
56   };
57   
58   /// ESD histograms indices
59   enum EESD { 
60     kESDnTracks             = 0,  ///< number of tracks
61     kESDMatchTrig           = 1,  ///< number of tracks matched with trigger
62     kESDMomentum            = 2,  ///< P distribution
63     kESDPt                  = 3,  ///< Pt distribution
64     kESDRapidity            = 4,  ///< rapidity distribution
65     kESDChi2                = 5,  ///< normalized chi2 distribution
66     
67     kESDClusterHitMap       = 6,  ///< cluster position distribution in chamber i
68     kESDnClustersPerTrack   = 16, ///< number of clusters per track
69     kESDnClustersPerCh      = 17, ///< number of clusters per chamber
70     kESDnClustersPerDE      = 18, ///< number of clusters per DE
71     kESDClusterCharge       = 19, ///< cluster charge distribution
72     kESDClusterChargeInCh   = 20, ///< cluster charge distribution in chamber i
73     kESDClusterChargePerDE  = 30, ///< cluster charge per DE: mean +- dispersion
74     kESDClusterMult         = 31, ///< cluster multiplicity distribution
75     kESDClusterMultInCh     = 32, ///< cluster multiplicity distribution in chamber i
76     kESDClusterMultPerDE    = 42, ///< cluster multiplicity per DE: mean +- dispersion
77     
78     kESDResidualX           = 43, ///< cluster-track residual-X distribution
79     kESDResidualY           = 44, ///< cluster-track residual-Y distribution
80     kESDResidualXInCh       = 45, ///< cluster-track residual-X distribution in chamber i
81     kESDResidualYInCh       = 55, ///< cluster-track residual-Y distribution in chamber i
82     kESDResidualXPerDEMean  = 65, ///< cluster-track residual-X per DE: mean
83     kESDResidualYPerDEMean  = 66, ///< cluster-track residual-Y per DE: mean
84     kESDResidualXPerDESigma = 67, ///< cluster-track residual-X per DE: sigma
85     kESDResidualYPerDESigma = 68  ///< cluster-track residual-Y per DE: sigma
86   };
87
88 protected:
89         
90   virtual void StartOfDetectorCycle(); 
91
92   virtual void InitRaws(); 
93   virtual void InitRecPoints(); 
94   virtual void InitESDs(); 
95   
96   virtual void MakeRaws(AliRawReader* rawReader); 
97   virtual void MakeRecPoints(TTree* recpo); 
98   virtual void MakeESDs(AliESDEvent* esd) ;
99   
100   virtual void DefaultEndOfDetectorCycle(AliQA::TASKINDEX_t) {}
101
102         virtual void EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray** list);
103
104 private:
105         
106         void Ctor();
107   void DisplayTriggerInfo(AliQA::TASKINDEX_t task);
108         void InitRecPointsTracker();
109         void InitRecPointsTrigger();
110         void MakeRawsTracker(AliRawReader* rawReader);
111         void MakeRawsTrigger(AliRawReader* rawReader);
112   void MakeRecPointsTracker(TTree* treeR);
113   void MakeRecPointsTrigger(TTree* treeR);
114         
115   const AliMUONRecoParam* GetRecoParam() const { return dynamic_cast<const AliMUONRecoParam *>(fRecoParam); }
116   
117   Bool_t  fIsInitRaws;       //!<  info if InitRaws() went ok
118   Bool_t  fIsInitRecPointsTracker;  //!<  info if InitRecPoints() went ok
119   Bool_t  fIsInitRecPointsTrigger;  //!<  info if InitRecPoints() went ok
120   Bool_t  fIsInitESDs;       //!<  info if InitESDs() went ok
121   
122   AliMUONVDigitStore*   fDigitStore; //!< pointer to digits store
123   AliMUONVTriggerStore* fTriggerStore; //!< pointer to trigger store
124   AliMUONDigitMaker*    fDigitMaker;  //!< pointer to digit maker
125   AliMUONVClusterStore* fClusterStore; //!< pointer to cluster store
126         
127   AliMUONVTrackerDataMaker* fTrackerDataMaker; //!< tracker data accumulation
128         
129   ClassDef(AliMUONQADataMakerRec,4)  // MUON Quality assurance data maker
130
131 };
132 #endif