]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ANALYSIS/AliTriggerAnalysis.h
- introduction of gain scenarios (e.g. OROC only - for homogeneous gain in 11h)
[u/mrichter/AliRoot.git] / ANALYSIS / AliTriggerAnalysis.h
CommitLineData
70fdd197 1/* $Id: AliTriggerAnalysis.h 35782 2009-10-22 11:54:31Z jgrosseo $ */
ff8c4f30 2
70fdd197 3#ifndef ALITRIGGERANALYSIS_H
4#define ALITRIGGERANALYSIS_H
ff8c4f30 5
6#include <TObject.h>
ff8c4f30 7
7a11141c 8/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
9 * See cxx source for full Copyright notice */
10
11//-------------------------------------------------------------------------
70fdd197 12// Implementation of Class AliTriggerAnalysis
13// This class provides function to check if events have been triggered based on the data in the ESD
14// The trigger bits, trigger class inputs and only the data (offline trigger) can be used
7a11141c 15// Origin: Jan Fiete Grosse-Oetringhaus, CERN
16//-------------------------------------------------------------------------
17
ff8c4f30 18class AliESDEvent;
449618cd 19class AliESDtrackCuts;
27704f6c 20class TH1F;
21class TH2F;
70fdd197 22class TCollection;
c01a136b 23class TMap;
ff8c4f30 24
70fdd197 25class AliTriggerAnalysis : public TObject
ff8c4f30 26{
27 public:
7c55ebd9 28 enum Trigger { kAcceptAll = 1, kMB1 = 2, kMB2, kMB3, kSPDGFO, kSPDGFOBits, kV0A, kV0C, kV0OR, kV0AND,
1ea7a921 29 kV0ABG, kV0CBG, kZDC, kZDCA, kZDCC, kFMDA, kFMDC, kFPANY, kNSD1, kMB1Prime,
30 kSPDGFOL0, kSPDGFOL1, kZDCTDCA, kZDCTDCC, kZDCTime, kCTPV0A, kCTPV0C, kTPCLaserWarmUp, kSPDClsVsTrkBG,
8d5a14d6 31 kCentral,kSemiCentral, kT0, kT0BG, kT0Pileup, kEMCAL,
1ea7a921 32 kStartOfFlags = 0x0100, kOfflineFlag = 0x8000, kOneParticle = 0x10000, kOneTrack = 0x20000}; // MB1, MB2, MB3 definition from ALICE-INT-2005-025
c8d3e441 33 enum AliceSide { kASide = 1, kCSide, kCentralBarrel };
733f0542 34 enum V0Decision { kV0Invalid = -1, kV0Empty = 0, kV0BB, kV0BG, kV0Fake };
559b5ed7 35 enum T0Decision { kT0Invalid = -1, kT0Empty = 0, kT0BB, kT0DecBG, kT0DecPileup };
ff8c4f30 36
70fdd197 37 AliTriggerAnalysis();
61899827 38 virtual ~AliTriggerAnalysis();
907972ff 39
40 void EnableHistograms();
a2ce3799 41 void SetAnalyzeMC(Bool_t flag = kTRUE) { fMC = flag; }
61899827 42
43 Bool_t IsTriggerFired(const AliESDEvent* aEsd, Trigger trigger);
7c55ebd9 44 Int_t EvaluateTrigger(const AliESDEvent* aEsd, Trigger trigger);
70fdd197 45
46 // using trigger bits in ESD
47 Bool_t IsTriggerBitFired(const AliESDEvent* aEsd, Trigger trigger) const;
48 Bool_t IsTriggerBitFired(ULong64_t triggerMask, Trigger trigger) const;
49 Bool_t IsTriggerBitFired(const AliESDEvent* aEsd, ULong64_t tclass) const;
50
51 // using ESD data from detectors
61899827 52 Bool_t IsOfflineTriggerFired(const AliESDEvent* aEsd, Trigger trigger);
70fdd197 53
54 // using trigger classes in ESD
55 Bool_t IsTriggerClassFired(const AliESDEvent* aEsd, const Char_t* tclass) const;
56
c01a136b 57 // some "raw" trigger functions
c2ba5a61 58 Int_t SPDFiredChips(const AliESDEvent* aEsd, Int_t origin, Bool_t fillHists = kFALSE, Int_t layer = 0);
61899827 59 Bool_t SPDGFOTrigger(const AliESDEvent* aEsd, Int_t origin);
559b5ed7 60 Bool_t IsSPDClusterVsTrackletBG(const AliESDEvent* esd, Bool_t fillHists = kFALSE);
97fa3cbc 61 V0Decision V0Trigger(const AliESDEvent* aEsd, AliceSide side, Bool_t online, Bool_t fillHists = kFALSE);
559b5ed7 62 T0Decision T0Trigger(const AliESDEvent* aEsd, Bool_t online, Bool_t fillHists = kFALSE);
ce08cb1f 63 Bool_t ZDCTrigger (const AliESDEvent* aEsd, AliceSide side) const;
7c55ebd9 64 Bool_t ZDCTDCTrigger(const AliESDEvent* aEsd, AliceSide side, Bool_t useZN=kTRUE, Bool_t useZP=kFALSE, Bool_t fillHists=kFALSE) const;
65 Bool_t ZDCTimeTrigger(const AliESDEvent *aEsd, Bool_t fillHists=kFALSE) const;
61899827 66 Bool_t FMDTrigger(const AliESDEvent* aEsd, AliceSide side);
85c71ba7 67 Int_t SSDClusters(const AliESDEvent* aEsd);
8d5a14d6 68 Bool_t EMCALCellsTrigger(const AliESDEvent *aEsd);
70fdd197 69 static const char* GetTriggerName(Trigger trigger);
70
7c55ebd9 71 Bool_t IsLaserWarmUpTPCEvent(const AliESDEvent* esd);
72
907972ff 73 void FillHistograms(const AliESDEvent* aEsd);
c01a136b 74 void FillTriggerClasses(const AliESDEvent* aEsd);
ff8c4f30 75
76 void SetSPDGFOThreshhold(Int_t t) { fSPDGFOThreshold = t; }
27704f6c 77 void SetSPDGFOEfficiency(TH1F* hist) { fSPDGFOEfficiency = hist; }
1ea7a921 78 void SetSPDClustersVsTrackletsParameters(Float_t a, Float_t b) { fASPDCvsTCut = a; fBSPDCvsTCut =b;}
61899827 79 void SetV0TimeOffset(Float_t offset) { fV0TimeOffset = offset; }
97fa3cbc 80 void SetV0AdcThr(Float_t thr) { fV0AdcThr = thr; }
81 void SetV0HwPars(Float_t thr, Float_t winLow, Float_t winHigh) { fV0HwAdcThr = thr; fV0HwWinLow = winLow; fV0HwWinHigh = winHigh; }
7a11141c 82 void SetFMDThreshold(Float_t low, Float_t hit) { fFMDLowCut = low; fFMDHitCut = hit; }
4011b280 83 void SetDoFMD(Bool_t flag = kTRUE) {fDoFMD = flag;}
7c55ebd9 84 void SetZDCCutParams(Float_t refSum, Float_t refDelta, Float_t sigmaSum, Float_t sigmaDelta) { fZDCCutRefSum = refSum; fZDCCutRefDelta = refDelta; fZDCCutSigmaSum = sigmaSum; fZDCCutSigmaDelta = sigmaDelta; }
d6305a15 85 void SetCorrZDCCutParams(Float_t refSum, Float_t refDelta, Float_t sigmaSum, Float_t sigmaDelta) { fZDCCutRefSumCorr = refSum; fZDCCutRefDeltaCorr = refDelta; fZDCCutSigmaSumCorr = sigmaSum; fZDCCutSigmaDeltaCorr = sigmaDelta; }
4011b280 86
ff8c4f30 87 Int_t GetSPDGFOThreshhold() const { return fSPDGFOThreshold; }
61899827 88 Float_t GetV0TimeOffset() const { return fV0TimeOffset; }
97fa3cbc 89 Float_t GetV0AdcThr() const { return fV0AdcThr; }
7a11141c 90 Float_t GetFMDLowThreshold() const { return fFMDLowCut; }
91 Float_t GetFMDHitThreshold() const { return fFMDHitCut; }
8dec6e35 92 TMap * GetTriggerClasses() const { return fTriggerClasses;}
93
94
907972ff 95 virtual Long64_t Merge(TCollection* list);
61899827 96 void SaveHistograms() const;
c01a136b 97
98 void PrintTriggerClasses() const;
449618cd 99 void SetESDTrackCuts(AliESDtrackCuts* cuts) { fEsdTrackCuts = cuts;}
100 AliESDtrackCuts* GetESDTrackCuts() const {return fEsdTrackCuts;}
ff8c4f30 101
52f3b98d 102 void SetTPCOnly(Bool_t bTPCOnly) {fTPCOnly = bTPCOnly;}
103 Bool_t GetTPCOnly() const {return fTPCOnly;}
7c55ebd9 104
ff8c4f30 105 protected:
70fdd197 106 Bool_t IsL0InputFired(const AliESDEvent* aEsd, UInt_t input) const;
107 Bool_t IsL1InputFired(const AliESDEvent* aEsd, UInt_t input) const;
108 Bool_t IsL2InputFired(const AliESDEvent* aEsd, UInt_t input) const;
109 Bool_t IsInputFired(const AliESDEvent* aEsd, Char_t level, UInt_t input) const;
110
2078f478 111 Float_t V0CorrectLeadingTime(Int_t i, Float_t time, Float_t adc, Int_t runNumber) const;
bcd135ec 112 Float_t V0LeadingTimeWeight(Float_t adc) const;
907972ff 113
61899827 114 Int_t FMDHitCombinations(const AliESDEvent* aEsd, AliceSide side, Bool_t fillHists = kFALSE);
ff8c4f30 115
116 Int_t fSPDGFOThreshold; // number of chips to accept a SPD GF0 trigger
27704f6c 117 TH1F* fSPDGFOEfficiency; // SPD FASTOR efficiency - is applied in SPDFiredChips. Histogram contains efficiency as function of chip number (bin 1..400: first layer; 401..1200: second layer)
733f0542 118
61899827 119 Float_t fV0TimeOffset; // time offset applied to the times read from the V0 (in ns)
97fa3cbc 120 Float_t fV0AdcThr; // thresholds applied on V0 ADC data
121 Float_t fV0HwAdcThr; // online V0 trigger - thresholds applied on ADC data
122 Float_t fV0HwWinLow; // online V0 trigger - lower edge of time window
123 Float_t fV0HwWinHigh; // online V0 trigger - upper edge of time window
7c55ebd9 124
125 Float_t fZDCCutRefSum; // ZDC time cut configuration
126 Float_t fZDCCutRefDelta; // ZDC time cut configuration
127 Float_t fZDCCutSigmaSum; // ZDC time cut configuration
128 Float_t fZDCCutSigmaDelta; // ZDC time cut configuration
97fa3cbc 129
d6305a15 130 Float_t fZDCCutRefSumCorr; // Corrected ZDC time cut configuration
131 Float_t fZDCCutRefDeltaCorr; // Corrected ZDC time cut configuration
132 Float_t fZDCCutSigmaSumCorr; // Corrected ZDC time cut configuration
133 Float_t fZDCCutSigmaDeltaCorr; // Corrected ZDC time cut configuration
134
1ea7a921 135 Float_t fASPDCvsTCut; // constant for the linear cut in SPD clusters vs tracklets
136 Float_t fBSPDCvsTCut; // slope for the linear cut in SPD clusters vs tracklets
137
138
139
4011b280 140 Bool_t fDoFMD; // If false, skips the FMD (physics selection runs much faster)
7a11141c 141 Float_t fFMDLowCut; //
142 Float_t fFMDHitCut; //
907972ff 143
27704f6c 144 TH2F* fHistBitsSPD; // offline trigger bits (calculated from clusters) vs hardware trigger bits
145 TH1F* fHistFiredBitsSPD; // fired hardware bits
1ea7a921 146 TH2F* fHistSPDClsVsTrk; // histogram of clusters vs tracklet BG cut
27704f6c 147 TH1F* fHistV0A; // histograms that histogram the criterion the cut is applied on: bb triggers
148 TH1F* fHistV0C; // histograms that histogram the criterion the cut is applied on: bb triggers
ce08cb1f 149 TH1F* fHistZDC; //histograms that histogram the criterion the cut is applied on: fired bits (6 bins)
150 TH1F* fHistTDCZDC; // histograms that histogram the criterion the cut is applied on: TDC bits (32 bins)
102cfd12 151 TH2F* fHistTimeZDC; // histograms that histogram the criterion the cut is applied on: ZDC TDC timing
fcb18b05 152 TH2F* fHistTimeCorrZDC; // histograms that histogram the criterion the cut is applied on: ZDC Corrected TDC timing
27704f6c 153 TH1F* fHistFMDA; // histograms that histogram the criterion the cut is applied on: number of hit combination above threshold
154 TH1F* fHistFMDC; // histograms that histogram the criterion the cut is applied on: number of hit combination above threshold
155 TH1F* fHistFMDSingle; // histograms that histogram the criterion the cut is applied on: single mult value (more than one entry per event)
156 TH1F* fHistFMDSum; // histograms that histogram the criterion the cut is applied on: summed mult value (more than one entry per event)
559b5ed7 157 TH1F* fHistT0; // histograms that histogram the criterion the cut is applied on: bb triggers
c01a136b 158 TMap* fTriggerClasses; // counts the active trigger classes (uses the full string)
159
a2ce3799 160 Bool_t fMC; // flag if MC is analyzed
449618cd 161 AliESDtrackCuts* fEsdTrackCuts; //Track Cuts to select ESD tracks
7a11141c 162
52f3b98d 163 Bool_t fTPCOnly; // flag to set whether TPC only tracks have to be used for the offline trigger
164
559b5ed7 165 ClassDef(AliTriggerAnalysis, 18)
ff8c4f30 166
167 private:
70fdd197 168 AliTriggerAnalysis(const AliTriggerAnalysis&);
169 AliTriggerAnalysis& operator=(const AliTriggerAnalysis&);
ff8c4f30 170};
171
172#endif