]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/TRD/AliTRDTriggerAnalysis.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / TRD / AliTRDTriggerAnalysis.h
1 /* Copyright(c) 2013, ALICE Experiment at CERN, All rights reserved.      *
2  * See cxx source for full Copyright notice                               */
3
4 // evaluate TRD trigger conditions,
5 // potentially with hardened conditions to remove
6 // triggers caused by conversions of low-pt photons
7 // at large radii
8 //
9 // Author: Jochen Klein <jochen.klein@cern.ch>
10
11 #ifndef ALITRDTRIGGERANALYSIS_H
12 #define ALITRDTRIGGERANALYSIS_H
13
14 class AliVEvent;
15
16 class AliTRDTriggerAnalysis : public TObject
17 {
18 public:
19   AliTRDTriggerAnalysis();
20   ~AliTRDTriggerAnalysis();
21
22   enum TRDTrigger_t { kHCO = 0, kHJT, kHSE, kHQU, kHEE, kHlast };
23
24   enum JetTriggerMode_t { kHJTDefault = 0, kHJTWindowZPhi };
25
26   void ResetTriggers();
27   Bool_t CalcTriggers(const AliVEvent* event);
28
29   Bool_t IsFired(TRDTrigger_t trg) const {
30     Obsolete("IsFired(...) is deprecated, use CheckCondition instead",
31              "now", "asap");
32     return CheckCondition(trg);
33   }
34
35   Bool_t HasTriggeredConfirmed(TRDTrigger_t trg) const {
36     return (HasTriggered(trg) && CheckCondition(trg));
37   }
38   Bool_t HasTriggered(TRDTrigger_t trg) const {
39     return (fTriggerClasses & (1 << trg));
40   }
41   Bool_t HasFired(TRDTrigger_t trg) const {
42     return (fTriggerInputs & (1 << trg));
43   }
44   Bool_t CheckCondition(TRDTrigger_t trg) const {
45     return (fTriggerFlags[2 * trg] | fTriggerFlags[2 * trg + 1]);
46   }
47   Bool_t CheckCondition(TRDTrigger_t trg, Int_t stack) const {
48     Int_t idx = 2 * trg + (stack / 64);
49     Int_t bit = stack % 64;
50     return (fTriggerFlags[idx] & (1ULL << bit));
51   }
52
53   Bool_t CheckTrgFlags(Int_t bit, Int_t sector) const {
54     return (fTriggerContribs[sector] & (1 << bit));
55   }
56
57   void SetRequireMatch(Bool_t val) { fRequireMatch = val; }
58   Bool_t GetRequireMatch() const { return fRequireMatch; }
59
60   void SetRequireMatchElectron(Bool_t val) { fRequireMatchElectron = val; }
61   Bool_t GetRequireMatchElectron() const { return fRequireMatchElectron; }
62
63   void SetRequireInTime(Bool_t val) { fRequireInTime = val; }
64   Bool_t GetRequireInTime() const { return fRequireInTime; }
65
66   void SetJetTriggerMode(Int_t mode) { fJetTriggerMode = mode; }
67   Int_t GetJetTriggerMode() const { return fJetTriggerMode; }
68
69   void SetVerbosity(UChar_t val) { fVerbosity = val; }
70   UChar_t GetVerbosity() const { return fVerbosity; }
71
72 protected:
73   void MarkClass(TRDTrigger_t trg) { fTriggerClasses |= (1 << trg); }
74   void MarkInput(TRDTrigger_t trg) { fTriggerInputs |= (1 << trg); }
75    void MarkCondition(TRDTrigger_t trg, Int_t stack)
76   {
77     Int_t idx = 2 * trg + (stack / 64);
78     Int_t bit = stack % 64;
79     fTriggerFlags[idx] |= (1ULL << bit);
80   }
81
82
83   static const Int_t fgkNstacks = 90; // no. of TRD stacks (global)
84   ULong64_t fTriggerFlags[2 * kHlast];   //! internal representation of condition checks
85   UChar_t fTriggerInputs;  //! internal representation of trigger inputs
86   UChar_t fTriggerClasses; //! internal representation of trigger classes
87
88   // configuration
89   UChar_t fVerbosity;      // verbosity level
90   Bool_t fRequireMatch;    // require a matched global track
91                            // for all conditions
92   Bool_t fRequireMatchElectron; // require a matched global track
93                                 // for the electron conditions
94   Bool_t fRequireInTime;        // require the tracks to be in time
95   Int_t  fJetTriggerMode;       // select mode for jet trigger
96                                 // 0: default (stack-wise counting, as hw)
97                                 // 1: count in overlapping windows of stack size
98
99   // trigger thresholds
100   UChar_t fTRDlayerMaskEl;      // mask for tracklet requirements
101   UChar_t fTRDnTrackletsEl;     // min. number of tracklets
102   Float_t fTRDptHSE;            // pt threshold for HSE trigger
103   UChar_t fTRDpidHSE;           // PID threshold for HSE trigger
104   Float_t fTRDptHQU;            // pt threshold for HQU trigger
105   UChar_t fTRDpidHQU;           // PID threshold for HQU trigger
106   Float_t fTRDptHEE;            // pt threshold for HEE trigger
107   UChar_t fTRDpidHEE;           // PID threshold for HEE trigger
108   UChar_t fTRDminSectorHEE;     // min sector for HEE trigger
109   UChar_t fTRDmaxSectorHEE;     // max sector for HEE trigger
110   Float_t fTRDptHJT;            // pt threshold for HJT trigger
111   UChar_t fTRDnHJT;             // no of track threshold for HJT trigger
112
113   UInt_t fTriggerContribs[18]; // temporary for debugging !!!
114
115   ClassDef(AliTRDTriggerAnalysis, 1);
116 };
117
118 #endif