]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/AliEmcalTriggerPatchInfo.h
add GetNAcceptedClusters() function
[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   IsJetLow() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1JetLow))&(!(fTriggerBits >> 25))&1); }
41   Bool_t   IsJetHigh() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1JetHigh))&(!(fTriggerBits >> 25))&1); }
42   Bool_t   IsMainTrigger() const { return (Bool_t)((fTriggerBits >> 24)&(!(fTriggerBits >> 25))&1); }
43   Bool_t   IsJetLowSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1JetLow))&(fTriggerBits >> 25)&1); }
44   Bool_t   IsJetHighSimple() const { return (Bool_t)((fTriggerBits >> (fOffSet + kL1JetHigh))&(fTriggerBits >> 25)&1); }
45   Bool_t   IsMainTriggerSimple() const { return (Bool_t)((fTriggerBits >> 24)&(fTriggerBits >> 25)&1); }
46   Bool_t   IsOfflineSimple() const { return (Bool_t)((fTriggerBits >> 25)&1); }
47   
48   void SetCenterGeo( TVector3 &v, Double_t e ) { SetLorentzVector( fCenterGeo, v, e ); }
49   void SetCenterGeo( TLorentzVector &v ) { fCenterGeo = v; }
50   void SetCenterMass( TLorentzVector &v ) { fCenterMass = v; }
51   void SetCenterMass( TVector3 &v, Double_t e ) { SetLorentzVector( fCenterMass, v, e ); }
52   void SetEdge1( TLorentzVector &v ) { fEdge1 = v; }
53   void SetEdge1( TVector3 &v, Double_t e ) { SetLorentzVector( fEdge1, v, e ); }
54   void SetEdge2( TLorentzVector &v ) { fEdge2 = v; }
55   void SetEdge2( TVector3 &v, Double_t e ) { SetLorentzVector( fEdge2, v, e ); }
56   void SetADCAmp( Int_t a ) { fADCAmp = a; }
57   void SetEdgeCell( Int_t x, Int_t y ) { fEdgeCell[0] = x; fEdgeCell[1] = y; }
58
59   void SetLorentzVector( TLorentzVector &lv, TVector3 &v, Double_t e );
60
61   void SetTriggerBits( Int_t i ) { fTriggerBits = i; }
62
63   void SetOffSet(Int_t i)        { fOffSet      = i; }
64
65
66  protected:
67   TLorentzVector   &GetLorentzVector(const Double_t *vertex = 0)  const;
68
69   TLorentzVector    fCenterGeo;                     // geometrical center
70   TLorentzVector    fCenterMass;                    // CM
71   TLorentzVector    fEdge1;                         // max eta/ min phi edge
72   TLorentzVector    fEdge2;                         // min eta/ max phi edge
73   Int_t             fADCAmp;                        // online ADC amplitude
74   Int_t             fTriggerBits;                   //trigger bit mask
75   Int_t             fEdgeCell[2];                   // cell "bottom lower" edge (min phi, max eta)
76   Int_t             fOffSet;                        // offset of bit (different in data and MC)
77
78   ClassDef(AliEmcalTriggerPatchInfo, 4) // Emcal particle class
79 };
80 #endif