]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/AliEmcalTriggerMaker.h
- Add simple QA to the trigger patch maker and set the default to
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEmcalTriggerMaker.h
1 #ifndef ALIEMCALTRIGGERMAKER_H
2 #define ALIEMCALTRIGGERMAKER_H
3
4 // $Id: AliEmcalTriggerMaker.h 64593 2013-10-18 10:23:58Z loizides $
5
6 class TClonesArray;
7 class AliEmcalTriggerSetupInfo;
8 class AliAODCaloTrigger;
9 class AliVVZERO;
10 class THistManager;
11
12 #include "AliEMCALTriggerTypes.h"
13 #include "AliAnalysisTaskEmcal.h"
14
15 class AliEmcalTriggerMaker : public AliAnalysisTaskEmcal {
16  public:
17   enum TriggerMakerTriggerType_t {
18     kTMEMCalJet = 0,
19     kTMEMCalGamma = 1,
20     kTMEMCalLevel0 = 2
21   };
22   AliEmcalTriggerMaker();
23   AliEmcalTriggerMaker(const char *name, Bool_t doQA = kFALSE);
24   virtual ~AliEmcalTriggerMaker();
25
26   void SetCaloTriggersOutName(const char *name)     { fCaloTriggersOutName      = name; }
27   void SetCaloTriggerSetupOutName(const char *name) { fCaloTriggerSetupOutName  = name; }
28   void SetTriggerThresholdJetLow   ( Int_t a, Int_t b, Int_t c ) { fThresholdConstants[2][0] = a; fThresholdConstants[2][1] = b; fThresholdConstants[2][2] = c; }
29   void SetTriggerThresholdJetHigh  ( Int_t a, Int_t b, Int_t c ) { fThresholdConstants[0][0] = a; fThresholdConstants[0][1] = b; fThresholdConstants[0][2] = c; }
30   void SetTriggerThresholdGammaLow ( Int_t a, Int_t b, Int_t c ) { fThresholdConstants[3][0] = a; fThresholdConstants[3][1] = b; fThresholdConstants[3][2] = c; }
31   void SetTriggerThresholdGammaHigh( Int_t a, Int_t b, Int_t c ) { fThresholdConstants[3][0] = a; fThresholdConstants[1][1] = b; fThresholdConstants[1][2] = c; }
32   void SetV0InName(const char *name) { fV0InName      = name; }
33
34   Bool_t IsEJE(Int_t tBits) const { if( tBits & ( 1 << (kTriggerTypeEnd + kL1JetLow) | 1 << (kTriggerTypeEnd + kL1JetHigh) | 1 << (kL1JetLow) | 1 << (kL1JetHigh) )) return kTRUE; else return kFALSE; }
35   Bool_t IsEGA(Int_t tBits) const { if( tBits & ( 1 << (kTriggerTypeEnd + kL1GammaLow) | 1 << (kTriggerTypeEnd + kL1GammaHigh) | 1 << (kL1GammaLow) | 1 << (kL1GammaHigh) )) return kTRUE; else return kFALSE; }
36   Bool_t IsLevel0(Int_t tBits) const { if( tBits & (1 << (kTriggerTypeEnd + kL0) | (1 << kL0))) return kTRUE; return kFALSE; }
37
38  protected:  
39   enum{
40           kPatchCols = 48,
41           kPatchRows = 64
42   };
43   void                       UserCreateOutputObjects();
44   void                       ExecOnce();
45   Bool_t                     Run();
46   void                       RunSimpleOfflineTrigger();
47   Bool_t                     NextTrigger( Bool_t &isOfflineSimple );
48   AliEmcalTriggerPatchInfo*  ProcessPatch(TriggerMakerTriggerType_t type, Bool_t isOfflineSimple);
49   Bool_t                                                   CheckForL0(const AliVCaloTrigger &trg) const;
50
51   TString                    fCaloTriggersOutName;      // name of output track array
52   TString                    fCaloTriggerSetupOutName;  // name of output track array
53   TString                    fV0InName;                 // name of output track array
54   Int_t                      fThresholdConstants[4][3]; // simple offline trigger thresholds constants
55   TClonesArray              *fCaloTriggersOut;          //!trigger array out
56   AliEmcalTriggerSetupInfo  *fCaloTriggerSetupOut;      //!trigger setup
57   AliAODCaloTrigger         *fSimpleOfflineTriggers;    //!simple offline trigger
58   AliVVZERO                 *fV0;                       //!V0 object
59   Double_t                   fPatchADCSimple[kPatchCols][kPatchRows];   //!patch map for simple offline trigger
60   Int_t                      fPatchADC[kPatchCols][kPatchRows];         //!ADC values map
61   Int_t                      fITrigger;                 //!trigger counter
62   Bool_t                     fDoQA;                     // Fill QA histograms
63   THistManager              *fQAHistos;                 //! Histograms for QA
64
65  private:
66   AliEmcalTriggerMaker(const AliEmcalTriggerMaker&);            // not implemented
67   AliEmcalTriggerMaker &operator=(const AliEmcalTriggerMaker&); // not implemented
68
69   ClassDef(AliEmcalTriggerMaker, 4) // Task to make array of EMCAL trigger patches
70 };
71 #endif