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