1 /* Copyright(c) 2013, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
4 // evaluate TRD trigger conditions,
5 // potentially with hardened conditions to remove
6 // triggers caused by conversions of low-pt photons
9 // Author: Jochen Klein <jochen.klein@cern.ch>
11 #ifndef ALITRDTRIGGERANALYSIS_H
12 #define ALITRDTRIGGERANALYSIS_H
16 class AliTRDTriggerAnalysis : public TObject
19 AliTRDTriggerAnalysis();
20 ~AliTRDTriggerAnalysis();
22 enum TRDTrigger_t { kHCO = 0, kHJT, kHSE, kHQU, kHEE, kHlast };
24 enum JetTriggerMode_t { kHJTDefault = 0, kHJTWindowZPhi };
27 Bool_t CalcTriggers(const AliVEvent* event);
29 Bool_t IsFired(TRDTrigger_t trg) const {
30 Obsolete("IsFired(...) is deprecated, use CheckCondition instead",
32 return CheckCondition(trg);
35 Bool_t HasTriggeredConfirmed(TRDTrigger_t trg) const {
36 return (HasTriggered(trg) && CheckCondition(trg));
38 Bool_t HasTriggered(TRDTrigger_t trg) const {
39 return (fTriggerClasses & (1 << trg));
41 Bool_t HasFired(TRDTrigger_t trg) const {
42 return (fTriggerInputs & (1 << trg));
44 Bool_t CheckCondition(TRDTrigger_t trg) const {
45 return (fTriggerFlags[2 * trg] | fTriggerFlags[2 * trg + 1]);
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));
53 Bool_t CheckTrgFlags(Int_t bit, Int_t sector) const {
54 return (fTriggerContribs[sector] & (1 << bit));
57 void SetRequireMatch(Bool_t val) { fRequireMatch = val; }
58 Bool_t GetRequireMatch() const { return fRequireMatch; }
60 void SetRequireMatchElectron(Bool_t val) { fRequireMatchElectron = val; }
61 Bool_t GetRequireMatchElectron() const { return fRequireMatchElectron; }
63 void SetRequireInTime(Bool_t val) { fRequireInTime = val; }
64 Bool_t GetRequireInTime() const { return fRequireInTime; }
66 void SetJetTriggerMode(Int_t mode) { fJetTriggerMode = mode; }
67 Int_t GetJetTriggerMode() const { return fJetTriggerMode; }
69 void SetVerbosity(UChar_t val) { fVerbosity = val; }
70 UChar_t GetVerbosity() const { return fVerbosity; }
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)
77 Int_t idx = 2 * trg + (stack / 64);
78 Int_t bit = stack % 64;
79 fTriggerFlags[idx] |= (1ULL << bit);
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
89 UChar_t fVerbosity; // verbosity level
90 Bool_t fRequireMatch; // require a matched global track
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
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
113 UInt_t fTriggerContribs[18]; // temporary for debugging !!!
115 ClassDef(AliTRDTriggerAnalysis, 1);