]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AliAnalysisTaskMuonTreeBuilder.h
New analysis taks for muon-dimuon analysis (Livio)
[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 TVector3 ;
15 class TFile ;
16 class AliStack ;
17 class AliESDtrack;
18 class AliVParticle;
19 class AliMCParticle;
20 class AliMCEvent;
21
22
23 class AliAnalysisTaskMuonTreeBuilder : public AliAnalysisTaskSE {
24   public:
25
26   AliAnalysisTaskMuonTreeBuilder();
27   AliAnalysisTaskMuonTreeBuilder(const Char_t* name);
28   AliAnalysisTaskMuonTreeBuilder& operator= (const AliAnalysisTaskMuonTreeBuilder& c);
29   AliAnalysisTaskMuonTreeBuilder(const AliAnalysisTaskMuonTreeBuilder& c);
30   virtual ~AliAnalysisTaskMuonTreeBuilder();
31
32   // ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects
33   void     UserExec(Option_t *option);
34   void     Terminate(Option_t *);
35   void     UserCreateOutputObjects();
36   
37
38   // Data types
39   void   SetIsMC     (Bool_t flagMC)    {fIsMC=flagMC;}
40   void   SetBeamEnergy   (Double_t en)          {fBeamEnergy=en;}
41   
42  protected:
43   
44   Double_t              fNevt            ;    // event counter
45   Double_t              fBeamEnergy      ;    // Energy of the beam (required for the CS angle)
46   TList                 *fOutput         ;    // output
47   TTree                 *fOutputTree     ;    //! tree output
48   
49   Bool_t        fIsMC;
50   
51   Bool_t        fIsSelected;
52   char          fTrigClass[100];
53
54   Int_t         fNumMuonTracks  ;               // variables for single mu
55   Int_t         fNumSPDTracklets;
56   Int_t         fNumContributors;
57   Double_t      fVertex[3];
58   Double_t      fpT[10];
59   Double_t      fE[10];
60   Double_t      fpx[10];
61   Double_t      fpy[10];
62   Double_t      fpz[10];
63   Double_t      fpxUncorr[10];
64   Double_t      fpyUncorr[10];
65   Double_t      fpzUncorr[10];
66   Double_t      fy[10];
67   Double_t      feta[10];
68   Double_t      fphi[10];
69   Int_t         fMatchTrig[10];
70   Double_t      fTrackChi2[10];
71   Double_t      fMatchTrigChi2[10];
72   Double_t      fDCA[10];
73   Short_t       fCharge[10];
74   Int_t         fMuFamily[10];
75   Double_t      fRAtAbsEnd[10];
76
77   Int_t         fNumDimuons;                    // variables for dimuons
78   Int_t         fDimuonConstituent[45][2];
79   Double_t      fpTdimuon[45];
80   Double_t      fpxdimuon[45];
81   Double_t      fpydimuon[45];
82   Double_t      fpzdimuon[45];
83   Double_t      fydimuon[45];
84   Double_t      fiMassdimuon[45];
85   Double_t      fcostCS[45];
86   Double_t      fcostHE[45];
87   Double_t      fphiCS[45];
88   Double_t      fphiHE[45];
89   
90   //Int_t               fIsPrimary[10];
91   Int_t         fPDG[10];
92   Int_t         fPDGmother[10];
93   Int_t         fPDGdimu[45];
94
95
96
97   
98   
99   Int_t   FindDimuFamily(AliMCParticle* mcTrack1,AliMCParticle* mcTrack2, AliMCEvent* mcEvent) const;
100   Int_t   FindMuFamily(AliMCParticle* mcTrack, AliMCEvent* mcEvent) const;
101   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;
102   Double_t Rap    (Double_t e, Double_t pz) const;
103 //   Double_t Imass(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t) const;
104 //   Double_t Rap(Double_t, Double_t) const;
105   Double_t Phideg(Double_t phi) const;
106   
107 //   Double_t CostCS (Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t);
108 //   Double_t CostHE (Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t);
109 //   Double_t PhiCS  (Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t);
110 //   Double_t PhiHE  (Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t);
111   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);
112   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);
113   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);
114   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);
115   
116   ClassDef(AliAnalysisTaskMuonTreeBuilder,1);
117 };
118
119 #endif