2 // Macro to create the full analysis manager for Resonances
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;
18 Bool_t AddAnalysisTaskRsnEffPID
20 const char *outFile = "eff_pid.root", // output file name
23 // retrieve analysis manager
24 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
27 AliRsnAnalysisEffSE *task = new AliRsnAnalysisEffSE("EffPID");
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);
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);
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);
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);
62 // *** STEP 0 - All resonances
64 AliRsnCutMgr *cutMgr0 = new AliRsnCutMgr("step0", "");
65 AliRsnCutSet *cutSetTrack0 = new AliRsnCutSet("step0_tracks");
66 AliRsnCutSet *cutSetPair0 = new AliRsnCutSet("step0_pairs");
68 cutMgr0->SetCutSet(AliRsnCut::kParticle, cutSetTrack0);
69 cutMgr0->SetCutSet(AliRsnCut::kPair , cutSetPair0 );
71 task->AddStepMC(cutMgr0);
73 // *** STEP 1 - Acceptance
75 AliRsnCutMgr *cutMgr1 = new AliRsnCutMgr("step1", "");
76 AliRsnCutSet *cutSetTrack1 = new AliRsnCutSet("step1_tracks");
77 AliRsnCutSet *cutSetPair1 = new AliRsnCutSet("step1_pairs");
79 AliRsnCutStd *cutEta = new AliRsnCutStd("cutEta", AliRsnCutStd::kEta, -0.9, 0.9);
81 cutSetTrack1->AddCut(cutEta);
82 cutSetTrack1->SetCutScheme("cutEta");
84 cutMgr1->SetCutSet(AliRsnCut::kParticle, cutSetTrack1);
85 cutMgr1->SetCutSet(AliRsnCut::kPair , cutSetPair1 );
87 task->AddStepMC(cutMgr1);
89 // *** STEP 2 - Reconstruction & quality
91 AliRsnCutMgr *cutMgr2 = new AliRsnCutMgr("step2", "");
92 AliRsnCutSet *cutSetTrack2 = new AliRsnCutSet("step2_tracks");
93 AliRsnCutSet *cutSetPair2 = new AliRsnCutSet("step2_pairs");
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);
106 cutSetTrack2->AddCut(cutESDPrimary);
107 cutSetTrack2->SetCutScheme("cutESDPrimary");
109 cutMgr2->SetCutSet(AliRsnCut::kParticle, cutSetTrack2);
110 cutMgr2->SetCutSet(AliRsnCut::kPair , cutSetPair2 );
112 task->AddStepESD(cutMgr2);
114 // *** STEP 3 - Realistic PID
116 AliRsnCutMgr *cutMgr3 = new AliRsnCutMgr("step3", "");
117 AliRsnCutSet *cutSetTrack3 = new AliRsnCutSet("step3_tracks");
118 AliRsnCutSet *cutSetPair3 = new AliRsnCutSet("step3_pairs");
122 AliRsnCutStd *cutRealisticPID = new AliRsnCutStd("cutKaonPID", AliRsnCutStd::kRealisticPIDMatch, 0);
124 cutSetTrack3->AddCut(cutRealisticPID);
125 cutSetTrack3->SetCutScheme("cutRealisticPID");
127 cutMgr3->SetCutSet(AliRsnCut::kParticle, cutSetTrack3);
128 cutMgr3->SetCutSet(AliRsnCut::kPair , cutSetPair3 );
130 task->AddStepESD(cutMgr3);
132 // add the task to manager
135 // connect input container according to source choice
136 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
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);