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 = kTRUE;
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(AliAnalysisManager *mgr)
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 task->SetInputType(inputType, mgr, useAutoHandler);
56 // define event-mixing cuts
57 AliRsnCut *cutVz = new AliRsnCut("cutVz" , "", AliRsnCut::kVzDifference, 0.0, 0.5);
58 AliRsnCut *cutMult = new AliRsnCut("cutMult", "", AliRsnCut::kMultiplicityDifference, 0, 10);
59 AliRsnCutSet *cutMixing = new AliRsnCutSet("cutMixing");
60 cutMixing->AddCut(cutVz);
61 cutMixing->AddCut(cutMult);
62 cutMixing->SetCutScheme("cutVz&cutMult");
63 task->SetMixingCut(cutMixing);
64 task->SetMixingNum(nMixedEvents);
67 reader->SetCheckSplit(kTRUE);
68 pid->SetPIDArraysSize(pidArraySize);
69 pid->SetPriorProbability(AliRsnPID::kElectron, 0.02);
70 pid->SetPriorProbability(AliRsnPID::kMuon, 0.02);
71 pid->SetPriorProbability(AliRsnPID::kPion, 0.83);
72 pid->SetPriorProbability(AliRsnPID::kKaon, 0.07);
73 pid->SetPriorProbability(AliRsnPID::kProton, 0.06);
77 // default cuts for ITS+TPC
78 AliESDtrackCuts *esdCuts = reader->GetESDTrackCuts();
79 esdCuts->SetMaxCovDiagonalElements(cov11, cov22, cov33, cov44, cov55);
80 esdCuts->SetRequireSigmaToVertex(requireSigmaToVertex);
81 if (requireSigmaToVertex) esdCuts->SetMaxNsigmaToVertex(nSigmaToVertex);
84 esdCuts->SetDCAToVertexZ(dcaToVertex);
85 esdCuts->SetDCAToVertexXY(dcaToVertex);
87 esdCuts->SetRequireTPCRefit(requireTPCRefit);
88 esdCuts->SetAcceptKingDaughters(acceptKinkDaughters);
89 esdCuts->SetMinNClustersTPC(minNClustersTPC);
90 esdCuts->SetMaxChi2PerClusterTPC(maxChi2PerClusterTPC);
91 reader->SetUseESDTrackCuts(useESDTrackCuts);
93 // default cuts from package for tracks
94 AliRsnCut *cutPt = new AliRsnCut("cutPt", "", AliRsnCut::kTransMomentumMC, ptMin, 1000000.0);
95 AliRsnCut *cutEta = new AliRsnCut("cutEtaMC", "", AliRsnCut::kEtaMC, -etaRange, etaRange);
96 AliRsnCut *cutDr = new AliRsnCut("cutDr", "", AliRsnCut::kRadialImpactParam, 0.0, rsnImpactParam);
97 AliRsnCutSet *rsnCuts = reader->GetRsnTrackCuts();
98 rsnCuts->AddCut(cutPt);
99 rsnCuts->AddCut(cutEta);
100 rsnCuts->AddCut(cutDr);
101 rsnCuts->SetCutScheme("cutPt&cutEta&cutDr");
102 reader->SetUseRsnTrackCuts(useRsnTrackCuts);
104 // add configs for all impact parameters
105 task->AddPairMgrFromConfig("CreatePairsPhi.C");
107 // initialize containers
108 AliAnalysisDataContainer *input = mgr->CreateContainer("in", TChain::Class(), AliAnalysisManager::kInputContainer);
109 AliAnalysisDataContainer *dummy = mgr->CreateContainer("dummy1", TTree::Class(), AliAnalysisManager::kOutputContainer, "default");
110 AliAnalysisDataContainer *out = mgr->CreateContainer("RSN", TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName);
112 // connect containers to AnalysisManager
114 mgr->ConnectInput(task, 0, input);
115 mgr->ConnectOutput(task, 0, dummy);
116 mgr->ConnectOutput(task, 1, out);