Fix for CMake
[u/mrichter/AliRoot.git] / PWG0 / AliOfflineTrigger.h
1 /* $Id: AliOfflineTrigger.h 35782 2009-10-22 11:54:31Z jgrosseo $ */
2
3 #ifndef ALIOFFLINETRIGGER_H
4 #define ALIOFFLINETRIGGER_H
5
6 #include <TObject.h>
7 #include <AliPWG0Helper.h>
8
9 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
10  * See cxx source for full Copyright notice                               */
11
12 //-------------------------------------------------------------------------
13 //                      Implementation of   Class AliOfflineTrigger
14 //   This class provides offline triggers from data in the ESD
15 //   Origin: Jan Fiete Grosse-Oetringhaus, CERN
16 //-------------------------------------------------------------------------
17
18 class AliESDEvent;
19 class TH1;
20
21 class AliOfflineTrigger : public TObject
22 {
23   public:
24     enum AliceSide { kASide = 1, kCSide, kCentralBarrel };
25     
26     AliOfflineTrigger();
27     virtual ~AliOfflineTrigger() {}
28     
29     void EnableHistograms();
30
31     Bool_t IsEventTriggered(const AliESDEvent* aEsd, AliPWG0Helper::Trigger trigger) const;
32     void FillHistograms(const AliESDEvent* aEsd);
33     
34     void SetSPDGFOThreshhold(Int_t t) { fSPDGFOThreshold = t; }
35     void SetV0Threshhold(Int_t aSide, Int_t cSide) { fV0AThreshold = aSide; fV0CThreshold = cSide; }
36     void SetFMDThreshold(Float_t low, Float_t hit) { fFMDLowCut = low; fFMDHitCut = hit; }
37     
38     Int_t GetSPDGFOThreshhold() const { return fSPDGFOThreshold; }
39     Int_t GetV0AThreshold() const { return fV0AThreshold; }
40     Int_t GetV0CThreshold() const { return fV0CThreshold; }
41     Float_t GetFMDLowThreshold() const { return fFMDLowCut; }
42     Float_t GetFMDHitThreshold() const { return fFMDHitCut; }
43     
44     virtual Long64_t Merge(TCollection* list);
45     void WriteHistograms() const;
46
47   protected:
48     Int_t SPDFiredChips(const AliESDEvent* aEsd) const;
49     Bool_t SPDGFOTrigger(const AliESDEvent* aEsd) const;
50     
51     Int_t V0BBTriggers(const AliESDEvent* aEsd, AliceSide side) const;
52     Bool_t V0Trigger(const AliESDEvent* aEsd, AliceSide side) const;
53     
54     Bool_t ZDCTrigger(const AliESDEvent* aEsd, AliceSide side) const;
55     
56     Int_t FMDHitCombinations(const AliESDEvent* aEsd, AliceSide side, Bool_t fillHistograms) const;
57     Bool_t FMDTrigger(const AliESDEvent* aEsd, AliceSide side) const;
58
59     Int_t fSPDGFOThreshold;         // number of chips to accept a SPD GF0 trigger
60     Int_t fV0AThreshold;            // threshold for number of BB triggers in V0A
61     Int_t fV0CThreshold;            // threshold for number of BB triggers in V0C
62  
63     Float_t fFMDLowCut;             // 
64     Float_t fFMDHitCut;             // 
65     
66     TH1* fHistSPD;            // histograms that histogram the criterion the cut is applied on: fired chips
67     TH1* fHistV0A;            // histograms that histogram the criterion the cut is applied on: bb triggers
68     TH1* fHistV0C;            // histograms that histogram the criterion the cut is applied on: bb triggers
69     TH1* fHistZDC;            // histograms that histogram the criterion the cut is applied on: fired bits (6 bins)
70     TH1* fHistFMDA;           // histograms that histogram the criterion the cut is applied on: number of hit combination above threshold
71     TH1* fHistFMDC;           // histograms that histogram the criterion the cut is applied on: number of hit combination above threshold
72     TH1* fHistFMDSingle;      // histograms that histogram the criterion the cut is applied on: single mult value (more than one entry per event)
73     TH1* fHistFMDSum;         // histograms that histogram the criterion the cut is applied on: summed mult value (more than one entry per event)
74
75     ClassDef(AliOfflineTrigger, 1)
76     
77   private:
78     AliOfflineTrigger(const AliOfflineTrigger&);
79     AliOfflineTrigger& operator=(const AliOfflineTrigger&);
80 };
81
82 #endif