1 /**************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appeuear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
20 // Base class for Lc2V0 Analysis
23 // The Lc spectra study is done 2D histograms:
24 // cascade_invariantMass VS cascade_pT
26 // Cuts have been centralized in AliRDHFCutsLctoV0 class
28 //-------------------------------------------------------------------------
30 // Authors: A.De Caro(a,b), P. Pagano(b)
31 // (a) Centro 'E.Fermi' - Roma
32 // (b) INFN and University of Salerno
34 // Contatcs: decaro@sa.infn.it
35 // paola.pagano@sa.infn.it
36 //-------------------------------------------------------------------------
39 #include <TParticle.h>
40 #include <TParticlePDG.h>
44 #include <TDatabasePDG.h>
45 #include <AliAnalysisDataSlot.h>
46 #include <AliAnalysisDataContainer.h>
48 #include "AliMCEvent.h"
49 #include "AliAnalysisManager.h"
50 #include "AliAODMCHeader.h"
51 #include "AliAODHandler.h"
53 #include "AliAODVertex.h"
54 #include "AliAODRecoDecay.h"
55 #include "AliAODRecoDecayHF.h"
56 #include "AliAODRecoCascadeHF.h"
57 #include "AliAnalysisVertexingHF.h"
58 #include "AliESDtrack.h"
59 #include "AliAODTrack.h"
61 #include "AliAODMCParticle.h"
62 #include "AliAnalysisTaskSE.h"
63 #include "AliAnalysisTaskSELc2V0bachelor.h"
64 #include "AliNormalizationCounter.h"
65 #include "AliAODPidHF.h"
66 #include "AliPIDResponse.h"
67 #include "AliTOFPIDResponse.h"
68 #include "AliInputEventHandler.h"
73 ClassImp(AliAnalysisTaskSELc2V0bachelor)
75 //__________________________________________________________________________
76 AliAnalysisTaskSELc2V0bachelor::AliAnalysisTaskSELc2V0bachelor():
84 fIsK0sAnalysis(kFALSE),
89 fUseOnTheFlyV0(kFALSE),
90 fIsEventSelected(kFALSE)
96 //___________________________________________________________________________
97 AliAnalysisTaskSELc2V0bachelor::AliAnalysisTaskSELc2V0bachelor(const Char_t* name, AliRDHFCutsLctoV0* prodCuts,
98 AliRDHFCutsLctoV0* analCuts, Bool_t useOnTheFly) :
99 AliAnalysisTaskSE(name),
106 fIsK0sAnalysis(kFALSE),
111 fUseOnTheFlyV0(useOnTheFly),
112 fIsEventSelected(kFALSE)
115 // Constructor. Initialization of Inputs and Outputs
117 Info("AliAnalysisTaskSELc2V0bachelor","Calling Constructor");
119 DefineOutput(1,TList::Class()); //conters
120 DefineOutput(2,TList::Class()); //All Entries output
121 DefineOutput(3,TList::Class()); //3sigma PID output
122 DefineOutput(4,AliNormalizationCounter::Class());
123 DefineOutput(5,TList::Class());
127 //___________________________________________________________________________
128 AliAnalysisTaskSELc2V0bachelor::~AliAnalysisTaskSELc2V0bachelor() {
132 Info("~AliAnalysisTaskSELc2V0bachelor","Calling Destructor");
144 if (fOutputPIDBach) {
145 delete fOutputPIDBach;
174 //_________________________________________________
175 void AliAnalysisTaskSELc2V0bachelor::Init() {
180 fIsEventSelected=kFALSE;
182 if (fDebug > 1) AliInfo("Init");
184 fListCuts = new TList();
185 fListCuts->SetOwner();
186 fListCuts->Add(new AliRDHFCutsLctoV0(*fProdCuts));
187 fListCuts->Add(new AliRDHFCutsLctoV0(*fAnalCuts));
188 PostData(5,fListCuts);
193 //_________________________________________________
194 void AliAnalysisTaskSELc2V0bachelor::UserExec(Option_t *)
198 AliError("NO EVENT FOUND!");
202 AliAODEvent* aodEvent = dynamic_cast<AliAODEvent*>(fInputEvent);
203 TClonesArray *arrayLctopKos=0;
205 if (!aodEvent && AODEvent() && IsStandardAOD()) {
206 // In case there is an AOD handler writing a standard AOD, use the AOD
207 // event in memory rather than the input (ESD) event.
208 aodEvent = dynamic_cast<AliAODEvent*> (AODEvent());
209 // in this case the braches in the deltaAOD (AliAOD.VertexingHF.root)
210 // have to taken from the AOD event hold by the AliAODExtension
211 AliAODHandler* aodHandler = (AliAODHandler*)
212 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
214 if (aodHandler->GetExtensions()) {
215 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root");
216 AliAODEvent *aodFromExt = ext->GetAOD();
217 arrayLctopKos=(TClonesArray*)aodFromExt->GetList()->FindObject("CascadesHF");
220 arrayLctopKos=(TClonesArray*)aodEvent->GetList()->FindObject("CascadesHF");
224 fCounter->StoreEvent(aodEvent,fAnalCuts,fUseMCInfo);
226 // AOD primary vertex
227 AliAODVertex *vtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
230 // fix for temporary bug in ESDfilter
231 if (TMath::Abs(aodEvent->GetMagneticField())<0.001) return;
234 Float_t zVertex = vtx1->GetZ();
235 ((TH1F*)(fOutput->FindObject("hZ2")))->Fill(zVertex);
237 if (vtx1->GetNContributors()<1) return;
240 ((TH1F*)(fOutput->FindObject("hZ3")))->Fill(zVertex);
242 if (!arrayLctopKos) {
243 AliInfo("Could not find array of HF cascades, skipping the event");
246 if (arrayLctopKos->GetEntriesFast()) {
247 AliInfo(Form("Found %d cascades",arrayLctopKos->GetEntriesFast()));
251 ((TH1F*)(fOutput->FindObject("hZ4")))->Fill(zVertex);
253 // trigger class for PbPb C0SMH-B-NOPF-ALLNOTRD
255 TString trigclass = aodEvent->GetFiredTriggerClasses();
256 if (trigclass.Contains("C0SMH-B-NOPF-ALLNOTRD")||trigclass.Contains("C0SMH-B-NOPF-ALL"))
257 fCEvents->Fill(5); // in case of RealData events
260 ///////////////////////
261 Bool_t check1 = kFALSE;
262 TString firedTriggerClasses = aodEvent->GetFiredTriggerClasses(); // trigger class
263 if ( !fUseMCInfo && // don't do for MC...
264 (aodEvent->GetRunNumber()<136851 || aodEvent->GetRunNumber()>139517) ) { // ...and for PbPb 2010 data
265 if ( !(firedTriggerClasses.Contains("CINT1")) ) {
266 AliInfo(Form(" ======================== firedTriggerClasses.Data() = %s",firedTriggerClasses.Data()));
268 ((TH1F*)(fOutput->FindObject("hZ8")))->Fill(zVertex);
273 ULong64_t fTriggerMask=AliVEvent::kAnyINT;
274 Bool_t isSelectedAAA = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & fTriggerMask);
275 if (!isSelectedAAA) {
277 ((TH1F*)(fOutput->FindObject("hZ9")))->Fill(zVertex);
280 if (!isSelectedAAA || check1) {
282 ((TH1F*)(fOutput->FindObject("hZ16")))->Fill(zVertex);
285 fTriggerMask=AliVEvent::kAny;
286 Bool_t isSelectedBBB = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & fTriggerMask);
287 if (!isSelectedBBB) {
289 ((TH1F*)(fOutput->FindObject("hZ10")))->Fill(zVertex);
292 TString title=vtx1->GetTitle();
293 if (title.Contains("Z")) {
295 ((TH1F*)(fOutput->FindObject("hZ11")))->Fill(zVertex);
297 else if (title.Contains("3D")) {
299 ((TH1F*)(fOutput->FindObject("hZ12")))->Fill(zVertex);
302 ((TH1F*)(fOutput->FindObject("hZ13")))->Fill(zVertex);
305 if (TMath::Abs(zVertex)<=fAnalCuts->GetMaxVtxZ()) {
307 ((TH1F*)(fOutput->FindObject("hZ14")))->Fill(zVertex);
310 fIsEventSelected = fAnalCuts->IsEventSelected(aodEvent);
311 if ( fIsEventSelected ) {
313 ((TH1F*)(fOutput->FindObject("hZ7")))->Fill(zVertex);
316 ((TH1F*)(fOutput->FindObject("hZ15")))->Fill(zVertex);
319 ///////////////////////
324 TClonesArray *mcArray = 0;
325 AliAODMCHeader *mcHeader=0;
328 // MC array need for maching
329 mcArray = dynamic_cast<TClonesArray*>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
331 AliError("Could not find Monte-Carlo in AOD");
334 fCEvents->Fill(5); // in case of MC events
335 ((TH1F*)(fOutput->FindObject("hZ5")))->Fill(zVertex);
338 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
340 AliError("AliAnalysisTaskSELc2V0bachelor::UserExec: MC header branch not found!\n");
344 ((TH1F*)(fOutput->FindObject("hZ6")))->Fill(zVertex);
346 //AliInfo("~~~~~~~~~~Sono dentro fUseMCInfo 2");
348 // check on MC Lc Daughter
349 SearchLcDaughter(mcArray);
353 //AliInfo("~~~~~~~~~~Sono prima di isEvSelA");
354 Int_t nSelectedProd = 0;
355 Int_t nSelectedAnal = 0;
356 if (fIsK0sAnalysis) {
357 MakeAnalysisForLc2prK0S(vtx1,arrayLctopKos,mcArray,
358 nSelectedProd, fProdCuts, nSelectedAnal, fAnalCuts);
362 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(4);
363 ((TH1F*)(fOutput->FindObject("hZ4a")))->Fill(zVertex);
365 //TString firedTriggerClasses = aodEvent->GetFiredTriggerClasses(); // trigger class
366 Bool_t check1a = kFALSE;
367 if ( !fUseMCInfo && // don't do for MC...
368 (aodEvent->GetRunNumber()<136851 || aodEvent->GetRunNumber()>139517) ) { // ...and for PbPb 2010 data
369 if ( !(firedTriggerClasses.Contains("CINT1")) ) {
370 AliInfo(Form(" ======================== firedTriggerClasses.Data() = %s",firedTriggerClasses.Data()));
371 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(8);
372 ((TH1F*)(fOutput->FindObject("hZ8a")))->Fill(zVertex);
377 //ULong64_t fTriggerMask=AliVEvent::kAnyINT;
378 fTriggerMask=AliVEvent::kAnyINT;
379 Bool_t isSelectedAAAa = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & fTriggerMask);
380 if (!isSelectedAAAa) {
381 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(9);
382 ((TH1F*)(fOutput->FindObject("hZ9a")))->Fill(zVertex);
385 if (!isSelectedAAAa || check1a) {
386 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(16);
387 ((TH1F*)(fOutput->FindObject("hZ16a")))->Fill(zVertex);
390 fTriggerMask=AliVEvent::kAny;
391 Bool_t isSelectedBBBa = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & fTriggerMask);
392 if (!isSelectedBBBa) {
393 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(10);
394 ((TH1F*)(fOutput->FindObject("hZ10a")))->Fill(zVertex);
397 //TString title=vtx1->GetTitle();
398 if (title.Contains("Z")) {
399 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(11);
400 ((TH1F*)(fOutput->FindObject("hZ11a")))->Fill(zVertex);
402 else if (title.Contains("3D")) {
403 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(12);
404 ((TH1F*)(fOutput->FindObject("hZ12a")))->Fill(zVertex);
406 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(13);
407 ((TH1F*)(fOutput->FindObject("hZ13a")))->Fill(zVertex);
410 if (TMath::Abs(zVertex)<=fAnalCuts->GetMaxVtxZ()) {
411 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(14);
412 ((TH1F*)(fOutput->FindObject("hZ14a")))->Fill(zVertex);
415 //Bool_t eventSelected = fAnalCuts->IsEventSelected(aodEvent);
416 if ( fIsEventSelected ) {
417 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(7);
418 ((TH1F*)(fOutput->FindObject("hZ7a")))->Fill(zVertex);
420 ((TH1I*)(fOutput->FindObject("hEventsWithCandidates")))->Fill(15);
421 ((TH1F*)(fOutput->FindObject("hZ15a")))->Fill(zVertex);
428 fCounter->StoreCandidates(aodEvent,nSelectedProd,kTRUE);
429 fCounter->StoreCandidates(aodEvent,nSelectedAnal,kFALSE);
432 PostData(2,fOutputAll);
433 PostData(3,fOutputPIDBach);
434 PostData(4,fCounter);
437 //________________________________________ terminate ___________________________
438 void AliAnalysisTaskSELc2V0bachelor::Terminate(Option_t*)
440 // The Terminate() function is the last function to be called during
441 // a query. It always runs on the client, it can be used to present
442 // the results graphically or save the results to file.
444 //AliInfo("Terminate","");
445 AliAnalysisTaskSE::Terminate();
447 fOutput = dynamic_cast<TList*> (GetOutputData(1));
449 AliError("fOutput not available");
453 //fCEvents = dynamic_cast<TH1I*>(fOutput->FindObject("fCEvents"));
455 fOutputAll = dynamic_cast<TList*> (GetOutputData(2));
457 AliError("fOutputAll not available");
461 fOutputPIDBach = dynamic_cast<TList*> (GetOutputData(3));
462 if (!fOutputPIDBach) {
463 AliError("fOutputPIDBach not available");
469 //___________________________________________________________________________
470 void AliAnalysisTaskSELc2V0bachelor::UserCreateOutputObjects() {
472 AliInfo(Form("CreateOutputObjects of task %s\n", GetName()));
476 fOutput = new TList();
478 fOutput->SetName("chist0");
480 fOutputAll = new TList();
481 fOutputAll->SetOwner();
482 fOutputAll->SetName("listAll");
484 fOutputPIDBach = new TList();
485 fOutputPIDBach->SetOwner();
486 fOutputPIDBach->SetName("listPIDBach");
491 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
492 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
493 fPIDResponse = inputHandler->GetPIDResponse();
495 if (fProdCuts->GetIsUsePID()){
496 fProdCuts->GetPidHF()->SetPidResponse(fPIDResponse);
497 fProdCuts->GetPidV0pos()->SetPidResponse(fPIDResponse);
498 fProdCuts->GetPidV0neg()->SetPidResponse(fPIDResponse);
499 fProdCuts->GetPidHF()->SetOldPid(kFALSE);
500 fProdCuts->GetPidV0pos()->SetOldPid(kFALSE);
501 fProdCuts->GetPidV0neg()->SetOldPid(kFALSE);
503 if (fAnalCuts->GetIsUsePID()){
504 fAnalCuts->GetPidHF()->SetPidResponse(fPIDResponse);
505 fAnalCuts->GetPidV0pos()->SetPidResponse(fPIDResponse);
506 fAnalCuts->GetPidV0neg()->SetPidResponse(fPIDResponse);
507 fAnalCuts->GetPidHF()->SetOldPid(kFALSE);
508 fAnalCuts->GetPidV0pos()->SetOldPid(kFALSE);
509 fAnalCuts->GetPidV0neg()->SetOldPid(kFALSE);
513 PostData(2,fOutputAll);
514 PostData(3,fOutputPIDBach);
516 fCounter = new AliNormalizationCounter("NormalizationCounter");
518 PostData(4,fCounter);
522 //___________________________________ hiostograms _______________________________________
523 void AliAnalysisTaskSELc2V0bachelor::DefineHistograms() {
525 fCEvents = new TH1I("fCEvents","conter",17,0,17);
526 fCEvents->SetStats(kTRUE);
527 fCEvents->GetXaxis()->SetBinLabel(2,"Analyzed events");
528 fCEvents->GetXaxis()->SetBinLabel(3,"AliAODVertex exists");
529 fCEvents->GetXaxis()->SetBinLabel(4,"GetNContributors()>0");
530 fCEvents->GetXaxis()->SetBinLabel(5,"CascadesHF exists");
531 fCEvents->GetXaxis()->SetBinLabel(9,"triggerClass!=CINT1");
532 fCEvents->GetXaxis()->SetBinLabel(10,"triggerMask!=kAnyINT");
533 fCEvents->GetXaxis()->SetBinLabel(11,"triggerMask!=kAny");
534 fCEvents->GetXaxis()->SetBinLabel(12,"vtxTitle.Contains(Z)");
535 fCEvents->GetXaxis()->SetBinLabel(13,"vtxTitle.Contains(3D)");
536 fCEvents->GetXaxis()->SetBinLabel(14,"vtxTitle.Doesn'tContain(Z-3D)");
537 fCEvents->GetXaxis()->SetBinLabel(15,"zVtx<=10cm");
538 fCEvents->GetXaxis()->SetBinLabel(16,"!IsEventSelected");
539 fCEvents->GetXaxis()->SetBinLabel(17,"triggerMask!=kAnyINT || triggerClass!=CINT1");
540 fCEvents->GetXaxis()->SetBinLabel(8,"IsEventSelected");
541 //fCEvents->GetXaxis()->SetTitle("");
542 fCEvents->GetYaxis()->SetTitle("counts");
544 fOutput->Add(fCEvents);
548 fillthis="histMcStatLc";
549 TH1F* mcStatisticLc = new TH1F(fillthis.Data(),"#Lambda_{C} generated and their decays",19,-9.5,9.5);
550 fOutput->Add(mcStatisticLc);
553 fillthis="histopionV0SigmaVspTOF";
554 TH2F *hpionV0SigmaVspTOF=new TH2F(fillthis.Data(),fillthis.Data(),100,0.,5.0,100,-10.0,10.0);
555 fillthis="histoprotonBachSigmaVspTOF";
556 TH2F *hprotonBachSigmaVspTOF=new TH2F(fillthis.Data(),fillthis.Data(),100,0.,5.0,100,-10.0,10.0);
558 fOutput->Add(hpionV0SigmaVspTOF);
559 fOutput->Add(hprotonBachSigmaVspTOF);
561 fillthis="histopionV0SigmaVspTPC";
562 TH2F *hpionV0SigmaVspTPC=new TH2F(fillthis.Data(),fillthis.Data(),100,0.,5.0,100,-10.0,10.0);
563 fillthis="histoprotonBachSigmaVspTPC";
564 TH2F *hprotonBachSigmaVspTPC=new TH2F(fillthis.Data(),fillthis.Data(),100,0.,5.0,100,-10.0,10.0);
566 fOutput->Add(hpionV0SigmaVspTPC);
567 fOutput->Add(hprotonBachSigmaVspTPC);
569 TH1F *hZ2 = new TH1F("hZ2","",100,-50.,50.);
571 TH1F *hZ3 = new TH1F("hZ3","",100,-50.,50.);
573 TH1F *hZ4 = new TH1F("hZ4","",100,-50.,50.);
575 TH1F *hZ5 = new TH1F("hZ5","",100,-50.,50.);
577 TH1F *hZ6 = new TH1F("hZ6","",100,-50.,50.);
579 TH1F *hZ7 = new TH1F("hZ7","",100,-50.,50.);
581 TH1F *hZ8 = new TH1F("hZ8","",100,-50.,50.);
583 TH1F *hZ9 = new TH1F("hZ9","",100,-50.,50.);
585 TH1F *hZ10 = new TH1F("hZ10","",100,-50.,50.);
587 TH1F *hZ11 = new TH1F("hZ11","",100,-50.,50.);
589 TH1F *hZ12 = new TH1F("hZ12","",100,-50.,50.);
591 TH1F *hZ13 = new TH1F("hZ13","",100,-50.,50.);
593 TH1F *hZ14 = new TH1F("hZ14","",100,-50.,50.);
595 TH1F *hZ15 = new TH1F("hZ15","",100,-50.,50.);
597 TH1F *hZ16 = new TH1F("hZ16","",100,-50.,50.);
600 TH1I *hCandidateSelection = new TH1I("hCandidateSelection","",12,0,12);
601 hCandidateSelection->GetXaxis()->SetBinLabel(1,"IsEventSelected");
602 hCandidateSelection->GetXaxis()->SetBinLabel(2,"IsSecondaryVtx");
603 hCandidateSelection->GetXaxis()->SetBinLabel(3,"V0toPosNeg");
604 hCandidateSelection->GetXaxis()->SetBinLabel(4,"prodCuts::kTracks");
605 hCandidateSelection->GetXaxis()->SetBinLabel(5,"prodCuts::kCandidate");
606 hCandidateSelection->GetXaxis()->SetBinLabel(6,"prodCuts::kPID");
607 hCandidateSelection->GetXaxis()->SetBinLabel(7,"prodCuts::kAll");
608 hCandidateSelection->GetXaxis()->SetBinLabel(8,"analCuts::kTracks");
609 hCandidateSelection->GetXaxis()->SetBinLabel(9,"analCuts::kCandidate");
610 hCandidateSelection->GetXaxis()->SetBinLabel(10,"analCuts::kPID");
611 hCandidateSelection->GetXaxis()->SetBinLabel(11,"analCuts::kAll");
612 fOutput->Add(hCandidateSelection);
614 TH1I *hEventsWithCandidates = new TH1I("hEventsWithCandidates","conter",17,0,17);
615 fOutput->Add(hEventsWithCandidates);
617 TH1F *hZ2a = new TH1F("hZ2a","",100,-50.,50.);
619 TH1F *hZ3a = new TH1F("hZ3a","",100,-50.,50.);
621 TH1F *hZ4a = new TH1F("hZ4a","",100,-50.,50.);
623 TH1F *hZ5a = new TH1F("hZ5a","",100,-50.,50.);
625 TH1F *hZ6a = new TH1F("hZ6a","",100,-50.,50.);
627 TH1F *hZ7a = new TH1F("hZ7a","",100,-50.,50.);
629 TH1F *hZ8a = new TH1F("hZ8a","",100,-50.,50.);
631 TH1F *hZ9a = new TH1F("hZ9a","",100,-50.,50.);
633 TH1F *hZ10a = new TH1F("hZ10a","",100,-50.,50.);
635 TH1F *hZ11a = new TH1F("hZ11a","",100,-50.,50.);
637 TH1F *hZ12a = new TH1F("hZ12a","",100,-50.,50.);
639 TH1F *hZ13a = new TH1F("hZ13a","",100,-50.,50.);
641 TH1F *hZ14a = new TH1F("hZ14a","",100,-50.,50.);
643 TH1F *hZ15a = new TH1F("hZ15a","",100,-50.,50.);
645 TH1F *hZ16a = new TH1F("hZ16a","",100,-50.,50.);
648 TH1I *hSwitchOnCandidates0 = new TH1I("hSwitchOnCandidates0","",8,0,8);
649 fOutput->Add(hSwitchOnCandidates0);
650 TH1I *hSwitchOnCandidates1 = new TH1I("hSwitchOnCandidates1","",8,0,8);
651 fOutput->Add(hSwitchOnCandidates1);
652 TH1I *hSwitchOnCandidates2 = new TH1I("hSwitchOnCandidates2","",8,0,8);
653 fOutput->Add(hSwitchOnCandidates2);
654 TH1I *hSwitchOnCandidates3 = new TH1I("hSwitchOnCandidates3","",8,0,8);
655 fOutput->Add(hSwitchOnCandidates3);
656 TH1I *hSwitchOnCandidates4 = new TH1I("hSwitchOnCandidates4","",8,0,8);
657 fOutput->Add(hSwitchOnCandidates4);
659 if (fIsK0sAnalysis) DefineK0SHistos();// hK0S histos declarations
663 //________________________________________________________________________
664 void AliAnalysisTaskSELc2V0bachelor::FillLc2pK0Sspectrum(AliAODRecoCascadeHF *part,
666 Int_t &nSelectedProd,
667 AliRDHFCutsLctoV0 *cutsProd,
668 Int_t &nSelectedAnal,
669 AliRDHFCutsLctoV0 *cutsAnal)
672 // Fill histos for Lc -> K0S+proton
675 if ( ( ( (cutsProd->IsSelected(part,AliRDHFCuts::kCandidate))&(AliRDHFCutsLctoV0::kLcToK0Spr)) == (AliRDHFCutsLctoV0::kLcToK0Spr) ) )
676 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(4);
677 if ( ( ( (cutsProd->IsSelected(part,AliRDHFCuts::kPID))&(AliRDHFCutsLctoV0::kLcToK0Spr)) == (AliRDHFCutsLctoV0::kLcToK0Spr) ) )
678 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(5);
679 if ( ( ( (cutsProd->IsSelected(part,AliRDHFCuts::kAll))&(AliRDHFCutsLctoV0::kLcToK0Spr)) == (AliRDHFCutsLctoV0::kLcToK0Spr) ) ) {
681 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(6);
684 if ( ( (cutsProd->IsSelectedPID(part))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr) && // to be used since fUsePID is kFALSE for cutsProd
685 ( ( (cutsProd->IsSelectedSingleCut(part,AliRDHFCuts::kCandidate,2))&(AliRDHFCutsLctoV0::kLcToK0Spr)) == (AliRDHFCutsLctoV0::kLcToK0Spr) ) ) nSelectedProd++;
689 if ( (((cutsAnal->IsSelected(part,AliRDHFCuts::kTracks))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)) )
690 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(7);
692 //Bool_t usePID = cutsAnal->GetIsUsePID();
693 //cutsAnal->SetUsePID(kFALSE);
694 if ( (((cutsAnal->IsSelected(part,AliRDHFCuts::kCandidate))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)) )
695 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(8);
696 //cutsAnal->SetUsePID(usePID);
697 if ( (((cutsAnal->IsSelected(part,AliRDHFCuts::kPID))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)) )
698 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(9);
702 Double_t invmassLc = part->InvMassLctoK0sP();
703 Double_t lambdacpt=part->Pt();
704 Double_t cosOAK0Sp = part->PxProng(0)*part->PxProng(1)+
705 part->PyProng(0)*part->PyProng(1)+
706 part->PzProng(0)*part->PzProng(1);
707 cosOAK0Sp /= (part->PProng(0)*part->PProng(1));
709 AliAODv0 * v0part = (AliAODv0*)part->Getv0();
710 Bool_t onFlyV0 = v0part->GetOnFlyStatus(); // on-the-flight V0s
711 Double_t momK0s = TMath::Sqrt(v0part->Ptot2V0());
712 Double_t ptK0s = TMath::Sqrt(v0part->Pt2V0());
713 Double_t dcaV0 = v0part->DcaV0ToPrimVertex();
714 Double_t invmassK0s = v0part->MassK0Short();
715 Bool_t isInV0window = (((cutsAnal->IsSelectedSingleCut(part,AliRDHFCuts::kCandidate,2))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)); // cut on V0 invMass
717 AliAODTrack *bachelor = (AliAODTrack*)part->GetBachelor();
718 Double_t momBach = bachelor->P();
719 Bool_t isBachelorID = (((cutsAnal->IsSelected(part,AliRDHFCuts::kPID))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)); // ID x bachelor
721 //if (isBachelorID && isInV0window) nSelectedAnal++;
722 if ( (((cutsAnal->IsSelected(part,AliRDHFCuts::kAll))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)) ) {
723 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(10);
726 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(11);
732 ((TH1I*)(fOutput->FindObject("hSwitchOnCandidates0")))->Fill( cutsAnal->IsSelected(part,AliRDHFCuts::kCandidate) );
734 if ( (((cutsAnal->IsSelected(part,AliRDHFCuts::kTracks))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)) )
735 ((TH1I*)(fOutput->FindObject("hSwitchOnCandidates1")))->Fill( cutsAnal->IsSelected(part,AliRDHFCuts::kCandidate) );
737 if ( (((cutsAnal->IsSelected(part,AliRDHFCuts::kCandidate))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)) )
738 ((TH1I*)(fOutput->FindObject("hSwitchOnCandidates2")))->Fill( cutsAnal->IsSelected(part,AliRDHFCuts::kCandidate) );
740 if ( (((cutsAnal->IsSelected(part,AliRDHFCuts::kPID))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)) )
741 ((TH1I*)(fOutput->FindObject("hSwitchOnCandidates3")))->Fill( cutsAnal->IsSelected(part,AliRDHFCuts::kPID) );
743 if ( (((cutsAnal->IsSelected(part,AliRDHFCuts::kAll))&(AliRDHFCutsLctoV0::kLcToK0Spr))==(AliRDHFCutsLctoV0::kLcToK0Spr)) )
744 ((TH1I*)(fOutput->FindObject("hSwitchOnCandidates4")))->Fill( cutsAnal->IsSelected(part,AliRDHFCuts::kAll) );
748 if (onFlyV0 && fUseOnTheFlyV0) {
750 fillthis="histK0SMass";
751 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
752 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
756 fillthis="histpK0Svsp";
757 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(momBach,momK0s);
758 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(momBach,momK0s);
760 fillthis="histcosOAK0Spvsp";
761 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
762 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
764 fillthis="histoDCAtoPVvsinvmassK0s";
765 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
766 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
768 fillthis="histArmPodK0s";
769 FillArmPodDistribution(v0part,fillthis,fOutputAll);
770 if (isBachelorID) FillArmPodDistribution(v0part,fillthis,fOutputPIDBach);
772 fillthis="histLcMassByK0S";
773 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
774 if (isBachelorID)((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
780 fillthis="histK0SMassOffline";
781 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
782 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
786 fillthis="histpK0SvspOffline";
787 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(momBach,momK0s);
788 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(momBach,momK0s);
790 fillthis="histcosOAK0SpvspOffline";
791 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
792 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
794 fillthis="histoDCAtoPVvsinvmassK0sOffline";
795 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
796 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
798 fillthis="histOfflineArmPodK0s";
799 FillArmPodDistribution(v0part,fillthis,fOutputAll);
800 if (isBachelorID) FillArmPodDistribution(v0part,fillthis,fOutputPIDBach);
802 fillthis="histLcMassOfflineByK0S";
803 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
804 if (isBachelorID)((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
806 if (fIsEventSelected) {
807 fillthis="hist1LcMassOfflineByK0S";
808 if (isBachelorID) ((TH2F*)(fOutput->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
810 fillthis="hist0LcMassOfflineByK0S";
811 if (isBachelorID) ((TH2F*)(fOutput->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
820 if (onFlyV0 && fUseOnTheFlyV0) {
822 fillthis="histK0SMassSgn";
823 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
824 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
828 fillthis="histpK0SvspSgn";
829 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(momBach,momK0s);
830 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(momBach,momK0s);
832 fillthis="histcosOAK0SpSgnvsp";
833 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
834 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
836 fillthis="histoDCAtoPVvsinvmassK0sSgn";
837 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
838 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
840 fillthis="histArmPodK0sSgn";
841 FillArmPodDistribution(v0part,fillthis,fOutputAll);
842 if (isBachelorID) FillArmPodDistribution(v0part,fillthis,fOutputPIDBach);
844 fillthis="histLcMassByK0SSgn";
845 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
846 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
853 fillthis="histK0SMassOfflineSgn";
854 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
855 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
859 fillthis="histpK0SvspOfflineSgn";
860 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(momBach,momK0s);
861 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(momBach,momK0s);
863 fillthis="histcosOAK0SpSgnvspOffline";
864 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
865 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
867 fillthis="histoDCAtoPVvsinvmassK0sOfflineSgn";
868 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
869 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
871 fillthis="histOfflineArmPodK0sSgn";
872 FillArmPodDistribution(v0part,fillthis,fOutputAll);
873 if (isBachelorID) FillArmPodDistribution(v0part,fillthis,fOutputPIDBach);
875 fillthis="histLcMassOfflineByK0SSgn";
876 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
877 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
885 if (onFlyV0 && fUseOnTheFlyV0) {
887 fillthis="histK0SMassBkg";
888 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
889 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
893 fillthis="histpK0SvspBkg";
894 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(momBach,momK0s);
895 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(momBach,momK0s);
897 fillthis="histcosOAK0SpBkgvsp";
898 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
899 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
901 fillthis="histoDCAtoPVvsinvmassK0sBkg";
902 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
903 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
905 fillthis="histArmPodK0sBkg";
906 FillArmPodDistribution(v0part,fillthis,fOutputAll);
907 if (isBachelorID) FillArmPodDistribution(v0part,fillthis,fOutputPIDBach);
909 fillthis="histLcMassByK0SBkg";
910 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
911 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
918 fillthis="histK0SMassOfflineBkg";
919 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
920 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,ptK0s);
924 fillthis="histpK0SvspOfflineBkg";
925 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(momBach,momK0s);
926 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(momBach,momK0s);
928 fillthis="histcosOAK0SpBkgvspOffline";
929 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
930 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(cosOAK0Sp,lambdacpt);
932 fillthis="histoDCAtoPVvsinvmassK0sOfflineBkg";
933 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
934 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassK0s,dcaV0);
936 fillthis="histOfflineArmPodK0sBkg";
937 FillArmPodDistribution(v0part,fillthis,fOutputAll);
938 if (isBachelorID) FillArmPodDistribution(v0part,fillthis,fOutputPIDBach);
940 fillthis="histLcMassOfflineByK0SBkg";
941 ((TH2F*)(fOutputAll->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
942 if (isBachelorID) ((TH2F*)(fOutputPIDBach->FindObject(fillthis)))->Fill(invmassLc,lambdacpt);
953 //-------------------------------------------------------------------------------
954 Int_t AliAnalysisTaskSELc2V0bachelor::CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPartCandidate) const {
956 // checking whether the mother of the particles come from a charm or a bottom quark
960 Int_t abspdgGranma =0;
961 Bool_t isFromB=kFALSE;
962 Bool_t isQuarkFound=kFALSE;
963 Int_t mother = mcPartCandidate->GetMother();
967 AliAODMCParticle* mcGranma = dynamic_cast<AliAODMCParticle*>(arrayMC->At(mother));
969 pdgGranma = mcGranma->GetPdgCode();
970 abspdgGranma = TMath::Abs(pdgGranma);
971 if ( (abspdgGranma > 500 && abspdgGranma < 600 ) ||
972 (abspdgGranma > 5000 && abspdgGranma < 6000) ) isFromB=kTRUE;
973 else if (abspdgGranma==4 || abspdgGranma==5) isQuarkFound=kTRUE;
974 mother = mcGranma->GetMother();
976 AliError("Failed casting the mother particle!");
981 if (isFromB) return 5;
986 //-------------------------------------------------------------------------------
987 void AliAnalysisTaskSELc2V0bachelor::MakeAnalysisForLc2prK0S(AliAODVertex */*vtx1*/,
988 TClonesArray *arrayLctopKos,
989 TClonesArray *mcArray,
990 Int_t &nSelectedProd,
991 AliRDHFCutsLctoV0 *cutsProd,
992 Int_t &nSelectedAnal,
993 AliRDHFCutsLctoV0 *cutsAnal)
996 // counters for efficiencies
997 Int_t icountReco = 0;
999 //Lc prong needed to MatchToMC method
1001 Int_t pdgCand = 4122;
1002 Int_t pdgDgLctoV0bachelorOld[2]={2212,310};
1003 Int_t pdgDgLctoV0bachelor[2]={310,2212};
1004 Int_t pdgDgV0toDaughters[2]={211,211};
1006 // loop over cascades to search for candidates Lc->p+K0S
1007 Int_t nCascades= arrayLctopKos->GetEntriesFast();
1009 AliInfo("Could not find cascades, skipping the event");
1012 for (Int_t iLctopK0s = 0; iLctopK0s<nCascades; iLctopK0s++) {
1014 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(0);
1016 // Lc candidates and K0s from Lc
1017 AliAODRecoCascadeHF* lcK0spr = (AliAODRecoCascadeHF*)arrayLctopKos->At(iLctopK0s);
1018 if (!lcK0spr->GetSecondaryVtx()) {
1019 AliInfo("No secondary vertex");
1023 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(1);
1025 AliAODTrack * v0Pos = lcK0spr->Getv0PositiveTrack();
1026 AliAODTrack * v0Neg = lcK0spr->Getv0NegativeTrack();
1027 if (v0Pos->Charge() == v0Neg->Charge()) continue;
1029 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(2);
1035 Bool_t isPrimary=kTRUE;
1039 // find associated MC particle for Lc -> p+K0 and K0S->pi+pi
1040 Int_t mcLabelOld = MatchToMC(lcK0spr,pdgDgLctoV0bachelorOld,pdgDgV0toDaughters,mcArray);
1041 Int_t mcLabel = lcK0spr->MatchToMC(pdgCand,pdgDgLctoV0bachelor[0],pdgDgLctoV0bachelor,pdgDgV0toDaughters,mcArray,kTRUE);
1042 if (mcLabelOld!=mcLabel) AliInfo(Form(" Changed MC label: oldONE=%d wrt rightONE=%d",mcLabelOld,mcLabel));
1044 AliInfo(Form(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~cascade numero %d di %d", iLctopK0s,nCascades));
1046 AliAODMCParticle *partLc = (AliAODMCParticle*)mcArray->At(mcLabel);
1047 Int_t checkOrigin = CheckOrigin(mcArray,partLc);
1048 if (checkOrigin==5) isPrimary=kFALSE;
1050 pdgCode = partLc->GetPdgCode();
1051 if (pdgCode<0) AliInfo(Form(" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ %d ~~~~~~~~~~ %d", mcLabel, pdgCode));
1052 pdgCode = TMath::Abs(pdgCode);
1059 if ( !( ( (cutsProd->IsSelected(lcK0spr,AliRDHFCuts::kTracks))&(AliRDHFCutsLctoV0::kLcToK0Spr)) == (AliRDHFCutsLctoV0::kLcToK0Spr) ) ) continue;
1060 ((TH1I*)(fOutput->FindObject("hCandidateSelection")))->Fill(3);
1062 FillLc2pK0Sspectrum(lcK0spr, isLc,
1063 nSelectedProd, cutsProd,
1064 nSelectedAnal, cutsAnal);
1068 AliDebug(2, Form("Found %d Reco particles that are Lc!!", icountReco));
1071 //-------------------------------------------------------------------------------
1072 Int_t AliAnalysisTaskSELc2V0bachelor::MatchToMC(AliAODRecoCascadeHF *lc2bacV0,
1073 Int_t *pdgDgLc2bacV0, Int_t *pdgDgV0,
1074 TClonesArray *mcArray)
1078 AliAODTrack *bachelor = (AliAODTrack*)lc2bacV0->GetBachelor();
1079 Int_t labBachelor = bachelor->GetLabel();
1080 if (labBachelor<0) return -1;
1081 AliAODMCParticle *partBachelor = (AliAODMCParticle*)mcArray->At(labBachelor);
1082 if (TMath::Abs(partBachelor->GetPdgCode())!=pdgDgLc2bacV0[0]) return -1;
1084 Int_t labBacMother = partBachelor->GetMother();
1085 if (labBacMother<0) return -1;
1086 AliAODMCParticle *partBacMother = (AliAODMCParticle*)mcArray->At(labBacMother);
1087 if (TMath::Abs(partBacMother->GetPdgCode())!=4122) return -1;
1090 AliAODTrack *posV0Daugh = (AliAODTrack*)lc2bacV0->Getv0PositiveTrack();
1091 AliAODTrack *negV0Daugh = (AliAODTrack*)lc2bacV0->Getv0NegativeTrack();
1092 Int_t labV0pos = posV0Daugh->GetLabel();
1093 Int_t labV0neg = negV0Daugh->GetLabel();
1095 if (labV0pos<0 || labV0neg<0) return -1;
1096 AliAODMCParticle *partV0pos = (AliAODMCParticle*)mcArray->At(labV0neg);
1097 AliAODMCParticle *partV0neg = (AliAODMCParticle*)mcArray->At(labV0pos);
1099 if ( ! ( (TMath::Abs(partV0pos->GetPdgCode())==pdgDgV0[0] &&
1100 TMath::Abs(partV0neg->GetPdgCode())==pdgDgV0[1]) ||
1101 (TMath::Abs(partV0pos->GetPdgCode())==pdgDgV0[1] &&
1102 TMath::Abs(partV0neg->GetPdgCode())==pdgDgV0[0]) ) ) return -1;
1103 Int_t labV0posMother = partV0pos->GetMother();
1104 Int_t labV0negMother = partV0neg->GetMother();
1106 if (labV0posMother<0 || labV0negMother<0) return -1;
1107 if (labV0posMother!=labV0negMother) return -1;
1109 AliAODMCParticle *motherV0 = (AliAODMCParticle*)mcArray->At(labV0posMother);
1111 if (TMath::Abs(motherV0->GetPdgCode())!=pdgDgLc2bacV0[1]) return -1;
1112 Int_t labV0mother = motherV0->GetMother();
1113 if (labV0mother<0) return -1;
1114 AliAODMCParticle *gMotherV0 = (AliAODMCParticle*)mcArray->At(labV0mother);
1116 if ( !(pdgDgLc2bacV0[1]==310 && TMath::Abs(gMotherV0->GetPdgCode())==311) &&
1117 !(pdgDgLc2bacV0[1]==3122 && TMath::Abs(motherV0->GetPdgCode())==3122) ) return -1;
1119 if ( (pdgDgLc2bacV0[1]==310 && TMath::Abs(gMotherV0->GetPdgCode())==311) ) {
1120 Int_t labV0GMother = gMotherV0->GetMother();
1121 if (labV0GMother<0) return -1;
1122 AliAODMCParticle *ggMotherV0 = (AliAODMCParticle*)mcArray->At(labV0GMother);
1124 if (TMath::Abs(ggMotherV0->GetPdgCode())!=4122) return -1;
1125 gMotherV0 = (AliAODMCParticle*)ggMotherV0;
1126 labV0mother=labV0GMother;
1128 else if (pdgDgLc2bacV0[1]==3122 && TMath::Abs(motherV0->GetPdgCode())==3122) {
1129 if (TMath::Abs(gMotherV0->GetPdgCode())!=4122) return -1;
1132 if (labBacMother!=labV0mother) {
1133 AliInfo(Form("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++A - %d %d",
1134 labBacMother, labV0mother));
1138 AliInfo(Form(" V0: %d (%d) -> %d (%d) + %d (%d) --- GM %d (PDG=%d)",
1139 motherV0->GetPdgCode(), labV0posMother,
1140 partV0pos->GetPdgCode(), labV0pos,
1141 partV0neg->GetPdgCode(), labV0neg,
1142 labV0mother, gMotherV0->GetPdgCode()));
1144 AliInfo(Form(" Bachelor: %d (%d) --- M %d (%d)",
1145 partBachelor->GetPdgCode(), labBachelor,
1146 labBacMother, partBacMother->GetPdgCode()));
1147 return labBacMother;//labV0mother;//
1151 //-----------------------
1152 void AliAnalysisTaskSELc2V0bachelor::SearchLcDaughter(TClonesArray *arrayMC)
1155 AliAODMCParticle *searchLc=0;
1156 AliAODMCParticle *daugh=0;
1157 AliAODMCParticle *daugh1=0;
1158 AliAODMCParticle *daugh2=0;
1159 AliAODMCParticle *daughK0=0;
1160 AliAODMCParticle *daughK0s1=0;
1161 AliAODMCParticle *daughK0s2=0;
1162 AliAODMCParticle *daughL1=0;
1163 AliAODMCParticle *daughL2=0;
1168 Int_t searchLcpdg=0;
1178 TString fillthis="";
1179 fillthis="histMcStatLc";
1181 for (Int_t iii=0; iii<arrayMC->GetEntries(); iii++) {
1182 searchLc = (AliAODMCParticle*)arrayMC->At(iii);
1183 searchLcpdg = searchLc->GetPdgCode();
1184 if (TMath::Abs(searchLcpdg) == 4122) {
1185 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(0);
1186 nDaughLc= searchLc->GetNDaughters();
1188 if (searchLcpdg == 4122) { // It is Lc+
1189 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(1);
1190 if (nDaughLc!=2) continue;
1191 daugh1 = (AliAODMCParticle*)arrayMC->At(searchLc->GetDaughter(0));
1192 daughPdg1=daugh1->GetPdgCode();
1193 daugh2 = (AliAODMCParticle*)arrayMC->At(searchLc->GetDaughter(1));
1194 daughPdg2=daugh2->GetPdgCode();
1195 if ( (daughPdg1==2212 && daughPdg2==-311) ||
1196 (daughPdg2==2212 && daughPdg1==-311) ) { // Lc+ -> p K0bar
1197 AliInfo(Form(" Ecco %d(%d) -> %d(%d) %d(%d)",
1199 searchLc->GetDaughter(0),daughPdg1,
1200 searchLc->GetDaughter(1),daughPdg2));
1201 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(2);
1202 if (daughPdg1==-311) {
1203 nDaughK0=daugh1->GetNDaughters();
1205 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(4);
1208 daughK0 = (AliAODMCParticle*)arrayMC->At(daugh1->GetDaughter(0)); // K0S
1211 nDaughK0=daugh2->GetNDaughters();
1213 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(4);
1216 daughK0 = (AliAODMCParticle*)arrayMC->At(daugh2->GetDaughter(0)); // K0S
1220 //((TH1F*)(fOutput->FindObject(fillthis)))->Fill(4);
1223 //cout << " positive daughK0 = " << daughK0 << endl;
1224 AliInfo(" Found positive daughK0 ");
1225 daughK0Pdg=daughK0->GetPdgCode();
1226 if (daughK0Pdg!=310) {
1227 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(4);
1230 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(3);
1231 nDaughK0s=daughK0->GetNDaughters();
1233 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(6);
1236 daughK0s1= (AliAODMCParticle*)arrayMC->At(daughK0->GetDaughter(0));
1237 daughK0s2= (AliAODMCParticle*)arrayMC->At(daughK0->GetDaughter(1));
1238 daughK0s1pdg=daughK0s1->GetPdgCode();
1239 daughK0s2pdg=daughK0s2->GetPdgCode();
1241 if ( ((daughK0s1pdg==211) && (daughK0s2pdg==-211)) ||
1242 ((daughK0s2pdg==211) && (daughK0s1pdg==-211)) ) ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(5);
1243 else ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(6);
1244 } // else if (daughK0Pdg==310)
1245 }//if ((daughPdg1==2212 && daughPdg2==-311)||(daughPdg2==2212 && daughPdg1==-311))
1247 else if ( (daughPdg1==3122 && daughPdg2==211) ||
1248 (daughPdg2==3122 && daughPdg1==211) ) { // Lc+ -> pi+ Lambda
1249 AliInfo(Form(" Ecco %d(%d) -> %d(%d) %d(%d)",
1251 searchLc->GetDaughter(0),daughPdg1,
1252 searchLc->GetDaughter(1),daughPdg2));
1253 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(7);
1254 if (daughPdg1==3122)
1255 daugh = (AliAODMCParticle*)arrayMC->At(searchLc->GetDaughter(0)); // Lambda
1257 daugh = (AliAODMCParticle*)arrayMC->At(searchLc->GetDaughter(1)); // Lambda
1258 if (!daugh) continue;
1259 //cout << " positive daughL = " << daugh << endl;
1260 AliInfo(" Found positive daughL ");
1261 nDaughL=daugh->GetNDaughters();
1263 daughL1= (AliAODMCParticle*)arrayMC->At(daugh->GetDaughter(0));
1264 daughL2= (AliAODMCParticle*)arrayMC->At(daugh->GetDaughter(1));
1265 daughL1pdg=daughL1->GetPdgCode();
1266 daughL2pdg=daughL2->GetPdgCode();
1267 if ( ((daughL1pdg==-211) && (daughL2pdg==2212)) ||
1268 ((daughL2pdg==-211) && (daughL1pdg==2212)) ) ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(8);
1269 else ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(9);
1271 else ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(9);
1272 }//else if ((daughPdg1==3122 && daughPdg2==211)||(daughPdg2==3122 && daughPdg1==211))
1276 }//if (searchLcpdg == 4122)
1278 if (searchLcpdg == -4122) { // It is Lc+
1279 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-1);
1280 if (nDaughLc!=2) continue;
1281 daugh1 = (AliAODMCParticle*)arrayMC->At(searchLc->GetDaughter(0));
1282 daughPdg1=daugh1->GetPdgCode();
1283 daugh2 = (AliAODMCParticle*)arrayMC->At(searchLc->GetDaughter(1));
1284 daughPdg2=daugh2->GetPdgCode();
1285 if ( (daughPdg1==-2212 && daughPdg2==311) ||
1286 (daughPdg2==-2212 && daughPdg1==311) ) { // Lc- -> pbar K0
1287 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-2);
1288 AliInfo(Form(" Ecco %d(%d) -> %d(%d) %d(%d)",
1290 searchLc->GetDaughter(0),daughPdg1,
1291 searchLc->GetDaughter(1),daughPdg2));
1292 if (daughPdg1==311) {
1293 nDaughK0=daugh1->GetNDaughters();
1295 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-4);
1298 daughK0 = (AliAODMCParticle*)arrayMC->At(daugh1->GetDaughter(0));
1301 nDaughK0=daugh2->GetNDaughters();
1303 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-4);
1306 daughK0 = (AliAODMCParticle*)arrayMC->At(daugh2->GetDaughter(0));
1310 //((TH1F*)(fOutput->FindObject(fillthis)))->Fill(4);
1313 //cout << " negative daughK0 = " << daughK0 << endl;
1314 AliInfo(" Found negative daughK0 ");
1315 daughK0Pdg=daughK0->GetPdgCode();
1316 if (daughK0Pdg!=310) {
1317 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-4);
1320 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-3);
1321 nDaughK0s=daughK0->GetNDaughters();
1323 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-6);
1326 daughK0s1= (AliAODMCParticle*)arrayMC->At(daughK0->GetDaughter(0));
1327 daughK0s2= (AliAODMCParticle*)arrayMC->At(daughK0->GetDaughter(1));
1328 daughK0s1pdg=daughK0s1->GetPdgCode();
1329 daughK0s2pdg=daughK0s2->GetPdgCode();
1330 if ( ((daughK0s1pdg==211) && (daughK0s2pdg==-211)) ||
1331 ((daughK0s2pdg==211) && (daughK0s1pdg==-211)) ) ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-5);
1332 else ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-6);
1333 } // else if (daughK0Pdg==310)
1334 }//if ((daughPdg1==-2212 && daughPdg2==-311)||(daughPdg2==-2212 && daughPdg1==-311))
1336 else if ( (daughPdg1==-3122 && daughPdg2==-211) ||
1337 (daughPdg2==-3122 && daughPdg1==-211) ) {
1338 AliInfo(Form(" Ecco %d(%d) -> %d(%d) %d(%d)",
1340 searchLc->GetDaughter(0),daughPdg1,
1341 searchLc->GetDaughter(1),daughPdg2));
1342 ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-7);
1343 if (daughPdg1==-3122)
1344 daugh = (AliAODMCParticle*)arrayMC->At(searchLc->GetDaughter(0));
1346 daugh = (AliAODMCParticle*)arrayMC->At(searchLc->GetDaughter(1));
1347 if (!daugh) continue;
1348 //cout << " negative daughL = " << daugh << endl;
1349 AliInfo(" Found negative daughL ");
1350 nDaughL=daugh->GetNDaughters();
1352 daughL1 = (AliAODMCParticle*)arrayMC->At(daugh->GetDaughter(0));
1353 daughL2 = (AliAODMCParticle*)arrayMC->At(daugh->GetDaughter(1));
1354 daughL1pdg=daughL1->GetPdgCode();
1355 daughL2pdg= daughL2->GetPdgCode();
1356 if ( ((daughL1pdg==211) && (daughL2pdg==-2212)) ||
1357 ((daughL2pdg==211) && (daughL1pdg==-2212)) ) ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-8);
1358 else ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-9);
1360 else ((TH1F*)(fOutput->FindObject(fillthis)))->Fill(-9);
1361 }//else if ((daughPdg1==-3122 && daughPdg2==-211)||(daughPdg2==-3122 && daughPdg1==-211))
1365 }// if (TMath::Abs(searchLcpdg) == 4122)
1366 }// for (Int_t iii=0; iii<arrayMC->GetEntries(); iii++)
1369 //----------------------------------------------------
1371 void AliAnalysisTaskSELc2V0bachelor::FillArmPodDistribution(AliAODv0 *vZero,
1375 Double_t alpha = vZero->AlphaV0();
1376 Double_t qT = vZero->PtArmV0();
1378 ((TH2F*)(histoList->FindObject(histoTitle)))->Fill(alpha,qT);
1381 //----------------------------------------------------
1383 void AliAnalysisTaskSELc2V0bachelor::DefineK0SHistos()
1386 TString nameMass=" ", nameSgn=" ", nameBkg=" ";
1388 ///---------------- START K0S HISTOS DECLARATIONS -------------------///
1390 if (fUseOnTheFlyV0) {
1392 // V0 invariant masses (on-the-fly)
1393 nameMass="histK0SMass";
1394 TH2F* spectrumK0SMass = new TH2F(nameMass.Data(),"K^{0}_{S} invariant mass VS p_{T}; M(K^{0}_{S}) [GeV/c^{2}]; p_{T}(K^{0}_{S}) [GeV/c]; Entries",
1395 520,0.43,0.56,200,0.,20.);
1396 spectrumK0SMass->Sumw2();
1397 spectrumK0SMass->SetLineColor(6);
1398 spectrumK0SMass->SetMarkerStyle(20);
1399 spectrumK0SMass->SetMarkerSize(0.6);
1400 spectrumK0SMass->SetMarkerColor(6);
1402 // Lc invariant masses (x K0S on-the-fly)
1403 nameMass="histLcMassByK0S";
1404 TH2F* spectrumLcMassByK0S = new TH2F(nameMass.Data(),"#Lambda_{C} invariant mass (by K^{0}_{S}) vs p_{T} ; M(#Lambda_{C}) [GeV/c^{2}]; p_{T}",
1405 1000,2.,2.5,200,0.,20.);
1406 spectrumLcMassByK0S->Sumw2();
1407 spectrumLcMassByK0S->SetLineColor(6);
1408 spectrumLcMassByK0S->SetMarkerStyle(20);
1409 spectrumLcMassByK0S->SetMarkerSize(0.6);
1410 spectrumLcMassByK0S->SetMarkerColor(6);
1412 nameMass="histcosOAK0Spvsp";
1413 TH2F* cosOpeningAngleK0Spvsp = new TH2F(nameMass.Data(),"#Lambda_{C} : K^{0}_{S} - p Opening Angle vs p; Cos(Opening Angle) ; p ",
1414 200,-1.,1.,200,0.,20.);
1416 nameMass="histpK0Svsp";
1417 TH2F* momentumDistributionK0Svsp = new TH2F(nameMass.Data(),"#Lambda_{C} : K^{0}_{S} vs p Total Momentum Distribution; p_{p}; p_{K^{0}_{S}} ",
1418 200,0.,20.,200,0.,20.);
1420 nameMass="histArmPodK0s";
1421 TH2F* armenterosPodK0s = new TH2F(nameMass.Data(),"K^{0}_{S} Armenteros-Podolanski distribution; #frac{p_{L}^{+}-p_{L}^{-}}{p_{L}^{+}+p_{L}^{-}}; p_{T}^{+} [GeV/c]",
1422 200,-1.,1.,300,0.,0.3);
1424 nameMass="histoDCAtoPVvsinvmassK0s";
1425 TH2F *dcatoPVvspK0s = new TH2F(nameMass.Data(),"K^{0}_{S}: DCA to Primary Vertex vs K^{0}_{S} invariant mass ; M(K^{0}_{S}) [GeV/c^{2}]; DCA to Primary Vertex []; Entries",
1426 520,0.43,0.56,100,0.,10.0);
1428 TH2F* allspectrumK0SMass = (TH2F*)spectrumK0SMass->Clone();
1429 TH2F* allspectrumLcMassByK0S = (TH2F*)spectrumLcMassByK0S->Clone();
1430 TH2F* allcosOpeningAngleK0Spvsp= (TH2F*)cosOpeningAngleK0Spvsp->Clone();
1431 TH2F* allmomentumDistributionK0Svsp= (TH2F*)momentumDistributionK0Svsp->Clone();
1432 TH2F* alldcatoPVvspK0s=(TH2F*)dcatoPVvspK0s->Clone();
1434 TH2F* pidBachspectrumK0SMass = (TH2F*)spectrumK0SMass->Clone();
1435 TH2F* pidBachspectrumLcMassByK0S = (TH2F*)spectrumLcMassByK0S->Clone();
1436 TH2F* pidBachcosOpeningAngleK0Spvsp= (TH2F*)cosOpeningAngleK0Spvsp->Clone();
1437 TH2F* pidBachmomentumDistributionK0Svsp= (TH2F*)momentumDistributionK0Svsp->Clone();
1438 TH2F* pidBachdcatoPVvspK0s=(TH2F*)dcatoPVvspK0s->Clone();
1440 TH2F* allArmenterosPodK0s = (TH2F*)armenterosPodK0s->Clone();
1441 TH2F* pidBachArmenterosPodK0s = (TH2F*)armenterosPodK0s->Clone();
1443 fOutputAll->Add(allspectrumK0SMass);
1444 fOutputAll->Add(allspectrumLcMassByK0S);
1445 fOutputAll->Add(allcosOpeningAngleK0Spvsp);
1446 fOutputAll->Add(allmomentumDistributionK0Svsp);
1447 fOutputAll->Add(allArmenterosPodK0s);
1448 fOutputAll->Add(alldcatoPVvspK0s);
1450 fOutputPIDBach->Add(pidBachspectrumK0SMass);
1451 fOutputPIDBach->Add(pidBachspectrumLcMassByK0S);
1452 fOutputPIDBach->Add(pidBachcosOpeningAngleK0Spvsp);
1453 fOutputPIDBach->Add(pidBachmomentumDistributionK0Svsp);
1454 fOutputPIDBach->Add(pidBachArmenterosPodK0s);
1455 fOutputPIDBach->Add(pidBachdcatoPVvspK0s);
1459 // V0 invariant masses (offline)
1460 nameMass="histK0SMassOffline";
1461 TH2F* spectrumK0SMassOffline = new TH2F(nameMass.Data(),"K^{0}_{S} invariant mass VS p_{T}; M(K^{0}_{S}) [GeV/c^{2}]; p_{T}(K^{0}_{S}) [GeV/c]; Entries",
1462 520,0.43,0.56,200,0.,20.);
1463 spectrumK0SMassOffline->Sumw2();
1464 spectrumK0SMassOffline->SetLineColor(6);
1465 spectrumK0SMassOffline->SetMarkerStyle(20);
1466 spectrumK0SMassOffline->SetMarkerSize(0.6);
1467 spectrumK0SMassOffline->SetMarkerColor(6);
1470 // Lc invariant masses (x K0S offline)
1471 nameMass="histLcMassOfflineByK0S";
1472 TH2F* spectrumLcMassOfflineByK0S = new TH2F(nameMass.Data(),"#Lambda_{C} invariant mass (by K^{0}_{S}) vs p_{T}; M(#Lambda_{C}) [GeV/c^{2}]; p_{T}",
1473 1000,2.,2.5,200,0.,20.);
1474 spectrumLcMassOfflineByK0S->Sumw2();
1475 spectrumLcMassOfflineByK0S->SetLineColor(6);
1476 spectrumLcMassOfflineByK0S->SetMarkerStyle(20);
1477 spectrumLcMassOfflineByK0S->SetMarkerSize(0.6);
1478 spectrumLcMassOfflineByK0S->SetMarkerColor(6);
1481 nameMass="histcosOAK0SpvspOffline";
1482 TH2F* cosOpeningAngleK0SpvspOffline = new TH2F(nameMass.Data(),"#Lambda_{C} : K^{0}_{S} - p Opening Angle vs p - Offline ; Cos(Opening Angle) ; p ",
1483 200,-1.,1.,200,0.,20.);
1485 nameMass="histpK0SvspOffline";
1486 TH2F* momentumDistributionK0SvspOffline = new TH2F(nameMass.Data(),"#Lambda_{C} : K^{0}_{S} vs p Total Momentum Distribution - Offline ; p_{p}; p_{K^{0}_{S}} ",
1487 200,0.,20.,200,0.,20.);
1489 nameMass="histOfflineArmPodK0s";
1490 TH2F* armenterosPodK0sOff = new TH2F(nameMass.Data(),"K^{0}_{S} Armenteros-Podolanski distribution -offline-; #frac{p_{L}^{+}-p_{L}^{-}}{p_{L}^{+}+p_{L}^{-}}; p_{T}^{+} [GeV/c]",
1491 200,-1.,1.,300,0.,0.3);
1493 nameMass="histoDCAtoPVvsinvmassK0sOffline";
1494 TH2F *dcatoPVvspK0sOffline = new TH2F(nameMass.Data(),"K^{0}_{S}: DCA to Primary Vertex vs K^{0}_{S} invariant mass -offline -; M(K^{0}_{S}) [GeV/c^{2}]; DCA to Primary Vertex []; Entries",
1495 520,0.43,0.56,100,0.,10.0);
1499 TH2F* allspectrumK0SMassOffline = (TH2F*)spectrumK0SMassOffline->Clone();
1500 TH2F* allspectrumLcMassOfflineByK0S = (TH2F*)spectrumLcMassOfflineByK0S->Clone();
1501 TH2F* allcosOpeningAngleK0SpvspOffline= (TH2F*)cosOpeningAngleK0SpvspOffline->Clone();
1502 TH2F* allmomentumDistributionK0SvspOffline= (TH2F*)momentumDistributionK0SvspOffline->Clone();
1503 TH2F* alldcatoPVvspK0sOffline=(TH2F*)dcatoPVvspK0sOffline->Clone();
1505 TH2F* pidBachspectrumK0SMassOffline = (TH2F*)spectrumK0SMassOffline->Clone();
1506 TH2F* pidBachspectrumLcMassOfflineByK0S = (TH2F*)spectrumLcMassOfflineByK0S->Clone();
1507 TH2F* pidBachcosOpeningAngleK0SpvspOffline= (TH2F*)cosOpeningAngleK0SpvspOffline->Clone();
1508 TH2F* pidBachmomentumDistributionK0SvspOffline= (TH2F*)momentumDistributionK0SvspOffline->Clone();
1509 TH2F* pidBachdcatoPVvspK0sOffline=(TH2F*)dcatoPVvspK0sOffline->Clone();
1511 TH2F* allArmenterosPodK0sOff = (TH2F*)armenterosPodK0sOff->Clone();
1512 TH2F* pidBachArmenterosPodK0sOff = (TH2F*)armenterosPodK0sOff->Clone();
1515 fOutputAll->Add(allspectrumK0SMassOffline);
1516 fOutputAll->Add(allspectrumLcMassOfflineByK0S);
1517 fOutputAll->Add(allcosOpeningAngleK0SpvspOffline);
1518 fOutputAll->Add(allmomentumDistributionK0SvspOffline);
1519 fOutputAll->Add(allArmenterosPodK0sOff);
1520 fOutputAll->Add(alldcatoPVvspK0sOffline);
1522 fOutputPIDBach->Add(pidBachspectrumK0SMassOffline);
1523 fOutputPIDBach->Add(pidBachspectrumLcMassOfflineByK0S);
1524 fOutputPIDBach->Add(pidBachcosOpeningAngleK0SpvspOffline);
1525 fOutputPIDBach->Add(pidBachmomentumDistributionK0SvspOffline);
1526 fOutputPIDBach->Add(pidBachArmenterosPodK0sOff);
1527 fOutputPIDBach->Add(pidBachdcatoPVvspK0sOffline);
1530 nameMass="hist1LcMassOfflineByK0S";
1531 TH2D* h1 = new TH2D(nameMass.Data(),"IsEventSelected; M(#Lambda_{C}) [GeV/c^{2}]; p_{T}",1000,2.,2.5,200,0.,20.);
1533 nameMass="hist0LcMassOfflineByK0S";
1534 TH2D* h0 = new TH2D(nameMass.Data(),"!IsEventSelected; M(#Lambda_{C}) [GeV/c^{2}]; p_{T}",1000,2.,2.5,200,0.,20.);
1539 if (fUseOnTheFlyV0) {
1541 nameSgn="histK0SMassSgn";
1542 nameBkg="histK0SMassBkg";
1543 TH2F* spectrumK0SMassSgn = new TH2F(nameSgn.Data(), "K^{0}_{S} Signal invariant mass VS p_{T} - MC; M(K^{0}_{S}) [GeV/c^{2}]; p_{T}(K^{0}_{S}) [GeV/c]; Entries", 520,0.43,0.56,200,0.,20.);
1544 TH2F* spectrumK0SMassBkg = new TH2F(nameBkg.Data(), "K^{0}_{S} Background invariant mass VS p_{T} - MC; M(K^{0}_{S}) [GeV/c^{2}]; p_{T}(K^{0}_{S}) [GeV/c]; Entries", 520,0.43,0.56,200,0.,20.);
1545 spectrumK0SMassSgn->Sumw2();
1546 spectrumK0SMassBkg->Sumw2();
1547 spectrumK0SMassSgn->SetLineColor(2);
1548 spectrumK0SMassBkg->SetLineColor(4);
1549 spectrumK0SMassSgn->SetMarkerStyle(20);
1550 spectrumK0SMassBkg->SetMarkerStyle(20);
1551 spectrumK0SMassSgn->SetMarkerSize(0.6);
1552 spectrumK0SMassBkg->SetMarkerSize(0.6);
1553 spectrumK0SMassSgn->SetMarkerColor(2);
1554 spectrumK0SMassBkg->SetMarkerColor(4);
1556 TH2F* allspectrumK0SMassSgn = (TH2F*)spectrumK0SMassSgn->Clone();
1557 TH2F* allspectrumK0SMassBkg = (TH2F*) spectrumK0SMassBkg->Clone();
1558 TH2F* pidBachspectrumK0SMassSgn = (TH2F*)spectrumK0SMassSgn->Clone();
1559 TH2F* pidBachspectrumK0SMassBkg = (TH2F*) spectrumK0SMassBkg->Clone();
1562 fOutputAll->Add(allspectrumK0SMassSgn);
1563 fOutputAll->Add(allspectrumK0SMassBkg);
1564 fOutputPIDBach->Add(pidBachspectrumK0SMassSgn);
1565 fOutputPIDBach->Add(pidBachspectrumK0SMassBkg);
1568 nameSgn="histLcMassByK0SSgn";
1569 nameBkg="histLcMassByK0SBkg";
1570 TH2F* spectrumLcMassByK0SSgn = new TH2F(nameSgn.Data(), "#Lambda_{C} Signal invariant mass (by K^{0}_{S}) vs p_{T} - MC; M(#Lambda_{C}) [GeV/c^{2}]; p_{T}",
1571 1000,2.,2.5,200,0.,20.);
1572 TH2F* spectrumLcMassByK0SBkg = new TH2F(nameBkg.Data(), "#Lambda_{C} Background invariant mass (by K^{0}_{S}) vs p_{T} - MC; M(#Lambda_{C}) [GeV/c^{2}]; p_{T}",
1573 1000,2.,2.5,200,0.,20.);
1574 spectrumLcMassByK0SSgn->Sumw2();
1575 spectrumLcMassByK0SBkg->Sumw2();
1576 spectrumLcMassByK0SSgn->SetLineColor(2);
1577 spectrumLcMassByK0SBkg->SetLineColor(4);
1578 spectrumLcMassByK0SSgn->SetMarkerStyle(20);
1579 spectrumLcMassByK0SBkg->SetMarkerStyle(20);
1580 spectrumLcMassByK0SSgn->SetMarkerSize(0.6);
1581 spectrumLcMassByK0SBkg->SetMarkerSize(0.6);
1582 spectrumLcMassByK0SSgn->SetMarkerColor(2);
1583 spectrumLcMassByK0SBkg->SetMarkerColor(4);
1585 TH2F* allspectrumLcMassByK0SSgn = (TH2F*)spectrumLcMassByK0SSgn->Clone();
1586 TH2F* allspectrumLcMassByK0SBkg = (TH2F*) spectrumLcMassByK0SBkg->Clone();
1587 TH2F* pidBachspectrumLcMassByK0SSgn = (TH2F*)spectrumLcMassByK0SSgn->Clone();
1588 TH2F* pidBachspectrumLcMassByK0SBkg = (TH2F*) spectrumLcMassByK0SBkg->Clone();
1589 fOutputAll->Add(allspectrumLcMassByK0SSgn);
1590 fOutputAll->Add(allspectrumLcMassByK0SBkg);
1591 fOutputPIDBach->Add(pidBachspectrumLcMassByK0SSgn);
1592 fOutputPIDBach->Add(pidBachspectrumLcMassByK0SBkg);
1595 nameSgn="histcosOAK0SpSgnvsp";
1596 nameBkg="histcosOAK0SpBkgvsp";
1597 TH2F* cosOpeningAngleK0SpSgnvsp= new TH2F(nameSgn.Data(),"#Lambda_{C} SGN : K^{0}_{S} - p Opening Angle vs p - MC ; Cos(Opening Angle); p ",
1598 200,-1.,1.,200,0.,20.);
1599 TH2F* cosOpeningAngleK0SpBkgvsp= new TH2F(nameBkg.Data(),"#Lambda_{C} BKG : K^{0}_{S} - p Opening Angle vs p - MC; Cos(Opening Angle); p ",
1600 200,-1.,1.,200,0.,20.);
1602 TH2F* allcosOpeningAngleK0SpSgnvsp= (TH2F*)cosOpeningAngleK0SpSgnvsp->Clone();
1603 TH2F* allcosOpeningAngleK0SpBkgvsp= (TH2F*)cosOpeningAngleK0SpBkgvsp->Clone();
1604 TH2F* pidBachcosOpeningAngleK0SpSgnvsp= (TH2F*)cosOpeningAngleK0SpSgnvsp->Clone();
1605 TH2F* pidBachcosOpeningAngleK0SpBkgvsp= (TH2F*)cosOpeningAngleK0SpBkgvsp->Clone();
1606 fOutputAll->Add(allcosOpeningAngleK0SpSgnvsp);
1607 fOutputAll->Add(allcosOpeningAngleK0SpBkgvsp);
1608 fOutputPIDBach->Add(pidBachcosOpeningAngleK0SpSgnvsp);
1609 fOutputPIDBach->Add(pidBachcosOpeningAngleK0SpBkgvsp);
1611 nameSgn="histpK0SvspSgn";
1612 nameBkg="histpK0SvspBkg";
1613 TH2F* momentumDistributionK0SvspSgn= new TH2F(nameSgn.Data(),"#Lambda_{C} SGN : K^{0}_{S} vs p Total Momentum Distribution - MC; p_{p}; p_{K^{0}_{S}}",
1614 200,0.,20.,200,0.,20.);
1615 TH2F* momentumDistributionK0SvspBkg= new TH2F(nameBkg.Data(),"#Lambda_{C} BKG : K^{0}_{S} vs p Total Momentum Distribution - MC; p_{p}; p_{K^{0}_{S}}",
1616 200,0.,20.,200,0.,20.);
1618 TH2F* allmomentumDistributionK0SvspSgn= (TH2F*)momentumDistributionK0SvspSgn->Clone();
1619 TH2F* allmomentumDistributionK0SvspBkg= (TH2F*)momentumDistributionK0SvspBkg->Clone();
1620 TH2F* pidBachmomentumDistributionK0SvspSgn= (TH2F*)momentumDistributionK0SvspSgn->Clone();
1621 TH2F* pidBachmomentumDistributionK0SvspBkg= (TH2F*)momentumDistributionK0SvspBkg->Clone();
1622 fOutputAll->Add(allmomentumDistributionK0SvspSgn);
1623 fOutputAll->Add(allmomentumDistributionK0SvspBkg);
1624 fOutputPIDBach->Add(pidBachmomentumDistributionK0SvspSgn);
1625 fOutputPIDBach->Add(pidBachmomentumDistributionK0SvspBkg);
1628 // armenteros-podolanski plots K0S
1629 nameSgn="histArmPodK0sSgn";
1630 nameBkg="histArmPodK0sBkg";
1631 TH2F* armenterosPodK0sSgn = new TH2F(nameSgn.Data(),"K^{0}_{S} Armenteros-Podolanski distribution (sgn); #frac{p_{L}^{+}-p_{L}^{-}}{p_{L}^{+}+p_{L}^{-}}; p_{T}^{+} [GeV/c]",
1632 200,-1.,1.,300,0.,0.3);
1633 TH2F* armenterosPodK0sBkg = new TH2F(nameBkg.Data(),"K^{0}_{S} Armenteros-Podolanski distribution (bkg); #frac{p_{L}^{+}-p_{L}^{-}}{p_{L}^{+}+p_{L}^{-}}; p_{T}^{+} [GeV/c]",
1634 200,-1.,1.,300,0.,0.3);
1636 TH2F* allArmenterosPodK0sSgn = (TH2F*)armenterosPodK0sSgn->Clone();
1637 TH2F* allArmenterosPodK0sBkg = (TH2F*)armenterosPodK0sBkg->Clone();
1638 TH2F* pidBachArmenterosPodK0sSgn = (TH2F*)armenterosPodK0sSgn->Clone();
1639 TH2F* pidBachArmenterosPodK0sBkg = (TH2F*)armenterosPodK0sBkg->Clone();
1641 fOutputAll->Add(allArmenterosPodK0sSgn);
1642 fOutputAll->Add(allArmenterosPodK0sBkg);
1644 fOutputPIDBach->Add(pidBachArmenterosPodK0sSgn);
1645 fOutputPIDBach->Add(pidBachArmenterosPodK0sBkg);
1648 nameSgn="histoDCAtoPVvsinvmassK0sSgn";
1649 nameBkg="histoDCAtoPVvsinvmassK0sBkg";
1650 TH2F *dcatoPVvspK0sSgn=new TH2F(nameSgn.Data(),"K^{0}_{S}: DCA to Primary Vertex vs K^{0}_{S} invariant mass (sgn); M(K^{0}_{S}) [GeV/c^{2}]; DCA to Primary Vertex []; Entries",520,0.43,0.56,100,0.,10.0);
1651 TH2F *dcatoPVvspK0sBkg=new TH2F(nameBkg.Data(),"K^{0}_{S}: DCA to Primary Vertex vs K^{0}_{S} invariant mass (bkg); M(K^{0}_{S}) [GeV/c^{2}]; DCA to Primary Vertex []; Entries",520,0.43,0.56,100,0.,10.0);
1653 TH2F* alldcatoPVvspK0sSgn= (TH2F*)dcatoPVvspK0sSgn->Clone();
1654 TH2F* alldcatoPVvspK0sBkg= (TH2F*)dcatoPVvspK0sBkg->Clone();
1655 TH2F* pidBachdcatoPVvspK0sSgn= (TH2F*)dcatoPVvspK0sSgn->Clone();
1656 TH2F* pidBachdcatoPVvspK0sBkg= (TH2F*)dcatoPVvspK0sBkg->Clone();
1658 fOutputAll->Add(alldcatoPVvspK0sSgn);
1659 fOutputPIDBach->Add(pidBachdcatoPVvspK0sSgn);
1660 fOutputAll->Add(alldcatoPVvspK0sBkg);
1661 fOutputPIDBach->Add(pidBachdcatoPVvspK0sBkg);
1666 nameSgn="histK0SMassOfflineSgn";
1667 nameBkg="histK0SMassOfflineBkg";
1668 TH2F* spectrumK0SMassOfflineSgn = new TH2F(nameSgn.Data(), "K^{0}_{S} Signal invariant mass VS p_{T} - MC; M(K^{0}_{S}) [GeV/c^{2}]; p_{T}(K^{0}_{S}) [GeV/c]; Entries",
1669 520,0.43,0.56,200,0.,20.);
1670 TH2F* spectrumK0SMassOfflineBkg = new TH2F(nameBkg.Data(), "K^{0}_{S} Background invariant mass VS p_{T} - MC; M(K^{0}_{S}) [GeV/c^{2}]; p_{T}(K^{0}_{S}) [GeV/c]; Entries",
1671 520,0.43,0.56,200,0.,20.);
1672 spectrumK0SMassOfflineSgn->Sumw2();
1673 spectrumK0SMassOfflineBkg->Sumw2();
1674 spectrumK0SMassOfflineSgn->SetLineColor(2);
1675 spectrumK0SMassOfflineBkg->SetLineColor(4);
1676 spectrumK0SMassOfflineSgn->SetMarkerStyle(20);
1677 spectrumK0SMassOfflineBkg->SetMarkerStyle(20);
1678 spectrumK0SMassOfflineSgn->SetMarkerSize(0.6);
1679 spectrumK0SMassOfflineBkg->SetMarkerSize(0.6);
1680 spectrumK0SMassOfflineSgn->SetMarkerColor(2);
1681 spectrumK0SMassOfflineBkg->SetMarkerColor(4);
1683 TH2F* allspectrumK0SMassOfflineSgn = (TH2F*)spectrumK0SMassOfflineSgn->Clone();
1684 TH2F* allspectrumK0SMassOfflineBkg = (TH2F*) spectrumK0SMassOfflineBkg->Clone();
1685 fOutputAll->Add(allspectrumK0SMassOfflineSgn);
1686 fOutputAll->Add(allspectrumK0SMassOfflineBkg);
1690 TH2F* pidBachspectrumK0SMassOfflineSgn = (TH2F*)spectrumK0SMassOfflineSgn->Clone();
1691 TH2F* pidBachspectrumK0SMassOfflineBkg = (TH2F*) spectrumK0SMassOfflineBkg->Clone();
1692 fOutputPIDBach->Add(pidBachspectrumK0SMassOfflineSgn);
1693 fOutputPIDBach->Add(pidBachspectrumK0SMassOfflineBkg);
1696 nameSgn="histLcMassOfflineByK0SSgn";
1697 nameBkg="histLcMassOfflineByK0SBkg";
1698 TH2F* spectrumLcMassOfflineByK0SSgn = new TH2F(nameSgn.Data(), "#Lambda_{C} Signal invariant mass (by K^{0}_{S}) vs p_{T} - MC; M(#Lambda_{C}) [GeV/c^{2}]; p_{T}",
1699 1000,2.,2.5,200,0.,20.);
1700 TH2F* spectrumLcMassOfflineByK0SBkg = new TH2F(nameBkg.Data(), "#Lambda_{C} Background invariant mass (by K^{0}_{S}) vs p_{T} - MC; M(#Lambda_{C}) [GeV/c^{2}]; p_{T}",
1701 1000,2.,2.5,200,0.,20.);
1702 spectrumLcMassOfflineByK0SSgn->Sumw2();
1703 spectrumLcMassOfflineByK0SBkg->Sumw2();
1704 spectrumLcMassOfflineByK0SSgn->SetLineColor(2);
1705 spectrumLcMassOfflineByK0SBkg->SetLineColor(4);
1706 spectrumLcMassOfflineByK0SSgn->SetMarkerStyle(20);
1707 spectrumLcMassOfflineByK0SBkg->SetMarkerStyle(20);
1708 spectrumLcMassOfflineByK0SSgn->SetMarkerSize(0.6);
1709 spectrumLcMassOfflineByK0SBkg->SetMarkerSize(0.6);
1710 spectrumLcMassOfflineByK0SSgn->SetMarkerColor(2);
1711 spectrumLcMassOfflineByK0SBkg->SetMarkerColor(4);
1714 TH2F* allspectrumLcMassOfflineByK0SSgn = (TH2F*)spectrumLcMassOfflineByK0SSgn->Clone();
1715 TH2F* allspectrumLcMassOfflineByK0SBkg = (TH2F*) spectrumLcMassOfflineByK0SBkg->Clone();
1716 TH2F* pidBachspectrumLcMassOfflineByK0SSgn = (TH2F*)spectrumLcMassOfflineByK0SSgn->Clone();
1717 TH2F* pidBachspectrumLcMassOfflineByK0SBkg = (TH2F*) spectrumLcMassOfflineByK0SBkg->Clone();
1718 fOutputAll->Add(allspectrumLcMassOfflineByK0SSgn);
1719 fOutputAll->Add(allspectrumLcMassOfflineByK0SBkg);
1720 fOutputPIDBach->Add(pidBachspectrumLcMassOfflineByK0SSgn);
1721 fOutputPIDBach->Add(pidBachspectrumLcMassOfflineByK0SBkg);
1726 nameSgn="histcosOAK0SpSgnvspOffline";
1727 nameBkg="histcosOAK0SpBkgvspOffline";
1728 TH2F* cosOpeningAngleK0SpSgnvspOffline= new TH2F(nameSgn.Data(),"#Lambda_{C} SGN : K^{0}_{S} - p Opening Angle vs p - Offline - MC ; Cos(Opening Angle); p ",
1729 200,-1.,1.,200,0.,20.);
1730 TH2F* cosOpeningAngleK0SpBkgvspOffline= new TH2F(nameBkg.Data(),"#Lambda_{C} BKG : K^{0}_{S} - p Opening Angle vs p - Offline - MC; Cos(Opening Angle); p ",
1731 200,-1.,1.,200,0.,20.);
1734 TH2F* allcosOpeningAngleK0SpSgnvspOffline= (TH2F*)cosOpeningAngleK0SpSgnvspOffline->Clone();
1735 TH2F* allcosOpeningAngleK0SpBkgvspOffline= (TH2F*)cosOpeningAngleK0SpBkgvspOffline->Clone();
1736 TH2F* pidBachcosOpeningAngleK0SpSgnvspOffline= (TH2F*)cosOpeningAngleK0SpSgnvspOffline->Clone();
1737 TH2F* pidBachcosOpeningAngleK0SpBkgvspOffline= (TH2F*)cosOpeningAngleK0SpBkgvspOffline->Clone();
1738 fOutputAll->Add(allcosOpeningAngleK0SpSgnvspOffline);
1739 fOutputAll->Add(allcosOpeningAngleK0SpBkgvspOffline);
1740 fOutputPIDBach->Add(pidBachcosOpeningAngleK0SpSgnvspOffline);
1741 fOutputPIDBach->Add(pidBachcosOpeningAngleK0SpBkgvspOffline);
1746 nameSgn="histpK0SvspOfflineSgn";
1747 nameBkg="histpK0SvspOfflineBkg";
1748 TH2F* momentumDistributionK0SvspOfflineSgn= new TH2F(nameSgn.Data(),"#Lambda_{C} SGN : K^{0}_{S} vs p Total Momentum Distribution - Offline - MC; p_{p}; p_{K^{0}_{S}}",
1749 200,0.,20.,200,0.,20.);
1750 TH2F* momentumDistributionK0SvspOfflineBkg= new TH2F(nameBkg.Data(),"#Lambda_{C} BKG : K^{0}_{S} vs p Total Momentum Distribution - Offline - MC; p_{p}; p_{K^{0}_{S}}",
1751 200,0.,20.,200,0.,20.);
1754 TH2F* allmomentumDistributionK0SvspOfflineSgn= (TH2F*)momentumDistributionK0SvspOfflineSgn->Clone();
1755 TH2F* allmomentumDistributionK0SvspOfflineBkg= (TH2F*)momentumDistributionK0SvspOfflineBkg->Clone();
1756 TH2F* pidBachmomentumDistributionK0SvspOfflineSgn= (TH2F*)momentumDistributionK0SvspOfflineSgn->Clone();
1757 TH2F* pidBachmomentumDistributionK0SvspOfflineBkg= (TH2F*)momentumDistributionK0SvspOfflineBkg->Clone();
1758 fOutputAll->Add(allmomentumDistributionK0SvspOfflineSgn);
1759 fOutputAll->Add(allmomentumDistributionK0SvspOfflineBkg);
1760 fOutputPIDBach->Add(pidBachmomentumDistributionK0SvspOfflineSgn);
1761 fOutputPIDBach->Add(pidBachmomentumDistributionK0SvspOfflineBkg);
1767 // armenteros-podolanski plots K0S (offline)
1768 nameSgn="histOfflineArmPodK0sSgn";
1769 nameBkg="histOfflineArmPodK0sBkg";
1770 TH2F* armenterosPodK0sOffSgn = new TH2F(nameSgn.Data(),"K^{0}_{S} Armenteros-Podolanski distribution (sgn) -offline-; #frac{p_{L}^{+}-p_{L}^{-}}{p_{L}^{+}+p_{L}^{-}}; p_{T}^{+} [GeV/c]",200,-1.,1.,300,0.,0.3);
1771 TH2F* armenterosPodK0sOffBkg = new TH2F(nameBkg.Data(),"K^{0}_{S} Armenteros-Podolanski distribution (bkg) -offline-; #frac{p_{L}^{+}-p_{L}^{-}}{p_{L}^{+}+p_{L}^{-}}; p_{T}^{+} [GeV/c]",200,-1.,1.,300,0.,0.3);
1774 TH2F* allArmenterosPodK0sOffSgn = (TH2F*)armenterosPodK0sOffSgn->Clone();
1775 TH2F* allArmenterosPodK0sOffBkg = (TH2F*)armenterosPodK0sOffBkg->Clone();
1776 TH2F* pidBachArmenterosPodK0sOffSgn = (TH2F*)armenterosPodK0sOffSgn->Clone();
1777 TH2F* pidBachArmenterosPodK0sOffBkg = (TH2F*)armenterosPodK0sOffBkg->Clone();
1780 fOutputAll->Add(allArmenterosPodK0sOffSgn);
1781 fOutputAll->Add(allArmenterosPodK0sOffBkg);
1782 fOutputPIDBach->Add(pidBachArmenterosPodK0sOffSgn);
1783 fOutputPIDBach->Add(pidBachArmenterosPodK0sOffBkg);
1786 nameSgn="histoDCAtoPVvsinvmassK0sOfflineSgn";
1787 nameBkg="histoDCAtoPVvsinvmassK0sOfflineBkg";
1788 TH2F *dcatoPVvspK0sOfflineSgn=new TH2F(nameSgn.Data(),"K^{0}_{S}: DCA to Primary Vertex vs K^{0}_{S} invariant mass -offline - (sgn); M(K^{0}_{S}) [GeV/c^{2}]; DCA to Primary Vertex []; Entries",520,0.43,0.56,100,0.,10.0);
1789 TH2F *dcatoPVvspK0sOfflineBkg=new TH2F(nameBkg.Data(),"K^{0}_{S}: DCA to Primary Vertex vs K^{0}_{S} invariant mass -offline - (bkg); M(K^{0}_{S}) [GeV/c^{2}]; DCA to Primary Vertex []; Entries",520,0.43,0.56,100,0.,10.0);
1792 TH2F* alldcatoPVvspK0sOfflineSgn= (TH2F*)dcatoPVvspK0sOfflineSgn->Clone();
1793 TH2F* pidBachdcatoPVvspK0sOfflineSgn= (TH2F*)dcatoPVvspK0sOfflineSgn->Clone();
1794 TH2F* alldcatoPVvspK0sOfflineBkg= (TH2F*)dcatoPVvspK0sOfflineBkg->Clone();
1795 TH2F* pidBachdcatoPVvspK0sOfflineBkg= (TH2F*)dcatoPVvspK0sOfflineBkg->Clone();
1799 fOutputAll->Add(alldcatoPVvspK0sOfflineSgn);
1800 fOutputPIDBach->Add(pidBachdcatoPVvspK0sOfflineSgn);
1801 fOutputAll->Add(alldcatoPVvspK0sOfflineBkg);
1802 fOutputPIDBach->Add(pidBachdcatoPVvspK0sOfflineBkg);
1807 ///---------------- END K0S HISTOS DECLARATIONS -------------------///