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