]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/macros/AddRsnAnalysisTask.C
Completion of previous checkin
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / macros / AddRsnAnalysisTask.C
1 //=============================================================================
2 //
3 // *** AliRsnAnalysisTask.C ***
4 //
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.
8 //
9 //=============================================================================
10
11
12
13 static AliRsnAnalysisTaskSEBase::EInputType inputType      = AliRsnAnalysisTaskSEBase::kESDMC;
14 static const char*                          outputFileName = "rsn.root";
15
16 static Bool_t    useAutoHandler = kFALSE;
17 static Int_t     bufferSize     = 3000;
18 static Int_t     pidArraySize   = 2000;
19 static Int_t     nMixedEvents   = 5;
20
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;
25
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;
39
40 Int_t AddRsnAnalysisTask()
41 {
42 //
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.
46 //
47
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();
52
53   // set the input type
54   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
55   task->SetInputType(inputType, mgr, useAutoHandler);
56
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);
66
67   // ESD settings
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);
75   pid->SetMaxPt(100.0);
76   pid->SetMinProb(0.0);
77
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);
83   else
84   {
85     esdCuts->SetDCAToVertexZ(dcaToVertex);
86     esdCuts->SetDCAToVertexXY(dcaToVertex);
87   }
88   esdCuts->SetRequireTPCRefit(requireTPCRefit);
89   esdCuts->SetAcceptKingDaughters(acceptKinkDaughters);
90   esdCuts->SetMinNClustersTPC(minNClustersTPC);
91   esdCuts->SetMaxChi2PerClusterTPC(maxChi2PerClusterTPC);
92   reader->SetUseESDTrackCuts(useESDTrackCuts);
93
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);
104
105   // add configs for all impact parameters
106   task->AddPairMgrFromConfig("CreatePairsPhi.C");
107
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);
112
113   // connect containers to AnalysisManager
114   mgr->AddTask(task);
115   mgr->ConnectInput(task, 0, input);
116   mgr->ConnectOutput(task, 0, dummy);
117   mgr->ConnectOutput(task, 1, out);
118 }