1 Bool_t AddAnalysisTaskRsnEffNoPID
3 const char *outFile = "eff_nopid.root", // output file name
6 // retrieve analysis manager
7 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10 AliRsnAnalysisEffSE *task = new AliRsnAnalysisEffSE("EffNoPID");
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);
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);
29 //AliRsnFunctionAxis *axisIM = new AliRsnFunctionAxis(AliRsnFunctionAxis::kPairInvMass, 1000, 0.0, 2.0);
30 AliRsnFunctionAxis *axisPt = new AliRsnFunctionAxis(AliRsnFunctionAxis::kPairPt, 100, 0.0, 10.0);
31 AliRsnFunctionAxis *axisEta = new AliRsnFunctionAxis(AliRsnFunctionAxis::kPairEta, 10, -1.0, 1.0);
32 AliRsnFunctionAxis *axisMult = new AliRsnFunctionAxis(AliRsnFunctionAxis::kEventMult, 8, 0.0, 200.0);
33 //task->AddAxis(axisIM);
34 task->AddAxis(axisMult);
35 task->AddAxis(axisPt);
36 task->AddAxis(axisEta);
38 // setup cuts for events (good primary vertex)
39 AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", 3);
40 AliRsnCutSet *cutSetEvent = new AliRsnCutSet("eventCuts");
41 cutSetEvent->AddCut(cutVertex);
42 cutSetEvent->SetCutScheme("cutVertex");
43 task->SetEventCuts(cutSetEvent);
45 // *** STEP 0 - All resonances
47 AliRsnCutMgr *cutMgr0 = new AliRsnCutMgr("step0", "");
48 AliRsnCutSet *cutSetTrack0 = new AliRsnCutSet("step0_tracks");
49 AliRsnCutSet *cutSetPair0 = new AliRsnCutSet("step0_pairs");
51 cutMgr0->SetCutSet(AliRsnCut::kParticle, cutSetTrack0);
52 cutMgr0->SetCutSet(AliRsnCut::kPair , cutSetPair0 );
54 task->AddStepMC(cutMgr0);
56 // *** STEP 1 - Acceptance
58 AliRsnCutMgr *cutMgr1 = new AliRsnCutMgr("step1", "");
59 AliRsnCutSet *cutSetTrack1 = new AliRsnCutSet("step1_tracks");
60 AliRsnCutSet *cutSetPair1 = new AliRsnCutSet("step1_pairs");
62 AliRsnCutStd *cutEta = new AliRsnCutStd("cutEta", AliRsnCutStd::kEta, -0.9, 0.9);
64 cutSetTrack1->AddCut(cutEta);
65 cutSetTrack1->SetCutScheme("cutEta");
67 cutMgr1->SetCutSet(AliRsnCut::kParticle, cutSetTrack1);
68 cutMgr1->SetCutSet(AliRsnCut::kPair , cutSetPair1 );
70 task->AddStepMC(cutMgr1);
72 // *** STEP 2 - Reconstruction & quality
74 AliRsnCutMgr *cutMgr2 = new AliRsnCutMgr("step2", "");
75 AliRsnCutSet *cutSetTrack2 = new AliRsnCutSet("step2_tracks");
76 AliRsnCutSet *cutSetPair2 = new AliRsnCutSet("step2_pairs");
79 // -- primary track quality
80 AliRsnCutESDPrimary *cutESDPrimary = new AliRsnCutESDPrimary("cutESDPrimary");
81 cutESDPrimary->GetCuts()->SetMaxCovDiagonalElements(2.0, 2.0, 0.5, 0.5, 2.0);
82 cutESDPrimary->GetCuts()->SetRequireSigmaToVertex(kTRUE);
83 cutESDPrimary->GetCuts()->SetMaxNsigmaToVertex(4.0);
84 cutESDPrimary->GetCuts()->SetRequireTPCRefit(kTRUE);
85 cutESDPrimary->GetCuts()->SetAcceptKinkDaughters(kFALSE);
86 cutESDPrimary->GetCuts()->SetMinNClustersTPC(50);
87 cutESDPrimary->GetCuts()->SetMaxChi2PerClusterTPC(3.5);
89 cutSetTrack2->AddCut(cutESDPrimary);
90 cutSetTrack2->SetCutScheme("cutESDPrimary");
92 cutMgr2->SetCutSet(AliRsnCut::kParticle, cutSetTrack2);
93 cutMgr2->SetCutSet(AliRsnCut::kPair , cutSetPair2 );
95 task->AddStepESD(cutMgr2);
97 // *** STEP 3 - Bethe-Bloch cut (0.2)
99 AliRsnCutMgr *cutMgr3 = new AliRsnCutMgr("step3", "");
100 AliRsnCutSet *cutSetTrack3 = new AliRsnCutSet("step3_tracks");
101 AliRsnCutSet *cutSetPair3 = new AliRsnCutSet("step3_pairs");
104 // -- Bethe-Bloch with kaon mass hypothesis
105 AliRsnCutBetheBloch *cutKaonBB = new AliRsnCutBetheBloch("cutKaonBB", 0.2, AliPID::kKaon);
106 cutKaonBB->SetCalibConstant(0, 0.76176e-1);
107 cutKaonBB->SetCalibConstant(1, 10.632);
108 cutKaonBB->SetCalibConstant(2, 0.13279e-4);
109 cutKaonBB->SetCalibConstant(3, 1.8631);
110 cutKaonBB->SetCalibConstant(4, 1.9479);
112 cutSetTrack3->AddCut(cutKaonBB);
113 cutSetTrack3->SetCutScheme("cutKaonBB");
114 //AliLog::SetClassDebugLevel("AliRsnCut", AliLog::kDebug+3);
115 //AliLog::SetClassDebugLevel("AliRsnCutStd", AliLog::kDebug+3);
116 //AliLog::SetClassDebugLevel("AliRsnCutBetheBloch", AliLog::kDebug+3);
118 cutMgr3->SetCutSet(AliRsnCut::kParticle, cutSetTrack3);
119 cutMgr3->SetCutSet(AliRsnCut::kPair , cutSetPair3 );
121 task->AddStepESD(cutMgr3);
123 // add the task to manager
126 // connect input container according to source choice
127 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
129 // initialize and connect container for the output
130 AliAnalysisDataContainer *outputInfo = mgr->CreateContainer("EffNoPIDInfo", TList::Class(), AliAnalysisManager::kOutputContainer, "info.root");
131 AliAnalysisDataContainer *out = mgr->CreateContainer("EFF_NOPID", TList::Class(), AliAnalysisManager::kOutputContainer, outFile);
132 mgr->ConnectOutput(task, 1, outputInfo);
133 mgr->ConnectOutput(task, 2, out);