]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONTriggerQADataMakerRec.h
Fixing memory leak
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerQADataMakerRec.h
1 #ifndef ALIMUONTRIGGERQADATAMAKERREC_H
2 #define ALIMUONTRIGGERQADATAMAKERREC_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 AliMUONTriggerQADataMakerRec
10 /// \brief MUON Quality assurance data maker for MTR
11 ///
12
13 // --- AliRoot header files ---
14 #include "AliMUONVQADataMakerRec.h"
15
16 class AliMUONCalibrationData;
17 class AliMUONDigitMaker;
18 class AliMUONVClusterStore;
19 class AliMUONTriggerElectronics;
20 class AliMUONVDigitStore;
21 class TObjectArray;
22 class TMap;
23 class AliMpDCSNamer;
24 class AliMUONVTriggerStore;
25 class AliMUONGlobalTrigger;
26
27 class AliMUONTriggerQADataMakerRec: public AliMUONVQADataMakerRec {
28
29 public:
30   AliMUONTriggerQADataMakerRec(AliQADataMakerRec* master);         
31   virtual ~AliMUONTriggerQADataMakerRec();
32   
33   virtual void InitRaws(); 
34   virtual void InitRecPoints(); 
35   virtual void InitDigits(); 
36   virtual void InitESDs(); 
37   
38   void EndOfDetectorCycleRaws(Int_t specie, TObjArray** list);
39   void EndOfDetectorCycleRecPoints(Int_t specie, TObjArray** list);
40   void EndOfDetectorCycleESDs(Int_t specie, TObjArray** list);
41   
42   /// Empty implementation
43   void EndOfDetectorCycleDigits(Int_t , TObjArray** ) {}
44     
45   virtual void MakeRaws(AliRawReader* rawReader); 
46   
47   virtual void MakeDigits(TTree* dig); 
48   virtual void MakeRecPoints(TTree* recpo); 
49   virtual void MakeESDs(AliESDEvent* esd) ;
50   
51 public:
52
53   /// Raw histograms indices
54   
55   enum ERaw {
56     kTriggerScalersTime       = 22, ///< Trigger scalers acquisition time index
57     kTriggerScalers           = 23, ///< Trigger scalers histogram per plane index
58     kTriggerScalersDisplay    = 31, ///< Trigger scalers display histogram per plane index
59     kTriggerCalibSummary      = 40, ///< Number of responding strips/boards and noisy strips 
60     kTriggerCalibSummaryNorm  = 41, ///< Percentage of responding strips/boards and noisy strips
61     kTriggerErrorLocalXPos = 50, ///< Local board: Number of XPos Error vs Local Board Id
62     kTriggerErrorLocalYPos = 51, ///< Local board: Number of YPos Error vs Local Board Id
63     kTriggerErrorLocalDev  = 52, ///< Local board: Number of Deviation Error vs Local Board
64     kTriggerErrorLocalTriggerDec = 53, ///< Local board: Number of Trigger Decision (All Pt) Error vs Local Board Id
65     kTriggerErrorLocalLPtLSB = 54, ///< Local board: Number of LSB Low Pt Error vs Local Board Id
66     kTriggerErrorLocalLPtMSB = 55, ///< Local board: Number of MSB Low Pt Error vs Local Board Id
67     kTriggerErrorLocalHPtLSB = 56, ///< Local board: Number of LSB High Pt Error vs Local Board Id
68     kTriggerErrorLocalHPtMSB = 57, ///< Local board: Number of MSB High Pt Error vs Local Board Id
69     kTriggerErrorLocalTrigY  = 58, ///< Local board: Number of TrigY Error vs Local Board Id
70     kTriggerErrorLocal2RegionalLPtLSB  = 59, ///< Local to Regional: Number of LPt LSB error vs Local Board Id
71     kTriggerErrorLocal2RegionalLPtMSB  = 60, ///< Local to Regional: Number of LPt MSB error vs Local Board Id
72     kTriggerErrorLocal2RegionalHPtLSB  = 61, ///< Local to Regional: Number of HPt LSB error vs Local Board Id
73     kTriggerErrorLocal2RegionalHPtMSB  = 62, ///< Local to Regional: Number of HPt MSB error vs Local Board Id
74     kTriggerErrorOutGlobalFromInGlobal = 63, ///< Global board: Number of error vs output bit 
75     kTriggerErrorSummary      = 64,  ///< Number of errors for each trigger decision level (Local, Reg->Local, Reg, Reg->Glob, Global)
76     kTriggerErrorSummaryNorm  = 65,  ///< Percentage of errors for each trigger decision level
77     kTriggerErrorLocalYCopy     = 67, ///< Local board: Number of Y Copy Error vs Local Board Id
78     kTriggerErrorLocalYCopyTest = 68, ///< Local Board: Number of Y copy error tests (for normalization)
79     kTriggerErrorLocalYCopyNorm = 69, ///< Local Board: Number of Y Copy Error vs Local Board Id Normalized to the number of tests
80     kTriggeredBoards          = 70,  ///< Triggered boards histogram index
81     kTriggerBoardsDisplay     = 71,  ///< Triggered boards display histogram index
82     kTriggerReadOutErrors     = 80,  ///< Number of read-out errors
83     kTriggerReadOutErrorsNorm = 81,  ///< Percentage of read-out errors
84     kTriggerGlobalOutput      = 90,  ///< Number of Global outputs and Global algo errors
85     kTriggerGlobalOutputNorm  = 91,  ///< Percentage of Global outputs and Global algo errors
86     kRawNAnalyzedEvents       = 100  ///< Number of analyzed events per event specie
87   };
88          
89   /// Rec points histograms indices
90   enum ERecPoints { 
91     kNAnalyzedEvents           = 0, ///< Number of analyzed events per event specie
92     kTriggerRPCtrips           = 1, ///< Trips in trigger chambers
93     kTriggerRPChv              = 2  ///< Trigger chamber HV index
94   };
95   
96 //  /// ESD histograms indices
97 //  enum EESD { 
98 //  };
99
100   // Bins for summary histos
101   enum {
102     kTriggerRespStrips,    ///< Bin for % of responding trigger strips
103     kTriggerRespLocal,     ///< Bin for % of responding trigger local boards
104     kTriggerRespRegional,  ///< Bin for % of responding trigger regional boards
105     kTriggerRespGlobal,    ///< Bin for % of responding trigger global boards
106     kTriggerNoisyStrips,   ///< Bin for % of noisy trigger strips
107     kNtrigCalibSummaryBins ///< Total number of bins for trigger calibration summary
108   };
109
110   // Bins for algorithm error histos
111   enum {
112     kAlgoLocalX,             ///< Bin for % of local board X pos errors
113     kAlgoLocalY,             ///< Bin for % of local board Y pos errors
114     kAlgoLocalLUT,           ///< Bin for % of local board deviation errors
115     kAlgoLocalYCopy,         ///< Bin for % of local board Y copy errors
116     kAlgoLocalToRegional,    ///< Bin for % of local to regional errors
117     kAlgoRegional,           ///< Bin for % of regional board errors 
118     kAlgoRegionalToGlobal,   ///< Bin for % of regional to global errors 
119     kAlgoGlobalFromGlobal,   ///< Bin for % of global from global board errors 
120     kAlgoGlobalFromLocal,    ///< Bin for % of global from local board errors 
121     kAlgoGlobalFromRegional, ///< Bin for % of global from regional board errors 
122     kNtrigAlgoErrorBins      ///< Total number of bins for trigger error summary
123   };
124
125   enum {
126     kLocalStructError,    ///< Bin for % of errors in local struct
127     kRegionalStructError, ///< Bin for % of errors in regional struct
128     kGlobalStructError,   ///< Bin for % of errors in global struct
129     kDarcStructError,     ///< Bin for % of errors in darc struct
130     kNtrigStructErrorBins ///< Total number of bins for struct error summary
131   };
132   
133 private:
134   /// Not implemented
135   AliMUONTriggerQADataMakerRec(const AliMUONTriggerQADataMakerRec& qadm);   
136   /// Not implemented
137   AliMUONTriggerQADataMakerRec& operator=(const AliMUONTriggerQADataMakerRec& qadm);
138
139   void DisplayTriggerInfo();
140   Bool_t FillTriggerDCSHistos();
141   TObjArray* GetDCSValues(Int_t iMeas, Int_t detElemId,
142                           TMap* triggerDcsMap, AliMpDCSNamer& triggerDcsNamer);
143   UChar_t RawTriggerInGlobal2OutGlobal(UInt_t globalInput[4]);
144   void RawTriggerMatchOutLocal(AliMUONVTriggerStore& inputTriggerStore, AliMUONVTriggerStore& recoTriggerStore);
145   //void RawTriggerMatchOutLocalInRegional();
146   void RawTriggerMatchOutGlobalFromInGlobal(AliMUONGlobalTrigger& inputLocalTrigger,
147                                             AliMUONGlobalTrigger& recoGlobalTrigger);
148
149   //Int_t fTriggerOutputRegionalData[16]; ///< Data Regional Trigger decision for each Regional Board (1R:0, 2R:1, ... , 1L:8, ...) -> 4 bits LPt, 4 bits HPt
150   //Int_t fTriggerInputRegionalRecLPt[2][16][16]; ///< Reconstructed Regional Input LPt for each Regional Board ([bit][reg][loc]) (reg -> 1R:0, 2R:1, ... , 1L:8, ...)
151   //Int_t fTriggerInputRegionalRecHPt[2][16][16]; ///< Reconstructed Regional Input HPt for each Regional Board ([bit][reg][loc]) (reg -> 1R:0, 2R:1, ... , 1L:8, ...)
152   //Int_t fTriggerOutputRegionalRec[16]; ///< Reconstructed Regional Trigger decision for each Regional Board (8 Bits)
153
154   //Int_t fTriggerInputGlobalDataLPt[16][4]; ///< Data Global inputs LPt (1R:0, 2R:1, ... , 1L:8, ...)
155   //Int_t fTriggerInputGlobalDataHPt[16][4]; ///< Data Global inputs HPt (1R:0, 2R:1, ... , 1L:8, ...)
156   //Int_t fTriggerOutputGlobalRecFromLocalInput[6]; //< Reconstructed Global outputs from Local inputs
157   //Int_t fTriggerOutputGlobalRecFromLocalOutput[6]; //< Reconstructed Global outputs from Local outputs
158   
159   AliMUONDigitMaker* fDigitMaker; //!< pointer to digit maker
160   AliMUONCalibrationData* fCalibrationData; //!< Used to load Local, Regional and Global masks
161   AliMUONTriggerElectronics* fTriggerProcessor; //!< trigger processore to re-compute response
162   AliMUONVDigitStore* fDigitStore; //!< pointer to digits store
163   
164   ClassDef(AliMUONTriggerQADataMakerRec,1)  // MUON Quality assurance data maker
165
166 };
167
168 #endif