]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/AliEmcalTriggerPatchInfo.h
Change of logic in main trigger selection:
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEmcalTriggerPatchInfo.h
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
13 class AliEMCALGeometry;
14 class TArrayI;
15
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; }
36   Int_t    GetEdgeCellX() const { return fEdgeCell[0]; }
37   Int_t    GetEdgeCellY() const { return fEdgeCell[1]; }
38   void     GetCellIndices( AliEMCALGeometry *geom, TArrayI *cells );
39   
40   Bool_t   IsLevel0() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL0))&(!(fTriggerBits >> 25))&1); }
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); }
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); }
45   Bool_t   IsMainTrigger() const { return (Bool_t)((fTriggerBits >> 24)&(!(fTriggerBits >> 25))&1); }
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); }
48   Bool_t   IsGammaLowSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1GammaLow))&(fTriggerBits >> 25)&1); }
49   Bool_t   IsGammaHighSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1GammaHigh))&(fTriggerBits >> 25)&1); }
50   Bool_t   IsMainTriggerSimple() const { return (Bool_t)((fTriggerBits >> 24)&(fTriggerBits >> 25)&1); }
51   Bool_t   IsOfflineSimple() const { return (Bool_t)((fTriggerBits >> 25)&1); }
52   
53   void SetCenterGeo( TVector3 &v, Double_t e ) { SetLorentzVector( fCenterGeo, v, e ); }
54   void SetCenterGeo( TLorentzVector &v ) { fCenterGeo = v; }
55   void SetCenterMass( TLorentzVector &v ) { fCenterMass = v; }
56   void SetCenterMass( TVector3 &v, Double_t e ) { SetLorentzVector( fCenterMass, v, e ); }
57   void SetEdge1( TLorentzVector &v ) { fEdge1 = v; }
58   void SetEdge1( TVector3 &v, Double_t e ) { SetLorentzVector( fEdge1, v, e ); }
59   void SetEdge2( TLorentzVector &v ) { fEdge2 = v; }
60   void SetEdge2( TVector3 &v, Double_t e ) { SetLorentzVector( fEdge2, v, e ); }
61   void SetADCAmp( Int_t a ) { fADCAmp = a; }
62   void SetEdgeCell( Int_t x, Int_t y ) { fEdgeCell[0] = x; fEdgeCell[1] = y; }
63
64   void SetLorentzVector( TLorentzVector &lv, TVector3 &v, Double_t e );
65
66   void SetTriggerBits( Int_t i ) { fTriggerBits = i; }
67
68   void SetOffSet(Int_t i)        { fOffSet      = i; }
69
70
71  protected:
72   TLorentzVector   &GetLorentzVector(const Double_t *vertex = 0)  const;
73
74   TLorentzVector    fCenterGeo;                     // geometrical center
75   TLorentzVector    fCenterMass;                    // CM
76   TLorentzVector    fEdge1;                         // max eta/ min phi edge
77   TLorentzVector    fEdge2;                         // min eta/ max phi edge
78   Int_t             fADCAmp;                        // online ADC amplitude
79   Int_t             fTriggerBits;                   //trigger bit mask
80   Int_t             fEdgeCell[2];                   // cell "bottom lower" edge (min phi, max eta)
81   Int_t             fOffSet;                        // offset of bit (different in data and MC)
82
83   ClassDef(AliEmcalTriggerPatchInfo, 4) // Emcal particle class
84 };
85 #endif