]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/macros/train/AddAnalysisTaskRsnEffNoPID.C
New macros to plot OCDB calibration parameters vs. time/run number for SDD (F. Prino)
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / macros / train / AddAnalysisTaskRsnEffNoPID.C
1 Bool_t AddAnalysisTaskRsnEffNoPID
2 (
3   const char *outFile = "eff_nopid.root",    // output file name
4 )
5 {
6   // retrieve analysis manager
7   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
8
9   // create task
10   AliRsnAnalysisEffSE *task = new AliRsnAnalysisEffSE("EffNoPID");
11
12   // set prior probabilities for PID
13   task->SetPriorProbability(AliPID::kElectron, 0.02);
14   task->SetPriorProbability(AliPID::kMuon,     0.02);
15   task->SetPriorProbability(AliPID::kPion,     0.83);
16   task->SetPriorProbability(AliPID::kKaon,     0.07);
17   task->SetPriorProbability(AliPID::kProton,   0.06);
18   task->DumpPriors();
19
20   // pair definition
21   AliRsnPairDef *pairDef1 = new AliRsnPairDef('+', AliPID::kKaon, '-', AliPID::kKaon, 333);
22   AliRsnPairDef *pairDef2 = new AliRsnPairDef('-', AliPID::kKaon, '+', AliPID::kPion, 313);
23   AliRsnPairDef *pairDef3 = new AliRsnPairDef('+', AliPID::kKaon, '-', AliPID::kPion, 313);
24   task->AddPairDef(pairDef1);
25   task->AddPairDef(pairDef2);
26   task->AddPairDef(pairDef3);
27
28   // axis definition
29   AliRsnFunctionAxis *axisPt   = new AliRsnFunctionAxis(AliRsnFunctionAxis::kPairPt,      100,  0.0,  10.0);
30   AliRsnFunctionAxis *axisEta  = new AliRsnFunctionAxis(AliRsnFunctionAxis::kPairEta,      10, -1.0,   1.0);
31   AliRsnFunctionAxis *axisMult = new AliRsnFunctionAxis(AliRsnFunctionAxis::kEventMult,   500,  0.0, 500.0);
32   task->AddAxis(axisMult);
33   task->AddAxis(axisPt);
34   task->AddAxis(axisEta);
35
36   // setup cuts for events (good primary vertex)
37   AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", 3);
38   AliRsnCutSet *cutSetEvent = new AliRsnCutSet("eventCuts");
39   cutSetEvent->AddCut(cutVertex);
40   cutSetEvent->SetCutScheme("cutVertex");
41   task->SetEventCuts(cutSetEvent);
42
43   // *** STEP 0 - All resonances
44
45   AliRsnCutMgr *cutMgr0      = new AliRsnCutMgr("step0", "");
46   AliRsnCutSet *cutSetTrack0 = new AliRsnCutSet("step0_tracks");
47   AliRsnCutSet *cutSetPair0  = new AliRsnCutSet("step0_pairs");
48
49   cutMgr0->SetCutSet(AliRsnCut::kParticle, cutSetTrack0);
50   cutMgr0->SetCutSet(AliRsnCut::kPair    , cutSetPair0 );
51
52   task->AddStepMC(cutMgr0);
53
54   // *** STEP 1 - Acceptance
55
56   AliRsnCutMgr *cutMgr1      = new AliRsnCutMgr("step1", "");
57   AliRsnCutSet *cutSetTrack1 = new AliRsnCutSet("step1_tracks");
58   AliRsnCutSet *cutSetPair1  = new AliRsnCutSet("step1_pairs");
59
60   AliRsnCutStd *cutEta = new AliRsnCutStd("cutEta", AliRsnCutStd::kEta, -0.9, 0.9);
61
62   cutSetTrack1->AddCut(cutEta);
63   cutSetTrack1->SetCutScheme("cutEta");
64
65   cutMgr1->SetCutSet(AliRsnCut::kParticle, cutSetTrack1);
66   cutMgr1->SetCutSet(AliRsnCut::kPair    , cutSetPair1 );
67
68   task->AddStepMC(cutMgr1);
69
70   // *** STEP 2 - Reconstruction & quality
71
72   AliRsnCutMgr *cutMgr2      = new AliRsnCutMgr("step2", "");
73   AliRsnCutSet *cutSetTrack2 = new AliRsnCutSet("step2_tracks");
74   AliRsnCutSet *cutSetPair2  = new AliRsnCutSet("step2_pairs");
75
76   // cuts for tracks:
77   // -- primary track quality
78   AliRsnCutESDPrimary *cutESDPrimary = new AliRsnCutESDPrimary("cutESDPrimary");
79   cutESDPrimary->GetCuts()->SetMaxCovDiagonalElements(2.0, 2.0, 0.5, 0.5, 2.0);
80   cutESDPrimary->GetCuts()->SetRequireSigmaToVertex(kTRUE);
81   cutESDPrimary->GetCuts()->SetMaxNsigmaToVertex(4.0);
82   cutESDPrimary->GetCuts()->SetRequireTPCRefit(kTRUE);
83   cutESDPrimary->GetCuts()->SetAcceptKinkDaughters(kFALSE);
84   cutESDPrimary->GetCuts()->SetMinNClustersTPC(50);
85   cutESDPrimary->GetCuts()->SetMaxChi2PerClusterTPC(3.5);
86
87   cutSetTrack2->AddCut(cutESDPrimary);
88   cutSetTrack2->SetCutScheme("cutESDPrimary");
89
90   cutMgr2->SetCutSet(AliRsnCut::kParticle, cutSetTrack2);
91   cutMgr2->SetCutSet(AliRsnCut::kPair    , cutSetPair2 );
92
93   task->AddStepESD(cutMgr2);
94
95   // *** STEP 3 - Bethe-Bloch cut (0.2)
96
97   AliRsnCutMgr *cutMgr3      = new AliRsnCutMgr("step3", "");
98   AliRsnCutSet *cutSetTrack3 = new AliRsnCutSet("step3_tracks");
99   AliRsnCutSet *cutSetPair3  = new AliRsnCutSet("step3_pairs");
100
101   // cuts for tracks:
102   // -- Bethe-Bloch with kaon mass hypothesis
103   AliRsnCutBetheBloch *cutKaonBB = new AliRsnCutBetheBloch("cutKaonBB", 0.2, AliPID::kKaon);
104   cutKaonBB->SetCalibConstant(0, 0.76176e-1);
105   cutKaonBB->SetCalibConstant(1, 10.632);
106   cutKaonBB->SetCalibConstant(2, 0.13279e-4);
107   cutKaonBB->SetCalibConstant(3, 1.8631);
108   cutKaonBB->SetCalibConstant(4, 1.9479);
109
110   cutSetTrack3->AddCut(cutKaonBB);
111   cutSetTrack3->SetCutScheme("cutKaonBB");
112   //AliLog::SetClassDebugLevel("AliRsnCut", AliLog::kDebug+3);
113   //AliLog::SetClassDebugLevel("AliRsnCutStd", AliLog::kDebug+3);
114   //AliLog::SetClassDebugLevel("AliRsnCutBetheBloch", AliLog::kDebug+3);
115
116   cutMgr3->SetCutSet(AliRsnCut::kParticle, cutSetTrack3);
117   cutMgr3->SetCutSet(AliRsnCut::kPair    , cutSetPair3 );
118
119   task->AddStepESD(cutMgr3);
120
121   // add the task to manager
122   mgr->AddTask(task);
123
124   // connect input container according to source choice
125   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
126
127   // initialize and connect container for the output
128   AliAnalysisDataContainer *outputInfo = mgr->CreateContainer("EffNoPIDInfo", TList::Class(), AliAnalysisManager::kOutputContainer, "info.root");
129   AliAnalysisDataContainer *out = mgr->CreateContainer("EFF_NOPID", TList::Class(), AliAnalysisManager::kOutputContainer, outFile);
130   mgr->ConnectOutput(task, 1, outputInfo);
131   mgr->ConnectOutput(task, 2, out);
132
133   return kTRUE;
134 }