]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/macros/train/AddAnalysisTaskRsnEffPID.C
Made a general review to fix as possible most coding conventions violations.
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / macros / train / AddAnalysisTaskRsnEffPID.C
1 //
2 // Macro to create the full analysis manager for Resonances
3 //
4
5 static Double_t  cov11 = 2;
6 static Double_t  cov22 = 2;
7 static Double_t  cov33 = 0.5;
8 static Double_t  cov44 = 0.5;
9 static Double_t  cov55 = 2;
10 static Double_t  nSigmaToVertex = 4;
11 static Double_t  dcaToVertex = 3.0;
12 static Double_t  maxChi2PerClusterTPC = 3.5;
13 static Bool_t    requireTPCRefit = kTRUE;
14 static Bool_t    requireSigmaToVertex = kTRUE;
15 static Bool_t    acceptKinkDaughters = kFALSE;
16 static Int_t     minNClustersTPC = 50;
17
18 Bool_t AddAnalysisTaskRsnEffPID
19 (
20   const char      *outFile = "eff_pid.root",    // output file name
21 )
22 {
23   // retrieve analysis manager
24   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
25
26   // create task
27   AliRsnAnalysisEffSE *task = new AliRsnAnalysisEffSE("EffPID");
28
29   // set prior probabilities for PID
30   task->SetPriorProbability(AliPID::kElectron, 0.02);
31   task->SetPriorProbability(AliPID::kMuon,     0.02);
32   task->SetPriorProbability(AliPID::kPion,     0.83);
33   task->SetPriorProbability(AliPID::kKaon,     0.07);
34   task->SetPriorProbability(AliPID::kProton,   0.06);
35   task->DumpPriors();
36
37   // pair definition
38   AliRsnPairDef *pairDef1 = new AliRsnPairDef('+', AliPID::kKaon, '-', AliPID::kKaon, 333);
39   AliRsnPairDef *pairDef2 = new AliRsnPairDef('-', AliPID::kKaon, '+', AliPID::kPion, 313);
40   AliRsnPairDef *pairDef3 = new AliRsnPairDef('+', AliPID::kKaon, '-', AliPID::kPion, 313);
41   task->AddPairDef(pairDef1);
42   task->AddPairDef(pairDef2);
43   task->AddPairDef(pairDef3);
44
45   // axis definition
46   AliRsnFunctionAxis *axisIM   = new AliRsnFunctionAxis(AliRsnFunctionAxis::kPairInvMass,  100,  0.0,   2.0);
47   AliRsnFunctionAxis *axisPt   = new AliRsnFunctionAxis(AliRsnFunctionAxis::kPairPt,        10,  0.0,  10.0);
48   AliRsnFunctionAxis *axisEta  = new AliRsnFunctionAxis(AliRsnFunctionAxis::kPairEta,       10, -1.0,   1.0);
49   AliRsnFunctionAxis *axisMult = new AliRsnFunctionAxis(AliRsnFunctionAxis::kEventMult,      8,  0.0, 200.0);
50   task->AddAxis(axisIM);
51   task->AddAxis(axisMult);
52   task->AddAxis(axisPt);
53   task->AddAxis(axisEta);
54
55   // setup cuts for events (good primary vertex)
56   AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", 3);
57   AliRsnCutSet *cutSetEvent = new AliRsnCutSet("eventCuts");
58   cutSetEvent->AddCut(cutVertex);
59   cutSetEvent->SetCutScheme("cutVertex");
60   task->SetEventCuts(cutSetEvent);
61
62   // *** STEP 0 - All resonances
63
64   AliRsnCutMgr *cutMgr0      = new AliRsnCutMgr("step0", "");
65   AliRsnCutSet *cutSetTrack0 = new AliRsnCutSet("step0_tracks");
66   AliRsnCutSet *cutSetPair0  = new AliRsnCutSet("step0_pairs");
67
68   cutMgr0->SetCutSet(AliRsnCut::kParticle, cutSetTrack0);
69   cutMgr0->SetCutSet(AliRsnCut::kPair    , cutSetPair0 );
70
71   task->AddStepMC(cutMgr0);
72
73   // *** STEP 1 - Acceptance
74
75   AliRsnCutMgr *cutMgr1      = new AliRsnCutMgr("step1", "");
76   AliRsnCutSet *cutSetTrack1 = new AliRsnCutSet("step1_tracks");
77   AliRsnCutSet *cutSetPair1  = new AliRsnCutSet("step1_pairs");
78
79   AliRsnCutStd *cutEta = new AliRsnCutStd("cutEta", AliRsnCutStd::kEta, -0.9, 0.9);
80
81   cutSetTrack1->AddCut(cutEta);
82   cutSetTrack1->SetCutScheme("cutEta");
83
84   cutMgr1->SetCutSet(AliRsnCut::kParticle, cutSetTrack1);
85   cutMgr1->SetCutSet(AliRsnCut::kPair    , cutSetPair1 );
86
87   task->AddStepMC(cutMgr1);
88
89   // *** STEP 2 - Reconstruction & quality
90
91   AliRsnCutMgr *cutMgr2      = new AliRsnCutMgr("step2", "");
92   AliRsnCutSet *cutSetTrack2 = new AliRsnCutSet("step2_tracks");
93   AliRsnCutSet *cutSetPair2  = new AliRsnCutSet("step2_pairs");
94
95   // cuts for tracks:
96   // -- primary track quality
97   AliRsnCutESDPrimary *cutESDPrimary = new AliRsnCutESDPrimary("cutESDPrimary");
98   cutESDPrimary->GetCuts()->SetMaxCovDiagonalElements(2.0, 2.0, 0.5, 0.5, 2.0);
99   cutESDPrimary->GetCuts()->SetRequireSigmaToVertex(kTRUE);
100   cutESDPrimary->GetCuts()->SetMaxNsigmaToVertex(4.0);
101   cutESDPrimary->GetCuts()->SetRequireTPCRefit(kTRUE);
102   cutESDPrimary->GetCuts()->SetAcceptKinkDaughters(kFALSE);
103   cutESDPrimary->GetCuts()->SetMinNClustersTPC(50);
104   cutESDPrimary->GetCuts()->SetMaxChi2PerClusterTPC(3.5);
105
106   cutSetTrack2->AddCut(cutESDPrimary);
107   cutSetTrack2->SetCutScheme("cutESDPrimary");
108
109   cutMgr2->SetCutSet(AliRsnCut::kParticle, cutSetTrack2);
110   cutMgr2->SetCutSet(AliRsnCut::kPair    , cutSetPair2 );
111
112   task->AddStepESD(cutMgr2);
113
114   // *** STEP 3 - Realistic PID
115
116   AliRsnCutMgr *cutMgr3      = new AliRsnCutMgr("step3", "");
117   AliRsnCutSet *cutSetTrack3 = new AliRsnCutSet("step3_tracks");
118   AliRsnCutSet *cutSetPair3  = new AliRsnCutSet("step3_pairs");
119
120   // cuts for tracks:
121   // -- realistic PID
122   AliRsnCutStd *cutRealisticPID = new AliRsnCutStd("cutKaonPID", AliRsnCutStd::kRealisticPIDMatch, 0);
123
124   cutSetTrack3->AddCut(cutRealisticPID);
125   cutSetTrack3->SetCutScheme("cutRealisticPID");
126
127   cutMgr3->SetCutSet(AliRsnCut::kParticle, cutSetTrack3);
128   cutMgr3->SetCutSet(AliRsnCut::kPair    , cutSetPair3 );
129
130   task->AddStepESD(cutMgr3);
131
132   // add the task to manager
133   mgr->AddTask(task);
134
135   // connect input container according to source choice
136   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
137
138   // initialize and connect container for the output
139   AliAnalysisDataContainer *outputInfo = mgr->CreateContainer("EffPIDInfo", TList::Class(), AliAnalysisManager::kOutputContainer, "eff_pid_info.root");
140   AliAnalysisDataContainer *out = mgr->CreateContainer("CORR_PID", TList::Class(), AliAnalysisManager::kOutputContainer, outFile);
141   mgr->ConnectOutput(task, 1, outputInfo);
142   mgr->ConnectOutput(task, 2, out);
143
144   return kTRUE;
145 }