Primary vertex reconstruction and standalone ITS tracking in the reconstruction chain
[u/mrichter/AliRoot.git] / ANALYSIS / AliD0toKpiAnalysis.h
1 #ifndef AliD0toKpiAnalysis_H
2 #define AliD0toKpiAnalysis_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //-------------------------------------------------------------------------
7 //                      Class AliD0toKpiAnalysis
8 //             Reconstruction and analysis D0 -> K^- pi^+
9 //      
10 //         Origin: A. Dainese    andrea.dainese@pd.infn.it                  
11 //-------------------------------------------------------------------------
12
13 #include <Riostream.h>
14 #include <TString.h>
15 #include <TNamed.h>
16 #include "AliESD.h"
17 #include "AliITStrackV2.h"
18 #include "AliITSVertexerTracks.h"
19 #include "AliESDVertex.h"
20 #include "AliV0vertexer.h"
21 #include "AliV0vertex.h"
22 #include "AliD0toKpi.h"
23
24 //-----------------------------------------------------------------------------
25 class AliD0toKpiAnalysis : public TNamed {
26  public:
27   //
28   AliD0toKpiAnalysis();
29   virtual ~AliD0toKpiAnalysis();
30
31   void ApplySelection(const Char_t *inName="AliD0toKpi.root",
32                       const Char_t *outName="AliD0toKpi_sele.root") const;
33   void FindCandidates(Int_t evFirst=0,Int_t evLast=0,
34                       const Char_t *outName="AliD0toKpi.root");
35   void FindCandidatesESD(Int_t evFirst=0,Int_t evLast=0,
36                          const Char_t *outName="AliD0toKpi.root");
37   void PrintStatus() const;
38   void SetBz(Double_t bz=-9999.) { fBz=bz; return; }
39   void SetVertexOnTheFly() { fVertexOnTheFly=kTRUE; return; }
40   void SetSimulation() { fSim=kTRUE; return; }
41   void SetOnlySignal() { fOnlySignal=kTRUE; return; }
42   void SetPtCut(Double_t pt=0.) { fPtCut=pt; return; }
43   void Setd0Cut(Double_t d0=0.) { fd0Cut=d0; return; } 
44   void SetMassCut(Double_t deltaM=1000.) { fMassCut=deltaM; return; }
45   void SetD0Cuts(Double_t cut0=1000.,Double_t cut1=100000.,
46                  Double_t cut2=1.1,Double_t cut3=0.,Double_t cut4=0.,
47                  Double_t cut5=100000.,Double_t cut6=100000.,
48                  Double_t cut7=100000000.,Double_t cut8=-1.1); 
49   void SetD0Cuts(const Double_t cuts[9]); 
50   void SetPID(TString pid="TOFparam_PbPb") { fPID=pid; return; }
51   void SetDebug() { fDebug=kTRUE; return; }
52   //
53  private:
54   //
55   Double_t fBz;             // value of the magnetic field
56   Bool_t   fVertexOnTheFly; // flag for primary vertex reco on the fly
57   Bool_t   fSim;            // flag for the analysis of simulated events
58   Bool_t   fOnlySignal;     // write to file only signal candidates (for sim)
59   TString  fPID;           // PID scheme
60
61   Double_t fV1[3]; // primary vertex position (in cm)
62   Double_t fPtCut;   // minimum track pt (in GeV/c)
63   Double_t fd0Cut;   // minimum track |rphi impact parameter| (in micron) 
64   Double_t fMassCut; // maximum of |InvMass-MD0| (in GeV)
65   Double_t fD0Cuts[9]; // cuts on D0 candidates (see SetD0Cuts())
66                        // (to be passed to function AliD0toKpi::Select())
67                        // 0 = inv. mass half width [GeV]   
68                        // 1 = dca [micron]
69                        // 2 = cosThetaStar 
70                        // 3 = pTK [GeV/c]
71                        // 4 = pTPi [GeV/c]
72                        // 5 = d0K [micron]   upper limit!
73                        // 6 = d0Pi [micron]  upper limit!
74                        // 7 = d0d0 [micron^2]
75                        // 8 = cosThetaPoint
76
77   Bool_t fDebug;       // debug option
78   //
79   Double_t CalculateTOFmass(Double_t mom,Double_t length,Double_t time) const;
80   void     MakeTracksRefFile(Int_t evFirst=0,Int_t evLast=0) const;
81   void     MakeTracksRefFileESD() const;
82   Bool_t   SelectInvMass(const Double_t p[6]) const;
83   void     SelectTracks(TTree &trkTree,
84                       TObjArray &trksP,Int_t *trkEntryP,Int_t &nTrksP,
85                       TObjArray &trksN,Int_t *trkEntryN,Int_t &nTrksN) const; 
86   void     SelectTracksESD(AliESD &event,
87        TObjArray &trksP,Int_t *trkEntryP,Int_t &nTrksP,
88        TObjArray &trksN,Int_t *trkEntryN,Int_t &nTrksN) const; 
89   void     SelectTracksESDvtx(AliESD &event,TTree *trkTree,
90        TObjArray &trksP,Int_t *trkEntryP,Int_t &nTrksP,
91        TObjArray &trksN,Int_t *trkEntryN,Int_t &nTrksN) const; 
92   void     SetVertex1(Double_t x=0.,Double_t y=0.,Double_t z=0.) 
93     { fV1[0]=x;fV1[1]=y;fV1[2]=z; return; }
94   void     SimulationInfo(TTree *treeD0in,TTree *treeD0out) const;
95   Bool_t   SingleTrkCuts(const AliITStrackV2& trk) const;
96   //
97   ClassDef(AliD0toKpiAnalysis,1)  // Reconstruction of D0 candidates class
98 };
99
100
101 #endif
102
103
104
105
106
107
108
109