]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AliAnalysisTaskMuonTreeBuilder.h
remove dependency to aliroot libraries, access of ESDEvent object through abstract...
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskMuonTreeBuilder.h
1 #ifndef ALIANALYSISTASKMUONTREEBUILDER_H
2 #define ALIANALYSISTASKMUONTREEBUILDER_H
3
4 #include "AliAnalysisTaskSE.h"
5 #include "TMath.h"
6
7 //      Analysis task for muon-dimuon analysis
8 //      Works for real and MC events
9 //      author: L. Bianchi - Universita' & INFN Torino
10
11 class TH1I;
12 class TParticle ;
13 class TLorentzVector ;
14 class TFile ;
15 class AliStack ;
16 class AliESDtrack;
17 class AliVParticle;
18 class AliMCParticle;
19 class AliMCEvent;
20
21
22 class AliAnalysisTaskMuonTreeBuilder : public AliAnalysisTaskSE {
23   public:
24
25   AliAnalysisTaskMuonTreeBuilder();
26   AliAnalysisTaskMuonTreeBuilder(const Char_t* name);
27   AliAnalysisTaskMuonTreeBuilder& operator= (const AliAnalysisTaskMuonTreeBuilder& c);
28   AliAnalysisTaskMuonTreeBuilder(const AliAnalysisTaskMuonTreeBuilder& c);
29   virtual ~AliAnalysisTaskMuonTreeBuilder();
30
31   // ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects
32   void     UserExec(Option_t *option);
33   void     Terminate(Option_t *);
34   void     UserCreateOutputObjects();
35   
36
37   // Data types
38   void   SetIsMC     (Bool_t flagMC)    {fIsMC=flagMC;}
39   void   SetBeamEnergy   (Double_t en)          {fBeamEnergy=en;}
40   
41  protected:
42   
43   Double_t              fNevt            ;      // event counter
44   Double_t              fBeamEnergy      ;      // Energy of the beam (required for the CS angle)
45   TList                 *fOutput         ;      // output
46   TTree                 *fOutputTree     ;      //! tree output
47   
48   Bool_t        fIsMC;                          // if MC truth has to be read
49   
50   Bool_t        fIsSelected;                    // physics selection flag
51   char          fTrigClass[100];                // fired trigger classes
52
53   Int_t         fNumMuonTracks  ;               // muon tracks in the event
54   Int_t         fNumSPDTracklets;               // spd tracklets
55   Int_t         fNumContributors;               // n contributors
56   Double_t      fVertex[3];                     // x,y,z vertex
57   Double_t      fpT[10];                        // single mu pT
58   Double_t      fE[10];                         // single mu E
59   Double_t      fpx[10];                        // single mu px
60   Double_t      fpy[10];                        // single mu py
61   Double_t      fpz[10];                        // single mu pz
62   Double_t      fpxUncorr[10];                  // single mu px uncorrected
63   Double_t      fpyUncorr[10];                  // single mu py uncorrected
64   Double_t      fpzUncorr[10];                  // single mu pz uncorrected
65   Double_t      fy[10];                         // single mu y
66   Double_t      feta[10];                       // single mu eta
67   Double_t      fphi[10];                       // single mu phi
68   Int_t         fMatchTrig[10];                 // single mu match trigger
69   Double_t      fTrackChi2[10];                 // single mu chi2 track
70   Double_t      fMatchTrigChi2[10];             // single mu chi2 of match trigger
71   Double_t      fDCA[10];                       // single mu DCA
72   Short_t       fCharge[10];                    // single mu charge
73   Int_t         fMuFamily[10];                  // single mu provenience
74   Double_t      fRAtAbsEnd[10];                 // single mu distance from beam center at end abs
75
76   Int_t         fNumDimuons;                    // dimuons in the event
77   Int_t         fDimuonConstituent[45][2];      // reference to single mus
78   Double_t      fpTdimuon[45];                  // dimuon pT
79   Double_t      fpxdimuon[45];                  // dimuon px
80   Double_t      fpydimuon[45];                  // dimuon py
81   Double_t      fpzdimuon[45];                  // dimuon pz
82   Double_t      fydimuon[45];                   // dimuon y
83   Double_t      fiMassdimuon[45];               // dimuon invariant mass
84   Double_t      fcostCS[45];                    // dimuon cos theta Collins-Soper
85   Double_t      fcostHE[45];                    // dimuon cos theta Helicity
86   Double_t      fphiCS[45];                     // dimuon phi Collins-Soper
87   Double_t      fphiHE[45];                     // dimuon phi Helicity
88   
89   //Int_t               fIsPrimary[10];
90   Int_t         fPDG[10];                       // PDG single mu
91   Int_t         fPDGmother[10];                 // PDG mother single mu
92   Int_t         fPDGdimu[45];                   // PDG dimu
93
94
95
96   
97   
98   Int_t   FindDimuFamily(AliMCParticle* mcTrack1,AliMCParticle* mcTrack2, AliMCEvent* mcEvent) const;
99   Int_t   FindMuFamily(AliMCParticle* mcTrack, AliMCEvent* mcEvent) const;
100   Double_t Imass  (Double_t e1, Double_t px1, Double_t py1, Double_t pz1, Double_t e2, Double_t px2, Double_t py2, Double_t pz2) const;
101   Double_t Rap    (Double_t e, Double_t pz) const;
102   Double_t Phideg(Double_t phi) const;
103   
104   Double_t CostCS (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
105   Double_t CostHE (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
106   Double_t PhiCS  (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
107   Double_t PhiHE  (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
108   
109   ClassDef(AliAnalysisTaskMuonTreeBuilder,1);
110 };
111
112 #endif