]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/dielectron/macros/ConfigJpsi2eeFilter.C
73de2e90c9ff4554f6bd1548f6eaf62629171ea6
[u/mrichter/AliRoot.git] / PWG3 / dielectron / macros / ConfigJpsi2eeFilter.C
1 void SetupTrackCuts(AliDielectron *fDiele);
2 void SetupPairCuts(AliDielectron *fDiele);
3
4 void InitHistograms();
5
6 AliESDtrackCuts *SetupESDtrackCuts();
7
8 Bool_t *fIsAOD=kFALSE;
9 AliDielectron *fDiele=0x0;
10
11 AliDielectron* ConfigJpsi2eeFilter(Bool_t isAOD=kFALSE)
12 {
13   //
14   // Setup the instance of AliDielectron
15   //
16
17   fIsAOD=isAOD;
18   
19   // create the actual framework object
20   TString name="trackQ+Pt>0.6+60<dEdx<100";
21   fDiele = new AliDielectron(Form("%s",name.Data()),
22                              Form("Track cuts: %s",name.Data()));
23   
24   // cut setup
25   SetupTrackCuts();
26   SetupPairCuts();
27   
28   //
29   // QA histogram setup
30   //
31   InitHistograms();
32   
33   return fDiele;
34 }
35
36 //______________________________________________________________________________________
37 void SetupTrackCuts()
38 {
39   //
40   // Setup the track cuts
41   //
42   
43   //ESD quality cuts DielectronTrackCuts
44   if (!fIsAOD) {
45     fDiele->GetTrackFilter().AddCuts(SetupESDtrackCuts());
46   } else {
47     AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("trackCuts","trackCuts");
48     trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
49     trackCuts->SetRequireTPCRefit(kTRUE);
50     trackCuts->SetRequireITSRefit(kTRUE);
51     fDiele->GetTrackFilter().AddCuts(trackCuts);
52   }
53   
54   //Pt cut
55   AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.5+60<dEdx<100","Pt>.6 && 60<dEdx<100");
56   pt->AddCut(AliDielectronVarManager::kPt,.6,1e30);
57   pt->AddCut(AliDielectronVarManager::kTPCsignal,60.,100.);
58
59   if (fIsAOD){
60       // TPC #clusteres cut
61     pt->AddCut(AliDielectronVarManager::kNclsTPC,90.,160.);
62     pt->AddCut(AliDielectronVarManager::kEta,-0.8,0.8);
63     //TODO: DCA cuts to be investigated!!!
64 //     pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
65 //     pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
66   }
67   
68   fDiele->GetTrackFilter().AddCuts(pt);
69 }
70
71 //______________________________________________________________________________________
72 void SetupPairCuts()
73 {
74   //
75   // Setup the pair cuts
76   //
77   
78   
79   //Invarian mass selection
80   AliDielectronVarCuts *invMassCut=new AliDielectronVarCuts("InvMass","2<M<4");
81   invMassCut->AddCut(AliDielectronVarManager::kM,2.,1e30);
82 //   invMassCut->AddCut(AliDielectronVarManager::kPairType,1.);
83   fDiele->GetPairFilter().AddCuts(invMassCut);
84
85 }
86
87 //______________________________________________________________________________________
88 AliESDtrackCuts *SetupESDtrackCuts()
89 {
90   //
91   // Setup default AliESDtrackCuts
92   //
93   AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
94   
95   esdTrackCuts->SetMaxDCAToVertexZ(3.0);
96   esdTrackCuts->SetMaxDCAToVertexXY(1.0); 
97   esdTrackCuts->SetRequireTPCRefit(kTRUE);
98   esdTrackCuts->SetRequireITSRefit(kTRUE);
99   esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
100   esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
101   
102   esdTrackCuts->SetMinNClustersTPC(90);
103   esdTrackCuts->SetMaxChi2PerClusterTPC(4);
104
105   return esdTrackCuts;
106 }
107
108
109 //______________________________________________________________________________________
110 void InitHistograms()
111 {
112   //
113   // Initialise the histograms
114   //
115   
116 //Setup histogram classes
117   AliDielectronHistos *histos=
118     new AliDielectronHistos(fDiele->GetName(),
119                             fDiele->GetTitle());
120   
121   //Initialise histogram classes
122   histos->SetReservedWords("Track;Pair");
123   
124   //Track classes
125   //to fill also track info from 2nd event loop until 2
126   for (Int_t i=0; i<2; ++i){
127     histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
128   }
129   
130   //Pair classes
131   // to fill also mixed event histograms loop until 10
132   for (Int_t i=0; i<3; ++i){
133     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
134   }
135
136   //add histograms to Track classes
137   histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt);
138   histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
139   
140   histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
141   histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
142   histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
143                         100,-1,1,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
144   
145   histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
146                         200,0.2,20.,100,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
147   histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
148                         200,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
149   
150   //add histograms to Pair classes
151   histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
152                         201,-.01,4.01,AliDielectronVarManager::kM);
153   histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
154                         100,-1.,1.,AliDielectronVarManager::kY);
155   histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
156                         100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
157   
158   fDiele->SetHistogramManager(histos);
159 }