]>
Commit | Line | Data |
---|---|---|
00c77045 | 1 | #ifndef ALIEMCALTRIGGERPATCHINFO_H |
2 | #define ALIEMCALTRIGGERPATCHINFO_H | |
3 | ||
4 | // $Id$ | |
5 | ||
6 | #include "TObject.h" | |
7 | ||
8 | #include <TLorentzVector.h> | |
9 | #include <TMath.h> | |
541c65eb | 10 | #include "AliEmcalTriggerBitConfig.h" |
90f31d06 | 11 | //#include "AliEMCALTriggerTypes.h" |
00c77045 | 12 | #include "AliEmcalTriggerSetupInfo.h" |
13 | ||
cf9ee6ed | 14 | class AliEMCALGeometry; |
15 | class TArrayI; | |
16 | ||
00c77045 | 17 | class AliEmcalTriggerPatchInfo: public TObject { |
18 | public: | |
19 | AliEmcalTriggerPatchInfo(); | |
20 | AliEmcalTriggerPatchInfo(const AliEmcalTriggerPatchInfo &p); | |
21 | AliEmcalTriggerPatchInfo &operator=(const AliEmcalTriggerPatchInfo &p); | |
22 | virtual ~AliEmcalTriggerPatchInfo(); | |
23 | ||
314552f3 | 24 | enum TriggerMakerBits_t { |
25 | kRecalcJetBitNum = 22, | |
26 | kRecalcGammaBitNum = 23, | |
27 | kMainTriggerBitNum = 24, | |
28 | kSimpleOfflineBitNum = 25 | |
29 | }; | |
30 | // The lower bits in fTriggerBits are defined in EMCAL/AliEmcalTriggerTypes.h | |
00c77045 | 31 | |
32 | Double_t GetPhiGeo() const { return fCenterGeo.Phi(); } | |
33 | Double_t GetPhiCM() const { return fCenterMass.Phi(); } | |
34 | Double_t GetPhiMin() const { return fEdge1.Phi(); } | |
35 | Double_t GetPhiMax() const { return fEdge2.Phi(); } | |
36 | Double_t GetEtaGeo() const { return fCenterGeo.Eta(); } | |
37 | Double_t GetEtaCM() const { return fCenterMass.Eta(); } | |
38 | Double_t GetEtaMin() const { return fEdge2.Eta(); } | |
39 | Double_t GetEtaMax() const { return fEdge1.Eta(); } | |
40 | Double_t GetPatchE() const { return fCenterGeo.E(); } | |
41 | Int_t GetADCAmp() const { return fADCAmp; } | |
314552f3 | 42 | Int_t GetADCOfflineAmp() const { return fADCOfflineAmp; } |
00c77045 | 43 | Double_t GetADCAmpGeVRough() const { return (Double_t)fADCAmp * kEMCL1ADCtoGeV; } |
44 | Int_t GetTriggerBits() const { return fTriggerBits; } | |
cf9ee6ed | 45 | Int_t GetEdgeCellX() const { return fEdgeCell[0]; } |
46 | Int_t GetEdgeCellY() const { return fEdgeCell[1]; } | |
47 | void GetCellIndices( AliEMCALGeometry *geom, TArrayI *cells ); | |
00c77045 | 48 | |
314552f3 | 49 | Bool_t IsLevel0() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetLevel0Bit()))&(!(fTriggerBits >> kSimpleOfflineBitNum))&1); } |
50 | Bool_t IsJetLow() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetJetLowBit()))&(!(fTriggerBits >> kSimpleOfflineBitNum))&1); } | |
51 | Bool_t IsJetHigh() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetJetHighBit()))&(!(fTriggerBits >> kSimpleOfflineBitNum))&1); } | |
52 | Bool_t IsGammaLow() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetGammaLowBit()))&(!(fTriggerBits >> kSimpleOfflineBitNum))&1); } | |
53 | Bool_t IsGammaHigh() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetGammaHighBit()))&(!(fTriggerBits >> kSimpleOfflineBitNum))&1); } | |
54 | Bool_t IsMainTrigger() const { return (Bool_t)((fTriggerBits >> kMainTriggerBitNum)&(!(fTriggerBits >> kSimpleOfflineBitNum))&1); } | |
55 | Bool_t IsJetLowSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetJetLowBit()))&(fTriggerBits >> kSimpleOfflineBitNum)&1); } | |
56 | Bool_t IsJetHighSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetJetHighBit()))&(fTriggerBits >> kSimpleOfflineBitNum)&1); } | |
57 | Bool_t IsGammaLowSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetGammaLowBit()))&(fTriggerBits >> kSimpleOfflineBitNum)&1); } | |
58 | Bool_t IsGammaHighSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + fTriggerBitConfig.GetGammaHighBit()))&(fTriggerBits >> kSimpleOfflineBitNum)&1); } | |
59 | Bool_t IsMainTriggerSimple() const { return (Bool_t)((fTriggerBits >> kMainTriggerBitNum)&(fTriggerBits >> kSimpleOfflineBitNum)&1); } | |
60 | Bool_t IsOfflineSimple() const { return (Bool_t)((fTriggerBits >> kSimpleOfflineBitNum)&1); } | |
eb3c9439 | 61 | |
62 | // Recalculated max patches | |
63 | Bool_t IsRecalcJet() const { return (Bool_t) ((fTriggerBits >> kRecalcJetBitNum)&1); } | |
64 | Bool_t IsRecalcGamma() const { return (Bool_t) ((fTriggerBits >> kRecalcGammaBitNum)&1); } | |
65 | ||
00c77045 | 66 | |
67 | void SetCenterGeo( TVector3 &v, Double_t e ) { SetLorentzVector( fCenterGeo, v, e ); } | |
68 | void SetCenterGeo( TLorentzVector &v ) { fCenterGeo = v; } | |
69 | void SetCenterMass( TLorentzVector &v ) { fCenterMass = v; } | |
70 | void SetCenterMass( TVector3 &v, Double_t e ) { SetLorentzVector( fCenterMass, v, e ); } | |
71 | void SetEdge1( TLorentzVector &v ) { fEdge1 = v; } | |
72 | void SetEdge1( TVector3 &v, Double_t e ) { SetLorentzVector( fEdge1, v, e ); } | |
73 | void SetEdge2( TLorentzVector &v ) { fEdge2 = v; } | |
74 | void SetEdge2( TVector3 &v, Double_t e ) { SetLorentzVector( fEdge2, v, e ); } | |
75 | void SetADCAmp( Int_t a ) { fADCAmp = a; } | |
314552f3 | 76 | void SetADCOfflineAmp( Int_t a ) { fADCOfflineAmp = a; } |
cf9ee6ed | 77 | void SetEdgeCell( Int_t x, Int_t y ) { fEdgeCell[0] = x; fEdgeCell[1] = y; } |
00c77045 | 78 | |
79 | void SetLorentzVector( TLorentzVector &lv, TVector3 &v, Double_t e ); | |
80 | ||
81 | void SetTriggerBits( Int_t i ) { fTriggerBits = i; } | |
82 | ||
7ea0d3f4 MV |
83 | void SetOffSet(Int_t i) { fOffSet = i; } |
84 | ||
541c65eb | 85 | void SetTriggerBitConfig(const AliEmcalTriggerBitConfig * ref) { fTriggerBitConfig.Initialise(*ref); } |
acad44c5 | 86 | const AliEmcalTriggerBitConfig *GetTriggerBitConfig() const { return &fTriggerBitConfig; } |
541c65eb | 87 | |
00c77045 | 88 | |
89 | protected: | |
90 | TLorentzVector &GetLorentzVector(const Double_t *vertex = 0) const; | |
91 | ||
92 | TLorentzVector fCenterGeo; // geometrical center | |
93 | TLorentzVector fCenterMass; // CM | |
94 | TLorentzVector fEdge1; // max eta/ min phi edge | |
95 | TLorentzVector fEdge2; // min eta/ max phi edge | |
314552f3 | 96 | Int_t fADCAmp; // online (trigger) ADC amplitude |
97 | Int_t fADCOfflineAmp; // offline (FEE) ADC amplitude | |
98 | Int_t fTriggerBits; // trigger bit mask, see definitions in AliEmcalTriggerType and TriggerMakerBits_t (above) | |
cf9ee6ed | 99 | Int_t fEdgeCell[2]; // cell "bottom lower" edge (min phi, max eta) |
7ea0d3f4 | 100 | Int_t fOffSet; // offset of bit (different in data and MC) |
541c65eb | 101 | AliEmcalTriggerBitConfig fTriggerBitConfig; // Trigger bit configuration |
00c77045 | 102 | |
314552f3 | 103 | ClassDef(AliEmcalTriggerPatchInfo, 6) // Emcal particle class |
00c77045 | 104 | }; |
105 | #endif |