PWGPP-71 Move TPC noise filtering information form the AliESDevent to the AliESDHeader
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDHeader.h
1 // -*- mode: C++ -*- 
2 #ifndef ALIESDHEADER_H
3 #define ALIESDHEADER_H
4
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6  * See cxx source for full Copyright notice                               */
7
8 //-------------------------------------------------------------------------
9 //                      Class AliESDHeader
10 //   Header data
11 //   for the ESD   
12 //   Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch 
13 //-------------------------------------------------------------------------
14
15 #include <TObjArray.h>
16 #include <TClonesArray.h>
17 #include <TBits.h>
18 #include "AliVHeader.h"
19 #include "AliTriggerScalersESD.h"
20 #include "AliTriggerScalersRecordESD.h"
21
22 class AliTriggerScalersESD;
23 class AliTriggerScalersRecordESD;
24 class AliTriggerIR;
25 class AliTriggerConfiguration;
26
27 class AliESDHeader: public AliVHeader {
28 public:
29   AliESDHeader();
30   virtual ~AliESDHeader();
31   AliESDHeader(const AliESDHeader& header);
32   AliESDHeader& operator=(const AliESDHeader& header);
33   virtual void Copy(TObject &obj) const;
34
35   void      SetTriggerMask(ULong64_t n) {fTriggerMask=n;}
36   void      SetTriggerMaskNext50(ULong64_t n) {fTriggerMaskNext50=n;}
37   void      SetOrbitNumber(UInt_t n) {fOrbitNumber=n;}
38   void      SetTimeStamp(UInt_t timeStamp){fTimeStamp = timeStamp;}
39   void      SetEventType(UInt_t eventType){fEventType = eventType;}
40   void      SetEventSpecie(UInt_t eventSpecie){fEventSpecie = eventSpecie;}
41   void      SetEventNumberInFile(Int_t n) {fEventNumberInFile=n;}
42   void      SetBunchCrossNumber(UShort_t n) {fBunchCrossNumber=n;}
43   void      SetPeriodNumber(UInt_t n) {fPeriodNumber=n;}
44   void      SetTriggerCluster(UChar_t n) {fTriggerCluster = n;}
45   Bool_t    AddTriggerIR(const AliTriggerIR* ir);
46   void      SetCTPConfig(AliTriggerConfiguration* ctpConfig) {fCTPConfig=ctpConfig;};
47 //************Setters/Getters for Trigger Inputs and TriggerScalersRecordESD
48   void SetL0TriggerInputs(UInt_t n) {fL0TriggerInputs=n;}
49   void SetL1TriggerInputs(UInt_t n) {fL1TriggerInputs=n;}
50   void SetL2TriggerInputs(UShort_t n) {fL2TriggerInputs=n;}
51   UInt_t      GetL0TriggerInputs() const {return fL0TriggerInputs;}  
52   UInt_t      GetL1TriggerInputs() const {return fL1TriggerInputs;} 
53   UShort_t    GetL2TriggerInputs() const {return fL2TriggerInputs;} 
54   void SetTriggerScalersRecord(AliTriggerScalersESD *scalerRun) {fTriggerScalers.AddTriggerScalers(scalerRun); }
55   void SetTriggerScalersDeltaEvent(const AliTriggerScalersRecordESD *scalerRun) {fTriggerScalersDeltaEvent = *scalerRun; }
56   void SetTriggerScalersDeltaRun(const AliTriggerScalersRecordESD *scalerRun) {fTriggerScalersDeltaRun = *scalerRun; }
57   const AliTriggerScalersRecordESD* GetTriggerScalersRecord() const {return &fTriggerScalers; }
58   const AliTriggerScalersRecordESD* GetTriggerScalersDeltaEvent() const {return &fTriggerScalersDeltaEvent; }
59   const AliTriggerScalersRecordESD* GetTriggerScalersDeltaRun() const {return &fTriggerScalersDeltaRun; }
60   const AliTriggerIR* GetTriggerIR(Int_t i) const { return (const AliTriggerIR*)fIRBufferArray[i]; }
61   void SetActiveTriggerInputs(const char*name, Int_t index);
62   const char* GetTriggerInputName(Int_t index, Int_t trglevel) const;
63   TString     GetActiveTriggerInputs() const;
64   TString     GetFiredTriggerInputs() const;
65   Bool_t      IsTriggerInputFired(const char *name) const;
66   const AliTriggerConfiguration*  GetCTPConfig() const { return fCTPConfig;}
67   Int_t  FindIRIntInteractionsBXMap(Int_t difference) const;
68   TBits  GetIRInt2InteractionMap() const { SetIRInteractionMap(); return fIRInt2InteractionsMap; }
69   TBits  GetIRInt1InteractionMap() const { SetIRInteractionMap(); return fIRInt1InteractionsMap; }
70   Int_t  GetIRInt2ClosestInteractionMap() const;
71   Int_t  GetIRInt1ClosestInteractionMap(Int_t gap = 3) const;
72   Int_t  GetIRInt2LastInteractionMap() const;
73 //**************************************************************************
74
75   ULong64_t GetTriggerMask() const {return fTriggerMask;}
76   ULong64_t GetTriggerMaskNext50() const {return fTriggerMaskNext50;}
77   void      GetTriggerMaskAll(ULong64_t& low,ULong64_t& high) const {low=fTriggerMask;high=fTriggerMaskNext50;}
78   UInt_t    GetOrbitNumber() const {return fOrbitNumber;}
79   UInt_t    GetTimeStamp()  const { return fTimeStamp;}
80   UInt_t    GetEventType()  const { return fEventType;}
81   UInt_t    GetEventSpecie()  const { return fEventSpecie;}
82   Int_t     GetEventNumberInFile() const {return fEventNumberInFile;}
83   UShort_t  GetBunchCrossNumber() const {return fBunchCrossNumber;}
84   UInt_t    GetPeriodNumber() const {return fPeriodNumber;}
85   UChar_t   GetTriggerCluster() const {return fTriggerCluster;}
86   Int_t     GetTriggerIREntries() const { return fIRBufferArray.GetEntriesFast();};
87   Int_t     GetTriggerIREntries(Int_t int1, Int_t int2, Float_t deltaTime = 180.) const;
88   TObjArray GetIRArray(Int_t int1, Int_t int2, Float_t deltaTime = 180.) const;
89   void      Reset();
90   void      Print(const Option_t *opt=0) const;
91
92   enum {kNTriggerInputs = 60};   //24 L0, 24 L1 and 12 L2 inputs
93   Char_t GetTPCNoiseFilterCounter(UInt_t index) {return fTPCNoiseFilterCounter[index%3];};
94   void SetTPCNoiseFilterCounter(UInt_t index,UChar_t value) {fTPCNoiseFilterCounter[index%3]=value;};
95
96 private:
97   void   SetIRInteractionMap() const;
98
99 private:
100
101   // Event Identification
102   ULong64_t    fTriggerMask;       // Trigger Type (mask) 1-50 bits
103   ULong64_t    fTriggerMaskNext50; // Trigger Type (mask) 51-100 bits
104   UInt_t       fOrbitNumber;       // Orbit Number
105   UInt_t       fTimeStamp;         // Time stamp
106   UInt_t       fEventType;         // Type of Event
107   UInt_t       fEventSpecie;       // Reconstruction event specie (1-default,2-lowM,4-highM,8-cosmic,16-cal)
108   UInt_t       fPeriodNumber;      // Period Number
109   Int_t        fEventNumberInFile; // Running Event count in the file
110   UShort_t     fBunchCrossNumber;  // Bunch Crossing Number
111   UChar_t      fTriggerCluster;    // Trigger cluster (mask)
112   UInt_t       fL0TriggerInputs;   // L0 Trigger Inputs (mask)
113   UInt_t       fL1TriggerInputs;   // L1 Trigger Inputs (mask)
114   UShort_t     fL2TriggerInputs;   // L2 Trigger Inputs (mask)
115   AliTriggerScalersRecordESD fTriggerScalers;  //Trigger counters of triggered classes in event, interpolated to the event time
116   AliTriggerScalersRecordESD fTriggerScalersDeltaEvent;  // Change in the trigger scalers between the two counter readings closest to the event time 
117   AliTriggerScalersRecordESD fTriggerScalersDeltaRun;  // Total number of counts in the trigger scalers for the duration of the run
118   enum {kNMaxIR = 3};              // Max number of interaction records (IR)
119   AliTriggerIR*  fIRArray[kNMaxIR];// Array with trigger IRs 
120   TObjArray    fTriggerInputsNames;// Array of TNamed of the active trigger inputs (L0,L1 and L2)
121   AliTriggerConfiguration*  fCTPConfig; // Trigger configuration for the run
122   TObjArray    fIRBufferArray;// Array with interaction records before and after triggered event
123   mutable TBits   fIRInt2InteractionsMap;  // map of the Int2 events (normally 0TVX) near the event, that's Int2Id-EventId within -90 +90 BXs
124   mutable TBits   fIRInt1InteractionsMap;  // map of the Int1 events (normally V0A&V0C) near the event, that's Int1Id-EventId within -90 +90 BXs
125   UChar_t fTPCNoiseFilterCounter[3];  // filter counter [0]=sector, [1]-timebin/sector, [2]-padrowsector 
126
127
128   ClassDef(AliESDHeader,12)
129 };
130
131 #endif