1 /***************************************************************************
2 fbellini@cern.ch - last modified on 28/11/2013
4 //Lauches KStar analysis with rsn mini package
5 //Allows basic configuration of pile-up check and event cuts
7 ****************************************************************************/
8 enum pairYCutSet { kPairDefault,
13 enum eventCutSet { kOld = -1,
23 enum eventMixConfig { kDisabled = -1,
24 kMixDefault,//=0 //10 events, Dvz = 1cm, DC = 10
25 k5Evts, //=1 //5 events, Dvz = 1cm, DC = 10
26 k5Cent, //=2 //10 events, Dvz = 1cm, DC = 5
30 AliRsnMiniAnalysisTask * AddTaskKStarPPB
34 TString outNameSuffix = "tof2s",
35 Int_t evtCutSetID = 0,
36 Int_t pairCutSetID = 0,
37 Int_t mixingConfigID = 0,
38 Int_t aodFilterBit = 5,
39 Int_t customQualityCutsID = -1,
40 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutPiCandidate = AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011,
41 AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutKaCandidate = AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011,
42 Float_t nsigmaPi = 2.0,
43 Float_t nsigmaKa = 2.0,
44 Bool_t enableMonitor = kTRUE,
45 Bool_t IsMcTrueOnly = kFALSE,
46 TString monitorOpt = "",
48 Bool_t checkReflex = 0,
49 AliRsnMiniValue::EType yaxisvar = AliRsnMiniValue::kPt
54 //-------------------------------------------
56 //-------------------------------------------
57 UInt_t triggerMask = AliVEvent::kINT7;
58 Bool_t rmFirstEvtChunk = kTRUE; //needed for pA 2013
59 Bool_t rejectPileUp = kTRUE; //best if used, for pA 2013
60 Int_t MinPlpContribSPD = 5; //default value if used
61 Bool_t useMVPileUpSelection = kFALSE; //
62 Int_t MinPlpContribMV = 5; //default value if used
63 Bool_t useVtxCut2013pA = kTRUE; //default use recommended 2013 pA vtx selection
64 Double_t vtxZcut = 10.0; //cm, default cut on vtx z
66 if (evtCutSetID==eventCutSet::kOld) {
67 triggerMask = AliVEvent::kAnyINT;
68 rmFirstEvtChunk = kFALSE;
69 rejectPileUp = kFALSE;
70 useVtxCut2013pA = kFALSE;
73 if (evtCutSetID==eventCutSet::kNoPileUpCut) {
74 rmFirstEvtChunk = kTRUE;
75 rejectPileUp = kFALSE;
78 if (evtCutSetID==eventCutSet::kPileUpMV) {
79 useMVPileUpSelection = kTRUE;
81 //MinPlpContribMV = 5; //already set as default
84 if (evtCutSetID==eventCutSet::kPileUpSPD3) {
88 if (evtCutSetID==eventCutSet::kDefaultVtx8){
92 if (evtCutSetID==eventCutSet::kDefaultVtx5){
96 if (evtCutSetID==eventCutSet::kMCEvtDefault) {
97 rmFirstEvtChunk = kFALSE;
98 rejectPileUp = kFALSE;
101 //-------------------------------------------
103 //-------------------------------------------
104 Double_t minYlab = -0.465;
105 Double_t maxYlab = 0.035;
107 if (pairCutSetID==pairYCutSet::kNegative) { //-0.5<y_cm<0.0
108 minYlab = -0.965; maxYlab = -0.465;
111 if (pairCutSetID==pairYCutSet::kCentral) { //|y_cm|<0.3
112 minYlab = -0.765; maxYlab = -0.165;
115 //-------------------------------------------
117 //-------------------------------------------
119 Float_t maxDiffVzMix = 1.0;
120 Float_t maxDiffMultMix = 10.0;
122 if (mixingConfigID == eventMixConfig::kMixDefault) {
126 if (mixingConfigID == eventMixConfig::k5Evts) {
130 if (mixingConfigID == eventMixConfig::k5Cent) {
135 // -- INITIALIZATION ----------------------------------------------------------------------------
136 // retrieve analysis manager
138 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
140 ::Error("AddAnalysisTaskTOFKStar", "No analysis manager to connect to.");
144 // create the task and configure
145 TString taskName = Form("TOFKStar%s%s_%i%i", (isPP? "pp" : "PbPb"), (isMC ? "MC" : "Data"), (Int_t)cutPiCandidate,(Int_t)cutKaCandidate );
146 AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask(taskName.Data(), isMC);
147 //task->UseESDTriggerMask(triggerMask); //ESD
148 task->SelectCollisionCandidates(triggerMask); //AOD
151 task->UseMultiplicity("QUALITY");
153 task->UseCentrality("V0A");
154 // set event mixing options
155 task->UseContinuousMix();
156 //task->UseBinnedMix();
158 task->SetMaxDiffVz(maxDiffVzMix);
159 task->SetMaxDiffMult(maxDiffMultMix);
160 ::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));
165 // -- EVENT CUTS (same for all configs) ---------------------------------------------------------
167 // cut on primary vertex:
168 // - 2nd argument --> |Vz| range
169 // - 3rd argument --> minimum required number of contributors to vtx
170 // - 4th argument --> tells if TPC stand-alone vertexes must be accepted
171 AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", vtxZcut, 0, kFALSE);
172 //if (isPP) cutVertex->SetCheckPileUp(kTRUE); // set the check for pileup
173 //set check for pileup in 2013
174 AliRsnCutEventUtils *cutEventUtils = new AliRsnCutEventUtils("cutEventUtils", rmFirstEvtChunk, rejectPileUp);
175 cutEventUtils->SetUseVertexSelection2013pA(useVtxCut2013pA);
176 ::Info("AddAnalysisTaskTOFKStar", Form(":::::::::::::::::: Vertex cut as pA 2013: %s", (useVtxCut2013pA?"ON":"OFF")));
177 if (useMVPileUpSelection){
178 cutEventUtils->SetUseMVPlpSelection(useMVPileUpSelection);
179 cutEventUtils->SetMinPlpContribMV(MinPlpContribMV);
180 cutEventUtils->SetMinPlpContribSPD(MinPlpContribSPD);
181 ::Info("AddAnalysisTaskTOFKStar", Form("Multiple-vtx Pile-up rejection settings: MinPlpContribMV = %i, MinPlpContribSPD = %i", MinPlpContribMV, MinPlpContribSPD));
183 cutEventUtils->SetMinPlpContribSPD(MinPlpContribSPD);
184 ::Info("AddAnalysisTaskTOFKStar", Form("SPD Pile-up rejection settings: MinPlpContribSPD = %i", MinPlpContribSPD));
186 ::Info("AddAnalysisTaskTOFKStar", Form(":::::::::::::::::: Pile-up rejection mode: %s", (rejectPileUp?"ON":"OFF")));
187 ::Info("AddAnalysisTaskTOFKStar", Form("::::::::::::: Remove first event in chunk: %s", (rmFirstEvtChunk?"ON":"OFF")));
189 // define and fill cut set for event cut
190 AliRsnCutSet *eventCuts = new AliRsnCutSet("eventCuts", AliRsnTarget::kEvent);
191 eventCuts->AddCut(cutEventUtils);
192 eventCuts->AddCut(cutVertex);
193 eventCuts->SetCutScheme(Form("%s&%s", cutEventUtils->GetName(), cutVertex->GetName()));
195 task->SetEventCuts(eventCuts);
198 // -- EVENT-ONLY COMPUTATIONS -------------------------------------------------------------------
201 Int_t vtxID = task->CreateValue(AliRsnMiniValue::kVz, kFALSE);
202 AliRsnMiniOutput *outVtx = task->CreateOutput("eventVtx", "HIST", "EVENT");
203 outVtx->AddAxis(vtxID, 240, -12.0, 12.0);
205 //multiplicity or centrality
206 Int_t multID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
207 AliRsnMiniOutput *outMult = task->CreateOutput("eventMult", "HIST", "EVENT");
209 outMult->AddAxis(multID, 400, 0.0, 400.0);
211 outMult->AddAxis(multID, 100, 0.0, 100.0);
213 TH2F* hvz=new TH2F("hVzVsCent","", 100, 0., 100., 240, -12.0, 12.0);
214 task->SetEventQAHist("vz",hvz);//plugs this histogram into the fHAEventVz data member
216 TH2F* hmc=new TH2F("MultiVsCent","", 100, 0., 100., 400, 0., 400.);
217 hmc->GetYaxis()->SetTitle("QUALITY");
218 task->SetEventQAHist("multicent",hmc);//plugs this histogram into the fHAEventMultiCent data member
221 // -- PAIR CUTS (common to all resonances) ------------------------------------------------------
223 AliRsnCutMiniPair *cutY = new AliRsnCutMiniPair("cutRapidity", AliRsnCutMiniPair::kRapidityRange);
224 cutY->SetRangeD(minYlab, maxYlab);
226 AliRsnCutSet *cutsPair = new AliRsnCutSet("pairCuts", AliRsnTarget::kMother);
227 cutsPair->AddCut(cutY);
228 cutsPair->SetCutScheme(cutY->GetName());
231 // -- CONFIG ANALYSIS --------------------------------------------------------------------------
233 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigKStarPPb.C");
234 if (!ConfigKStarPPb(task, isMC, isPP, "", cutsPair, aodFilterBit, customQualityCutsID, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly, monitorOpt.Data(), useMixLS, isMC&checkReflex, yaxisvar)) return 0x0;
238 // -- CONTAINERS --------------------------------------------------------------------------------
240 TString outputFileName = AliAnalysisManager::GetCommonFileName();
241 // outputFileName += ":Rsn";
242 Printf("AddAnalysisTaskTOFKStar - Set OutputFileName : \n %s\n", outputFileName.Data() );
244 AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s",outNameSuffix.Data()),
246 AliAnalysisManager::kOutputContainer,
248 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
249 mgr->ConnectOutput(task, 1, output);