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 */
6 //-------------------------------------------------------------------------
7 // Class AliD0toKpiAnalysis
8 // Reconstruction and analysis D0 -> K^- pi^+
10 // Origin: A. Dainese andrea.dainese@pd.infn.it
11 //-------------------------------------------------------------------------
13 #include <Riostream.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"
24 //-----------------------------------------------------------------------------
25 class AliD0toKpiAnalysis : public TNamed {
29 virtual ~AliD0toKpiAnalysis();
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; }
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
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]
72 // 5 = d0K [micron] upper limit!
73 // 6 = d0Pi [micron] upper limit!
74 // 7 = d0d0 [micron^2]
77 Bool_t fDebug; // debug option
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;
97 ClassDef(AliD0toKpiAnalysis,1) // Reconstruction of D0 candidates class