Line data Source code
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 16 : void SetTriggerMask(ULong64_t n) {fTriggerMask=n;}
36 16 : void SetTriggerMaskNext50(ULong64_t n) {fTriggerMaskNext50=n;}
37 16 : void SetOrbitNumber(UInt_t n) {fOrbitNumber=n;}
38 32 : void SetTimeStamp(UInt_t timeStamp){fTimeStamp = timeStamp;}
39 16 : void SetEventType(UInt_t eventType){fEventType = eventType;}
40 32 : void SetEventSpecie(UInt_t eventSpecie){fEventSpecie = eventSpecie;}
41 32 : void SetEventNumberInFile(Int_t n) {fEventNumberInFile=n;}
42 16 : void SetBunchCrossNumber(UShort_t n) {fBunchCrossNumber=n;}
43 16 : void SetPeriodNumber(UInt_t n) {fPeriodNumber=n;}
44 16 : void SetTriggerCluster(UChar_t n) {fTriggerCluster = n;}
45 : Bool_t AddTriggerIR(const AliTriggerIR* ir);
46 0 : void SetCTPConfig(AliTriggerConfiguration* ctpConfig) {fCTPConfig=ctpConfig;};
47 : //************Setters/Getters for Trigger Inputs and TriggerScalersRecordESD
48 16 : void SetL0TriggerInputs(UInt_t n) {fL0TriggerInputs=n;}
49 16 : void SetL1TriggerInputs(UInt_t n) {fL1TriggerInputs=n;}
50 16 : void SetL2TriggerInputs(UShort_t n) {fL2TriggerInputs=n;}
51 16 : UInt_t GetL0TriggerInputs() const {return fL0TriggerInputs;}
52 16 : UInt_t GetL1TriggerInputs() const {return fL1TriggerInputs;}
53 16 : UShort_t GetL2TriggerInputs() const {return fL2TriggerInputs;}
54 0 : void SetTriggerScalersRecord(AliTriggerScalersESD *scalerRun) {fTriggerScalers.AddTriggerScalers(scalerRun); }
55 0 : void SetTriggerScalersDeltaEvent(const AliTriggerScalersRecordESD *scalerRun) {fTriggerScalersDeltaEvent = *scalerRun; }
56 0 : void SetTriggerScalersDeltaRun(const AliTriggerScalersRecordESD *scalerRun) {fTriggerScalersDeltaRun = *scalerRun; }
57 0 : const AliTriggerScalersRecordESD* GetTriggerScalersRecord() const {return &fTriggerScalers; }
58 0 : const AliTriggerScalersRecordESD* GetTriggerScalersDeltaEvent() const {return &fTriggerScalersDeltaEvent; }
59 0 : const AliTriggerScalersRecordESD* GetTriggerScalersDeltaRun() const {return &fTriggerScalersDeltaRun; }
60 160 : 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 0 : const AliTriggerConfiguration* GetCTPConfig() const { return fCTPConfig;}
67 : Int_t FindIRIntInteractionsBXMap(Int_t difference) const;
68 16 : TBits GetIRInt2InteractionMap() const { SetIRInteractionMap(); return fIRInt2InteractionsMap; }
69 16 : 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 872 : ULong64_t GetTriggerMask() const {return fTriggerMask;}
76 856 : ULong64_t GetTriggerMaskNext50() const {return fTriggerMaskNext50;}
77 0 : void GetTriggerMaskAll(ULong64_t& low,ULong64_t& high) const {low=fTriggerMask;high=fTriggerMaskNext50;}
78 88 : UInt_t GetOrbitNumber() const {return fOrbitNumber;}
79 144 : UInt_t GetTimeStamp() const { return fTimeStamp;}
80 56 : UInt_t GetEventType() const { return fEventType;}
81 16 : UInt_t GetEventSpecie() const { return fEventSpecie;}
82 316 : Int_t GetEventNumberInFile() const {return fEventNumberInFile;}
83 94 : UShort_t GetBunchCrossNumber() const {return fBunchCrossNumber;}
84 0 : UInt_t GetPeriodNumber() const {return fPeriodNumber;}
85 32 : UChar_t GetTriggerCluster() const {return fTriggerCluster;}
86 0 : 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 0 : Char_t GetTPCNoiseFilterCounter(UInt_t index) {return fTPCNoiseFilterCounter[index%3];};
94 0 : 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 424 : ClassDef(AliESDHeader,14)
129 : };
130 :
131 : #endif
|