]>
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> | |
10 | #include "AliEMCALTriggerTypes.h" | |
11 | #include "AliEmcalTriggerSetupInfo.h" | |
12 | ||
cf9ee6ed | 13 | class AliEMCALGeometry; |
14 | class TArrayI; | |
15 | ||
00c77045 | 16 | class AliEmcalTriggerPatchInfo: public TObject { |
17 | public: | |
18 | AliEmcalTriggerPatchInfo(); | |
19 | AliEmcalTriggerPatchInfo(const AliEmcalTriggerPatchInfo &p); | |
20 | AliEmcalTriggerPatchInfo &operator=(const AliEmcalTriggerPatchInfo &p); | |
21 | virtual ~AliEmcalTriggerPatchInfo(); | |
22 | ||
23 | ||
24 | Double_t GetPhiGeo() const { return fCenterGeo.Phi(); } | |
25 | Double_t GetPhiCM() const { return fCenterMass.Phi(); } | |
26 | Double_t GetPhiMin() const { return fEdge1.Phi(); } | |
27 | Double_t GetPhiMax() const { return fEdge2.Phi(); } | |
28 | Double_t GetEtaGeo() const { return fCenterGeo.Eta(); } | |
29 | Double_t GetEtaCM() const { return fCenterMass.Eta(); } | |
30 | Double_t GetEtaMin() const { return fEdge2.Eta(); } | |
31 | Double_t GetEtaMax() const { return fEdge1.Eta(); } | |
32 | Double_t GetPatchE() const { return fCenterGeo.E(); } | |
33 | Int_t GetADCAmp() const { return fADCAmp; } | |
34 | Double_t GetADCAmpGeVRough() const { return (Double_t)fADCAmp * kEMCL1ADCtoGeV; } | |
35 | Int_t GetTriggerBits() const { return fTriggerBits; } | |
cf9ee6ed | 36 | Int_t GetEdgeCellX() const { return fEdgeCell[0]; } |
37 | Int_t GetEdgeCellY() const { return fEdgeCell[1]; } | |
38 | void GetCellIndices( AliEMCALGeometry *geom, TArrayI *cells ); | |
00c77045 | 39 | |
4a51ca21 | 40 | Bool_t IsLevel0() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL0))&(!(fTriggerBits >> 25))&1); } |
7ea0d3f4 MV |
41 | Bool_t IsJetLow() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1JetLow))&(!(fTriggerBits >> 25))&1); } |
42 | Bool_t IsJetHigh() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1JetHigh))&(!(fTriggerBits >> 25))&1); } | |
f9a1843e | 43 | Bool_t IsGammaLow() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1GammaLow))&(!(fTriggerBits >> 25))&1); } |
44 | Bool_t IsGammaHigh() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1GammaHigh))&(!(fTriggerBits >> 25))&1); } | |
001765f7 | 45 | Bool_t IsMainTrigger() const { return (Bool_t)((fTriggerBits >> 24)&(!(fTriggerBits >> 25))&1); } |
7ea0d3f4 MV |
46 | Bool_t IsJetLowSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1JetLow))&(fTriggerBits >> 25)&1); } |
47 | Bool_t IsJetHighSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1JetHigh))&(fTriggerBits >> 25)&1); } | |
001765f7 | 48 | Bool_t IsMainTriggerSimple() const { return (Bool_t)((fTriggerBits >> 24)&(fTriggerBits >> 25)&1); } |
49 | Bool_t IsOfflineSimple() const { return (Bool_t)((fTriggerBits >> 25)&1); } | |
00c77045 | 50 | |
51 | void SetCenterGeo( TVector3 &v, Double_t e ) { SetLorentzVector( fCenterGeo, v, e ); } | |
52 | void SetCenterGeo( TLorentzVector &v ) { fCenterGeo = v; } | |
53 | void SetCenterMass( TLorentzVector &v ) { fCenterMass = v; } | |
54 | void SetCenterMass( TVector3 &v, Double_t e ) { SetLorentzVector( fCenterMass, v, e ); } | |
55 | void SetEdge1( TLorentzVector &v ) { fEdge1 = v; } | |
56 | void SetEdge1( TVector3 &v, Double_t e ) { SetLorentzVector( fEdge1, v, e ); } | |
57 | void SetEdge2( TLorentzVector &v ) { fEdge2 = v; } | |
58 | void SetEdge2( TVector3 &v, Double_t e ) { SetLorentzVector( fEdge2, v, e ); } | |
59 | void SetADCAmp( Int_t a ) { fADCAmp = a; } | |
cf9ee6ed | 60 | void SetEdgeCell( Int_t x, Int_t y ) { fEdgeCell[0] = x; fEdgeCell[1] = y; } |
00c77045 | 61 | |
62 | void SetLorentzVector( TLorentzVector &lv, TVector3 &v, Double_t e ); | |
63 | ||
64 | void SetTriggerBits( Int_t i ) { fTriggerBits = i; } | |
65 | ||
7ea0d3f4 MV |
66 | void SetOffSet(Int_t i) { fOffSet = i; } |
67 | ||
00c77045 | 68 | |
69 | protected: | |
70 | TLorentzVector &GetLorentzVector(const Double_t *vertex = 0) const; | |
71 | ||
72 | TLorentzVector fCenterGeo; // geometrical center | |
73 | TLorentzVector fCenterMass; // CM | |
74 | TLorentzVector fEdge1; // max eta/ min phi edge | |
75 | TLorentzVector fEdge2; // min eta/ max phi edge | |
76 | Int_t fADCAmp; // online ADC amplitude | |
77 | Int_t fTriggerBits; //trigger bit mask | |
cf9ee6ed | 78 | Int_t fEdgeCell[2]; // cell "bottom lower" edge (min phi, max eta) |
7ea0d3f4 | 79 | Int_t fOffSet; // offset of bit (different in data and MC) |
00c77045 | 80 | |
7ea0d3f4 | 81 | ClassDef(AliEmcalTriggerPatchInfo, 4) // Emcal particle class |
00c77045 | 82 | }; |
83 | #endif |