]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/mini/AddTaskKStarTrkSyst.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / AddTaskKStarTrkSyst.C
CommitLineData
fe9522cc 1/***************************************************************************
2 fbellini@cern.ch - last modified on 06/08/2012
3//
4// General macro to configure the RSN analysis task.
5// It calls all configs desired by the user, by means
6// of the boolean switches defined in the first lines.
7// ---
8// Inputs:
9// 1) flag to know if running on MC or data
10// 2) path where all configs are stored
11// ---
12// Returns:
13// kTRUE --> initialization successful
14// kFALSE --> initialization failed (some config gave errors)
15//
16****************************************************************************/
17
18AliRsnMiniAnalysisTask * AddTaskKStarTrkSyst
19(
20 Bool_t isMC,
21 Bool_t isPP,
22 Int_t aodFilterBit = 5,
23 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutPiCandidate = AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011,
24 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutKaCandidate = AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011,
25 Float_t nsigmaPi = 2.0,
26 Float_t nsigmaKa = 2.0,
27 TString outNameSuffix = "",
28 Int_t signedPdg = 313,
29 Double_t minYlab = 0.465,
30 Double_t maxYlab = 0.965,
31 Bool_t enableTrkSyst = kFALSE,
32 Double_t dcaxymax = 2.4,
33 Double_t dcazmax = 3.2,
34 Double_t minNcls = 70,
35 Double_t maxX2cls = 5.0
36 )
37{
38 //
39 // -- INITIALIZATION ----------------------------------------------------------------------------
40 // retrieve analysis manager
41 //
42 Bool_t enableMonitor = kTRUE;
43 Bool_t IsMcTrueOnly = kFALSE;
44 Int_t nmix = 0;
45 Float_t maxDiffVzMix = 1.0;
46 Float_t maxDiffMultMix = 10.0;
47 TString monitorOpt = "";
48 Bool_t useMixLS = 0;
49 AliRsnMiniValue::EType yaxisvar = AliRsnMiniValue::kPt;
50
51
52 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
53 if (!mgr) {
54 ::Error("AddAnalysisTaskTOFKStar", "No analysis manager to connect to.");
55 return NULL;
56 }
57
58 // create the task and configure
59 TString taskName = Form("TOFKStar%s%s_%i%i", (isPP? "pp" : "PbPb"), (isMC ? "MC" : "Data"), (Int_t)cutPiCandidate,(Int_t)cutKaCandidate );
60 AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask(taskName.Data(), isMC);
61 if (isPP)
62 task->UseMultiplicity("QUALITY");
63 else
64 task->UseCentrality("V0A");
65 // set event mixing options
66 task->UseContinuousMix();
67 //task->UseBinnedMix();
68 task->SetNMix(nmix);
69 task->SetMaxDiffVz(maxDiffVzMix);
70 task->SetMaxDiffMult(maxDiffMultMix);
71 ::Info("AddAnalysisTaskTOFKStar", Form("Event mixing configuration: \n events to mix = %i \n max diff. vtxZ = cm %5.3f \n max diff multi = %5.3f", nmix, maxDiffVzMix, maxDiffMultMix));
72
73 mgr->AddTask(task);
74
75 //
76 // -- EVENT CUTS (same for all configs) ---------------------------------------------------------
77 //
78 // cut on primary vertex:
79 // - 2nd argument --> |Vz| range
80 // - 3rd argument --> minimum required number of contributors
81 // - 4th argument --> tells if TPC stand-alone vertexes must be accepted
82 AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", 10.0, 0, kFALSE);
83 //if (isPP) cutVertex->SetCheckPileUp(kTRUE); // set the check for pileup
84
85 // define and fill cut set for event cut
86 AliRsnCutSet *eventCuts = new AliRsnCutSet("eventCuts", AliRsnTarget::kEvent);
87 eventCuts->AddCut(cutVertex);
88 eventCuts->SetCutScheme(cutVertex->GetName());
89 // set cuts in task
90 task->SetEventCuts(eventCuts);
91
92 //
93 // -- EVENT-ONLY COMPUTATIONS -------------------------------------------------------------------
94 //
95 //vertex
96 Int_t vtxID = task->CreateValue(AliRsnMiniValue::kVz, kFALSE);
97 AliRsnMiniOutput *outVtx = task->CreateOutput("eventVtx", "HIST", "EVENT");
98 outVtx->AddAxis(vtxID, 400, -20.0, 20.0);
99
100 //multiplicity or centrality
101 Int_t multID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
102 AliRsnMiniOutput *outMult = task->CreateOutput("eventMult", "HIST", "EVENT");
103 if (isPP)
104 outMult->AddAxis(multID, 400, 0.0, 400.0);
105 else
106 outMult->AddAxis(multID, 100, 0.0, 100.0);
107
108 TH2F* hvz=new TH2F("hVzVsCent","",100,0.,100., 220,-11.,11.);
109 task->SetEventQAHist("vz",hvz);//plugs this histogram into the fHAEventVz data member
110
111 TH2F* hmc=new TH2F("MultiVsCent","",100,0.,100.,4000,0.,4000.);
112 hmc->GetYaxis()->SetTitle("QUALITY");
113 task->SetEventQAHist("multicent",hmc);//plugs this histogram into the fHAEventMultiCent data member
114
115 //
116 // -- PAIR CUTS (common to all resonances) ------------------------------------------------------
117 //
118 AliRsnCutMiniPair *cutY = new AliRsnCutMiniPair("cutRapidity", AliRsnCutMiniPair::kRapidityRange);
119 cutY->SetRangeD(minYlab, maxYlab);
120
121 AliRsnCutSet *cutsPair = new AliRsnCutSet("pairCuts", AliRsnTarget::kMother);
122 cutsPair->AddCut(cutY);
123 cutsPair->SetCutScheme(cutY->GetName());
124
125 //
126 // -- CONFIG ANALYSIS --------------------------------------------------------------------------
127 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigKStarTrkSyst.C");
128 if (!ConfigKStarTrkSyst(task, isMC, isPP, "", cutsPair, aodFilterBit, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly, useMixLS, signedPdg, monitorOpt.Data(), yaxisvar, enableTrkSyst, dcaxymax, dcazmax, minNcls, maxX2cls)) return 0x0;
129
130 //
131 // -- CONTAINERS --------------------------------------------------------------------------------
132 //
133 TString outputFileName = AliAnalysisManager::GetCommonFileName();
134 // outputFileName += ":Rsn";
135 Printf("AddAnalysisTaskTOFKStar - Set OutputFileName : \n %s\n", outputFileName.Data() );
136
137 AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s",outNameSuffix.Data()),
138 TList::Class(),
139 AliAnalysisManager::kOutputContainer,
140 outputFileName);
141 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
142 mgr->ConnectOutput(task, 1, output);
143
144 return task;
145}