1 //=============================================================================
3 // *** AliRsnAnalysisTask.C ***
5 // This macro initialize a complete AnalysisTask object for resonances.
6 // All the possibilities are made available through enumerations,
7 // with the same style of the Config.C file used for simulation.
9 //=============================================================================
13 static AliRsnAnalysisTaskSEBase::EInputType inputType = AliRsnAnalysisTaskSEBase::kESDMC;
14 static const char* outputFileName = "rsn.root";
16 static Bool_t useAutoHandler = kFALSE;
17 static Int_t bufferSize = 3000;
18 static Int_t pidArraySize = 2000;
19 static Int_t nMixedEvents = 5;
21 static Bool_t useRsnTrackCuts = kFALSE;
22 static Double_t etaRange = 10.0;
23 static Double_t rsnImpactParam = 3.0;
24 static Double_t ptMin = 0.0;
26 static Bool_t useESDTrackCuts = kFALSE;
27 static Double_t cov11 = 2;
28 static Double_t cov22 = 2;
29 static Double_t cov33 = 0.5;
30 static Double_t cov44 = 0.5;
31 static Double_t cov55 = 2;
32 static Double_t nSigmaToVertex = 4;
33 static Double_t dcaToVertex = 3.0;
34 static Double_t maxChi2PerClusterTPC = 3.5;
35 static Bool_t requireTPCRefit = kTRUE;
36 static Bool_t requireSigmaToVertex = kTRUE;
37 static Bool_t acceptKinkDaughters = kFALSE;
38 static Int_t minNClustersTPC = 50;
40 Int_t AddRsnAnalysisTask()
43 // Core method of the macro.
44 // Creates and initialized the analysis task object and inserts it
45 // into the AnalysisManager object passed as argument.
48 // initialize task objects and retrieve managers for PID and reading
49 AliRsnAnalysisSE *task = new AliRsnAnalysisSE("RsnAnalysisTask", bufferSize);
50 AliRsnReader *reader = task->GetReader();
51 AliRsnPID *pid = task->GetPID();
54 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
55 task->SetInputType(inputType, mgr, useAutoHandler);
57 // define event-mixing cuts
58 AliRsnCut *cutVz = new AliRsnCut("cutVz" , "", AliRsnCut::kVzDifference, 0.0, 0.5);
59 AliRsnCut *cutMult = new AliRsnCut("cutMult", "", AliRsnCut::kMultiplicityDifference, 0, 10);
60 AliRsnCutSet *cutMixing = new AliRsnCutSet("cutMixing");
61 cutMixing->AddCut(cutVz);
62 cutMixing->AddCut(cutMult);
63 cutMixing->SetCutScheme("cutVz&cutMult");
64 task->SetMixingCut(cutMixing);
65 task->SetMixingNum(nMixedEvents);
68 reader->SetCheckSplit(kFALSE);
69 reader->SetPIDArraysSize(pidArraySize);
70 pid->SetPriorProbability(AliRsnPID::kElectron, 0.02);
71 pid->SetPriorProbability(AliRsnPID::kMuon, 0.02);
72 pid->SetPriorProbability(AliRsnPID::kPion, 0.83);
73 pid->SetPriorProbability(AliRsnPID::kKaon, 0.07);
74 pid->SetPriorProbability(AliRsnPID::kProton, 0.06);
78 // default cuts for ITS+TPC
79 AliESDtrackCuts *esdCuts = reader->GetESDTrackCuts();
80 esdCuts->SetMaxCovDiagonalElements(cov11, cov22, cov33, cov44, cov55);
81 esdCuts->SetRequireSigmaToVertex(requireSigmaToVertex);
82 if (requireSigmaToVertex) esdCuts->SetMaxNsigmaToVertex(nSigmaToVertex);
85 esdCuts->SetDCAToVertexZ(dcaToVertex);
86 esdCuts->SetDCAToVertexXY(dcaToVertex);
88 esdCuts->SetRequireTPCRefit(requireTPCRefit);
89 esdCuts->SetAcceptKingDaughters(acceptKinkDaughters);
90 esdCuts->SetMinNClustersTPC(minNClustersTPC);
91 esdCuts->SetMaxChi2PerClusterTPC(maxChi2PerClusterTPC);
92 reader->SetUseESDTrackCuts(useESDTrackCuts);
94 // default cuts from package for tracks
95 AliRsnCut *cutPt = new AliRsnCut("cutPt", "", AliRsnCut::kTransMomentumMC, ptMin, 1000000.0);
96 AliRsnCut *cutEta = new AliRsnCut("cutEtaMC", "", AliRsnCut::kEtaMC, -etaRange, etaRange);
97 AliRsnCut *cutDr = new AliRsnCut("cutDr", "", AliRsnCut::kRadialImpactParam, 0.0, rsnImpactParam);
98 AliRsnCutSet *rsnCuts = reader->GetRsnTrackCuts();
99 rsnCuts->AddCut(cutPt);
100 rsnCuts->AddCut(cutEta);
101 rsnCuts->AddCut(cutDr);
102 rsnCuts->SetCutScheme("cutPt&cutEta&cutDr");
103 reader->SetUseRsnTrackCuts(useRsnTrackCuts);
105 // add configs for all impact parameters
106 task->AddPairMgrFromConfig("CreatePairsPhi.C");
108 // initialize containers
109 AliAnalysisDataContainer *input = mgr->GetCommonInputContainer();
110 AliAnalysisDataContainer *dummy = mgr->CreateContainer("dummy1", TTree::Class(), AliAnalysisManager::kOutputContainer, "default");
111 AliAnalysisDataContainer *out = mgr->CreateContainer("RSN", TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName);
113 // connect containers to AnalysisManager
115 mgr->ConnectInput(task, 0, input);
116 mgr->ConnectOutput(task, 0, dummy);
117 mgr->ConnectOutput(task, 1, out);