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 * appear 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 **************************************************************************/
16 /////////////////////////////////////////////////////////////
18 // Class AliAnalysisTaskSECharmFraction
19 // AliAnalysisTaskSE for the extraction of the fraction of prompt charm
20 // using the charm hadron impact parameter to the primary vertex
22 // Author: Andrea Rossi, andrea.rossi@pd.infn.it
23 /////////////////////////////////////////////////////////////
28 #include <THnSparse.h>
29 #include <TDatabasePDG.h>
32 #include "AliAODEvent.h"
33 #include "AliAODRecoDecayHF2Prong.h"
34 #include "AliAODRecoDecayHF.h"
35 #include "AliAODRecoDecay.h"
36 #include "AliAnalysisDataSlot.h"
37 #include "AliAnalysisDataContainer.h"
38 #include "AliAODTrack.h"
39 #include "AliAODHandler.h"
40 #include "AliESDtrack.h"
41 #include "AliAODVertex.h"
42 #include "AliESDVertex.h"
43 #include "AliVertexerTracks.h"
44 #include "AliAODMCParticle.h"
45 #include "AliAODPid.h"
46 #include "AliTPCPIDResponse.h"
47 #include "AliAODMCHeader.h"
48 #include "AliAnalysisVertexingHF.h"
49 #include "AliAnalysisTaskSECharmFraction.h"
50 #include "AliRDHFCutsD0toKpi.h"
51 #include "AliAODInputHandler.h"
52 #include "AliAnalysisManager.h"
53 #include "AliNormalizationCounter.h"
58 class AliAnalysisTaskSE;
61 ClassImp(AliAnalysisTaskSECharmFraction)
63 //________________________________________________________________________
64 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction()
65 : AliAnalysisTaskSE(),
70 fsplitMassD0D0bar(kTRUE),
83 fsidebandInvMassCut(),
84 fsidebandInvMassWindow(),
86 fCleanCandOwnVtx(kFALSE),
90 fSignalTypeTghCuts(0),
96 flistNoCutsFromDstar(0),
101 flistLsCutsFromDstar(0),
103 flistTghCutsSignal(0),
105 flistTghCutsFromB(0),
106 flistTghCutsFromDstar(0),
110 //Default constructor
112 //________________________________________________________________________
113 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name)
114 : AliAnalysisTaskSE(name),
119 fsplitMassD0D0bar(kTRUE),
130 fsignalInvMassCut(-1.),
131 flargeInvMassCut(-1.),
132 fsidebandInvMassCut(-1.),
133 fsidebandInvMassWindow(-1.),
135 fCleanCandOwnVtx(kFALSE),
138 fSignalTypeLsCuts(0),
139 fSignalTypeTghCuts(0),
141 flistMCproperties(0),
142 flistNoCutsSignal(0),
145 flistNoCutsFromDstar(0),
147 flistLsCutsSignal(0),
150 flistLsCutsFromDstar(0),
152 flistTghCutsSignal(0),
154 flistTghCutsFromB(0),
155 flistTghCutsFromDstar(0),
161 // Define input and output slots here
162 // Input slot #0 works with a TChain
163 // Output slot #0 writes into a TH1 container
166 fnbins=SetStandardCuts(fptbins);// THIS TO SET NBINS AND BINNING
168 DefineOutput(1, TH1F::Class());
169 DefineOutput(2, TH1F::Class());
170 DefineOutput(3, TH1F::Class());
171 DefineOutput(4, TH1F::Class());
172 DefineOutput(5, AliNormalizationCounter::Class());
174 for(Int_t j=6;j<22;j++){
175 DefineOutput(j, TList::Class());
178 // Output slot for the Cut Objects
179 DefineOutput(22,AliRDHFCutsD0toKpi::Class()); //My private output
180 DefineOutput(23,AliRDHFCutsD0toKpi::Class()); //My private output
185 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name,AliRDHFCutsD0toKpi *cutsA,AliRDHFCutsD0toKpi *cutsB)
186 : AliAnalysisTaskSE(name),
191 fsplitMassD0D0bar(kTRUE),
202 fsignalInvMassCut(-1.),
203 flargeInvMassCut(-1.),
204 fsidebandInvMassCut(-1.),
205 fsidebandInvMassWindow(-1.),
207 fCleanCandOwnVtx(kFALSE),
210 fSignalTypeLsCuts(0),
211 fSignalTypeTghCuts(0),
213 flistMCproperties(0),
214 flistNoCutsSignal(0),
217 flistNoCutsFromDstar(0),
219 flistLsCutsSignal(0),
222 flistLsCutsFromDstar(0),
224 flistTghCutsSignal(0),
226 flistTghCutsFromB(0),
227 flistTghCutsFromDstar(0),
232 delete fCutsTight;fCutsTight=NULL;
235 delete fCutsLoose;fCutsLoose=NULL;
238 //Check consistency between sets of cuts:
239 if(cutsA->GetNPtBins()!=cutsB->GetNPtBins()){
240 printf("Different number of pt bins between the two sets of cuts: SWITCH TO STANDARD CUTS \n");
241 fnbins=SetStandardCuts(fptbins);
244 fCutsTight=new AliRDHFCutsD0toKpi(*cutsA);
245 fCutsLoose=new AliRDHFCutsD0toKpi(*cutsB);
246 for(Int_t j=0;j<cutsA->GetNPtBins();j++){
247 if(TMath::Abs(cutsA->GetPtBinLimits()[j]-cutsB->GetPtBinLimits()[j])>1.e-7){
248 printf("Different pt bin limits in the two set of cuts: use the first as reference \n");
249 fCutsLoose->SetPtBins(cutsA->GetNPtBins(),cutsA->GetPtBinLimits());
253 SetPtBins(fCutsTight->GetNPtBins(),fCutsTight->GetPtBinLimits());
256 // Output slot #0 writes into a TH1 container
257 DefineOutput(1, TH1F::Class());
258 DefineOutput(2, TH1F::Class());
259 DefineOutput(3, TH1F::Class());
260 DefineOutput(4, TH1F::Class());
261 DefineOutput(5, AliNormalizationCounter::Class());
263 for(Int_t j=6;j<22;j++){
265 DefineOutput(j, TList::Class());
267 // Output slot for the Cut Objects
268 DefineOutput(22,AliRDHFCutsD0toKpi::Class()); //My private output
269 DefineOutput(23,AliRDHFCutsD0toKpi::Class()); //My private output
273 //________________________________________________________________________
274 AliAnalysisTaskSECharmFraction::~AliAnalysisTaskSECharmFraction()
289 /* if(fAcceptanceCuts){
290 delete fAcceptanceCuts;
301 if (fSignalTypeLsCuts) {
302 delete fSignalTypeLsCuts;
303 fSignalTypeLsCuts = 0;
305 if (fSignalTypeTghCuts) {
306 delete fSignalTypeTghCuts;
307 fSignalTypeTghCuts = 0;
315 if(flistMCproperties){
316 flistMCproperties->Delete();
317 delete flistMCproperties;
321 if(flistNoCutsSignal){
322 flistNoCutsSignal->Delete();
323 delete flistNoCutsSignal;
327 flistNoCutsBack->Delete();
328 delete flistNoCutsBack;
331 if(flistNoCutsFromB){
332 flistNoCutsFromB->Delete();
333 delete flistNoCutsFromB;
336 if(flistNoCutsFromDstar){
337 flistNoCutsFromDstar->Delete();
338 delete flistNoCutsFromDstar;
339 flistNoCutsFromDstar=0;
341 if(flistNoCutsOther){
342 flistNoCutsOther->Delete();
343 delete flistNoCutsOther;
347 if(flistLsCutsSignal){
348 flistLsCutsSignal->Delete();
349 delete flistLsCutsSignal;
353 flistLsCutsBack->Delete();
354 delete flistLsCutsBack;
357 if(flistLsCutsFromB){
358 flistLsCutsFromB->Delete();
359 delete flistLsCutsFromB;
362 if(flistLsCutsFromDstar){
363 flistLsCutsFromDstar->Delete();
364 delete flistLsCutsFromDstar;
365 flistLsCutsFromDstar=0;
367 if(flistLsCutsOther){
368 flistLsCutsOther->Delete();
369 delete flistLsCutsOther;
373 if(flistTghCutsSignal){
374 flistTghCutsSignal->Delete();
375 delete flistTghCutsSignal;
376 flistTghCutsSignal=0;
378 if(flistTghCutsBack){
379 flistTghCutsBack->Delete();
380 delete flistTghCutsBack;
383 if(flistTghCutsFromB){
384 flistTghCutsFromB->Delete();
385 delete flistTghCutsFromB;
388 if(flistTghCutsFromDstar){
389 flistTghCutsFromDstar->Delete();
390 delete flistTghCutsFromDstar;
391 flistTghCutsFromDstar=0;
393 if(flistTghCutsOther){
394 flistTghCutsOther->Delete();
395 delete flistTghCutsOther;
403 //________________________________________________________________________
404 void AliAnalysisTaskSECharmFraction::Init()
408 if(fDebug > 1) printf("AnalysisTaskSED0Mass::Init() \n");
409 fmD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
411 // gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/ConfigVertexingHF.C");
412 // gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/D0fromBSetCuts.C");
413 // 2 sets of dedicated cuts: fCutsTight is assumed as the standard cut object
415 // SetAcceptanceCut();
416 if(fNtrMaxforVtx<0)SetNMaxTrForVtx(3); //DEFAULT : NO SELECTION
417 if(fsignalInvMassCut<0.||flargeInvMassCut<0.||fsidebandInvMassCut<0.||fsidebandInvMassWindow<0.){
418 printf("AliAnalysisTaskSECharmFraction: Not All info for mass selection provided: switch to default values \n");
419 SetStandardMassSelection();
422 AliRDHFCutsD0toKpi* copyfCutsTight=new AliRDHFCutsD0toKpi(*fCutsTight);
423 const char* nameoutputTight=GetOutputSlot(22)->GetContainer()->GetName();
424 copyfCutsTight->SetName(nameoutputTight);
425 AliRDHFCutsD0toKpi* copyfCutsLoose=new AliRDHFCutsD0toKpi(*fCutsLoose);
426 const char* nameoutputLoose=GetOutputSlot(23)->GetContainer()->GetName();
427 copyfCutsLoose->SetName(nameoutputLoose);
430 PostData(22,copyfCutsTight);
431 PostData(23,copyfCutsLoose);
434 fCleanCandOwnVtx=kFALSE;
435 if(fCutsTight->GetIsPrimaryWithoutDaughters()^fCutsLoose->GetIsPrimaryWithoutDaughters()) {
436 printf("Two cut objects have different selection for primary vertex recalculation w/o daughters:\n Dangerous for variable drawing!! \n");
439 if(fCutsTight->GetIsPrimaryWithoutDaughters()){
440 fCleanCandOwnVtx=kTRUE;
441 fCutsTight->SetRemoveDaughtersFromPrim(kFALSE);
442 fCutsLoose->SetRemoveDaughtersFromPrim(kFALSE);
452 //________________________________________________________________________
453 void AliAnalysisTaskSECharmFraction::UserCreateOutputObjects()
458 // ################ NAMING SCHEME ###################################
459 // LISTS NAMING SCHEME
460 // "list" + cut selection string + MC selection string
461 // cut strings: "NC" =nocuts, "LSC"= loose cuts, "TGHC"= tight cuts
462 // MC sel. strings: "sign"= D0 from c quark
463 // "fromDstar" = D0 from Dstar from c quark
464 // "fromB"= D0from B decay (->from b quark) + D0from Dstar from B
465 // "back"= backgroun, generic except the cas "other"
466 // "other"= background case for candidates made of a pion and a kaon coming from the same D0 (in 4 prong) or from D+
468 // HISTS NAMING SCHEME
470 // "h" + specific name + cut selection string + MC selection string + (InvMass region string) + (pt string)
472 // cut selection strings = those for lists
473 // MC selection strings = those for lists
474 // inv mass region strings : "PM" or "SB" for global properties and pt integrated histos
475 // "_PkMss" or "_SBMss" for impact par. pt dependent histos
476 // pt string : "_pt" + integer number of ptbin
478 //###################################################################
482 TString strnamept,strtitlept;
483 Printf("INSIDE USER CREATE \n");
485 // fNentries=new TH1F("nentriesChFr", "Look at the number of entries! = number of AODs", 2,1.,2.);
487 fNentries=new TH1F("nentriesChFr", "Analyzed sample properties", 21,-0.5,20.5);
489 fNentries->GetXaxis()->SetBinLabel(1,"nEventsAnal");
491 fNentries->GetXaxis()->SetBinLabel(2,"nEvTGHTsel");
492 fNentries->GetXaxis()->SetBinLabel(3,"nEvTGHTPile-up Rej");
493 fNentries->GetXaxis()->SetBinLabel(4,"nEvTGHTGoodVtxS");
494 fNentries->GetXaxis()->SetBinLabel(5,"nEvTGHTRejVtxZ");
495 fNentries->GetXaxis()->SetBinLabel(6,"nTracksTGHTEv");
496 fNentries->GetXaxis()->SetBinLabel(7,"nCandTGHTEv");
497 fNentries->GetXaxis()->SetBinLabel(8,"nCandSelTGHTEv");
498 fNentries->GetXaxis()->SetBinLabel(20,"nUnexpErrorTGHT");
500 fNentries->GetXaxis()->SetBinLabel(9,"nEvLSsel");
501 fNentries->GetXaxis()->SetBinLabel(10,"nEvLSPile-up Rej");
502 fNentries->GetXaxis()->SetBinLabel(11,"nEvLSGoodVtxS");
503 fNentries->GetXaxis()->SetBinLabel(12,"nEvLSRejVtxZ");
504 fNentries->GetXaxis()->SetBinLabel(13,"nTracksLSEv");
505 fNentries->GetXaxis()->SetBinLabel(14,"nCandLSEv");
506 fNentries->GetXaxis()->SetBinLabel(15,"nCandSelLSEv");
507 fNentries->GetXaxis()->SetBinLabel(21,"nUnexpErrorTGHT");
509 /* ----------------- NOT ACTIVATED YET ------------------
510 fNentries->GetXaxis()->SetBinLabel(5,"ptbin = -1");
511 fNentries->GetXaxis()->SetBinLabel(6,"no daughter");
512 fNentries->GetXaxis()->SetBinLabel(7,"nCandSel(Tr)");
513 fNentries->GetXaxis()->SetBinLabel(8,"PID=0");
514 fNentries->GetXaxis()->SetBinLabel(9,"PID=1");
515 fNentries->GetXaxis()->SetBinLabel(10,"PID=2");
516 fNentries->GetXaxis()->SetBinLabel(11,"PID=3");
517 fNentries->GetXaxis()->SetBinLabel(12,"K");
518 fNentries->GetXaxis()->SetBinLabel(13,"Lambda");
519 fNentries->GetXaxis()->SetBinLabel(14,"Pile-up Rej");
520 fNentries->GetXaxis()->SetBinLabel(15,"N. of 0SMH");
523 fNentries->GetXaxis()->SetNdivisions(1,kFALSE);
525 fSignalType=new TH1F("hsignaltype", "Histo for type of MC signal", 61,-1.,60.);
526 fSignalTypeLsCuts=new TH1F("hsignaltypeLsCuts", "Histo for type of MC signal with loose cuts", 61,-1.,60.);
527 fSignalTypeTghCuts=new TH1F("hsignaltypeTghCuts", "Histo for type of MC signal with tight cuts", 61,-1.,60.);
531 fCounter = new AliNormalizationCounter(Form("%s",GetOutputSlot(5)->GetContainer()->GetName()));
533 //########## DEFINE THE TLISTS ##################
534 flistMCproperties=new TList();
535 flistMCproperties->SetOwner();
536 flistMCproperties->SetName("listMCproperties");
538 flistNoCutsSignal = new TList();
539 flistNoCutsSignal->SetOwner();
540 flistNoCutsSignal->SetName("listNCsign");
542 flistNoCutsBack = new TList();
543 flistNoCutsBack->SetOwner();
544 flistNoCutsBack->SetName("listNCback");
546 flistNoCutsFromB = new TList();
547 flistNoCutsFromB->SetOwner();
548 flistNoCutsFromB->SetName("listNCfromB");
550 flistNoCutsFromDstar = new TList();
551 flistNoCutsFromDstar->SetOwner();
552 flistNoCutsFromDstar->SetName("listNCfromDstar");
554 flistNoCutsOther = new TList();
555 flistNoCutsOther->SetOwner();
556 flistNoCutsOther->SetName("listNCother");
559 flistLsCutsSignal = new TList();
560 flistLsCutsSignal->SetOwner();
561 flistLsCutsSignal->SetName("listLSCsign");
563 flistLsCutsBack = new TList();
564 flistLsCutsBack->SetOwner();
565 flistLsCutsBack->SetName("listLSCback");
567 flistLsCutsFromB = new TList();
568 flistLsCutsFromB->SetOwner();
569 flistLsCutsFromB->SetName("listLSCfromB");
571 flistLsCutsFromDstar = new TList();
572 flistLsCutsFromDstar->SetOwner();
573 flistLsCutsFromDstar->SetName("listLSCfromDstar");
575 flistLsCutsOther = new TList();
576 flistLsCutsOther->SetOwner();
577 flistLsCutsOther->SetName("listLSCother");
580 flistTghCutsSignal = new TList();
581 flistTghCutsSignal->SetOwner();
582 flistTghCutsSignal->SetName("listTGHCsign");
584 flistTghCutsBack = new TList();
585 flistTghCutsBack->SetOwner();
586 flistTghCutsBack->SetName("listTGHCback");
588 flistTghCutsFromB = new TList();
589 flistTghCutsFromB->SetOwner();
590 flistTghCutsFromB->SetName("listTGHCfromB");
592 flistTghCutsFromDstar = new TList();
593 flistTghCutsFromDstar->SetOwner();
594 flistTghCutsFromDstar->SetName("listTGHCfromDstar");
596 flistTghCutsOther = new TList();
597 flistTghCutsOther->SetOwner();
598 flistTghCutsOther->SetName("listTGHCother");
602 Float_t ptbinsD0arr[35]={0.,0.1,0.2,0.3,0.4,0.5,0.6,0.8,1.,1.25,1.5,1.75,2.,2.3,2.6,3.,3.5,4.,4.5,5.,5.5,6.,7.,8.,9.,10.,12.,14.,16.,20.,25.,30.,40.,50.,100.};
603 Float_t dumbinning[201];
604 for(Int_t j=0;j<201;j++){
605 dumbinning[j]=(Float_t)j*0.5;
608 // DEFINE EDGES FOR SPARSE HISTOS
609 const Int_t nPtbinsForSparse=91;//nuber of edges, -1 to get number of bins
610 Double_t ptbinsForNsparse[nPtbinsForSparse];//Binning in pt: step: 0.2 GeV/c up to 8 GeV/c, 0.5 Upto 20, 1 GeV/c up to 40, 5 upt to 70-> 8/0.2+12/0.5+20/1.+30./5
612 Double_t massbins[186],impparbins[401];
613 Double_t massHypoBins[4]={1.,2.,3.,4.};
614 Int_t nbinsSparse[5]={185,185,nPtbinsForSparse-1,400,3};
615 for(Int_t nBins=0;nBins<nPtbinsForSparse;nBins++){
616 ptbinsForNsparse[nBins]=pT;
618 else if(pT<20)pT+=0.5;
620 else if(pT<70)pT+=5.;
622 for(Int_t nBins=0;nBins<186;nBins++){
623 massbins[nBins]=1.680+nBins*(2.050-1.680)/185.;
625 for(Int_t nBins=0;nBins<401;nBins++){
626 impparbins[nBins]=-1000+nBins*(2000.)/400.;
630 // Lxy and CosPointXY study
631 Int_t nbinsSparsCxyLxy[4]={84,fCutsTight->GetNPtBins(),10,25};
632 Double_t binLowLimitSparseCxyLxy[4]={1.680,fCutsTight->GetPtBinLimits()[0],0.99,0.};// Use OverFlow/UnderFlow to get other cases
633 Double_t binUpLimitSparseCxyLxy[4]={2.100,fCutsTight->GetPtBinLimits()[fCutsTight->GetNPtBins()],1.,50.};
634 Double_t ptbinlimitsCxyLxy[(const Int_t)fCutsTight->GetNPtBins()+1];
635 for(Int_t nBins=0;nBins<=fCutsTight->GetNPtBins();nBins++){
636 ptbinlimitsCxyLxy[nBins]=fCutsTight->GetPtBinLimits()[nBins];
640 //################################################################################################
642 // HISTO FOR MC PROPERTIES OF D0, c quarks and B mesons #
644 //################################################################################################
645 TH1F *hMCcquarkAllPt=new TH1F("hMCcquarkAllPt","c quark Pt (all cquarks produced)",34,ptbinsD0arr);
646 TH1F *hMCcquarkAllEta=new TH1F("hMCcquarkAllEta","c quark Eta (all cquarks produced)",50,-3.,3.);
647 TH1F *hMCcquarkAllEnergy=new TH1F("hMCcquarkAllEnergy","c quark Pt (all cquarks produced)",200,0.,100.);
648 TH1F *hMCcquarkNdaught=new TH1F("hMCcquarkNdaught","N cquark daughters (all cquarks produced)",100,0.,100.);
649 TH1F *hMCD0fromcPt=new TH1F("hMCD0fromcPt","D0 from c Pt",34,ptbinsD0arr);
650 TH1F *hMCD0fromcEta=new TH1F("hMCD0fromcEta","D0 from c Eta",50,-3.,3.);
651 TH1F *hMCD0fromcEnergy=new TH1F("hMCD0fromcEnergy","D0 from c Energy",200,0.,100.);
653 TH2F *hMCD0VscquarkPt=new TH2F("hMCD0VscquarkPt","D0 pt Vs cquark pt",34,ptbinsD0arr,34,ptbinsD0arr);
654 TH2F *hMCD0VscquarkEnergy=new TH2F("hMCD0VscquarkEnergy","D0 Energy Vs cquark Energy",200,0.,50.,200,0.,50.);
655 TH1F *hMCD0deltacquarkEnergy=new TH1F("hMCD0deltacquarkEnergy","Fractional D0 Energy w.r.t. cquark Energy",20,0.,1.);
656 TH1F *hMCD0EnergyVsAvcquarkDaughtEn=new TH1F("hMCD0EnergyVsAvcquarkDaughtEn","#Delta(E^{D^0}-E_{avg})/E_{cquark}",40,-1.,1.);
657 TH1F *hMCD0cquarkAngle=new TH1F("hMCD0cquarkAngle","cosine of the angle between D0 and c quark particle",40,-1.,1.);
658 TH2F *hMCD0cquarkAngleEnergy=new TH2F("hMCD0cquarkAngleEnergy","cosine of the angle between D0 and c quark particle as a function of Energy",25,0.,50.,40,-1.,1.);
660 TH1I *hMCfromBpdgB=new TH1I("hMCfromBpdgB","hMCfromBpdgB",10000,0.,10000);
661 TH1F *hMCBhadrPt=new TH1F("hMCBhadrPt","B hadr Pt",34,ptbinsD0arr);
662 TH1F *hMCBhadrEta=new TH1F("hMCBhadrEta","B hadr Eta",50,-3.,3.);
663 TH1F *hMCBhadrEnergy=new TH1F("hMCBhadrEnergy","B hadr Pt",200,0.,100.);
664 TH1F *hMCBhadrNdaught=new TH1F("hMCBhadrNdaught","N Bhadr daughters",100,0.,100.);
665 TH1F *hMCD0fromBPt=new TH1F("hMCD0fromBPt","D0 from B Pt",34,ptbinsD0arr);
666 TH1F *hMCD0fromBEta=new TH1F("hMCD0fromBEta","D0 from B Eta",50,-3.,3.);
667 TH1F *hMCD0fromBEnergy=new TH1F("hMCD0fromBEnergy","D0 from B Energy",200,0.,100.);
669 TH2F *hMCD0VsBhadrPt=new TH2F("hMCD0VsBhadrPt","D0 pt Vs Bhadr pt",34,ptbinsD0arr,34,ptbinsD0arr);
670 TH2F *hMCD0VsBhadrEnergy=new TH2F("hMCD0VsBhadrEnergy","D0 Energy Vs Bhadr Energy",200,0.,50.,200,0.,50.);
671 TH1F *hMCD0deltaBhadrEnergy=new TH1F("hMCD0deltaBhadrEnergy","Fractional D0 Energy w.r.t. Bhadr Energy",20,0.,1.);
672 TH1F *hMCD0EnergyVsAvBDaughtEn=new TH1F("hMCD0EnergyVsAvBDaughtEn","#Delta(E^{D^0}-E_{avg})/E_{Bahdr}",40,-1.,1.);
673 TH1F *hMCD0BhadrAngle=new TH1F("hMCD0BhadrAngle","cosine of the angle between D0 and Bhadr particle",40,-1.,1.);
674 TH2F *hMCD0BhadrAngleEnergy=new TH2F("hMCD0BhadrAngleEnergy","cosine of the angle between D0 and Bhadr particle as a function of Energy",25,0.,50.,40,-1.,1.);
676 TH1I *hMCPartFound=new TH1I("hMCPartFound","1=c,2=D0,3=fromBall,4=fromBmeson,5=fromBbaryon",6,0,6);
679 flistMCproperties->Add(hMCcquarkAllPt);
680 flistMCproperties->Add(hMCcquarkAllEta);
681 flistMCproperties->Add(hMCcquarkAllEnergy);
682 flistMCproperties->Add(hMCcquarkNdaught);
683 flistMCproperties->Add(hMCD0fromcPt);
684 flistMCproperties->Add(hMCD0fromcEta);
685 flistMCproperties->Add(hMCD0fromcEnergy);
686 flistMCproperties->Add(hMCD0VscquarkPt);
687 flistMCproperties->Add(hMCD0VscquarkEnergy);
688 flistMCproperties->Add(hMCD0deltacquarkEnergy);
689 flistMCproperties->Add(hMCD0EnergyVsAvcquarkDaughtEn);
690 flistMCproperties->Add(hMCD0cquarkAngle);
691 flistMCproperties->Add(hMCD0cquarkAngleEnergy);
693 flistMCproperties->Add(hMCfromBpdgB);
694 flistMCproperties->Add(hMCBhadrPt);
695 flistMCproperties->Add(hMCBhadrEta);
696 flistMCproperties->Add(hMCBhadrEnergy);
697 flistMCproperties->Add(hMCBhadrNdaught);
698 flistMCproperties->Add(hMCD0fromBPt);
699 flistMCproperties->Add(hMCD0fromBEta);
700 flistMCproperties->Add(hMCD0fromBEnergy);
701 flistMCproperties->Add(hMCD0VsBhadrPt);
702 flistMCproperties->Add(hMCD0VsBhadrEnergy);
703 flistMCproperties->Add(hMCD0deltaBhadrEnergy);
704 flistMCproperties->Add(hMCD0EnergyVsAvBDaughtEn);
705 flistMCproperties->Add(hMCD0BhadrAngle);
706 flistMCproperties->Add(hMCD0BhadrAngleEnergy);
707 flistMCproperties->Add(hMCPartFound);
709 //################################################################################################
711 // HISTOS FOR NO CUTS CASE #
713 //################################################################################################
714 Printf("AFTER MC HISTOS \n");
716 //############ NO CUTS SIGNAL HISTOGRAMS ###############
718 // ####### global properties histo ############
720 TH2F *hCPtaVSd0d0NCsign=new TH2F("hCPtaVSd0d0NCsign","hCPtaVSd0d0_NoCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
721 TH1F *hSecVtxZNCsign=new TH1F("hSecVtxZNCsign","hSecVtxZ_NoCuts_Signal",1000,-8.,8.);
722 TH1F *hSecVtxXNCsign=new TH1F("hSecVtxXNCsign","hSecVtxX_NoCuts_Signal",1000,-3000.,3000.);
723 TH1F *hSecVtxYNCsign=new TH1F("hSecVtxYNCsign","hSecVtxY_NoCuts_Signal",1000,-3000.,3000.);
724 TH2F *hSecVtxXYNCsign=new TH2F("hSecVtxXYNCsign","hSecVtxXY_NoCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
725 TH1F *hSecVtxPhiNCsign=new TH1F("hSecVtxPhiNCsign","hSecVtxPhi_NoCuts_Signal",180,-180.1,180.1);
726 TH1F *hd0singlTrackNCsign=new TH1F("hd0singlTrackNCsign","hd0singlTrackNoCuts_Signal",1000,-5000.,5000.);
727 TH1F *hCPtaNCsign=new TH1F("hCPtaNCsign","hCPta_NoCuts_Signal",100,-1.,1.);
728 TH1F *hd0xd0NCsign=new TH1F("hd0xd0NCsign","hd0xd0_NoCuts_Signal",1000,-100000.,100000.);
729 TH1F *hMassTrueNCsign=new TH1F("hMassTrueNCsign","D^{0} MC inv. Mass No Cuts Signal(All momenta)",600,1.600,2.200);
730 TH1F *hMassNCsign=new TH1F("hMassNCsign","D^{0} inv. Mass No Cuts Signal (All momenta)",600,1.600,2.200);
731 hMassNCsign->Sumw2();
732 TH1F *hMassTrueNCsignPM=new TH1F("hMassTrueNCsignPM","D^{0} MC inv. Mass No Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
733 TH1F *hMassNCsignPM=new TH1F("hMassNCsignPM","D^{0} inv. Mass No Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
734 hMassNCsignPM->Sumw2();
736 TH1F *hMassTrueNCsignSB=new TH1F("hMassTrueNCsignSB","D^{0} MC inv. Mass in Side Bands No Cuts Signal(All momenta)",600,1.600,2.200);
737 TH1F *hMassNCsignSB=new TH1F("hMassNCsignSB","D^{0} inv. Mass in Side Bands No Cuts Signal (All momenta)",600,1.600,2.200);
738 hMassNCsignSB->Sumw2();
740 flistNoCutsSignal->Add(hCPtaVSd0d0NCsign);
741 flistNoCutsSignal->Add(hSecVtxZNCsign);
742 flistNoCutsSignal->Add(hSecVtxYNCsign);
743 flistNoCutsSignal->Add(hSecVtxXNCsign);
744 flistNoCutsSignal->Add(hSecVtxXYNCsign);
745 flistNoCutsSignal->Add(hSecVtxPhiNCsign);
746 flistNoCutsSignal->Add(hd0singlTrackNCsign);
747 flistNoCutsSignal->Add(hCPtaNCsign);
748 flistNoCutsSignal->Add(hd0xd0NCsign);
749 flistNoCutsSignal->Add(hMassTrueNCsign);
750 flistNoCutsSignal->Add(hMassNCsign);
751 flistNoCutsSignal->Add(hMassTrueNCsignPM);
752 flistNoCutsSignal->Add(hMassNCsignPM);
753 flistNoCutsSignal->Add(hMassTrueNCsignSB);
754 flistNoCutsSignal->Add(hMassNCsignSB);
756 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
757 TH1F *hdcaNCsign=new TH1F("hdcaNCsign","hdca_NoCuts_Signal",100,0.,1000.);
758 hdcaNCsign->SetXTitle("dca [#mum]");
759 hdcaNCsign->SetYTitle("Entries");
760 TH1F *hcosthetastarNCsign=new TH1F("hcosthetastarNCsign","hCosThetaStar_NoCuts_Signal",50,-1.,1.);
761 hcosthetastarNCsign->SetXTitle("cos #theta^{*}");
762 hcosthetastarNCsign->SetYTitle("Entries");
763 TH1F *hptD0NCsign=new TH1F("hptD0NCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
764 hptD0NCsign->SetXTitle("p_{t} [GeV/c]");
765 hptD0NCsign->SetYTitle("Entries");
766 TH1F *hptD0VsMaxPtNCsign=new TH1F("hptD0VsMaxPtNCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
767 TH2F *hptD0PTallsqrtNCsign=new TH2F("hptD0PTallsqrtNCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
768 TH2F *hptD0PTallNCsign=new TH2F("hptD0PTallNCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
769 TH2F *hptD0vsptBNCsign=new TH2F("hptD0vsptBNCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
770 TH2F *hpD0vspBNCsign=new TH2F("hpD0vspBNCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
771 TH2F *hptD0vsptcquarkNCsign=new TH2F("hptD0vsptcquarkNCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
772 TH2F *hpD0vspcquarkNCsign=new TH2F("hpD0vspcquarkNCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
773 flistNoCutsSignal->Add(hdcaNCsign);
774 flistNoCutsSignal->Add(hcosthetastarNCsign);
775 flistNoCutsSignal->Add(hptD0NCsign);
776 flistNoCutsSignal->Add(hptD0VsMaxPtNCsign);
777 flistNoCutsSignal->Add(hptD0PTallsqrtNCsign);
778 flistNoCutsSignal->Add(hptD0PTallNCsign);
779 flistNoCutsSignal->Add(hptD0vsptBNCsign);
780 flistNoCutsSignal->Add(hpD0vspBNCsign);
781 flistNoCutsSignal->Add(hptD0vsptcquarkNCsign);
782 flistNoCutsSignal->Add(hpD0vspcquarkNCsign);
784 TH1F *hd0zD0ptNCsign;
785 TH1F *hInvMassD0NCsign,*hInvMassD0barNCsign;
786 TH2F *hInvMassPtNCsign=new TH2F("hInvMassPtNCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
787 flistNoCutsSignal->Add(hInvMassPtNCsign);
788 THnSparseF *hSparseNCsign=new THnSparseF("hSparseNCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
789 hSparseNCsign->SetBinEdges(0,massbins);
790 hSparseNCsign->SetBinEdges(1,massbins);
791 hSparseNCsign->SetBinEdges(2,ptbinsForNsparse);
792 hSparseNCsign->SetBinEdges(3,impparbins);
793 hSparseNCsign->SetBinEdges(4,massHypoBins);
794 flistNoCutsSignal->Add(hSparseNCsign);
799 THnSparseF *hSparseCxyLxyNCsign=new THnSparseF("hSparseCxyLxyNCsign","Candidate Mass;massD0;Pt;CosXY;Lxy",4,nbinsSparsCxyLxy,binLowLimitSparseCxyLxy,binUpLimitSparseCxyLxy);
800 hSparseCxyLxyNCsign->SetBinEdges(1,ptbinlimitsCxyLxy);
801 hSparseCxyLxyNCsign->GetAxis(0)->SetName("mass");
802 hSparseCxyLxyNCsign->GetAxis(0)->SetTitle("Invariant Mass (K#pi) [GeV/c^{2}]");
803 hSparseCxyLxyNCsign->GetAxis(1)->SetName("pt");
804 hSparseCxyLxyNCsign->GetAxis(1)->SetTitle("p_{t} [GeV/c]");
805 hSparseCxyLxyNCsign->GetAxis(2)->SetName("CosPointXY");
806 hSparseCxyLxyNCsign->GetAxis(2)->SetTitle("Cos#theta_{point}^{XY}");
807 hSparseCxyLxyNCsign->GetAxis(3)->SetName("NormDecLengthXY");
808 hSparseCxyLxyNCsign->GetAxis(3)->SetTitle("Normalized XY decay length");
810 flistNoCutsSignal->Add(hSparseCxyLxyNCsign);
815 TH1F *hCosPDPBNCsign;
816 TH1F *hCosPcPDNCsign;
818 TH2F *hd0D0VSd0xd0NCsignpt;
819 TH2F *hangletracksVSd0xd0NCsignpt;
820 TH2F *hangletracksVSd0D0NCsignpt;
821 TH1F *hd0xd0NCsignpt;
823 TH1F *hPhiHistPMNCsignpt,*hPhiHistSBNCsignpt;
826 TH2F *hTOFpidNCsign=new TH2F("hTOFpidNCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
827 flistNoCutsSignal->Add(hTOFpidNCsign);
832 for(Int_t i=0;i<fnbins;i++){
833 //Printf("INSIDE HISTOS CREATION LOOP: %d \n",fnbins);
835 namehist="hPhiHistPMNCsign_pt";
837 titlehist="Azimuthal correlation No Cuts Sign PM ptbin=";
839 hPhiHistPMNCsignpt=new TH1F(namehist.Data(),titlehist.Data(),100,-3.15,3.15);
840 hPhiHistPMNCsignpt->Sumw2();
841 flistNoCutsSignal->Add(hPhiHistPMNCsignpt);
843 namehist="hPhiHistSBNCsign_pt";
845 titlehist="Azimuthal correlation No Cuts Sign SB ptbin=";
847 hPhiHistSBNCsignpt=new TH1F(namehist.Data(),titlehist.Data(),100,-3.15,3.15);
848 hPhiHistSBNCsignpt->Sumw2();
849 flistNoCutsSignal->Add(hPhiHistSBNCsignpt);
852 namehist="hd0zD0ptNCsign_pt";
854 titlehist="d0(z) No Cuts Signalm ptbin=";
856 hd0zD0ptNCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
857 hd0zD0ptNCsign->SetXTitle("d_{0}(z) [#mum]");
858 hd0zD0ptNCsign->SetYTitle("Entries");
859 flistNoCutsSignal->Add(hd0zD0ptNCsign);
861 namehist="hInvMassD0NCsign_pt";
863 titlehist="Invariant Mass D0 No Cuts Signal ptbin=";
865 hInvMassD0NCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
866 hInvMassD0NCsign->SetXTitle("Invariant Mass [GeV]");
867 hInvMassD0NCsign->SetYTitle("Entries");
868 flistNoCutsSignal->Add(hInvMassD0NCsign);
871 namehist="hInvMassD0barNCsign_pt";
873 titlehist="Invariant Mass D0bar No Cuts Signal ptbin=";
875 hInvMassD0barNCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
876 hInvMassD0barNCsign->SetXTitle("Invariant Mass [GeV]");
877 hInvMassD0barNCsign->SetYTitle("Entries");
878 flistNoCutsSignal->Add(hInvMassD0barNCsign);
881 namehist="hetaNCsign_pt";
883 titlehist="eta No Cuts Signal ptbin=";
885 hetaNCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
886 hetaNCsign->SetXTitle("Pseudorapidity");
887 hetaNCsign->SetYTitle("Entries");
888 flistNoCutsSignal->Add(hetaNCsign);
890 namehist="hCosPDPBNCsign_pt";
892 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
894 hCosPDPBNCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
895 hCosPDPBNCsign->SetXTitle("Cosine between D0 momentum and B momentum");
896 hCosPDPBNCsign->SetYTitle("Entries");
897 flistNoCutsSignal->Add(hCosPDPBNCsign);
899 namehist="hCosPcPDNCsign_pt";
901 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
903 hCosPcPDNCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
904 hCosPcPDNCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
905 hCosPcPDNCsign->SetYTitle("Entries");
906 flistNoCutsSignal->Add(hCosPcPDNCsign);
909 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
910 namehist="hd0xd0NCsign_pt";
912 titlehist="d0xd0 No Cuts Signal ptbin=";
914 hd0xd0NCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
915 hd0xd0NCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
916 hd0xd0NCsignpt->SetYTitle("Entries");
917 flistNoCutsSignal->Add(hd0xd0NCsignpt);
920 namehist="hd0D0VSd0xd0NCsign_pt";
922 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Signal ptbin=";
924 hd0D0VSd0xd0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
925 hd0D0VSd0xd0NCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
926 hd0D0VSd0xd0NCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
927 flistNoCutsSignal->Add(hd0D0VSd0xd0NCsignpt);
930 namehist="hangletracksVSd0xd0NCsign_pt";
932 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Signal ptbin=";
934 hangletracksVSd0xd0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
935 hangletracksVSd0xd0NCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
936 hangletracksVSd0xd0NCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
937 flistNoCutsSignal->Add(hangletracksVSd0xd0NCsignpt);
940 namehist="hangletracksVSd0D0NCsign_pt";
942 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Signal ptbin=";
944 hangletracksVSd0D0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
945 hangletracksVSd0D0NCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
946 hangletracksVSd0D0NCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
947 flistNoCutsSignal->Add(hangletracksVSd0D0NCsignpt);
950 Printf("AFTER LOOP HISTOS CREATION \n");
951 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
952 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
954 // ####### d0 D0 histos ############
955 TH1F *hd0D0NCsignPM = new TH1F("hd0D0NCsignPM","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
956 hd0D0NCsignPM->SetXTitle("Impact parameter [#mum]");
957 hd0D0NCsignPM->SetYTitle("Entries");
959 TH1F *hd0D0VtxTrueNCsignPM = new TH1F("hd0D0VtxTrueNCsignPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
960 hd0D0VtxTrueNCsignPM->SetXTitle("Impact parameter [#mum]");
961 hd0D0VtxTrueNCsignPM->SetYTitle("Entries");
963 TH1F *hMCd0D0NCsignPM = new TH1F("hMCd0D0NCsignPM","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
964 hMCd0D0NCsignPM->SetXTitle("MC Impact parameter [#mum]");
965 hMCd0D0NCsignPM->SetYTitle("Entries");
967 TH1F *hd0D0NCsignSB = new TH1F("hd0D0NCsignSB","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
968 hd0D0NCsignSB->SetXTitle("Impact parameter [#mum]");
969 hd0D0NCsignSB->SetYTitle("Entries");
971 TH1F *hd0D0VtxTrueNCsignSB = new TH1F("hd0D0VtxTrueNCsignSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
972 hd0D0VtxTrueNCsignSB->SetXTitle("Impact parameter [#mum]");
973 hd0D0VtxTrueNCsignSB->SetYTitle("Entries");
975 TH1F *hMCd0D0NCsignSB = new TH1F("hMCd0D0NCsignSB","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
976 hMCd0D0NCsignSB->SetXTitle("MC Impact parameter [#mum]");
977 hMCd0D0NCsignSB->SetYTitle("Entries");
979 flistNoCutsSignal->Add(hd0D0NCsignPM);
980 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignPM);
981 flistNoCutsSignal->Add(hMCd0D0NCsignPM);
982 flistNoCutsSignal->Add(hd0D0NCsignSB);
983 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignSB);
984 flistNoCutsSignal->Add(hMCd0D0NCsignSB);
986 TH1F *hd0D0ptNCsignPM;
987 TH1F *hMCd0D0ptNCsignPM;
988 TH1F *hd0D0VtxTrueptNCsignPM;
989 TH1F *hd0D0ptNCsignSB;
990 TH1F *hMCd0D0ptNCsignSB;
991 TH1F *hd0D0VtxTrueptNCsignSB;
992 namehist="hd0D0ptNCsign_";
993 titlehist="D^{0} impact par. plot, No Cuts, Signal, ";
994 for(Int_t i=0;i<fnbins;i++){
995 //Printf("IN HISTOS CREATION USING PTBINS VALUES for NAMES \n");
997 strnamept.Append("PkMss_pt");
1000 strtitlept=titlehist;
1001 strtitlept.Append(" Mass Peak, ");
1003 strtitlept+=fptbins[i];
1004 //Printf("IN HISTOS CREATION USING PTBINS VALUES for NAMES %d: %f\n",i,fptbins[i]);
1005 strtitlept.Append("<= pt <");
1006 strtitlept+=fptbins[i+1];
1007 strtitlept.Append(" [GeV/c]");
1009 hd0D0ptNCsignPM= new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1010 hd0D0ptNCsignPM->SetXTitle("Impact parameter [#mum] ");
1011 hd0D0ptNCsignPM->SetYTitle("Entries");
1012 flistNoCutsSignal->Add(hd0D0ptNCsignPM);
1014 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1015 hMCd0D0ptNCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1016 hMCd0D0ptNCsignPM->SetXTitle("MC Impact parameter [#mum] ");
1017 hMCd0D0ptNCsignPM->SetYTitle("Entries");
1018 flistNoCutsSignal->Add(hMCd0D0ptNCsignPM);
1021 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1022 hd0D0VtxTrueptNCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1023 hd0D0VtxTrueptNCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1024 hd0D0VtxTrueptNCsignPM->SetYTitle("Entries");
1025 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignPM);
1028 strnamept.Append("SBMss_pt");
1031 strtitlept=titlehist;
1032 strtitlept.Append(" Side Bands, ");
1033 strtitlept+=fptbins[i];
1034 strtitlept.Append("<= pt <");
1035 strtitlept+=fptbins[i+1];
1036 strtitlept.Append(" [GeV/c]");
1038 hd0D0ptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1039 hd0D0ptNCsignSB->SetXTitle("Impact parameter [#mum] ");
1040 hd0D0ptNCsignSB->SetYTitle("Entries");
1041 flistNoCutsSignal->Add(hd0D0ptNCsignSB);
1043 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1044 hMCd0D0ptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1045 hMCd0D0ptNCsignSB->SetXTitle("MC Impact parameter [#mum] ");
1046 hMCd0D0ptNCsignSB->SetYTitle("Entries");
1047 flistNoCutsSignal->Add(hMCd0D0ptNCsignSB);
1049 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1050 hd0D0VtxTrueptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1051 hd0D0VtxTrueptNCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1052 hd0D0VtxTrueptNCsignSB->SetYTitle("Entries");
1053 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignSB);
1056 //Printf("AFTER SIGNAL HISTOS CREATION for NOCUTS\n");
1059 //############ NO CUTS BACKGROUND HISTOGRAMS ###########
1061 // ######## global properties histos #######
1062 TH2F *hCPtaVSd0d0NCback=new TH2F("hCPtaVSd0d0NCback","hCPtaVSd0d0_NoCuts_Background",1000,-100000.,100000.,100,-1.,1.);
1063 TH1F *hSecVtxZNCback=new TH1F("hSecVtxZNCback","hSecVtxZ_NoCuts_Background",1000,-8.,8.);
1064 TH1F *hSecVtxXNCback=new TH1F("hSecVtxXNCback","hSecVtxX_NoCuts_Background",1000,-3000.,3000.);
1065 TH1F *hSecVtxYNCback=new TH1F("hSecVtxYNCback","hSecVtxY_NoCuts_Background",1000,-3000.,3000.);
1066 TH2F *hSecVtxXYNCback=new TH2F("hSecVtxXYNCback","hSecVtxXY_NoCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
1067 TH1F *hSecVtxPhiNCback=new TH1F("hSecVtxPhiNCback","hSecVtxPhi_NoCuts_Background",180,-180.1,180.1);
1068 TH1F *hd0singlTrackNCback=new TH1F("hd0singlTrackNCback","hd0singlTrackNoCuts_Back",1000,-5000.,5000.);
1069 TH1F *hCPtaNCback=new TH1F("hCPtaNCback","hCPta_NoCuts_Background",100,-1.,1.);
1070 TH1F *hd0xd0NCback=new TH1F("hd0xd0NCback","hd0xd0_NoCuts_Background",1000,-100000.,100000.);
1071 TH1F *hMassTrueNCback=new TH1F("hMassTrueNCback","D^{0} MC inv. Mass No Cuts Background(All momenta)",600,1.600,2.200);
1072 TH1F *hMassNCback=new TH1F("hMassNCback","D^{0} inv. Mass No Cuts Background (All momenta)",600,1.600,2.200);
1073 hMassNCback->Sumw2();
1074 TH1F *hMassTrueNCbackPM=new TH1F("hMassTrueNCbackPM","D^{0} MC inv. Mass No Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
1075 TH1F *hMassNCbackPM=new TH1F("hMassNCbackPM","D^{0} inv. Mass No Cuts Background (All momenta), MassPeak",600,1.600,2.200);
1076 hMassNCbackPM->Sumw2();
1077 TH1F *hMassTrueNCbackSB=new TH1F("hMassTrueNCbackSB","D^{0} MC inv. Mass in Side Bands No Cuts Background(All momenta)",600,1.600,2.200);
1078 TH1F *hMassNCbackSB=new TH1F("hMassNCbackSB","D^{0} inv. Mass in Side Bands No Cuts Background (All momenta)",600,1.600,2.200);
1079 hMassNCbackSB->Sumw2();
1081 flistNoCutsBack->Add(hCPtaVSd0d0NCback);
1082 flistNoCutsBack->Add(hSecVtxZNCback);
1083 flistNoCutsBack->Add(hSecVtxYNCback);
1084 flistNoCutsBack->Add(hSecVtxXNCback);
1085 flistNoCutsBack->Add(hSecVtxXYNCback);
1086 flistNoCutsBack->Add(hSecVtxPhiNCback);
1087 flistNoCutsBack->Add(hd0singlTrackNCback);
1088 flistNoCutsBack->Add(hCPtaNCback);
1089 flistNoCutsBack->Add(hd0xd0NCback);
1090 flistNoCutsBack->Add(hMassTrueNCback);
1091 flistNoCutsBack->Add(hMassNCback);
1092 flistNoCutsBack->Add(hMassTrueNCbackPM);
1093 flistNoCutsBack->Add(hMassNCbackPM);
1094 flistNoCutsBack->Add(hMassTrueNCbackSB);
1095 flistNoCutsBack->Add(hMassNCbackSB);
1098 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1099 TH1F *hdcaNCback=new TH1F("hdcaNCback","hdca_NoCuts_Backgr",100,0.,1000.);
1100 hdcaNCback->SetXTitle("dca [#mum]");
1101 hdcaNCback->SetYTitle("Entries");
1102 TH1F *hcosthetastarNCback=new TH1F("hcosthetastarNCback","hCosThetaStar_NoCuts_Backgr",50,-1.,1.);
1103 hcosthetastarNCback->SetXTitle("cos #theta^{*}");
1104 hcosthetastarNCback->SetYTitle("Entries");
1105 TH1F *hptD0NCback=new TH1F("hptD0NCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1106 hptD0NCback->SetXTitle("p_{t} [GeV/c]");
1107 hptD0NCback->SetYTitle("Entries");
1108 TH1F *hptD0VsMaxPtNCback=new TH1F("hptD0VsMaxPtNCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1109 TH2F *hptD0PTallsqrtNCback=new TH2F("hptD0PTallsqrtNCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1110 TH2F *hptD0PTallNCback=new TH2F("hptD0PTallNCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1111 TH2F *hptD0vsptBNCback=new TH2F("hptD0vsptBNCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1112 TH2F *hpD0vspBNCback=new TH2F("hpD0vspBNCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1113 TH2F *hptD0vsptcquarkNCback=new TH2F("hptD0vsptcquarkNCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1114 TH2F *hpD0vspcquarkNCback=new TH2F("hpD0vspcquarkNCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1115 flistNoCutsBack->Add(hdcaNCback);
1116 flistNoCutsBack->Add(hcosthetastarNCback);
1117 flistNoCutsBack->Add(hptD0NCback);
1118 flistNoCutsBack->Add(hptD0VsMaxPtNCback);
1119 flistNoCutsBack->Add(hptD0PTallsqrtNCback);
1120 flistNoCutsBack->Add(hptD0PTallNCback);
1121 flistNoCutsBack->Add(hptD0vsptBNCback);
1122 flistNoCutsBack->Add(hpD0vspBNCback);
1123 flistNoCutsBack->Add(hptD0vsptcquarkNCback);
1124 flistNoCutsBack->Add(hpD0vspcquarkNCback);
1126 TH1F *hd0zD0ptNCback;
1127 TH1F *hInvMassD0NCback,*hInvMassD0barNCback;
1128 TH2F *hInvMassPtNCback=new TH2F("hInvMassPtNCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1129 THnSparseF *hSparseNCback=new THnSparseF("hSparseNCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1130 hSparseNCback->SetBinEdges(0,massbins);
1131 hSparseNCback->SetBinEdges(1,massbins);
1132 hSparseNCback->SetBinEdges(2,ptbinsForNsparse);
1133 hSparseNCback->SetBinEdges(3,impparbins);
1134 hSparseNCback->SetBinEdges(4,massHypoBins);
1135 flistNoCutsBack->Add(hSparseNCback);
1138 TH1F *hCosPDPBNCback;
1139 TH1F *hCosPcPDNCback;
1140 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1141 TH2F *hd0D0VSd0xd0NCbackpt;
1142 TH2F *hangletracksVSd0xd0NCbackpt;
1143 TH2F *hangletracksVSd0D0NCbackpt;
1144 TH1F *hd0xd0NCbackpt;
1145 flistNoCutsBack->Add(hInvMassPtNCback);
1147 TH2F *hTOFpidNCback=new TH2F("hTOFpidNCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1148 flistNoCutsBack->Add(hTOFpidNCback);
1150 for(Int_t i=0;i<fnbins;i++){
1151 namehist="hd0zD0ptNCback_pt";
1153 titlehist="d0(z) No Cuts Backgrm ptbin=";
1155 hd0zD0ptNCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1156 hd0zD0ptNCback->SetXTitle("d_{0}(z) [#mum]");
1157 hd0zD0ptNCback->SetYTitle("Entries");
1158 flistNoCutsBack->Add(hd0zD0ptNCback);
1160 namehist="hInvMassD0NCback_pt";
1162 titlehist="Invariant Mass No Cuts Backgr ptbin=";
1164 hInvMassD0NCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1165 hInvMassD0NCback->SetXTitle("Invariant Mass [GeV]");
1166 hInvMassD0NCback->SetYTitle("Entries");
1167 flistNoCutsBack->Add(hInvMassD0NCback);
1170 namehist="hInvMassD0barNCback_pt";
1172 titlehist="Invariant Mass D0bar No Cuts Back ptbin=";
1174 hInvMassD0barNCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1175 hInvMassD0barNCback->SetXTitle("Invariant Mass [GeV]");
1176 hInvMassD0barNCback->SetYTitle("Entries");
1177 flistNoCutsBack->Add(hInvMassD0barNCback);
1180 namehist="hetaNCback_pt";
1182 titlehist="eta No Cuts Backgr ptbin=";
1184 hetaNCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1185 hetaNCback->SetXTitle("Pseudorapidity");
1186 hetaNCback->SetYTitle("Entries");
1187 flistNoCutsBack->Add(hetaNCback);
1189 namehist="hCosPDPBNCback_pt";
1191 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1193 hCosPDPBNCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1194 hCosPDPBNCback->SetXTitle("Cosine between D0 momentum and B momentum");
1195 hCosPDPBNCback->SetYTitle("Entries");
1196 flistNoCutsBack->Add(hCosPDPBNCback);
1198 namehist="hCosPcPDNCback_pt";
1200 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1202 hCosPcPDNCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1203 hCosPcPDNCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
1204 hCosPcPDNCback->SetYTitle("Entries");
1205 flistNoCutsBack->Add(hCosPcPDNCback);
1208 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1209 namehist="hd0xd0NCback_pt";
1211 titlehist="d0xd0 No Cuts Background ptbin=";
1213 hd0xd0NCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1214 hd0xd0NCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1215 hd0xd0NCbackpt->SetYTitle("Entries");
1216 flistNoCutsBack->Add(hd0xd0NCbackpt);
1219 namehist="hd0D0VSd0xd0NCback_pt";
1221 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Back ptbin=";
1223 hd0D0VSd0xd0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1224 hd0D0VSd0xd0NCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1225 hd0D0VSd0xd0NCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1226 flistNoCutsBack->Add(hd0D0VSd0xd0NCbackpt);
1229 namehist="hangletracksVSd0xd0NCback_pt";
1231 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Back ptbin=";
1233 hangletracksVSd0xd0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1234 hangletracksVSd0xd0NCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1235 hangletracksVSd0xd0NCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
1236 flistNoCutsBack->Add(hangletracksVSd0xd0NCbackpt);
1239 namehist="hangletracksVSd0D0NCback_pt";
1241 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Back ptbin=";
1243 hangletracksVSd0D0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1244 hangletracksVSd0D0NCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1245 hangletracksVSd0D0NCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
1246 flistNoCutsBack->Add(hangletracksVSd0D0NCbackpt);
1251 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1252 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1256 // ####### d0 D0 histos ############
1258 TH1F *hd0D0NCbackPM = new TH1F("hd0D0NCbackPM","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1259 hd0D0NCbackPM->SetXTitle("Impact parameter [#mum]");
1260 hd0D0NCbackPM->SetYTitle("Entries");
1262 TH1F *hd0D0VtxTrueNCbackPM = new TH1F("hd0D0VtxTrueNCbackPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1263 hd0D0VtxTrueNCbackPM->SetXTitle("Impact parameter [#mum]");
1264 hd0D0VtxTrueNCbackPM->SetYTitle("Entries");
1266 TH1F *hMCd0D0NCbackPM = new TH1F("hMCd0D0NCbackPM","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1267 hMCd0D0NCbackPM->SetXTitle("MC Impact parameter [#mum]");
1268 hMCd0D0NCbackPM->SetYTitle("Entries");
1270 TH1F *hd0D0NCbackSB = new TH1F("hd0D0NCbackSB","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1271 hd0D0NCbackSB->SetXTitle("Impact parameter [#mum]");
1272 hd0D0NCbackSB->SetYTitle("Entries");
1274 TH1F *hd0D0VtxTrueNCbackSB = new TH1F("hd0D0VtxTrueNCbackSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1275 hd0D0VtxTrueNCbackSB->SetXTitle("Impact parameter [#mum]");
1276 hd0D0VtxTrueNCbackSB->SetYTitle("Entries");
1278 TH1F *hMCd0D0NCbackSB = new TH1F("hMCd0D0NCbackSB","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1279 hMCd0D0NCbackSB->SetXTitle("MC Impact parameter [#mum]");
1280 hMCd0D0NCbackSB->SetYTitle("Entries");
1282 flistNoCutsBack->Add(hd0D0NCbackPM);
1283 flistNoCutsBack->Add(hd0D0VtxTrueNCbackPM);
1284 flistNoCutsBack->Add(hMCd0D0NCbackPM);
1285 flistNoCutsBack->Add(hd0D0NCbackSB);
1286 flistNoCutsBack->Add(hd0D0VtxTrueNCbackSB);
1287 flistNoCutsBack->Add(hMCd0D0NCbackSB);
1289 TH1F *hd0D0ptNCbackPM;
1290 TH1F *hMCd0D0ptNCbackPM;
1291 TH1F *hd0D0VtxTrueptNCbackPM;
1292 TH1F *hd0D0ptNCbackSB;
1293 TH1F *hMCd0D0ptNCbackSB;
1294 TH1F *hd0D0VtxTrueptNCbackSB;
1295 namehist="hd0D0ptNCback_";
1296 titlehist="D^{0} impact par. plot, No Cuts, Background, ";
1297 for(Int_t i=0;i<fnbins;i++){
1299 strnamept.Append("PkMss_pt");
1302 strtitlept=titlehist;
1303 strtitlept.Append(" Mass Peak, ");
1304 strtitlept+=fptbins[i];
1305 strtitlept.Append("<= pt <");
1306 strtitlept+=fptbins[i+1];
1307 strtitlept.Append(" [GeV/c]");
1309 hd0D0ptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1310 hd0D0ptNCbackPM->SetXTitle("Impact parameter [#mum] ");
1311 hd0D0ptNCbackPM->SetYTitle("Entries");
1312 flistNoCutsBack->Add(hd0D0ptNCbackPM);
1314 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1315 hMCd0D0ptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1316 hMCd0D0ptNCbackPM->SetXTitle("MC Impact parameter [#mum] ");
1317 hMCd0D0ptNCbackPM->SetYTitle("Entries");
1318 flistNoCutsBack->Add(hMCd0D0ptNCbackPM);
1321 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1322 hd0D0VtxTrueptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1323 hd0D0VtxTrueptNCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1324 hd0D0VtxTrueptNCbackPM->SetYTitle("Entries");
1325 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackPM);
1328 strnamept.Append("SBMss_pt");
1331 strtitlept=titlehist;
1332 strtitlept.Append(" Side Bands, ");
1333 strtitlept+=fptbins[i];
1334 strtitlept.Append("<= pt <");
1335 strtitlept+=fptbins[i+1];
1336 strtitlept.Append(" [GeV/c]");
1338 hd0D0ptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1339 hd0D0ptNCbackSB->SetXTitle("Impact parameter [#mum] ");
1340 hd0D0ptNCbackSB->SetYTitle("Entries");
1341 flistNoCutsBack->Add(hd0D0ptNCbackSB);
1343 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1344 hMCd0D0ptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1345 hMCd0D0ptNCbackSB->SetXTitle("MC Impact parameter [#mum] ");
1346 hMCd0D0ptNCbackSB->SetYTitle("Entries");
1347 flistNoCutsBack->Add(hMCd0D0ptNCbackSB);
1349 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1350 hd0D0VtxTrueptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1351 hd0D0VtxTrueptNCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1352 hd0D0VtxTrueptNCbackSB->SetYTitle("Entries");
1353 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackSB);
1358 //############ NO CUTS FROMB HISTOGRAMS ###########
1360 //####### global properties histos
1362 TH2F *hCPtaVSd0d0NCfromB=new TH2F("hCPtaVSd0d0NCfromB","hCPtaVSd0d0_NoCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
1363 TH1F *hSecVtxZNCfromB=new TH1F("hSecVtxZNCfromB","hSecVtxZ_NoCuts_FromB",1000,-8.,8.);
1364 TH1F *hSecVtxXNCfromB=new TH1F("hSecVtxXNCfromB","hSecVtxX_NoCuts_FromB",1000,-3000.,3000.);
1365 TH1F *hSecVtxYNCfromB=new TH1F("hSecVtxYNCfromB","hSecVtxY_NoCuts_FromB",1000,-3000.,3000.);
1366 TH2F *hSecVtxXYNCfromB=new TH2F("hSecVtxXYNCfromB","hSecVtxXY_NoCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
1367 TH1F *hSecVtxPhiNCfromB=new TH1F("hSecVtxPhiNCfromB","hSecVtxPhi_NoCuts_FromB",180,-180.1,180.1);
1368 TH1F *hd0singlTrackNCfromB=new TH1F("hd0singlTrackNCfromB","hd0singlTrackNoCuts_FromB",1000,-5000.,5000.);
1369 TH1F *hCPtaNCfromB=new TH1F("hCPtaNCfromB","hCPta_NoCuts_FromB",100,-1.,1.);
1370 TH1F *hd0xd0NCfromB=new TH1F("hd0xd0NCfromB","hd0xd0_NoCuts_FromB",1000,-100000.,100000.);
1371 TH1F *hMassTrueNCfromB=new TH1F("hMassTrueNCfromB","D^{0} MC inv. Mass No Cuts FromB(All momenta)",600,1.600,2.200);
1372 TH1F *hMassNCfromB=new TH1F("hMassNCfromB","D^{0} inv. Mass No Cuts FromB (All momenta)",600,1.600,2.200);
1373 hMassNCfromB->Sumw2();
1374 TH1F *hMassTrueNCfromBPM=new TH1F("hMassTrueNCfromBPM","D^{0} MC inv. Mass No Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
1375 TH1F *hMassNCfromBPM=new TH1F("hMassNCfromBPM","D^{0} inv. Mass No Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
1376 hMassNCfromB->Sumw2();
1377 TH1F *hMassTrueNCfromBSB=new TH1F("hMassTrueNCfromBSB","D^{0} MC inv. Mass in Side Bands No Cuts FromB(All momenta)",600,1.600,2.200);
1378 TH1F *hMassNCfromBSB=new TH1F("hMassNCfromBSB","D^{0} inv. Mass in Side Bands No Cuts FromB (All momenta)",600,1.600,2.200);
1379 hMassNCfromBSB->Sumw2();
1381 flistNoCutsFromB->Add(hCPtaVSd0d0NCfromB);
1382 flistNoCutsFromB->Add(hSecVtxZNCfromB);
1383 flistNoCutsFromB->Add(hSecVtxYNCfromB);
1384 flistNoCutsFromB->Add(hSecVtxXNCfromB);
1385 flistNoCutsFromB->Add(hSecVtxXYNCfromB);
1386 flistNoCutsFromB->Add(hSecVtxPhiNCfromB);
1387 flistNoCutsFromB->Add(hd0singlTrackNCfromB);
1388 flistNoCutsFromB->Add(hCPtaNCfromB);
1389 flistNoCutsFromB->Add(hd0xd0NCfromB);
1390 flistNoCutsFromB->Add(hMassTrueNCfromB);
1391 flistNoCutsFromB->Add(hMassNCfromB);
1392 flistNoCutsFromB->Add(hMassTrueNCfromBPM);
1393 flistNoCutsFromB->Add(hMassNCfromBPM);
1394 flistNoCutsFromB->Add(hMassTrueNCfromBSB);
1395 flistNoCutsFromB->Add(hMassNCfromBSB);
1401 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1402 TH1F *hdcaNCfromB=new TH1F("hdcaNCfromB","hdca_NoCuts_FromB",100,0.,1000.);
1403 hdcaNCfromB->SetXTitle("dca [#mum]");
1404 hdcaNCfromB->SetYTitle("Entries");
1405 TH1F *hcosthetastarNCfromB=new TH1F("hcosthetastarNCfromB","hCosThetaStar_NoCuts_FromB",50,-1.,1.);
1406 hcosthetastarNCfromB->SetXTitle("cos #theta^{*}");
1407 hcosthetastarNCfromB->SetYTitle("Entries");
1408 TH1F *hptD0NCfromB=new TH1F("hptD0NCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1409 hptD0NCfromB->SetXTitle("p_{t} [GeV/c]");
1410 hptD0NCfromB->SetYTitle("Entries");
1411 TH1F *hptD0VsMaxPtNCfromB=new TH1F("hptD0VsMaxPtNCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1412 TH2F *hptD0PTallsqrtNCfromB=new TH2F("hptD0PTallsqrtNCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1413 TH2F *hptD0PTallNCfromB=new TH2F("hptD0PTallNCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1414 TH2F *hptD0vsptBNCfromB=new TH2F("hptD0vsptBNCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1415 TH2F *hpD0vspBNCfromB=new TH2F("hpD0vspBNCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1416 TH2F *hptD0vsptcquarkNCfromB=new TH2F("hptD0vsptcquarkNCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1417 TH2F *hpD0vspcquarkNCfromB=new TH2F("hpD0vspcquarkNCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1418 flistNoCutsFromB->Add(hdcaNCfromB);
1419 flistNoCutsFromB->Add(hcosthetastarNCfromB);
1420 flistNoCutsFromB->Add(hptD0NCfromB);
1421 flistNoCutsFromB->Add(hptD0VsMaxPtNCfromB);
1422 flistNoCutsFromB->Add(hptD0PTallsqrtNCfromB);
1423 flistNoCutsFromB->Add(hptD0PTallNCfromB);
1424 flistNoCutsFromB->Add(hptD0vsptBNCfromB);
1425 flistNoCutsFromB->Add(hpD0vspBNCfromB);
1426 flistNoCutsFromB->Add(hptD0vsptcquarkNCfromB);
1427 flistNoCutsFromB->Add(hpD0vspcquarkNCfromB);
1429 TH1F *hd0zD0ptNCfromB;
1430 TH1F *hInvMassD0NCfromB,*hInvMassD0barNCfromB;
1431 TH2F *hInvMassPtNCfromB=new TH2F("hInvMassPtNCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1432 THnSparseF *hSparseNCfromB=new THnSparseF("hSparseNCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1433 hSparseNCfromB->SetBinEdges(0,massbins);
1434 hSparseNCfromB->SetBinEdges(1,massbins);
1435 hSparseNCfromB->SetBinEdges(2,ptbinsForNsparse);
1436 hSparseNCfromB->SetBinEdges(3,impparbins);
1437 hSparseNCfromB->SetBinEdges(4,massHypoBins);
1438 flistNoCutsFromB->Add(hSparseNCfromB);
1441 TH1F *hCosPDPBNCfromB;
1442 TH1F *hCosPcPDNCfromB;
1444 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1445 TH2F *hd0D0VSd0xd0NCfromBpt;
1446 TH2F *hangletracksVSd0xd0NCfromBpt;
1447 TH2F *hangletracksVSd0D0NCfromBpt;
1448 TH1F *hd0xd0NCfromBpt;
1449 flistNoCutsFromB->Add(hInvMassPtNCfromB);
1451 TH2F *hTOFpidNCfromB=new TH2F("hTOFpidNCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1452 flistNoCutsFromB->Add(hTOFpidNCfromB);
1454 for(Int_t i=0;i<fnbins;i++){
1455 namehist="hd0zD0ptNCfromB_pt";
1457 titlehist="d0(z) No Cuts FromB ptbin=";
1459 hd0zD0ptNCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1460 hd0zD0ptNCfromB->SetXTitle("d_{0}(z) [#mum]");
1461 hd0zD0ptNCfromB->SetYTitle("Entries");
1462 flistNoCutsFromB->Add(hd0zD0ptNCfromB);
1464 namehist="hInvMassD0NCfromB_pt";
1466 titlehist="Invariant Mass No Cuts FromB ptbin=";
1468 hInvMassD0NCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1469 hInvMassD0NCfromB->SetXTitle("Invariant Mass [GeV]");
1470 hInvMassD0NCfromB->SetYTitle("Entries");
1471 flistNoCutsFromB->Add(hInvMassD0NCfromB);
1474 namehist="hInvMassD0barNCfromB_pt";
1476 titlehist="Invariant Mass D0bar No Cuts FromB ptbin=";
1478 hInvMassD0barNCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1479 hInvMassD0barNCfromB->SetXTitle("Invariant Mass [GeV]");
1480 hInvMassD0barNCfromB->SetYTitle("Entries");
1481 flistNoCutsFromB->Add(hInvMassD0barNCfromB);
1485 namehist="hetaNCfromB_pt";
1487 titlehist="eta No Cuts FromB ptbin=";
1489 hetaNCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1490 hetaNCfromB->SetXTitle("Pseudorapidity");
1491 hetaNCfromB->SetYTitle("Entries");
1492 flistNoCutsFromB->Add(hetaNCfromB);
1494 namehist="hCosPDPBNCfromB_pt";
1496 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1498 hCosPDPBNCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1499 hCosPDPBNCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
1500 hCosPDPBNCfromB->SetYTitle("Entries");
1501 flistNoCutsFromB->Add(hCosPDPBNCfromB);
1503 namehist="hCosPcPDNCfromB_pt";
1505 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1507 hCosPcPDNCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1508 hCosPcPDNCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
1509 hCosPcPDNCfromB->SetYTitle("Entries");
1510 flistNoCutsFromB->Add(hCosPcPDNCfromB);
1512 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1513 namehist="hd0xd0NCfromB_pt";
1515 titlehist="d0xd0 No Cuts FromB ptbin=";
1517 hd0xd0NCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1518 hd0xd0NCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1519 hd0xd0NCfromBpt->SetYTitle("Entries");
1520 flistNoCutsFromB->Add(hd0xd0NCfromBpt);
1523 namehist="hd0D0VSd0xd0NCfromB_pt";
1525 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromB ptbin=";
1527 hd0D0VSd0xd0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1528 hd0D0VSd0xd0NCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1529 hd0D0VSd0xd0NCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1530 flistNoCutsFromB->Add(hd0D0VSd0xd0NCfromBpt);
1533 namehist="hangletracksVSd0xd0NCfromB_pt";
1535 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromB ptbin=";
1537 hangletracksVSd0xd0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1538 hangletracksVSd0xd0NCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1539 hangletracksVSd0xd0NCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
1540 flistNoCutsFromB->Add(hangletracksVSd0xd0NCfromBpt);
1543 namehist="hangletracksVSd0D0NCfromB_pt";
1545 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts FromB ptbin=";
1547 hangletracksVSd0D0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1548 hangletracksVSd0D0NCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1549 hangletracksVSd0D0NCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
1550 flistNoCutsFromB->Add(hangletracksVSd0D0NCfromBpt);
1554 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1555 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1559 // ######### d0 D0 histos ##############
1560 TH1F *hd0D0NCfromBPM = new TH1F("hd0D0NCfromBPM","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1561 hd0D0NCfromBPM->SetXTitle("Impact parameter [#mum]");
1562 hd0D0NCfromBPM->SetYTitle("Entries");
1564 TH1F *hd0D0VtxTrueNCfromBPM = new TH1F("hd0D0VtxTrueNCfromBPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1565 hd0D0VtxTrueNCfromBPM->SetXTitle("Impact parameter [#mum]");
1566 hd0D0VtxTrueNCfromBPM->SetYTitle("Entries");
1568 TH1F *hMCd0D0NCfromBPM = new TH1F("hMCd0D0NCfromBPM","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1569 hMCd0D0NCfromBPM->SetXTitle("MC Impact parameter [#mum]");
1570 hMCd0D0NCfromBPM->SetYTitle("Entries");
1572 TH1F *hd0D0NCfromBSB = new TH1F("hd0D0NCfromBSB","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1573 hd0D0NCfromBSB->SetXTitle("Impact parameter [#mum]");
1574 hd0D0NCfromBSB->SetYTitle("Entries");
1576 TH1F *hd0D0VtxTrueNCfromBSB = new TH1F("hd0D0VtxTrueNCfromBSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1577 hd0D0VtxTrueNCfromBSB->SetXTitle("Impact parameter [#mum]");
1578 hd0D0VtxTrueNCfromBSB->SetYTitle("Entries");
1580 TH1F *hMCd0D0NCfromBSB = new TH1F("hMCd0D0NCfromBSB","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1581 hMCd0D0NCfromBSB->SetXTitle("MC Impact parameter [#mum]");
1582 hMCd0D0NCfromBSB->SetYTitle("Entries");
1584 flistNoCutsFromB->Add(hd0D0NCfromBPM);
1585 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBPM);
1586 flistNoCutsFromB->Add(hMCd0D0NCfromBPM);
1587 flistNoCutsFromB->Add(hd0D0NCfromBSB);
1588 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBSB);
1589 flistNoCutsFromB->Add(hMCd0D0NCfromBSB);
1591 TH1F *hd0D0ptNCfromBPM;
1592 TH1F *hMCd0D0ptNCfromBPM;
1593 TH1F *hd0D0VtxTrueptNCfromBPM;
1594 TH1F *hd0D0ptNCfromBSB;
1595 TH1F *hMCd0D0ptNCfromBSB;
1596 TH1F *hd0D0VtxTrueptNCfromBSB;
1597 namehist="hd0D0ptNCfromB_";
1598 titlehist="D^{0} impact par. plot, No Cuts, FromB, ";
1599 for(Int_t i=0;i<fnbins;i++){
1601 strnamept.Append("PkMss_pt");
1604 strtitlept=titlehist;
1605 strtitlept.Append(" Mass Peak, ");
1606 strtitlept+=fptbins[i];
1607 strtitlept.Append("<= pt <");
1608 strtitlept+=fptbins[i+1];
1609 strtitlept.Append(" [GeV/c]");
1611 hd0D0ptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1612 hd0D0ptNCfromBPM->SetXTitle("Impact parameter [#mum] ");
1613 hd0D0ptNCfromBPM->SetYTitle("Entries");
1614 flistNoCutsFromB->Add(hd0D0ptNCfromBPM);
1616 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1617 hMCd0D0ptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1618 hMCd0D0ptNCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
1619 hMCd0D0ptNCfromBPM->SetYTitle("Entries");
1620 flistNoCutsFromB->Add(hMCd0D0ptNCfromBPM);
1623 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1624 hd0D0VtxTrueptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1625 hd0D0VtxTrueptNCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1626 hd0D0VtxTrueptNCfromBPM->SetYTitle("Entries");
1627 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBPM);
1630 strnamept.Append("SBMss_pt");
1633 strtitlept=titlehist;
1634 strtitlept.Append(" Side Bands, ");
1635 strtitlept+=fptbins[i];
1636 strtitlept.Append("<= pt <");
1637 strtitlept+=fptbins[i+1];
1638 strtitlept.Append(" [GeV/c]");
1640 hd0D0ptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1641 hd0D0ptNCfromBSB->SetXTitle("Impact parameter [#mum] ");
1642 hd0D0ptNCfromBSB->SetYTitle("Entries");
1643 flistNoCutsFromB->Add(hd0D0ptNCfromBSB);
1645 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1646 hMCd0D0ptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1647 hMCd0D0ptNCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
1648 hMCd0D0ptNCfromBSB->SetYTitle("Entries");
1649 flistNoCutsFromB->Add(hMCd0D0ptNCfromBSB);
1651 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1652 hd0D0VtxTrueptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1653 hd0D0VtxTrueptNCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1654 hd0D0VtxTrueptNCfromBSB->SetYTitle("Entries");
1655 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBSB);
1660 //############ NO CUTS FROM DSTAR HISTOGRAMS ###########
1662 //############# global properties histos #######
1664 TH2F *hCPtaVSd0d0NCfromDstar=new TH2F("hCPtaVSd0d0NCfromDstar","hCPtaVSd0d0_NoCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
1665 TH1F *hSecVtxZNCfromDstar=new TH1F("hSecVtxZNCfromDstar","hSecVtxZ_NoCuts_FromDStar",1000,-8.,8.);
1666 TH1F *hSecVtxXNCfromDstar=new TH1F("hSecVtxXNCfromDstar","hSecVtxX_NoCuts_FromDStar",1000,-3000.,3000.);
1667 TH1F *hSecVtxYNCfromDstar=new TH1F("hSecVtxYNCfromDstar","hSecVtxY_NoCuts_FromDStar",1000,-3000.,3000.);
1668 TH2F *hSecVtxXYNCfromDstar=new TH2F("hSecVtxXYNCfromDstar","hSecVtxXY_NoCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
1669 TH1F *hSecVtxPhiNCfromDstar=new TH1F("hSecVtxPhiNCfromDstar","hSecVtxPhi_NoCuts_FromDStar",180,-180.1,180.1);
1670 TH1F *hd0singlTrackNCfromDstar=new TH1F("hd0singlTrackNCfromDstar","hd0singlTrackNoCuts_fromDstar",1000,-5000.,5000.);
1671 TH1F *hCPtaNCfromDstar=new TH1F("hCPtaNCfromDstar","hCPta_NoCuts_FromDStar",100,-1.,1.);
1672 TH1F *hd0xd0NCfromDstar=new TH1F("hd0xd0NCfromDstar","hd0xd0_NoCuts_FromDStar",1000,-100000.,100000.);
1673 TH1F *hMassTrueNCfromDstar=new TH1F("hMassTrueNCfromDstar","D^{0} MC inv. Mass No Cuts FromDStar(All momenta)",600,1.600,2.200);
1674 TH1F *hMassNCfromDstar=new TH1F("hMassNCfromDstar","D^{0} inv. Mass No Cuts FromDStar (All momenta)",600,1.600,2.200);
1675 hMassNCfromDstar->Sumw2();
1676 TH1F *hMassTrueNCfromDstarPM=new TH1F("hMassTrueNCfromDstarPM","D^{0} MC inv. Mass No Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
1677 TH1F *hMassNCfromDstarPM=new TH1F("hMassNCfromDstarPM","D^{0} inv. Mass No Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
1678 hMassNCfromDstarPM->Sumw2();
1679 TH1F *hMassTrueNCfromDstarSB=new TH1F("hMassTrueNCfromDstarSB","D^{0} MC inv. Mass in Side Bands No Cuts FromDStar(All momenta)",600,1.600,2.200);
1680 TH1F *hMassNCfromDstarSB=new TH1F("hMassNCfromDstarSB","D^{0} inv. Mass in Side Bands No Cuts FromDStar (All momenta)",600,1.600,2.200);
1681 hMassNCfromDstarSB->Sumw2();
1683 flistNoCutsFromDstar->Add(hCPtaVSd0d0NCfromDstar);
1684 flistNoCutsFromDstar->Add(hSecVtxZNCfromDstar);
1685 flistNoCutsFromDstar->Add(hSecVtxYNCfromDstar);
1686 flistNoCutsFromDstar->Add(hSecVtxXNCfromDstar);
1687 flistNoCutsFromDstar->Add(hSecVtxXYNCfromDstar);
1688 flistNoCutsFromDstar->Add(hSecVtxPhiNCfromDstar);
1689 flistNoCutsFromDstar->Add(hd0singlTrackNCfromDstar);
1690 flistNoCutsFromDstar->Add(hCPtaNCfromDstar);
1691 flistNoCutsFromDstar->Add(hd0xd0NCfromDstar);
1692 flistNoCutsFromDstar->Add(hMassTrueNCfromDstar);
1693 flistNoCutsFromDstar->Add(hMassNCfromDstar);
1694 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarPM);
1695 flistNoCutsFromDstar->Add(hMassNCfromDstarPM);
1696 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarSB);
1697 flistNoCutsFromDstar->Add(hMassNCfromDstarSB);
1702 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1703 TH1F *hdcaNCfromDstar=new TH1F("hdcaNCfromDstar","hdca_NoCuts_FromDstar",100,0.,1000.);
1704 hdcaNCfromDstar->SetXTitle("dca [#mum]");
1705 hdcaNCfromDstar->SetYTitle("Entries");
1706 TH1F *hcosthetastarNCfromDstar=new TH1F("hcosthetastarNCfromDstar","hCosThetaStar_NoCuts_FromDstar",50,-1.,1.);
1707 hcosthetastarNCfromDstar->SetXTitle("cos #theta^{*}");
1708 hcosthetastarNCfromDstar->SetYTitle("Entries");
1709 TH1F *hptD0NCfromDstar=new TH1F("hptD0NCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1710 hptD0NCfromDstar->SetXTitle("p_{t} [GeV/c]");
1711 hptD0NCfromDstar->SetYTitle("Entries");
1712 TH1F *hptD0VsMaxPtNCfromDstar=new TH1F("hptD0VsMaxPtNCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1713 TH2F *hptD0PTallsqrtNCfromDstar=new TH2F("hptD0PTallsqrtNCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1714 TH2F *hptD0PTallNCfromDstar=new TH2F("hptD0PTallNCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1715 TH2F *hptD0vsptBNCfromDstar=new TH2F("hptD0vsptBNCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1716 TH2F *hpD0vspBNCfromDstar=new TH2F("hpD0vspBNCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1717 TH2F *hptD0vsptcquarkNCfromDstar=new TH2F("hptD0vsptcquarkNCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1718 TH2F *hpD0vspcquarkNCfromDstar=new TH2F("hpD0vspcquarkNCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1719 flistNoCutsFromDstar->Add(hdcaNCfromDstar);
1720 flistNoCutsFromDstar->Add(hcosthetastarNCfromDstar);
1721 flistNoCutsFromDstar->Add(hptD0NCfromDstar);
1722 flistNoCutsFromDstar->Add(hptD0VsMaxPtNCfromDstar);
1723 flistNoCutsFromDstar->Add(hptD0PTallsqrtNCfromDstar);
1724 flistNoCutsFromDstar->Add(hptD0PTallNCfromDstar);
1725 flistNoCutsFromDstar->Add(hptD0vsptBNCfromDstar);
1726 flistNoCutsFromDstar->Add(hpD0vspBNCfromDstar);
1727 flistNoCutsFromDstar->Add(hptD0vsptcquarkNCfromDstar);
1728 flistNoCutsFromDstar->Add(hpD0vspcquarkNCfromDstar);
1730 TH1F *hd0zD0ptNCfromDstar;
1731 TH1F *hInvMassD0NCfromDstar,*hInvMassD0barNCfromDstar;
1732 TH2F *hInvMassPtNCfromDstar=new TH2F("hInvMassPtNCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1733 THnSparseF *hSparseNCfromDstar=new THnSparseF("hSparseNCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1734 hSparseNCfromDstar->SetBinEdges(0,massbins);
1735 hSparseNCfromDstar->SetBinEdges(1,massbins);
1736 hSparseNCfromDstar->SetBinEdges(2,ptbinsForNsparse);
1737 hSparseNCfromDstar->SetBinEdges(3,impparbins);
1738 hSparseNCfromDstar->SetBinEdges(4,massHypoBins);
1739 flistNoCutsFromDstar->Add(hSparseNCfromDstar);
1740 TH1F *hetaNCfromDstar;
1741 TH1F *hCosPDPBNCfromDstar;
1742 TH1F *hCosPcPDNCfromDstar;
1743 flistNoCutsFromDstar->Add(hInvMassPtNCfromDstar);
1744 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1745 TH2F *hd0D0VSd0xd0NCfromDstarpt;
1746 TH2F *hangletracksVSd0xd0NCfromDstarpt;
1747 TH2F *hangletracksVSd0D0NCfromDstarpt;
1748 TH1F *hd0xd0NCfromDstarpt;
1750 TH2F *hTOFpidNCfromDstar=new TH2F("hTOFpidNCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1751 flistNoCutsFromDstar->Add(hTOFpidNCfromDstar);
1753 for(Int_t i=0;i<fnbins;i++){
1754 namehist="hd0zD0ptNCfromDstar_pt";
1756 titlehist="d0(z) No Cuts FromDstarm ptbin=";
1758 hd0zD0ptNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1759 hd0zD0ptNCfromDstar->SetXTitle("d_{0}(z) [#mum]");
1760 hd0zD0ptNCfromDstar->SetYTitle("Entries");
1761 flistNoCutsFromDstar->Add(hd0zD0ptNCfromDstar);
1763 namehist="hInvMassD0NCfromDstar_pt";
1765 titlehist="Invariant Mass No Cuts FromDstar ptbin=";
1767 hInvMassD0NCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1768 hInvMassD0NCfromDstar->SetXTitle("Invariant Mass [GeV]");
1769 hInvMassD0NCfromDstar->SetYTitle("Entries");
1770 flistNoCutsFromDstar->Add(hInvMassD0NCfromDstar);
1773 namehist="hInvMassD0barNCfromDstar_pt";
1775 titlehist="Invariant Mass D0bar No Cuts FromDstar ptbin=";
1777 hInvMassD0barNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1778 hInvMassD0barNCfromDstar->SetXTitle("Invariant Mass [GeV]");
1779 hInvMassD0barNCfromDstar->SetYTitle("Entries");
1780 flistNoCutsFromDstar->Add(hInvMassD0barNCfromDstar);
1784 namehist="hetaNCfromDstar_pt";
1786 titlehist="eta No Cuts FromDstar ptbin=";
1788 hetaNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1789 hetaNCfromDstar->SetXTitle("Pseudorapidity");
1790 hetaNCfromDstar->SetYTitle("Entries");
1791 flistNoCutsFromDstar->Add(hetaNCfromDstar);
1793 namehist="hCosPDPBNCfromDstar_pt";
1795 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1797 hCosPDPBNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1798 hCosPDPBNCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
1799 hCosPDPBNCfromDstar->SetYTitle("Entries");
1800 flistNoCutsFromDstar->Add(hCosPDPBNCfromDstar);
1802 namehist="hCosPcPDNCfromDstar_pt";
1804 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1806 hCosPcPDNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1807 hCosPcPDNCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
1808 hCosPcPDNCfromDstar->SetYTitle("Entries");
1809 flistNoCutsFromDstar->Add(hCosPcPDNCfromDstar);
1811 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1812 namehist="hd0xd0NCfromDstar_pt";
1814 titlehist="d0xd0 No Cuts FromDstar ptbin=";
1816 hd0xd0NCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1817 hd0xd0NCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1818 hd0xd0NCfromDstarpt->SetYTitle("Entries");
1819 flistNoCutsFromDstar->Add(hd0xd0NCfromDstarpt);
1822 namehist="hd0D0VSd0xd0NCfromDstar_pt";
1824 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromDstar ptbin=";
1826 hd0D0VSd0xd0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1827 hd0D0VSd0xd0NCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1828 hd0D0VSd0xd0NCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1829 flistNoCutsFromDstar->Add(hd0D0VSd0xd0NCfromDstarpt);
1832 namehist="hangletracksVSd0xd0NCfromDstar_pt";
1834 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromDstar ptbin=";
1836 hangletracksVSd0xd0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1837 hangletracksVSd0xd0NCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1838 hangletracksVSd0xd0NCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
1839 flistNoCutsFromDstar->Add(hangletracksVSd0xd0NCfromDstarpt);
1842 namehist="hangletracksVSd0D0NCfromDstar_pt";
1844 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts FromDstar ptbin=";
1846 hangletracksVSd0D0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1847 hangletracksVSd0D0NCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1848 hangletracksVSd0D0NCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
1849 flistNoCutsFromDstar->Add(hangletracksVSd0D0NCfromDstarpt);
1852 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1853 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1856 //########## d0 D0 histos #############
1857 TH1F *hd0D0NCfromDstPM = new TH1F("hd0D0NCfromDstarPM","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1858 hd0D0NCfromDstPM->SetXTitle("Impact parameter [#mum]");
1859 hd0D0NCfromDstPM->SetYTitle("Entries");
1861 TH1F *hd0D0VtxTrueNCfromDstPM = new TH1F("hd0D0VtxTrueNCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1862 hd0D0VtxTrueNCfromDstPM->SetXTitle("Impact parameter [#mum]");
1863 hd0D0VtxTrueNCfromDstPM->SetYTitle("Entries");
1865 TH1F *hMCd0D0NCfromDstPM = new TH1F("hMCd0D0NCfromDstarPM","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1866 hMCd0D0NCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
1867 hMCd0D0NCfromDstPM->SetYTitle("Entries");
1869 TH1F *hd0D0NCfromDstSB = new TH1F("hd0D0NCfromDstarSB","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1870 hd0D0NCfromDstSB->SetXTitle("Impact parameter [#mum]");
1871 hd0D0NCfromDstSB->SetYTitle("Entries");
1873 TH1F *hd0D0VtxTrueNCfromDstSB = new TH1F("hd0D0VtxTrueNCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1874 hd0D0VtxTrueNCfromDstSB->SetXTitle("Impact parameter [#mum]");
1875 hd0D0VtxTrueNCfromDstSB->SetYTitle("Entries");
1877 TH1F *hMCd0D0NCfromDstSB = new TH1F("hMCd0D0NCfromDstarSB","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1878 hMCd0D0NCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
1879 hMCd0D0NCfromDstSB->SetYTitle("Entries");
1881 flistNoCutsFromDstar->Add(hd0D0NCfromDstPM);
1882 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstPM);
1883 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstPM);
1884 flistNoCutsFromDstar->Add(hd0D0NCfromDstSB);
1885 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstSB);
1886 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstSB);
1888 TH1F *hd0D0ptNCfromDstPM;
1889 TH1F *hMCd0D0ptNCfromDstPM;
1890 TH1F *hd0D0VtxTrueptNCfromDstPM;
1891 TH1F *hd0D0ptNCfromDstSB;
1892 TH1F *hMCd0D0ptNCfromDstSB;
1893 TH1F *hd0D0VtxTrueptNCfromDstSB;
1894 namehist="hd0D0ptNCfromDstar_";
1895 titlehist="D^{0} impact par. plot, No Cuts, FromDStar, ";
1896 for(Int_t i=0;i<fnbins;i++){
1898 strnamept.Append("PkMss_pt");
1901 strtitlept=titlehist;
1902 strtitlept.Append(" Mass Peak, ");
1903 strtitlept+=fptbins[i];
1904 strtitlept.Append("<= pt <");
1905 strtitlept+=fptbins[i+1];
1906 strtitlept.Append(" [GeV/c]");
1908 hd0D0ptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1909 hd0D0ptNCfromDstPM->SetXTitle("Impact parameter [#mum] ");
1910 hd0D0ptNCfromDstPM->SetYTitle("Entries");
1911 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstPM);
1913 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1914 hMCd0D0ptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1915 hMCd0D0ptNCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
1916 hMCd0D0ptNCfromDstPM->SetYTitle("Entries");
1917 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstPM);
1920 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1921 hd0D0VtxTrueptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1922 hd0D0VtxTrueptNCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1923 hd0D0VtxTrueptNCfromDstPM->SetYTitle("Entries");
1924 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstPM);
1927 strnamept.Append("SBMss_pt");
1930 strtitlept=titlehist;
1931 strtitlept.Append(" Side Bands, ");
1932 strtitlept+=fptbins[i];
1933 strtitlept.Append("<= pt <");
1934 strtitlept+=fptbins[i+1];
1935 strtitlept.Append(" [GeV/c]");
1937 hd0D0ptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1938 hd0D0ptNCfromDstSB->SetXTitle("Impact parameter [#mum] ");
1939 hd0D0ptNCfromDstSB->SetYTitle("Entries");
1940 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstSB);
1942 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1943 hMCd0D0ptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1944 hMCd0D0ptNCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
1945 hMCd0D0ptNCfromDstSB->SetYTitle("Entries");
1946 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstSB);
1948 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1949 hd0D0VtxTrueptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1950 hd0D0VtxTrueptNCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1951 hd0D0VtxTrueptNCfromDstSB->SetYTitle("Entries");
1952 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstSB);
1956 //############ NO CUTS OTHER HISTOGRAMS ###########
1958 //########### global properties histos ###########
1960 TH2F *hCPtaVSd0d0NCother=new TH2F("hCPtaVSd0d0NCother","hCPtaVSd0d0_NoCuts_other",1000,-100000.,100000.,100,-1.,1.);
1961 TH1F *hSecVtxZNCother=new TH1F("hSecVtxZNCother","hSecVtxZ_NoCuts_other",1000,-8.,8.);
1962 TH1F *hSecVtxXNCother=new TH1F("hSecVtxXNCother","hSecVtxX_NoCuts_other",1000,-3000.,3000.);
1963 TH1F *hSecVtxYNCother=new TH1F("hSecVtxYNCother","hSecVtxY_NoCuts_other",1000,-3000.,3000.);
1964 TH2F *hSecVtxXYNCother=new TH2F("hSecVtxXYNCother","hSecVtxXY_NoCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
1965 TH1F *hSecVtxPhiNCother=new TH1F("hSecVtxPhiNCother","hSecVtxPhi_NoCuts_other",180,-180.1,180.1);
1966 TH1F *hd0singlTrackNCother=new TH1F("hd0singlTrackNCother","hd0singlTrackNoCuts_Other",1000,-5000.,5000.);
1967 TH1F *hCPtaNCother=new TH1F("hCPtaNCother","hCPta_NoCuts_other",100,-1.,1.);
1968 TH1F *hd0xd0NCother=new TH1F("hd0xd0NCother","hd0xd0_NoCuts_other",1000,-100000.,100000.);
1969 TH1F *hMassTrueNCother=new TH1F("hMassTrueNCother","D^{0} MC inv. Mass No Cuts other(All momenta)",600,1.600,2.200);
1970 TH1F *hMassNCother=new TH1F("hMassNCother","D^{0} inv. Mass No Cuts other (All momenta)",600,1.600,2.200);
1971 hMassNCother->Sumw2();
1972 TH1F *hMassTrueNCotherPM=new TH1F("hMassTrueNCotherPM","D^{0} MC inv. Mass No Cuts Other, Mass Peak. (All momenta)",600,1.600,2.200);
1973 TH1F *hMassNCotherPM=new TH1F("hMassNCotherPM","D^{0} inv. Mass No Cuts Other (All momenta), MassPeak",600,1.600,2.200);
1974 hMassNCotherPM->Sumw2();
1975 TH1F *hMassTrueNCotherSB=new TH1F("hMassTrueNCotherSB","D^{0} MC inv. Mass in Side Bands No Cuts other(All momenta)",600,1.600,2.200);
1976 TH1F *hMassNCotherSB=new TH1F("hMassNCotherSB","D^{0} inv. Mass in Side Bands No Cuts other (All momenta)",600,1.600,2.200);
1977 hMassNCotherSB->Sumw2();
1979 flistNoCutsOther->Add(hCPtaVSd0d0NCother);
1980 flistNoCutsOther->Add(hSecVtxZNCother);
1981 flistNoCutsOther->Add(hSecVtxYNCother);
1982 flistNoCutsOther->Add(hSecVtxXNCother);
1983 flistNoCutsOther->Add(hSecVtxXYNCother);
1984 flistNoCutsOther->Add(hSecVtxPhiNCother);
1985 flistNoCutsOther->Add(hd0singlTrackNCother);
1986 flistNoCutsOther->Add(hCPtaNCother);
1987 flistNoCutsOther->Add(hd0xd0NCother);
1988 flistNoCutsOther->Add(hMassTrueNCother);
1989 flistNoCutsOther->Add(hMassNCother);
1990 flistNoCutsOther->Add(hMassTrueNCotherPM);
1991 flistNoCutsOther->Add(hMassNCotherPM);
1992 flistNoCutsOther->Add(hMassTrueNCotherSB);
1993 flistNoCutsOther->Add(hMassNCotherSB);
1997 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1998 TH1F *hdcaNCother=new TH1F("hdcaNCother","hdca_NoCuts_Other",100,0.,1000.);
1999 hdcaNCother->SetXTitle("dca [#mum]");
2000 hdcaNCother->SetYTitle("Entries");
2001 TH1F *hcosthetastarNCother=new TH1F("hcosthetastarNCother","hCosThetaStar_NoCuts_Other",50,-1.,1.);
2002 hcosthetastarNCother->SetXTitle("cos #theta^{*}");
2003 hcosthetastarNCother->SetYTitle("Entries");
2004 TH1F *hptD0NCother=new TH1F("hptD0NCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2005 hptD0NCother->SetXTitle("p_{t} [GeV/c]");
2006 hptD0NCother->SetYTitle("Entries");
2007 TH1F *hptD0VsMaxPtNCother=new TH1F("hptD0VsMaxPtNCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2008 TH2F *hptD0PTallsqrtNCother=new TH2F("hptD0PTallsqrtNCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2009 TH2F *hptD0PTallNCother=new TH2F("hptD0PTallNCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2010 TH2F *hptD0vsptBNCother=new TH2F("hptD0vsptBNCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2011 TH2F *hpD0vspBNCother=new TH2F("hpD0vspBNCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2012 TH2F *hptD0vsptcquarkNCother=new TH2F("hptD0vsptcquarkNCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2013 TH2F *hpD0vspcquarkNCother=new TH2F("hpD0vspcquarkNCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2014 flistNoCutsOther->Add(hdcaNCother);
2015 flistNoCutsOther->Add(hcosthetastarNCother);
2016 flistNoCutsOther->Add(hptD0NCother);
2017 flistNoCutsOther->Add(hptD0VsMaxPtNCother);
2018 flistNoCutsOther->Add(hptD0PTallsqrtNCother);
2019 flistNoCutsOther->Add(hptD0PTallNCother);
2020 flistNoCutsOther->Add(hptD0vsptBNCother);
2021 flistNoCutsOther->Add(hpD0vspBNCother);
2022 flistNoCutsOther->Add(hptD0vsptcquarkNCother);
2023 flistNoCutsOther->Add(hpD0vspcquarkNCother);
2025 TH1F *hd0zD0ptNCother;
2026 TH1F *hInvMassD0NCother,*hInvMassD0barNCother;
2027 TH2F *hInvMassPtNCother=new TH2F("hInvMassPtNCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2028 THnSparseF *hSparseNCother=new THnSparseF("hSparseNCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2029 hSparseNCother->SetBinEdges(0,massbins);
2030 hSparseNCother->SetBinEdges(1,massbins);
2031 hSparseNCother->SetBinEdges(2,ptbinsForNsparse);
2032 hSparseNCother->SetBinEdges(3,impparbins);
2033 hSparseNCother->SetBinEdges(4,massHypoBins);
2034 flistNoCutsOther->Add(hSparseNCother);
2036 TH1F *hCosPDPBNCother;
2037 TH1F *hCosPcPDNCother;
2038 flistNoCutsOther->Add(hInvMassPtNCother);
2039 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2040 TH2F *hd0D0VSd0xd0NCotherpt;
2041 TH2F *hangletracksVSd0xd0NCotherpt;
2042 TH2F *hangletracksVSd0D0NCotherpt;
2043 TH1F *hd0xd0NCotherpt;
2045 TH2F *hTOFpidNCother=new TH2F("hTOFpidNCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2046 flistNoCutsOther->Add(hTOFpidNCother);
2048 for(Int_t i=0;i<fnbins;i++){
2049 namehist="hd0zD0ptNCother_pt";
2051 titlehist="d0(z) No Cuts Otherm ptbin=";
2053 hd0zD0ptNCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2054 hd0zD0ptNCother->SetXTitle("d_{0}(z) [#mum]");
2055 hd0zD0ptNCother->SetYTitle("Entries");
2056 flistNoCutsOther->Add(hd0zD0ptNCother);
2058 namehist="hInvMassD0NCother_pt";
2060 titlehist="Invariant Mass No Cuts Other ptbin=";
2062 hInvMassD0NCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2063 hInvMassD0NCother->SetXTitle("Invariant Mass [GeV]");
2064 hInvMassD0NCother->SetYTitle("Entries");
2065 flistNoCutsOther->Add(hInvMassD0NCother);
2068 namehist="hInvMassD0barNCother_pt";
2070 titlehist="Invariant Mass D0bar No Cuts Other ptbin=";
2072 hInvMassD0barNCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2073 hInvMassD0barNCother->SetXTitle("Invariant Mass [GeV]");
2074 hInvMassD0barNCother->SetYTitle("Entries");
2075 flistNoCutsOther->Add(hInvMassD0barNCother);
2078 namehist="hetaNCother_pt";
2080 titlehist="eta No Cuts Other ptbin=";
2082 hetaNCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2083 hetaNCother->SetXTitle("Pseudorapidity");
2084 hetaNCother->SetYTitle("Entries");
2085 flistNoCutsOther->Add(hetaNCother);
2087 namehist="hCosPDPBNCother_pt";
2089 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2091 hCosPDPBNCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2092 hCosPDPBNCother->SetXTitle("Cosine between D0 momentum and B momentum");
2093 hCosPDPBNCother->SetYTitle("Entries");
2094 flistNoCutsOther->Add(hCosPDPBNCother);
2096 namehist="hCosPcPDNCother_pt";
2098 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2100 hCosPcPDNCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2101 hCosPcPDNCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
2102 hCosPcPDNCother->SetYTitle("Entries");
2103 flistNoCutsOther->Add(hCosPcPDNCother);
2106 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2107 namehist="hd0xd0NCother_pt";
2109 titlehist="d0xd0 No Cuts Other ptbin=";
2111 hd0xd0NCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2112 hd0xd0NCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2113 hd0xd0NCotherpt->SetYTitle("Entries");
2114 flistNoCutsOther->Add(hd0xd0NCotherpt);
2117 namehist="hd0D0VSd0xd0NCother_pt";
2119 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Other ptbin=";
2121 hd0D0VSd0xd0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2122 hd0D0VSd0xd0NCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2123 hd0D0VSd0xd0NCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2124 flistNoCutsOther->Add(hd0D0VSd0xd0NCotherpt);
2127 namehist="hangletracksVSd0xd0NCother_pt";
2129 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Other ptbin=";
2131 hangletracksVSd0xd0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2132 hangletracksVSd0xd0NCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2133 hangletracksVSd0xd0NCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
2134 flistNoCutsOther->Add(hangletracksVSd0xd0NCotherpt);
2137 namehist="hangletracksVSd0D0NCother_pt";
2139 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Other ptbin=";
2141 hangletracksVSd0D0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2142 hangletracksVSd0D0NCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2143 hangletracksVSd0D0NCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
2144 flistNoCutsOther->Add(hangletracksVSd0D0NCotherpt);
2147 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2148 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2153 //############# d0 D0 histos ###############Ã
2154 TH1F *hd0D0NCotherPM = new TH1F("hd0D0NCotherPM","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2155 hd0D0NCotherPM->SetXTitle("Impact parameter [#mum]");
2156 hd0D0NCotherPM->SetYTitle("Entries");
2158 TH1F *hd0D0VtxTrueNCotherPM = new TH1F("hd0D0VtxTrueNCotherPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2159 hd0D0VtxTrueNCotherPM->SetXTitle("Impact parameter [#mum]");
2160 hd0D0VtxTrueNCotherPM->SetYTitle("Entries");
2162 TH1F *hMCd0D0NCotherPM = new TH1F("hMCd0D0NCotherPM","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2163 hMCd0D0NCotherPM->SetXTitle("MC Impact parameter [#mum]");
2164 hMCd0D0NCotherPM->SetYTitle("Entries");
2166 TH1F *hd0D0NCotherSB = new TH1F("hd0D0NCotherSB","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2167 hd0D0NCotherSB->SetXTitle("Impact parameter [#mum]");
2168 hd0D0NCotherSB->SetYTitle("Entries");
2170 TH1F *hd0D0VtxTrueNCotherSB = new TH1F("hd0D0VtxTrueNCotherSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2171 hd0D0VtxTrueNCotherSB->SetXTitle("Impact parameter [#mum]");
2172 hd0D0VtxTrueNCotherSB->SetYTitle("Entries");
2174 TH1F *hMCd0D0NCotherSB = new TH1F("hMCd0D0NCotherSB","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2175 hMCd0D0NCotherSB->SetXTitle("MC Impact parameter [#mum]");
2176 hMCd0D0NCotherSB->SetYTitle("Entries");
2178 flistNoCutsOther->Add(hd0D0NCotherPM);
2179 flistNoCutsOther->Add(hd0D0VtxTrueNCotherPM);
2180 flistNoCutsOther->Add(hMCd0D0NCotherPM);
2181 flistNoCutsOther->Add(hd0D0NCotherSB);
2182 flistNoCutsOther->Add(hd0D0VtxTrueNCotherSB);
2183 flistNoCutsOther->Add(hMCd0D0NCotherSB);
2185 TH1F *hd0D0ptNCotherPM;
2186 TH1F *hMCd0D0ptNCotherPM;
2187 TH1F *hd0D0VtxTrueptNCotherPM;
2188 TH1F *hd0D0ptNCotherSB;
2189 TH1F *hMCd0D0ptNCotherSB;
2190 TH1F *hd0D0VtxTrueptNCotherSB;
2191 namehist="hd0D0ptNCother_";
2192 titlehist="D^{0} impact par. plot, No Cuts, Other, ";
2193 for(Int_t i=0;i<fnbins;i++){
2195 strnamept.Append("PkMss_pt");
2198 strtitlept=titlehist;
2199 strtitlept.Append(" Mass Peak, ");
2200 strtitlept+=fptbins[i];
2201 strtitlept.Append("<= pt <");
2202 strtitlept+=fptbins[i+1];
2203 strtitlept.Append(" [GeV/c]");
2205 hd0D0ptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2206 hd0D0ptNCotherPM->SetXTitle("Impact parameter [#mum] ");
2207 hd0D0ptNCotherPM->SetYTitle("Entries");
2208 flistNoCutsOther->Add(hd0D0ptNCotherPM);
2210 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2211 hMCd0D0ptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2212 hMCd0D0ptNCotherPM->SetXTitle("MC Impact parameter [#mum] ");
2213 hMCd0D0ptNCotherPM->SetYTitle("Entries");
2214 flistNoCutsOther->Add(hMCd0D0ptNCotherPM);
2217 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2218 hd0D0VtxTrueptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2219 hd0D0VtxTrueptNCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2220 hd0D0VtxTrueptNCotherPM->SetYTitle("Entries");
2221 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherPM);
2224 strnamept.Append("SBMss_pt");
2227 strtitlept=titlehist;
2228 strtitlept.Append(" Side Bands, ");
2229 strtitlept+=fptbins[i];
2230 strtitlept.Append("<= pt <");
2231 strtitlept+=fptbins[i+1];
2232 strtitlept.Append(" [GeV/c]");
2234 hd0D0ptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2235 hd0D0ptNCotherSB->SetXTitle("Impact parameter [#mum] ");
2236 hd0D0ptNCotherSB->SetYTitle("Entries");
2237 flistNoCutsOther->Add(hd0D0ptNCotherSB);
2239 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2240 hMCd0D0ptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2241 hMCd0D0ptNCotherSB->SetXTitle("MC Impact parameter [#mum] ");
2242 hMCd0D0ptNCotherSB->SetYTitle("Entries");
2243 flistNoCutsOther->Add(hMCd0D0ptNCotherSB);
2245 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2246 hd0D0VtxTrueptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2247 hd0D0VtxTrueptNCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2248 hd0D0VtxTrueptNCotherSB->SetYTitle("Entries");
2249 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherSB);
2253 //################################################################################################
2255 // HISTOS FOR LOOSE CUTS #
2257 //################################################################################################
2259 //############ LOOSE CUTS SIGNAL HISTOGRAMS ###############
2261 // ####### global properties histo ############
2263 TH2F *hCPtaVSd0d0LSCsign=new TH2F("hCPtaVSd0d0LSCsign","hCPtaVSd0d0_LooseCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
2264 TH1F *hSecVtxZLSCsign=new TH1F("hSecVtxZLSCsign","hSecVtxZ_LooseCuts_Signal",1000,-8.,8.);
2265 TH1F *hSecVtxXLSCsign=new TH1F("hSecVtxXLSCsign","hSecVtxX_LooseCuts_Signal",1000,-3000.,3000.);
2266 TH1F *hSecVtxYLSCsign=new TH1F("hSecVtxYLSCsign","hSecVtxY_LooseCuts_Signal",1000,-3000.,3000.);
2267 TH2F *hSecVtxXYLSCsign=new TH2F("hSecVtxXYLSCsign","hSecVtxXY_LooseCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
2268 TH1F *hSecVtxPhiLSCsign=new TH1F("hSecVtxPhiLSCsign","hSecVtxPhi_LooseCuts_Signal",180,-180.1,180.1);
2269 TH1F *hd0singlTrackLSCsign=new TH1F("hd0singlTrackLSCsign","hd0singlTrackLooseCuts_Signal",1000,-5000.,5000.);
2270 TH1F *hCPtaLSCsign=new TH1F("hCPtaLSCsign","hCPta_LooseCuts_Signal",100,-1.,1.);
2271 TH1F *hd0xd0LSCsign=new TH1F("hd0xd0LSCsign","hd0xd0_LooseCuts_Signal",1000,-100000.,100000.);
2272 TH1F *hMassTrueLSCsign=new TH1F("hMassTrueLSCsign","D^{0} MC inv. Mass Loose Cuts Signal(All momenta)",600,1.600,2.200);
2273 TH1F *hMassLSCsign=new TH1F("hMassLSCsign","D^{0} inv. Mass Loose Cuts Signal (All momenta)",600,1.600,2.200);
2274 hMassLSCsign->Sumw2();
2275 TH1F *hMassTrueLSCsignPM=new TH1F("hMassTrueLSCsignPM","D^{0} MC inv. Mass Loose Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
2276 TH1F *hMassLSCsignPM=new TH1F("hMassLSCsignPM","D^{0} inv. Mass Loose Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
2277 hMassLSCsignPM->Sumw2();
2278 TH1F *hMassTrueLSCsignSB=new TH1F("hMassTrueLSCsignSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Signal(All momenta)",600,1.600,2.200);
2279 TH1F *hMassLSCsignSB=new TH1F("hMassLSCsignSB","D^{0} inv. Mass in Side Bands Loose Cuts Signal (All momenta)",600,1.600,2.200);
2280 hMassLSCsignSB->Sumw2();
2282 flistLsCutsSignal->Add(hCPtaVSd0d0LSCsign);
2283 flistLsCutsSignal->Add(hSecVtxZLSCsign);
2284 flistLsCutsSignal->Add(hSecVtxYLSCsign);
2285 flistLsCutsSignal->Add(hSecVtxXLSCsign);
2286 flistLsCutsSignal->Add(hSecVtxXYLSCsign);
2287 flistLsCutsSignal->Add(hSecVtxPhiLSCsign);
2288 flistLsCutsSignal->Add(hd0singlTrackLSCsign);
2289 flistLsCutsSignal->Add(hCPtaLSCsign);
2290 flistLsCutsSignal->Add(hd0xd0LSCsign);
2291 flistLsCutsSignal->Add(hMassTrueLSCsign);
2292 flistLsCutsSignal->Add(hMassLSCsign);
2293 flistLsCutsSignal->Add(hMassTrueLSCsignPM);
2294 flistLsCutsSignal->Add(hMassLSCsignPM);
2295 flistLsCutsSignal->Add(hMassTrueLSCsignSB);
2296 flistLsCutsSignal->Add(hMassLSCsignSB);
2299 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2300 TH1F *hdcaLSCsign=new TH1F("hdcaLSCsign","hdca_LooseCuts_Sign",100,0.,1000.);
2301 hdcaLSCsign->SetXTitle("dca [#mum]");
2302 hdcaLSCsign->SetYTitle("Entries");
2303 TH1F *hcosthetastarLSCsign=new TH1F("hcosthetastarLSCsign","hCosThetaStar_LooseCuts_Sign",50,-1.,1.);
2304 hcosthetastarLSCsign->SetXTitle("cos #theta^{*}");
2305 hcosthetastarLSCsign->SetYTitle("Entries");
2306 TH1F *hptD0LSCsign=new TH1F("hptD0LSCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2307 hptD0LSCsign->SetXTitle("p_{t} [GeV/c]");
2308 hptD0LSCsign->SetYTitle("Entries");
2309 TH1F *hptD0VsMaxPtLSCsign=new TH1F("hptD0VsMaxPtLSCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2310 TH2F *hptD0PTallsqrtLSCsign=new TH2F("hptD0PTallsqrtLSCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2311 TH2F *hptD0PTallLSCsign=new TH2F("hptD0PTallLSCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2312 TH2F *hptD0vsptBLSCsign=new TH2F("hptD0vsptBLSCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2313 TH2F *hpD0vspBLSCsign=new TH2F("hpD0vspBLSCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2314 TH2F *hptD0vsptcquarkLSCsign=new TH2F("hptD0vsptcquarkLSCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2315 TH2F *hpD0vspcquarkLSCsign=new TH2F("hpD0vspcquarkLSCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2316 flistLsCutsSignal->Add(hdcaLSCsign);
2317 flistLsCutsSignal->Add(hcosthetastarLSCsign);
2318 flistLsCutsSignal->Add(hptD0LSCsign);
2319 flistLsCutsSignal->Add(hptD0VsMaxPtLSCsign);
2320 flistLsCutsSignal->Add(hptD0PTallsqrtLSCsign);
2321 flistLsCutsSignal->Add(hptD0PTallLSCsign);
2322 flistLsCutsSignal->Add(hptD0vsptBLSCsign);
2323 flistLsCutsSignal->Add(hpD0vspBLSCsign);
2324 flistLsCutsSignal->Add(hptD0vsptcquarkLSCsign);
2325 flistLsCutsSignal->Add(hpD0vspcquarkLSCsign);
2327 TH1F *hd0zD0ptLSCsign;
2328 TH1F *hInvMassD0LSCsign,*hInvMassD0barLSCsign;
2329 TH2F *hInvMassPtLSCsign=new TH2F("hInvMassPtLSCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2330 THnSparseF *hSparseLSCsign=new THnSparseF("hSparseLSCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2331 hSparseLSCsign->SetBinEdges(0,massbins);
2332 hSparseLSCsign->SetBinEdges(1,massbins);
2333 hSparseLSCsign->SetBinEdges(2,ptbinsForNsparse);
2334 hSparseLSCsign->SetBinEdges(3,impparbins);
2335 hSparseLSCsign->SetBinEdges(4,massHypoBins);
2336 flistLsCutsSignal->Add(hSparseLSCsign);
2338 TH1F *hCosPDPBLSCsign;
2339 TH1F *hCosPcPDLSCsign;
2340 flistLsCutsSignal->Add(hInvMassPtLSCsign);
2344 THnSparseF *hSparseCxyLxyLSCsign=new THnSparseF("hSparseCxyLxyLSCsign","Candidate Mass;massD0;Pt;CosXY;Lxy",4,nbinsSparsCxyLxy,binLowLimitSparseCxyLxy,binUpLimitSparseCxyLxy);
2345 hSparseCxyLxyLSCsign->SetBinEdges(1,ptbinlimitsCxyLxy);
2346 hSparseCxyLxyLSCsign->GetAxis(0)->SetName("mass");
2347 hSparseCxyLxyLSCsign->GetAxis(0)->SetTitle("Invariant Mass (K#pi) [GeV/c^{2}]");
2348 hSparseCxyLxyLSCsign->GetAxis(1)->SetName("pt");
2349 hSparseCxyLxyLSCsign->GetAxis(1)->SetTitle("p_{t} [GeV/c]");
2350 hSparseCxyLxyLSCsign->GetAxis(2)->SetName("CosPointXY");
2351 hSparseCxyLxyLSCsign->GetAxis(2)->SetTitle("Cos#theta_{point}^{XY}");
2352 hSparseCxyLxyLSCsign->GetAxis(3)->SetName("NormDecLengthXY");
2353 hSparseCxyLxyLSCsign->GetAxis(3)->SetTitle("Normalized XY decay length");
2355 flistLsCutsSignal->Add(hSparseCxyLxyLSCsign);
2356 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2357 TH2F *hd0D0VSd0xd0LSCsignpt;
2358 TH2F *hangletracksVSd0xd0LSCsignpt;
2359 TH2F *hangletracksVSd0D0LSCsignpt;
2360 TH1F *hd0xd0LSCsignpt;
2361 TH1F *hPhiHistPMLSCsignpt,*hPhiHistSBLSCsignpt;
2363 TH2F *hTOFpidLSCsign=new TH2F("hTOFpidLSCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2364 flistLsCutsSignal->Add(hTOFpidLSCsign);
2366 for(Int_t i=0;i<fnbins;i++){
2368 namehist="hPhiHistPMLSCsign_pt";
2370 titlehist="Azimuthal correlation LS Cuts Sign PM ptbin=";
2372 hPhiHistPMLSCsignpt=new TH1F(namehist.Data(),titlehist.Data(),100,-3.15,3.15);
2373 hPhiHistPMLSCsignpt->Sumw2();
2374 flistLsCutsSignal->Add(hPhiHistPMLSCsignpt);
2376 namehist="hPhiHistSBLSCsign_pt";
2378 titlehist="Azimuthal correlation LS Cuts Sign SB ptbin=";
2380 hPhiHistSBLSCsignpt=new TH1F(namehist.Data(),titlehist.Data(),100,-3.15,3.15);
2381 hPhiHistSBLSCsignpt->Sumw2();
2382 flistLsCutsSignal->Add(hPhiHistSBLSCsignpt);
2386 namehist="hd0zD0ptLSCsign_pt";
2388 titlehist="d0(z) Loose Cuts Signm ptbin=";
2390 hd0zD0ptLSCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2391 hd0zD0ptLSCsign->SetXTitle("d_{0}(z) [#mum]");
2392 hd0zD0ptLSCsign->SetYTitle("Entries");
2393 flistLsCutsSignal->Add(hd0zD0ptLSCsign);
2395 namehist="hInvMassD0LSCsign_pt";
2397 titlehist="Invariant Mass Loose Cuts Sign ptbin=";
2399 hInvMassD0LSCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2400 hInvMassD0LSCsign->SetXTitle("Invariant Mass [GeV]");
2401 hInvMassD0LSCsign->SetYTitle("Entries");
2402 flistLsCutsSignal->Add(hInvMassD0LSCsign);
2405 namehist="hInvMassD0barLSCsign_pt";
2407 titlehist="Invariant Mass D0bar Loose Cuts Signal ptbin=";
2409 hInvMassD0barLSCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2410 hInvMassD0barLSCsign->SetXTitle("Invariant Mass [GeV]");
2411 hInvMassD0barLSCsign->SetYTitle("Entries");
2412 flistLsCutsSignal->Add(hInvMassD0barLSCsign);
2414 namehist="hetaLSCsign_pt";
2416 titlehist="eta Loose Cuts Sign ptbin=";
2418 hetaLSCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2419 hetaLSCsign->SetXTitle("Pseudorapidity");
2420 hetaLSCsign->SetYTitle("Entries");
2421 flistLsCutsSignal->Add(hetaLSCsign);
2423 namehist="hCosPDPBLSCsign_pt";
2425 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2427 hCosPDPBLSCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2428 hCosPDPBLSCsign->SetXTitle("Cosine between D0 momentum and B momentum");
2429 hCosPDPBLSCsign->SetYTitle("Entries");
2430 flistLsCutsSignal->Add(hCosPDPBLSCsign);
2432 namehist="hCosPcPDLSCsign_pt";
2434 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2436 hCosPcPDLSCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2437 hCosPcPDLSCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
2438 hCosPcPDLSCsign->SetYTitle("Entries");
2439 flistLsCutsSignal->Add(hCosPcPDLSCsign);
2442 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2443 namehist="hd0xd0LSCsign_pt";
2445 titlehist="d0xd0 Loose Cuts Sign ptbin=";
2447 hd0xd0LSCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2448 hd0xd0LSCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2449 hd0xd0LSCsignpt->SetYTitle("Entries");
2450 flistLsCutsSignal->Add(hd0xd0LSCsignpt);
2453 namehist="hd0D0VSd0xd0LSCsign_pt";
2455 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Sign ptbin=";
2457 hd0D0VSd0xd0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2458 hd0D0VSd0xd0LSCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2459 hd0D0VSd0xd0LSCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2460 flistLsCutsSignal->Add(hd0D0VSd0xd0LSCsignpt);
2463 namehist="hangletracksVSd0xd0LSCsign_pt";
2465 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Sign ptbin=";
2467 hangletracksVSd0xd0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2468 hangletracksVSd0xd0LSCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2469 hangletracksVSd0xd0LSCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
2470 flistLsCutsSignal->Add(hangletracksVSd0xd0LSCsignpt);
2473 namehist="hangletracksVSd0D0LSCsign_pt";
2475 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Sign ptbin=";
2477 hangletracksVSd0D0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2478 hangletracksVSd0D0LSCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2479 hangletracksVSd0D0LSCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
2480 flistLsCutsSignal->Add(hangletracksVSd0D0LSCsignpt);
2484 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2485 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2488 // ####### d0 D0 histos ############
2489 TH1F *hd0D0LSCsignPM = new TH1F("hd0D0LSCsignPM","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2490 hd0D0LSCsignPM->SetXTitle("Impact parameter [#mum]");
2491 hd0D0LSCsignPM->SetYTitle("Entries");
2493 TH1F *hd0D0VtxTrueLSCsignPM = new TH1F("hd0D0VtxTrueLSCsignPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2494 hd0D0VtxTrueLSCsignPM->SetXTitle("Impact parameter [#mum]");
2495 hd0D0VtxTrueLSCsignPM->SetYTitle("Entries");
2497 TH1F *hMCd0D0LSCsignPM = new TH1F("hMCd0D0LSCsignPM","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2498 hMCd0D0LSCsignPM->SetXTitle("MC Impact parameter [#mum]");
2499 hMCd0D0LSCsignPM->SetYTitle("Entries");
2501 TH1F *hd0D0LSCsignSB = new TH1F("hd0D0LSCsignSB","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2502 hd0D0LSCsignSB->SetXTitle("Impact parameter [#mum]");
2503 hd0D0LSCsignSB->SetYTitle("Entries");
2505 TH1F *hd0D0VtxTrueLSCsignSB = new TH1F("hd0D0VtxTrueLSCsignSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2506 hd0D0VtxTrueLSCsignSB->SetXTitle("Impact parameter [#mum]");
2507 hd0D0VtxTrueLSCsignSB->SetYTitle("Entries");
2509 TH1F *hMCd0D0LSCsignSB = new TH1F("hMCd0D0LSCsignSB","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2510 hMCd0D0LSCsignSB->SetXTitle("MC Impact parameter [#mum]");
2511 hMCd0D0LSCsignSB->SetYTitle("Entries");
2513 flistLsCutsSignal->Add(hd0D0LSCsignPM);
2514 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignPM);
2515 flistLsCutsSignal->Add(hMCd0D0LSCsignPM);
2516 flistLsCutsSignal->Add(hd0D0LSCsignSB);
2517 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignSB);
2518 flistLsCutsSignal->Add(hMCd0D0LSCsignSB);
2520 TH1F *hd0D0ptLSCsignPM;
2521 TH1F *hMCd0D0ptLSCsignPM;
2522 TH1F *hd0D0VtxTrueptLSCsignPM;
2523 TH1F *hd0D0ptLSCsignSB;
2524 TH1F *hMCd0D0ptLSCsignSB;
2525 TH1F *hd0D0VtxTrueptLSCsignSB;
2526 namehist="hd0D0ptLSCsign_";
2527 titlehist="D^{0} impact par. plot, Loose Cuts, Signal, ";
2528 for(Int_t i=0;i<fnbins;i++){
2530 strnamept.Append("PkMss_pt");
2533 strtitlept=titlehist;
2534 strtitlept.Append(" Mass Peak, ");
2535 strtitlept+=fptbins[i];
2536 strtitlept.Append("<= pt <");
2537 strtitlept+=fptbins[i+1];
2538 strtitlept.Append(" [GeV/c]");
2540 hd0D0ptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2541 hd0D0ptLSCsignPM->SetXTitle("Impact parameter [#mum] ");
2542 hd0D0ptLSCsignPM->SetYTitle("Entries");
2543 flistLsCutsSignal->Add(hd0D0ptLSCsignPM);
2545 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2546 hMCd0D0ptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2547 hMCd0D0ptLSCsignPM->SetXTitle("MC Impact parameter [#mum] ");
2548 hMCd0D0ptLSCsignPM->SetYTitle("Entries");
2549 flistLsCutsSignal->Add(hMCd0D0ptLSCsignPM);
2552 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2553 hd0D0VtxTrueptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2554 hd0D0VtxTrueptLSCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2555 hd0D0VtxTrueptLSCsignPM->SetYTitle("Entries");
2556 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignPM);
2559 strnamept.Append("SBMss_pt");
2562 strtitlept=titlehist;
2563 strtitlept.Append(" Side Bands, ");
2564 strtitlept+=fptbins[i];
2565 strtitlept.Append("<= pt <");
2566 strtitlept+=fptbins[i+1];
2567 strtitlept.Append(" [GeV/c]");
2569 hd0D0ptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2570 hd0D0ptLSCsignSB->SetXTitle("Impact parameter [#mum] ");
2571 hd0D0ptLSCsignSB->SetYTitle("Entries");
2572 flistLsCutsSignal->Add(hd0D0ptLSCsignSB);
2574 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2575 hMCd0D0ptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2576 hMCd0D0ptLSCsignSB->SetXTitle("MC Impact parameter [#mum] ");
2577 hMCd0D0ptLSCsignSB->SetYTitle("Entries");
2578 flistLsCutsSignal->Add(hMCd0D0ptLSCsignSB);
2580 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2581 hd0D0VtxTrueptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2582 hd0D0VtxTrueptLSCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2583 hd0D0VtxTrueptLSCsignSB->SetYTitle("Entries");
2584 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignSB);
2588 //############ LOOSE CUTS BACKGROUND HISTOGRAMS ###########
2590 // ######## global properties histos #######
2591 TH2F *hCPtaVSd0d0LSCback=new TH2F("hCPtaVSd0d0LSCback","hCPtaVSd0d0_LooseCuts_Background",1000,-100000.,100000.,100,-1.,1.);
2592 TH1F *hSecVtxZLSCback=new TH1F("hSecVtxZLSCback","hSecVtxZ_LooseCuts_Background",1000,-8.,8.);
2593 TH1F *hSecVtxXLSCback=new TH1F("hSecVtxXLSCback","hSecVtxX_LooseCuts_Background",1000,-3000.,3000.);
2594 TH1F *hSecVtxYLSCback=new TH1F("hSecVtxYLSCback","hSecVtxY_LooseCuts_Background",1000,-3000.,3000.);
2595 TH2F *hSecVtxXYLSCback=new TH2F("hSecVtxXYLSCback","hSecVtxXY_LooseCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
2596 TH1F *hSecVtxPhiLSCback=new TH1F("hSecVtxPhiLSCback","hSecVtxPhi_LooseCuts_Background",180,-180.1,180.1);
2597 TH1F *hd0singlTrackLSCback=new TH1F("hd0singlTrackLSCback","hd0singlTrackLooseCuts_Back",1000,-5000.,5000.);
2598 TH1F *hCPtaLSCback=new TH1F("hCPtaLSCback","hCPta_LooseCuts_Background",100,-1.,1.);
2599 TH1F *hd0xd0LSCback=new TH1F("hd0xd0LSCback","hd0xd0_LooseCuts_Background",1000,-100000.,100000.);
2600 TH1F *hMassTrueLSCback=new TH1F("hMassTrueLSCback","D^{0} MC inv. Mass Loose Cuts Background(All momenta)",600,1.600,2.200);
2601 TH1F *hMassLSCback=new TH1F("hMassLSCback","D^{0} inv. Mass Loose Cuts Background (All momenta)",600,1.600,2.200);
2602 hMassLSCback->Sumw2();
2603 TH1F *hMassTrueLSCbackPM=new TH1F("hMassTrueLSCbackPM","D^{0} MC inv. Mass Loose Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
2604 TH1F *hMassLSCbackPM=new TH1F("hMassLSCbackPM","D^{0} inv. Mass Loose Cuts Background (All momenta), MassPeak",600,1.600,2.200);
2605 hMassLSCbackPM->Sumw2();
2606 TH1F *hMassTrueLSCbackSB=new TH1F("hMassTrueLSCbackSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Background(All momenta)",600,1.600,2.200);
2607 TH1F *hMassLSCbackSB=new TH1F("hMassLSCbackSB","D^{0} inv. Mass in Side Bands Loose Cuts Background (All momenta)",600,1.600,2.200);
2608 hMassLSCbackSB->Sumw2();
2610 flistLsCutsBack->Add(hCPtaVSd0d0LSCback);
2611 flistLsCutsBack->Add(hSecVtxZLSCback);
2612 flistLsCutsBack->Add(hSecVtxYLSCback);
2613 flistLsCutsBack->Add(hSecVtxXLSCback);
2614 flistLsCutsBack->Add(hSecVtxXYLSCback);
2615 flistLsCutsBack->Add(hSecVtxPhiLSCback);
2616 flistLsCutsBack->Add(hd0singlTrackLSCback);
2617 flistLsCutsBack->Add(hCPtaLSCback);
2618 flistLsCutsBack->Add(hd0xd0LSCback);
2619 flistLsCutsBack->Add(hMassTrueLSCback);
2620 flistLsCutsBack->Add(hMassLSCback);
2621 flistLsCutsBack->Add(hMassTrueLSCbackPM);
2622 flistLsCutsBack->Add(hMassLSCbackPM);
2623 flistLsCutsBack->Add(hMassTrueLSCbackSB);
2624 flistLsCutsBack->Add(hMassLSCbackSB);
2633 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2634 TH1F *hdcaLSCback=new TH1F("hdcaLSCback","hdca_LooseCuts_Backgr",100,0.,1000.);
2635 hdcaLSCback->SetXTitle("dca [#mum]");
2636 hdcaLSCback->SetYTitle("Entries");
2637 TH1F *hcosthetastarLSCback=new TH1F("hcosthetastarLSCback","hCosThetaStar_LooseCuts_Backgr",50,-1.,1.);
2638 hcosthetastarLSCback->SetXTitle("cos #theta^{*}");
2639 hcosthetastarLSCback->SetYTitle("Entries");
2640 TH1F *hptD0LSCback=new TH1F("hptD0LSCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2641 hptD0LSCback->SetXTitle("p_{t} [GeV/c]");
2642 hptD0LSCback->SetYTitle("Entries");
2643 TH1F *hptD0VsMaxPtLSCback=new TH1F("hptD0VsMaxPtLSCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2644 TH2F *hptD0PTallsqrtLSCback=new TH2F("hptD0PTallsqrtLSCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2645 TH2F *hptD0PTallLSCback=new TH2F("hptD0PTallLSCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2646 TH2F *hptD0vsptBLSCback=new TH2F("hptD0vsptBLSCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2647 TH2F *hpD0vspBLSCback=new TH2F("hpD0vspBLSCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2648 TH2F *hptD0vsptcquarkLSCback=new TH2F("hptD0vsptcquarkLSCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2649 TH2F *hpD0vspcquarkLSCback=new TH2F("hpD0vspcquarkLSCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2650 flistLsCutsBack->Add(hdcaLSCback);
2651 flistLsCutsBack->Add(hcosthetastarLSCback);
2652 flistLsCutsBack->Add(hptD0LSCback);
2653 flistLsCutsBack->Add(hptD0VsMaxPtLSCback);
2654 flistLsCutsBack->Add(hptD0PTallsqrtLSCback);
2655 flistLsCutsBack->Add(hptD0PTallLSCback);
2656 flistLsCutsBack->Add(hptD0vsptBLSCback);
2657 flistLsCutsBack->Add(hpD0vspBLSCback);
2658 flistLsCutsBack->Add(hptD0vsptcquarkLSCback);
2659 flistLsCutsBack->Add(hpD0vspcquarkLSCback);
2661 TH1F *hd0zD0ptLSCback;
2662 TH1F *hInvMassD0LSCback,*hInvMassD0barLSCback;
2663 TH2F *hInvMassPtLSCback=new TH2F("hInvMassPtLSCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2664 THnSparseF *hSparseLSCback=new THnSparseF("hSparseLSCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2665 hSparseLSCback->SetBinEdges(0,massbins);
2666 hSparseLSCback->SetBinEdges(1,massbins);
2667 hSparseLSCback->SetBinEdges(2,ptbinsForNsparse);
2668 hSparseLSCback->SetBinEdges(3,impparbins);
2669 hSparseLSCback->SetBinEdges(4,massHypoBins);
2670 flistLsCutsBack->Add(hSparseLSCback);
2672 TH1F *hCosPDPBLSCback;
2673 TH1F *hCosPcPDLSCback;
2674 flistLsCutsBack->Add(hInvMassPtLSCback);
2675 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2676 TH2F *hd0D0VSd0xd0LSCbackpt;
2677 TH2F *hangletracksVSd0xd0LSCbackpt;
2678 TH2F *hangletracksVSd0D0LSCbackpt;
2679 TH1F *hd0xd0LSCbackpt;
2681 TH2F *hTOFpidLSCback=new TH2F("hTOFpidLSCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2682 flistLsCutsBack->Add(hTOFpidLSCback);
2684 for(Int_t i=0;i<fnbins;i++){
2685 namehist="hd0zD0ptLSCback_pt";
2687 titlehist="d0(z) Loose Cuts Backgr ptbin=";
2689 hd0zD0ptLSCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2690 hd0zD0ptLSCback->SetXTitle("d_{0}(z) [#mum]");
2691 hd0zD0ptLSCback->SetYTitle("Entries");
2692 flistLsCutsBack->Add(hd0zD0ptLSCback);
2694 namehist="hInvMassD0LSCback_pt";
2696 titlehist="Invariant Mass Loose Cuts Backgr ptbin=";
2698 hInvMassD0LSCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2699 hInvMassD0LSCback->SetXTitle("Invariant Mass [GeV]");
2700 hInvMassD0LSCback->SetYTitle("Entries");
2701 flistLsCutsBack->Add(hInvMassD0LSCback);
2703 namehist="hInvMassD0barLSCback_pt";
2705 titlehist="Invariant Mass D0bar Loose Cuts Back ptbin=";
2707 hInvMassD0barLSCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2708 hInvMassD0barLSCback->SetXTitle("Invariant Mass [GeV]");
2709 hInvMassD0barLSCback->SetYTitle("Entries");
2710 flistLsCutsBack->Add(hInvMassD0barLSCback);
2713 namehist="hetaLSCback_pt";
2715 titlehist="eta Loose Cuts Backgr ptbin=";
2717 hetaLSCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2718 hetaLSCback->SetXTitle("Pseudorapidity");
2719 hetaLSCback->SetYTitle("Entries");
2720 flistLsCutsBack->Add(hetaLSCback);
2722 namehist="hCosPDPBLSCback_pt";
2724 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2726 hCosPDPBLSCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2727 hCosPDPBLSCback->SetXTitle("Cosine between D0 momentum and B momentum");
2728 hCosPDPBLSCback->SetYTitle("Entries");
2729 flistLsCutsBack->Add(hCosPDPBLSCback);
2731 namehist="hCosPcPDLSCback_pt";
2733 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2735 hCosPcPDLSCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2736 hCosPcPDLSCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
2737 hCosPcPDLSCback->SetYTitle("Entries");
2738 flistLsCutsBack->Add(hCosPcPDLSCback);
2740 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2741 namehist="hd0xd0LSCback_pt";
2743 titlehist="d0xd0 Loose Cuts Back ptbin=";
2745 hd0xd0LSCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2746 hd0xd0LSCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2747 hd0xd0LSCbackpt->SetYTitle("Entries");
2748 flistLsCutsBack->Add(hd0xd0LSCbackpt);
2751 namehist="hd0D0VSd0xd0LSCback_pt";
2753 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Back ptbin=";
2755 hd0D0VSd0xd0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2756 hd0D0VSd0xd0LSCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2757 hd0D0VSd0xd0LSCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2758 flistLsCutsBack->Add(hd0D0VSd0xd0LSCbackpt);
2761 namehist="hangletracksVSd0xd0LSCback_pt";
2763 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Back ptbin=";
2765 hangletracksVSd0xd0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2766 hangletracksVSd0xd0LSCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2767 hangletracksVSd0xd0LSCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
2768 flistLsCutsBack->Add(hangletracksVSd0xd0LSCbackpt);
2771 namehist="hangletracksVSd0D0LSCback_pt";
2773 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Back ptbin=";
2775 hangletracksVSd0D0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2776 hangletracksVSd0D0LSCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2777 hangletracksVSd0D0LSCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
2778 flistLsCutsBack->Add(hangletracksVSd0D0LSCbackpt);
2781 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2782 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2790 // ####### d0 D0 histos ############
2792 TH1F *hd0D0LSCbackPM = new TH1F("hd0D0LSCbackPM","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2793 hd0D0LSCbackPM->SetXTitle("Impact parameter [#mum]");
2794 hd0D0LSCbackPM->SetYTitle("Entries");
2796 TH1F *hd0D0VtxTrueLSCbackPM = new TH1F("hd0D0VtxTrueLSCbackPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2797 hd0D0VtxTrueLSCbackPM->SetXTitle("Impact parameter [#mum]");
2798 hd0D0VtxTrueLSCbackPM->SetYTitle("Entries");
2800 TH1F *hMCd0D0LSCbackPM = new TH1F("hMCd0D0LSCbackPM","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2801 hMCd0D0LSCbackPM->SetXTitle("MC Impact parameter [#mum]");
2802 hMCd0D0LSCbackPM->SetYTitle("Entries");
2804 TH1F *hd0D0LSCbackSB = new TH1F("hd0D0LSCbackSB","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2805 hd0D0LSCbackSB->SetXTitle("Impact parameter [#mum]");
2806 hd0D0LSCbackSB->SetYTitle("Entries");
2808 TH1F *hd0D0VtxTrueLSCbackSB = new TH1F("hd0D0VtxTrueLSCbackSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2809 hd0D0VtxTrueLSCbackSB->SetXTitle("Impact parameter [#mum]");
2810 hd0D0VtxTrueLSCbackSB->SetYTitle("Entries");
2812 TH1F *hMCd0D0LSCbackSB = new TH1F("hMCd0D0LSCbackSB","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2813 hMCd0D0LSCbackSB->SetXTitle("MC Impact parameter [#mum]");
2814 hMCd0D0LSCbackSB->SetYTitle("Entries");
2816 flistLsCutsBack->Add(hd0D0LSCbackPM);
2817 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackPM);
2818 flistLsCutsBack->Add(hMCd0D0LSCbackPM);
2819 flistLsCutsBack->Add(hd0D0LSCbackSB);
2820 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackSB);
2821 flistLsCutsBack->Add(hMCd0D0LSCbackSB);
2823 TH1F *hd0D0ptLSCbackPM;
2824 TH1F *hMCd0D0ptLSCbackPM;
2825 TH1F *hd0D0VtxTrueptLSCbackPM;
2826 TH1F *hd0D0ptLSCbackSB;
2827 TH1F *hMCd0D0ptLSCbackSB;
2828 TH1F *hd0D0VtxTrueptLSCbackSB;
2829 namehist="hd0D0ptLSCback_";
2830 titlehist="D^{0} impact par. plot, Loose Cuts, Background, ";
2831 for(Int_t i=0;i<fnbins;i++){
2833 strnamept.Append("PkMss_pt");
2836 strtitlept=titlehist;
2837 strtitlept.Append(" Mass Peak, ");
2838 strtitlept+=fptbins[i];
2839 strtitlept.Append("<= pt <");
2840 strtitlept+=fptbins[i+1];
2841 strtitlept.Append(" [GeV/c]");
2843 hd0D0ptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2844 hd0D0ptLSCbackPM->SetXTitle("Impact parameter [#mum] ");
2845 hd0D0ptLSCbackPM->SetYTitle("Entries");
2846 flistLsCutsBack->Add(hd0D0ptLSCbackPM);
2848 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2849 hMCd0D0ptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2850 hMCd0D0ptLSCbackPM->SetXTitle("MC Impact parameter [#mum] ");
2851 hMCd0D0ptLSCbackPM->SetYTitle("Entries");
2852 flistLsCutsBack->Add(hMCd0D0ptLSCbackPM);
2855 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2856 hd0D0VtxTrueptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2857 hd0D0VtxTrueptLSCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2858 hd0D0VtxTrueptLSCbackPM->SetYTitle("Entries");
2859 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackPM);
2862 strnamept.Append("SBMss_pt");
2865 strtitlept=titlehist;
2866 strtitlept.Append(" Side Bands, ");
2867 strtitlept+=fptbins[i];
2868 strtitlept.Append("<= pt <");
2869 strtitlept+=fptbins[i+1];
2870 strtitlept.Append(" [GeV/c]");
2872 hd0D0ptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2873 hd0D0ptLSCbackSB->SetXTitle("Impact parameter [#mum] ");
2874 hd0D0ptLSCbackSB->SetYTitle("Entries");
2875 flistLsCutsBack->Add(hd0D0ptLSCbackSB);
2877 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2878 hMCd0D0ptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2879 hMCd0D0ptLSCbackSB->SetXTitle("MC Impact parameter [#mum] ");
2880 hMCd0D0ptLSCbackSB->SetYTitle("Entries");
2881 flistLsCutsBack->Add(hMCd0D0ptLSCbackSB);
2883 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2884 hd0D0VtxTrueptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2885 hd0D0VtxTrueptLSCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2886 hd0D0VtxTrueptLSCbackSB->SetYTitle("Entries");
2887 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackSB);
2892 //############ LOOSE CUTS FROMB HISTOGRAMS ###########
2894 //####### global properties histos
2896 TH2F *hCPtaVSd0d0LSCfromB=new TH2F("hCPtaVSd0d0LSCfromB","hCPtaVSd0d0_LooseCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
2897 TH1F *hSecVtxZLSCfromB=new TH1F("hSecVtxZLSCfromB","hSecVtxZ_LooseCuts_FromB",1000,-8.,8.);
2898 TH1F *hSecVtxXLSCfromB=new TH1F("hSecVtxXLSCfromB","hSecVtxX_LooseCuts_FromB",1000,-3000.,3000.);
2899 TH1F *hSecVtxYLSCfromB=new TH1F("hSecVtxYLSCfromB","hSecVtxY_LooseCuts_FromB",1000,-3000.,3000.);
2900 TH2F *hSecVtxXYLSCfromB=new TH2F("hSecVtxXYLSCfromB","hSecVtxXY_LooseCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
2901 TH1F *hSecVtxPhiLSCfromB=new TH1F("hSecVtxPhiLSCfromB","hSecVtxPhi_LooseCuts_FromB",180,-180.1,180.1);
2902 TH1F *hd0singlTrackLSCfromB=new TH1F("hd0singlTrackLSCfromB","hd0singlTrackLooseCuts_FromB",1000,-5000.,5000.);
2903 TH1F *hCPtaLSCfromB=new TH1F("hCPtaLSCfromB","hCPta_LooseCuts_FromB",100,-1.,1.);
2904 TH1F *hd0xd0LSCfromB=new TH1F("hd0xd0LSCfromB","hd0xd0_LooseCuts_FromB",1000,-100000.,100000.);
2905 TH1F *hMassTrueLSCfromB=new TH1F("hMassTrueLSCfromB","D^{0} MC inv. Mass Loose Cuts FromB(All momenta)",600,1.600,2.200);
2906 TH1F *hMassLSCfromB=new TH1F("hMassLSCfromB","D^{0} inv. Mass Loose Cuts FromB (All momenta)",600,1.600,2.200);
2907 hMassLSCfromB->Sumw2();
2908 TH1F *hMassTrueLSCfromBPM=new TH1F("hMassTrueLSCfromBPM","D^{0} MC inv. Mass Loose Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
2909 TH1F *hMassLSCfromBPM=new TH1F("hMassLSCfromBPM","D^{0} inv. Mass Loose Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
2910 hMassLSCfromBPM->Sumw2();
2911 TH1F *hMassTrueLSCfromBSB=new TH1F("hMassTrueLSCfromBSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromB(All momenta)",600,1.600,2.200);
2912 TH1F *hMassLSCfromBSB=new TH1F("hMassLSCfromBSB","D^{0} inv. Mass in Side Bands Loose Cuts FromB (All momenta)",600,1.600,2.200);
2913 hMassLSCfromBSB->Sumw2();
2915 flistLsCutsFromB->Add(hCPtaVSd0d0LSCfromB);
2916 flistLsCutsFromB->Add(hSecVtxZLSCfromB);
2917 flistLsCutsFromB->Add(hSecVtxYLSCfromB);
2918 flistLsCutsFromB->Add(hSecVtxXLSCfromB);
2919 flistLsCutsFromB->Add(hSecVtxXYLSCfromB);
2920 flistLsCutsFromB->Add(hSecVtxPhiLSCfromB);
2921 flistLsCutsFromB->Add(hd0singlTrackLSCfromB);
2922 flistLsCutsFromB->Add(hCPtaLSCfromB);
2923 flistLsCutsFromB->Add(hd0xd0LSCfromB);
2924 flistLsCutsFromB->Add(hMassTrueLSCfromB);
2925 flistLsCutsFromB->Add(hMassLSCfromB);
2926 flistLsCutsFromB->Add(hMassTrueLSCfromBPM);
2927 flistLsCutsFromB->Add(hMassLSCfromBPM);
2928 flistLsCutsFromB->Add(hMassTrueLSCfromBSB);
2929 flistLsCutsFromB->Add(hMassLSCfromBSB);
2934 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2935 TH1F *hdcaLSCfromB=new TH1F("hdcaLSCfromB","hdca_LooseCuts_FromB",100,0.,1000.);
2936 hdcaLSCfromB->SetXTitle("dca [#mum]");
2937 hdcaLSCfromB->SetYTitle("Entries");
2938 TH1F *hcosthetastarLSCfromB=new TH1F("hcosthetastarLSCfromB","hCosThetaStar_LooseCuts_FromB",50,-1.,1.);
2939 hcosthetastarLSCfromB->SetXTitle("cos #theta^{*}");
2940 hcosthetastarLSCfromB->SetYTitle("Entries");
2941 TH1F *hptD0LSCfromB=new TH1F("hptD0LSCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2942 hptD0LSCfromB->SetXTitle("p_{t} [GeV/c]");
2943 hptD0LSCfromB->SetYTitle("Entries");
2944 TH1F *hptD0VsMaxPtLSCfromB=new TH1F("hptD0VsMaxPtLSCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2945 TH2F *hptD0PTallsqrtLSCfromB=new TH2F("hptD0PTallsqrtLSCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2946 TH2F *hptD0PTallLSCfromB=new TH2F("hptD0PTallLSCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2947 TH2F *hptD0vsptBLSCfromB=new TH2F("hptD0vsptBLSCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2948 TH2F *hpD0vspBLSCfromB=new TH2F("hpD0vspBLSCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2949 TH2F *hptD0vsptcquarkLSCfromB=new TH2F("hptD0vsptcquarkLSCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2950 TH2F *hpD0vspcquarkLSCfromB=new TH2F("hpD0vspcquarkLSCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2951 flistLsCutsFromB->Add(hdcaLSCfromB);
2952 flistLsCutsFromB->Add(hcosthetastarLSCfromB);
2953 flistLsCutsFromB->Add(hptD0LSCfromB);
2954 flistLsCutsFromB->Add(hptD0VsMaxPtLSCfromB);
2955 flistLsCutsFromB->Add(hptD0PTallsqrtLSCfromB);
2956 flistLsCutsFromB->Add(hptD0PTallLSCfromB);
2957 flistLsCutsFromB->Add(hptD0vsptBLSCfromB);
2958 flistLsCutsFromB->Add(hpD0vspBLSCfromB);
2959 flistLsCutsFromB->Add(hptD0vsptcquarkLSCfromB);
2960 flistLsCutsFromB->Add(hpD0vspcquarkLSCfromB);
2962 TH1F *hd0zD0ptLSCfromB;
2963 TH1F *hInvMassD0LSCfromB,*hInvMassD0barLSCfromB;
2964 TH2F *hInvMassPtLSCfromB=new TH2F("hInvMassPtLSCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2965 THnSparseF *hSparseLSCfromB=new THnSparseF("hSparseLSCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2966 hSparseLSCfromB->SetBinEdges(0,massbins);
2967 hSparseLSCfromB->SetBinEdges(1,massbins);
2968 hSparseLSCfromB->SetBinEdges(2,ptbinsForNsparse);
2969 hSparseLSCfromB->SetBinEdges(3,impparbins);
2970 hSparseLSCfromB->SetBinEdges(4,massHypoBins);
2971 flistLsCutsFromB->Add(hSparseLSCfromB);
2973 TH1F *hCosPDPBLSCfromB;
2974 TH1F *hCosPcPDLSCfromB;
2975 flistLsCutsFromB->Add(hInvMassPtLSCfromB);
2976 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2977 TH2F *hd0D0VSd0xd0LSCfromBpt;
2978 TH2F *hangletracksVSd0xd0LSCfromBpt;
2979 TH2F *hangletracksVSd0D0LSCfromBpt;
2980 TH1F *hd0xd0LSCfromBpt;
2983 TH2F *hTOFpidLSCfromB=new TH2F("hTOFpidLSCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2984 flistLsCutsFromB->Add(hTOFpidLSCfromB);
2986 for(Int_t i=0;i<fnbins;i++){
2987 namehist="hd0zD0ptLSCfromB_pt";
2989 titlehist="d0(z) Loose Cuts FromBm ptbin=";
2991 hd0zD0ptLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2992 hd0zD0ptLSCfromB->SetXTitle("d_{0}(z) [#mum]");
2993 hd0zD0ptLSCfromB->SetYTitle("Entries");
2994 flistLsCutsFromB->Add(hd0zD0ptLSCfromB);
2996 namehist="hInvMassD0LSCfromB_pt";
2998 titlehist="Invariant Mass Loose Cuts FromB ptbin=";
3000 hInvMassD0LSCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3001 hInvMassD0LSCfromB->SetXTitle("Invariant Mass [GeV]");
3002 hInvMassD0LSCfromB->SetYTitle("Entries");
3003 flistLsCutsFromB->Add(hInvMassD0LSCfromB);
3005 namehist="hInvMassD0barLSCfromB_pt";
3007 titlehist="Invariant Mass D0bar Loose Cuts FromB ptbin=";
3009 hInvMassD0barLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3010 hInvMassD0barLSCfromB->SetXTitle("Invariant Mass [GeV]");
3011 hInvMassD0barLSCfromB->SetYTitle("Entries");
3012 flistLsCutsFromB->Add(hInvMassD0barLSCfromB);
3014 namehist="hetaLSCfromB_pt";
3016 titlehist="eta Loose Cuts FromB ptbin=";
3018 hetaLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3019 hetaLSCfromB->SetXTitle("Pseudorapidity");
3020 hetaLSCfromB->SetYTitle("Entries");
3021 flistLsCutsFromB->Add(hetaLSCfromB);
3023 namehist="hCosPDPBLSCfromB_pt";
3025 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3027 hCosPDPBLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3028 hCosPDPBLSCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
3029 hCosPDPBLSCfromB->SetYTitle("Entries");
3030 flistLsCutsFromB->Add(hCosPDPBLSCfromB);
3032 namehist="hCosPcPDLSCfromB_pt";
3034 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3036 hCosPcPDLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3037 hCosPcPDLSCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
3038 hCosPcPDLSCfromB->SetYTitle("Entries");
3039 flistLsCutsFromB->Add(hCosPcPDLSCfromB);
3041 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3042 namehist="hd0xd0LSCfromB_pt";
3044 titlehist="d0xd0 Loose Cuts FromB ptbin=";
3046 hd0xd0LSCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3047 hd0xd0LSCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3048 hd0xd0LSCfromBpt->SetYTitle("Entries");
3049 flistLsCutsFromB->Add(hd0xd0LSCfromBpt);
3052 namehist="hd0D0VSd0xd0LSCfromB_pt";
3054 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromB ptbin=";
3056 hd0D0VSd0xd0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3057 hd0D0VSd0xd0LSCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3058 hd0D0VSd0xd0LSCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3059 flistLsCutsFromB->Add(hd0D0VSd0xd0LSCfromBpt);
3062 namehist="hangletracksVSd0xd0LSCfromB_pt";
3064 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromB ptbin=";
3066 hangletracksVSd0xd0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3067 hangletracksVSd0xd0LSCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3068 hangletracksVSd0xd0LSCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
3069 flistLsCutsFromB->Add(hangletracksVSd0xd0LSCfromBpt);
3072 namehist="hangletracksVSd0D0LSCfromB_pt";
3074 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts FromB ptbin=";
3076 hangletracksVSd0D0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3077 hangletracksVSd0D0LSCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3078 hangletracksVSd0D0LSCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
3079 flistLsCutsFromB->Add(hangletracksVSd0D0LSCfromBpt);
3082 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3083 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3089 // ######### d0 D0 histos ##############
3090 TH1F *hd0D0LSCfromBPM = new TH1F("hd0D0LSCfromBPM","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
3091 hd0D0LSCfromBPM->SetXTitle("Impact parameter [#mum]");
3092 hd0D0LSCfromBPM->SetYTitle("Entries");
3094 TH1F *hd0D0VtxTrueLSCfromBPM = new TH1F("hd0D0VtxTrueLSCfromBPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
3095 hd0D0VtxTrueLSCfromBPM->SetXTitle("Impact parameter [#mum]");
3096 hd0D0VtxTrueLSCfromBPM->SetYTitle("Entries");
3098 TH1F *hMCd0D0LSCfromBPM = new TH1F("hMCd0D0LSCfromBPM","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
3099 hMCd0D0LSCfromBPM->SetXTitle("MC Impact parameter [#mum]");
3100 hMCd0D0LSCfromBPM->SetYTitle("Entries");
3102 TH1F *hd0D0LSCfromBSB = new TH1F("hd0D0LSCfromBSB","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
3103 hd0D0LSCfromBSB->SetXTitle("Impact parameter [#mum]");
3104 hd0D0LSCfromBSB->SetYTitle("Entries");
3106 TH1F *hd0D0VtxTrueLSCfromBSB = new TH1F("hd0D0VtxTrueLSCfromBSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
3107 hd0D0VtxTrueLSCfromBSB->SetXTitle("Impact parameter [#mum]");
3108 hd0D0VtxTrueLSCfromBSB->SetYTitle("Entries");
3110 TH1F *hMCd0D0LSCfromBSB = new TH1F("hMCd0D0LSCfromBSB","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
3111 hMCd0D0LSCfromBSB->SetXTitle("MC Impact parameter [#mum]");
3112 hMCd0D0LSCfromBSB->SetYTitle("Entries");
3114 flistLsCutsFromB->Add(hd0D0LSCfromBPM);
3115 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBPM);
3116 flistLsCutsFromB->Add(hMCd0D0LSCfromBPM);
3117 flistLsCutsFromB->Add(hd0D0LSCfromBSB);
3118 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBSB);
3119 flistLsCutsFromB->Add(hMCd0D0LSCfromBSB);
3121 TH1F *hd0D0ptLSCfromBPM;
3122 TH1F *hMCd0D0ptLSCfromBPM;
3123 TH1F *hd0D0VtxTrueptLSCfromBPM;
3124 TH1F *hd0D0ptLSCfromBSB;
3125 TH1F *hMCd0D0ptLSCfromBSB;
3126 TH1F *hd0D0VtxTrueptLSCfromBSB;
3127 namehist="hd0D0ptLSCfromB_";
3128 titlehist="D^{0} impact par. plot, Loose Cuts, FromB, ";
3129 for(Int_t i=0;i<fnbins;i++){
3131 strnamept.Append("PkMss_pt");
3134 strtitlept=titlehist;
3135 strtitlept.Append(" Mass Peak, ");
3136 strtitlept+=fptbins[i];
3137 strtitlept.Append("<= pt <");
3138 strtitlept+=fptbins[i+1];
3139 strtitlept.Append(" [GeV/c]");
3141 hd0D0ptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3142 hd0D0ptLSCfromBPM->SetXTitle("Impact parameter [#mum] ");
3143 hd0D0ptLSCfromBPM->SetYTitle("Entries");
3144 flistLsCutsFromB->Add(hd0D0ptLSCfromBPM);
3146 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3147 hMCd0D0ptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3148 hMCd0D0ptLSCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
3149 hMCd0D0ptLSCfromBPM->SetYTitle("Entries");
3150 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBPM);
3153 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3154 hd0D0VtxTrueptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3155 hd0D0VtxTrueptLSCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3156 hd0D0VtxTrueptLSCfromBPM->SetYTitle("Entries");
3157 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBPM);
3160 strnamept.Append("SBMss_pt");
3163 strtitlept=titlehist;
3164 strtitlept.Append(" Side Bands, ");
3165 strtitlept+=fptbins[i];
3166 strtitlept.Append("<= pt <");
3167 strtitlept+=fptbins[i+1];
3168 strtitlept.Append(" [GeV/c]");
3170 hd0D0ptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3171 hd0D0ptLSCfromBSB->SetXTitle("Impact parameter [#mum] ");
3172 hd0D0ptLSCfromBSB->SetYTitle("Entries");
3173 flistLsCutsFromB->Add(hd0D0ptLSCfromBSB);
3175 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3176 hMCd0D0ptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3177 hMCd0D0ptLSCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
3178 hMCd0D0ptLSCfromBSB->SetYTitle("Entries");
3179 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBSB);
3181 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3182 hd0D0VtxTrueptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3183 hd0D0VtxTrueptLSCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3184 hd0D0VtxTrueptLSCfromBSB->SetYTitle("Entries");
3185 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBSB);
3190 //############ LOOSE CUTS FROM DSTAR HISTOGRAMS ###########
3192 //############## global properties histos
3193 TH2F *hCPtaVSd0d0LSCfromDstar=new TH2F("hCPtaVSd0d0LSCfromDstar","hCPtaVSd0d0_LooseCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
3194 TH1F *hSecVtxZLSCfromDstar=new TH1F("hSecVtxZLSCfromDstar","hSecVtxZ_LooseCuts_FromDStar",1000,-8.,8.);
3195 TH1F *hSecVtxXLSCfromDstar=new TH1F("hSecVtxXLSCfromDstar","hSecVtxX_LooseCuts_FromDStar",1000,-3000.,3000.);
3196 TH1F *hSecVtxYLSCfromDstar=new TH1F("hSecVtxYLSCfromDstar","hSecVtxY_LooseCuts_FromDStar",1000,-3000.,3000.);
3197 TH2F *hSecVtxXYLSCfromDstar=new TH2F("hSecVtxXYLSCfromDstar","hSecVtxXY_LooseCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
3198 TH1F *hSecVtxPhiLSCfromDstar=new TH1F("hSecVtxPhiLSCfromDstar","hSecVtxPhi_LooseCuts_FromDStar",180,-180.1,180.1);
3199 TH1F *hd0singlTrackLSCfromDstar=new TH1F("hd0singlTrackLSCfromDstar","hd0singlTrackLooseCuts_FromDstar",1000,-5000.,5000.);
3200 TH1F *hCPtaLSCfromDstar=new TH1F("hCPtaLSCfromDstar","hCPta_LooseCuts_FromDStar",100,-1.,1.);
3201 TH1F *hd0xd0LSCfromDstar=new TH1F("hd0xd0LSCfromDstar","hd0xd0_LooseCuts_FromDStar",1000,-100000.,100000.);
3202 TH1F *hMassTrueLSCfromDstar=new TH1F("hMassTrueLSCfromDstar","D^{0} MC inv. Mass Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
3203 TH1F *hMassLSCfromDstar=new TH1F("hMassLSCfromDstar","D^{0} inv. Mass Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
3204 hMassLSCfromDstar->Sumw2();
3205 TH1F *hMassTrueLSCfromDstarPM=new TH1F("hMassTrueLSCfromDstarPM","D^{0} MC inv. Mass Loose Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
3206 TH1F *hMassLSCfromDstarPM=new TH1F("hMassLSCfromDstarPM","D^{0} inv. Mass Loose Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
3207 hMassLSCfromDstarPM->Sumw2();
3208 TH1F *hMassTrueLSCfromDstarSB=new TH1F("hMassTrueLSCfromDstarSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
3209 TH1F *hMassLSCfromDstarSB=new TH1F("hMassLSCfromDstarSB","D^{0} inv. Mass in Side Bands Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
3210 hMassLSCfromDstarSB->Sumw2();
3212 flistLsCutsFromDstar->Add(hCPtaVSd0d0LSCfromDstar);
3213 flistLsCutsFromDstar->Add(hSecVtxZLSCfromDstar);
3214 flistLsCutsFromDstar->Add(hSecVtxYLSCfromDstar);
3215 flistLsCutsFromDstar->Add(hSecVtxXLSCfromDstar);
3216 flistLsCutsFromDstar->Add(hSecVtxXYLSCfromDstar);
3217 flistLsCutsFromDstar->Add(hSecVtxPhiLSCfromDstar);
3218 flistLsCutsFromDstar->Add(hd0singlTrackLSCfromDstar);
3219 flistLsCutsFromDstar->Add(hCPtaLSCfromDstar);
3220 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstar);
3221 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstar);
3222 flistLsCutsFromDstar->Add(hMassLSCfromDstar);
3223 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarPM);
3224 flistLsCutsFromDstar->Add(hMassLSCfromDstarPM);
3225 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarSB);
3226 flistLsCutsFromDstar->Add(hMassLSCfromDstarSB);
3234 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3235 TH1F *hdcaLSCfromDstar=new TH1F("hdcaLSCfromDstar","hdca_LooseCuts_FromDstar",100,0.,1000.);
3236 hdcaLSCfromDstar->SetXTitle("dca [#mum]");
3237 hdcaLSCfromDstar->SetYTitle("Entries");
3238 TH1F *hcosthetastarLSCfromDstar=new TH1F("hcosthetastarLSCfromDstar","hCosThetaStar_LooseCuts_FromDstar",50,-1.,1.);
3239 hcosthetastarLSCfromDstar->SetXTitle("cos #theta^{*}");
3240 hcosthetastarLSCfromDstar->SetYTitle("Entries");
3241 TH1F *hptD0LSCfromDstar=new TH1F("hptD0LSCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3242 hptD0LSCfromDstar->SetXTitle("p_{t} [GeV/c]");
3243 hptD0LSCfromDstar->SetYTitle("Entries");
3244 TH1F *hptD0VsMaxPtLSCfromDstar=new TH1F("hptD0VsMaxPtLSCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3245 TH2F *hptD0PTallsqrtLSCfromDstar=new TH2F("hptD0PTallsqrtLSCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3246 TH2F *hptD0PTallLSCfromDstar=new TH2F("hptD0PTallLSCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3247 TH2F *hptD0vsptBLSCfromDstar=new TH2F("hptD0vsptBLSCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3248 TH2F *hpD0vspBLSCfromDstar=new TH2F("hpD0vspBLSCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3249 TH2F *hptD0vsptcquarkLSCfromDstar=new TH2F("hptD0vsptcquarkLSCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3250 TH2F *hpD0vspcquarkLSCfromDstar=new TH2F("hpD0vspcquarkLSCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3251 flistLsCutsFromDstar->Add(hdcaLSCfromDstar);
3252 flistLsCutsFromDstar->Add(hcosthetastarLSCfromDstar);
3253 flistLsCutsFromDstar->Add(hptD0LSCfromDstar);
3254 flistLsCutsFromDstar->Add(hptD0VsMaxPtLSCfromDstar);
3255 flistLsCutsFromDstar->Add(hptD0PTallsqrtLSCfromDstar);
3256 flistLsCutsFromDstar->Add(hptD0PTallLSCfromDstar);
3257 flistLsCutsFromDstar->Add(hptD0vsptBLSCfromDstar);
3258 flistLsCutsFromDstar->Add(hpD0vspBLSCfromDstar);
3259 flistLsCutsFromDstar->Add(hptD0vsptcquarkLSCfromDstar);
3260 flistLsCutsFromDstar->Add(hpD0vspcquarkLSCfromDstar);
3262 TH1F *hd0zD0ptLSCfromDstar;
3263 TH1F *hInvMassD0LSCfromDstar,*hInvMassD0barLSCfromDstar;
3264 TH2F *hInvMassPtLSCfromDstar=new TH2F("hInvMassPtLSCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3265 THnSparseF *hSparseLSCfromDstar=new THnSparseF("hSparseLSCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3266 hSparseLSCfromDstar->SetBinEdges(0,massbins);
3267 hSparseLSCfromDstar->SetBinEdges(1,massbins);
3268 hSparseLSCfromDstar->SetBinEdges(2,ptbinsForNsparse);
3269 hSparseLSCfromDstar->SetBinEdges(3,impparbins);
3270 hSparseLSCfromDstar->SetBinEdges(4,massHypoBins);
3271 flistLsCutsFromDstar->Add(hSparseLSCfromDstar);
3272 TH1F *hetaLSCfromDstar;
3273 TH1F *hCosPDPBLSCfromDstar;
3274 TH1F *hCosPcPDLSCfromDstar;
3275 flistLsCutsFromDstar->Add(hInvMassPtLSCfromDstar);
3276 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3277 TH2F *hd0D0VSd0xd0LSCfromDstarpt;
3278 TH2F *hangletracksVSd0xd0LSCfromDstarpt;
3279 TH2F *hangletracksVSd0D0LSCfromDstarpt;
3280 TH1F *hd0xd0LSCfromDstarpt;
3282 TH2F *hTOFpidLSCfromDstar=new TH2F("hTOFpidLSCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3283 flistLsCutsFromDstar->Add(hTOFpidLSCfromDstar);
3285 for(Int_t i=0;i<fnbins;i++){
3286 namehist="hd0zD0ptLSCfromDstar_pt";
3288 titlehist="d0(z) Loose Cuts FromDstarm ptbin=";
3290 hd0zD0ptLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3291 hd0zD0ptLSCfromDstar->SetXTitle("d_{0}(z) [#mum]");
3292 hd0zD0ptLSCfromDstar->SetYTitle("Entries");
3293 flistLsCutsFromDstar->Add(hd0zD0ptLSCfromDstar);
3295 namehist="hInvMassD0LSCfromDstar_pt";
3297 titlehist="Invariant Mass Loose Cuts FromDstar ptbin=";
3299 hInvMassD0LSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3300 hInvMassD0LSCfromDstar->SetXTitle("Invariant Mass [GeV]");
3301 hInvMassD0LSCfromDstar->SetYTitle("Entries");
3302 flistLsCutsFromDstar->Add(hInvMassD0LSCfromDstar);
3304 namehist="hInvMassD0barLSCfromDstar_pt";
3306 titlehist="Invariant Mass D0bar Loose Cuts FromDstar ptbin=";
3308 hInvMassD0barLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3309 hInvMassD0barLSCfromDstar->SetXTitle("Invariant Mass [GeV]");
3310 hInvMassD0barLSCfromDstar->SetYTitle("Entries");
3311 flistLsCutsFromDstar->Add(hInvMassD0barLSCfromDstar);
3313 namehist="hetaLSCfromDstar_pt";
3315 titlehist="eta Loose Cuts FromDstar ptbin=";
3317 hetaLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3318 hetaLSCfromDstar->SetXTitle("Pseudorapidity");
3319 hetaLSCfromDstar->SetYTitle("Entries");
3320 flistLsCutsFromDstar->Add(hetaLSCfromDstar);
3322 namehist="hCosPDPBLSCfromDstar_pt";
3324 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3326 hCosPDPBLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3327 hCosPDPBLSCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
3328 hCosPDPBLSCfromDstar->SetYTitle("Entries");
3329 flistLsCutsFromDstar->Add(hCosPDPBLSCfromDstar);
3331 namehist="hCosPcPDLSCfromDstar_pt";
3333 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3335 hCosPcPDLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3336 hCosPcPDLSCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
3337 hCosPcPDLSCfromDstar->SetYTitle("Entries");
3338 flistLsCutsFromDstar->Add(hCosPcPDLSCfromDstar);
3340 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3341 namehist="hd0xd0LSCfromDstar_pt";
3343 titlehist="d0xd0 Loose Cuts FromDstar ptbin=";
3345 hd0xd0LSCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3346 hd0xd0LSCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3347 hd0xd0LSCfromDstarpt->SetYTitle("Entries");
3348 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstarpt);
3351 namehist="hd0D0VSd0xd0LSCfromDstar_pt";
3353 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromDstar ptbin=";
3355 hd0D0VSd0xd0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3356 hd0D0VSd0xd0LSCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3357 hd0D0VSd0xd0LSCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3358 flistLsCutsFromDstar->Add(hd0D0VSd0xd0LSCfromDstarpt);
3361 namehist="hangletracksVSd0xd0LSCfromDstar_pt";
3363 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromDstar ptbin=";
3365 hangletracksVSd0xd0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3366 hangletracksVSd0xd0LSCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3367 hangletracksVSd0xd0LSCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
3368 flistLsCutsFromDstar->Add(hangletracksVSd0xd0LSCfromDstarpt);
3371 namehist="hangletracksVSd0D0LSCfromDstar_pt";
3373 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts FromDstar ptbin=";
3375 hangletracksVSd0D0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3376 hangletracksVSd0D0LSCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3377 hangletracksVSd0D0LSCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
3378 flistLsCutsFromDstar->Add(hangletracksVSd0D0LSCfromDstarpt);
3382 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3383 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3390 //########## d0 D0 histos #############
3391 TH1F *hd0D0LSCfromDstPM = new TH1F("hd0D0LSCfromDstarPM","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3392 hd0D0LSCfromDstPM->SetXTitle("Impact parameter [#mum]");
3393 hd0D0LSCfromDstPM->SetYTitle("Entries");
3395 TH1F *hd0D0VtxTrueLSCfromDstPM = new TH1F("hd0D0VtxTrueLSCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3396 hd0D0VtxTrueLSCfromDstPM->SetXTitle("Impact parameter [#mum]");
3397 hd0D0VtxTrueLSCfromDstPM->SetYTitle("Entries");
3399 TH1F *hMCd0D0LSCfromDstPM = new TH1F("hMCd0D0LSCfromDstarPM","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3400 hMCd0D0LSCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
3401 hMCd0D0LSCfromDstPM->SetYTitle("Entries");
3403 TH1F *hd0D0LSCfromDstSB = new TH1F("hd0D0LSCfromDstarSB","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3404 hd0D0LSCfromDstSB->SetXTitle("Impact parameter [#mum]");
3405 hd0D0LSCfromDstSB->SetYTitle("Entries");
3407 TH1F *hd0D0VtxTrueLSCfromDstSB = new TH1F("hd0D0VtxTrueLSCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3408 hd0D0VtxTrueLSCfromDstSB->SetXTitle("Impact parameter [#mum]");
3409 hd0D0VtxTrueLSCfromDstSB->SetYTitle("Entries");
3411 TH1F *hMCd0D0LSCfromDstSB = new TH1F("hMCd0D0LSCfromDstarSB","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3412 hMCd0D0LSCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
3413 hMCd0D0LSCfromDstSB->SetYTitle("Entries");
3415 flistLsCutsFromDstar->Add(hd0D0LSCfromDstPM);
3416 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstPM);
3417 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstPM);
3418 flistLsCutsFromDstar->Add(hd0D0LSCfromDstSB);
3419 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstSB);
3420 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstSB);
3422 TH1F *hd0D0ptLSCfromDstPM;
3423 TH1F *hMCd0D0ptLSCfromDstPM;
3424 TH1F *hd0D0VtxTrueptLSCfromDstPM;
3425 TH1F *hd0D0ptLSCfromDstSB;
3426 TH1F *hMCd0D0ptLSCfromDstSB;
3427 TH1F *hd0D0VtxTrueptLSCfromDstSB;
3428 namehist="hd0D0ptLSCfromDstar_";
3429 titlehist="D^{0} impact par. plot, Loose Cuts, FromDStar, ";
3430 for(Int_t i=0;i<fnbins;i++){
3432 strnamept.Append("PkMss_pt");
3435 strtitlept=titlehist;
3436 strtitlept.Append(" Mass Peak, ");
3437 strtitlept+=fptbins[i];
3438 strtitlept.Append("<= pt <");
3439 strtitlept+=fptbins[i+1];
3440 strtitlept.Append(" [GeV/c]");
3442 hd0D0ptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3443 hd0D0ptLSCfromDstPM->SetXTitle("Impact parameter [#mum] ");
3444 hd0D0ptLSCfromDstPM->SetYTitle("Entries");
3445 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstPM);
3447 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3448 hMCd0D0ptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3449 hMCd0D0ptLSCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
3450 hMCd0D0ptLSCfromDstPM->SetYTitle("Entries");
3451 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstPM);
3454 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3455 hd0D0VtxTrueptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3456 hd0D0VtxTrueptLSCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3457 hd0D0VtxTrueptLSCfromDstPM->SetYTitle("Entries");
3458 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstPM);
3461 strnamept.Append("SBMss_pt");
3464 strtitlept=titlehist;
3465 strtitlept.Append(" Side Bands, ");
3466 strtitlept+=fptbins[i];
3467 strtitlept.Append("<= pt <");
3468 strtitlept+=fptbins[i+1];
3469 strtitlept.Append(" [GeV/c]");
3471 hd0D0ptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3472 hd0D0ptLSCfromDstSB->SetXTitle("Impact parameter [#mum] ");
3473 hd0D0ptLSCfromDstSB->SetYTitle("Entries");
3474 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstSB);
3476 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3477 hMCd0D0ptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3478 hMCd0D0ptLSCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
3479 hMCd0D0ptLSCfromDstSB->SetYTitle("Entries");
3480 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstSB);
3482 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3483 hd0D0VtxTrueptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3484 hd0D0VtxTrueptLSCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3485 hd0D0VtxTrueptLSCfromDstSB->SetYTitle("Entries");
3486 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstSB);
3490 //############ LOOSE CUTS OTHER HISTOGRAMS ###########
3492 //########### global properties histos ###########
3494 TH2F *hCPtaVSd0d0LSCother=new TH2F("hCPtaVSd0d0LSCother","hCPtaVSd0d0_LooseCuts_other",1000,-100000.,100000.,100,-1.,1.);
3495 TH1F *hSecVtxZLSCother=new TH1F("hSecVtxZLSCother","hSecVtxZ_LooseCuts_other",1000,-8.,8.);
3496 TH1F *hSecVtxXLSCother=new TH1F("hSecVtxXLSCother","hSecVtxX_LooseCuts_other",1000,-3000.,3000.);
3497 TH1F *hSecVtxYLSCother=new TH1F("hSecVtxYLSCother","hSecVtxY_LooseCuts_other",1000,-3000.,3000.);
3498 TH2F *hSecVtxXYLSCother=new TH2F("hSecVtxXYLSCother","hSecVtxXY_LooseCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
3499 TH1F *hSecVtxPhiLSCother=new TH1F("hSecVtxPhiLSCother","hSecVtxPhi_LooseCuts_other",180,-180.1,180.1);
3500 TH1F *hd0singlTrackLSCother=new TH1F("hd0singlTrackLSCother","hd0singlTrackLooseCuts_Other",1000,-5000.,5000.);
3501 TH1F *hCPtaLSCother=new TH1F("hCPtaLSCother","hCPta_LooseCuts_other",100,-1.,1.);
3502 TH1F *hd0xd0LSCother=new TH1F("hd0xd0LSCother","hd0xd0_LooseCuts_other",1000,-100000.,100000.);
3503 TH1F *hMassTrueLSCother=new TH1F("hMassTrueLSCother","D^{0} MC inv. Mass Loose Cuts other(All momenta)",600,1.600,2.200);
3504 TH1F *hMassLSCother=new TH1F("hMassLSCother","D^{0} inv. Mass Loose Cuts other (All momenta)",600,1.600,2.200);
3505 hMassLSCother->Sumw2();
3506 TH1F *hMassTrueLSCotherPM=new TH1F("hMassTrueLSCotherPM","D^{0} MC inv. Mass Loose Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
3507 TH1F *hMassLSCotherPM=new TH1F("hMassLSCotherPM","D^{0} inv. Mass Loose Cuts other (All momenta), MassPeak",600,1.600,2.200);
3508 hMassLSCotherPM->Sumw2();
3509 TH1F *hMassTrueLSCotherSB=new TH1F("hMassTrueLSCotherSB","D^{0} MC inv. Mass in Side Bands Loose Cuts other(All momenta)",600,1.600,2.200);
3510 TH1F *hMassLSCotherSB=new TH1F("hMassLSCotherSB","D^{0} inv. Mass in Side Bands Loose Cuts other (All momenta)",600,1.600,2.200);
3511 hMassLSCotherSB->Sumw2();
3513 flistLsCutsOther->Add(hCPtaVSd0d0LSCother);
3514 flistLsCutsOther->Add(hSecVtxZLSCother);
3515 flistLsCutsOther->Add(hSecVtxYLSCother);
3516 flistLsCutsOther->Add(hSecVtxXLSCother);
3517 flistLsCutsOther->Add(hSecVtxXYLSCother);
3518 flistLsCutsOther->Add(hSecVtxPhiLSCother);
3519 flistLsCutsOther->Add(hd0singlTrackLSCother);
3520 flistLsCutsOther->Add(hCPtaLSCother);
3521 flistLsCutsOther->Add(hd0xd0LSCother);
3522 flistLsCutsOther->Add(hMassTrueLSCother);
3523 flistLsCutsOther->Add(hMassLSCother);
3524 flistLsCutsOther->Add(hMassTrueLSCotherPM);
3525 flistLsCutsOther->Add(hMassLSCotherPM);
3526 flistLsCutsOther->Add(hMassTrueLSCotherSB);
3527 flistLsCutsOther->Add(hMassLSCotherSB);
3532 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3533 TH1F *hdcaLSCother=new TH1F("hdcaLSCother","hdca_LooseCuts_Other",100,0.,1000.);
3534 hdcaLSCother->SetXTitle("dca [#mum]");
3535 hdcaLSCother->SetYTitle("Entries");
3536 TH1F *hcosthetastarLSCother=new TH1F("hcosthetastarLSCother","hCosThetaStar_LooseCuts_Other",50,-1.,1.);
3537 hcosthetastarLSCother->SetXTitle("cos #theta^{*}");
3538 hcosthetastarLSCother->SetYTitle("Entries");
3539 TH1F *hptD0LSCother=new TH1F("hptD0LSCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3540 hptD0LSCother->SetXTitle("p_{t} [GeV/c]");
3541 hptD0LSCother->SetYTitle("Entries");
3542 TH1F *hptD0VsMaxPtLSCother=new TH1F("hptD0VsMaxPtLSCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3543 TH2F *hptD0PTallsqrtLSCother=new TH2F("hptD0PTallsqrtLSCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3544 TH2F *hptD0PTallLSCother=new TH2F("hptD0PTallLSCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3545 TH2F *hptD0vsptBLSCother=new TH2F("hptD0vsptBLSCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3546 TH2F *hpD0vspBLSCother=new TH2F("hpD0vspBLSCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3547 TH2F *hptD0vsptcquarkLSCother=new TH2F("hptD0vsptcquarkLSCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3548 TH2F *hpD0vspcquarkLSCother=new TH2F("hpD0vspcquarkLSCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3549 flistLsCutsOther->Add(hdcaLSCother);
3550 flistLsCutsOther->Add(hcosthetastarLSCother);
3551 flistLsCutsOther->Add(hptD0LSCother);
3552 flistLsCutsOther->Add(hptD0VsMaxPtLSCother);
3553 flistLsCutsOther->Add(hptD0PTallsqrtLSCother);
3554 flistLsCutsOther->Add(hptD0PTallLSCother);
3555 flistLsCutsOther->Add(hptD0vsptBLSCother);
3556 flistLsCutsOther->Add(hpD0vspBLSCother);
3557 flistLsCutsOther->Add(hptD0vsptcquarkLSCother);
3558 flistLsCutsOther->Add(hpD0vspcquarkLSCother);
3560 TH1F *hd0zD0ptLSCother;
3561 TH1F *hInvMassD0LSCother,*hInvMassD0barLSCother;
3562 TH2F *hInvMassPtLSCother=new TH2F("hInvMassPtLSCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3563 THnSparseF *hSparseLSCother=new THnSparseF("hSparseLSCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3564 hSparseLSCother->SetBinEdges(0,massbins);
3565 hSparseLSCother->SetBinEdges(1,massbins);
3566 hSparseLSCother->SetBinEdges(2,ptbinsForNsparse);
3567 hSparseLSCother->SetBinEdges(3,impparbins);
3568 hSparseLSCother->SetBinEdges(4,massHypoBins);
3569 flistLsCutsOther->Add(hSparseLSCother);
3571 TH1F *hCosPDPBLSCother;
3572 TH1F *hCosPcPDLSCother;
3573 flistLsCutsOther->Add(hInvMassPtLSCother);
3574 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3575 TH2F *hd0D0VSd0xd0LSCotherpt;
3576 TH2F *hangletracksVSd0xd0LSCotherpt;
3577 TH2F *hangletracksVSd0D0LSCotherpt;
3578 TH1F *hd0xd0LSCotherpt;
3580 TH2F *hTOFpidLSCother=new TH2F("hTOFpidLSCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3581 flistLsCutsOther->Add(hTOFpidLSCother);
3583 for(Int_t i=0;i<fnbins;i++){
3584 namehist="hd0zD0ptLSCother_pt";
3586 titlehist="d0(z) Loose Cuts Otherm ptbin=";
3588 hd0zD0ptLSCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3589 hd0zD0ptLSCother->SetXTitle("d_{0}(z) [#mum]");
3590 hd0zD0ptLSCother->SetYTitle("Entries");
3591 flistLsCutsOther->Add(hd0zD0ptLSCother);
3593 namehist="hInvMassD0LSCother_pt";
3595 titlehist="Invariant Mass Loose Cuts Other ptbin=";
3597 hInvMassD0LSCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3598 hInvMassD0LSCother->SetXTitle("Invariant Mass [GeV]");
3599 hInvMassD0LSCother->SetYTitle("Entries");
3600 flistLsCutsOther->Add(hInvMassD0LSCother);
3602 namehist="hInvMassD0barLSCother_pt";
3604 titlehist="Invariant Mass D0bar Loose Cuts Other ptbin=";
3606 hInvMassD0barLSCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3607 hInvMassD0barLSCother->SetXTitle("Invariant Mass [GeV]");
3608 hInvMassD0barLSCother->SetYTitle("Entries");
3609 flistLsCutsOther->Add(hInvMassD0barLSCother);
3611 namehist="hetaLSCother_pt";
3613 titlehist="eta Loose Cuts Other ptbin=";
3615 hetaLSCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3616 hetaLSCother->SetXTitle("Pseudorapidity");
3617 hetaLSCother->SetYTitle("Entries");
3618 flistLsCutsOther->Add(hetaLSCother);
3620 namehist="hCosPDPBLSCother_pt";
3622 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3624 hCosPDPBLSCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3625 hCosPDPBLSCother->SetXTitle("Cosine between D0 momentum and B momentum");
3626 hCosPDPBLSCother->SetYTitle("Entries");
3627 flistLsCutsOther->Add(hCosPDPBLSCother);
3629 namehist="hCosPcPDLSCother_pt";
3631 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3633 hCosPcPDLSCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3634 hCosPcPDLSCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
3635 hCosPcPDLSCother->SetYTitle("Entries");
3636 flistLsCutsOther->Add(hCosPcPDLSCother);
3638 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3639 namehist="hd0xd0LSCother_pt";
3641 titlehist="d0xd0 Loose Cuts Other ptbin=";
3643 hd0xd0LSCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3644 hd0xd0LSCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3645 hd0xd0LSCotherpt->SetYTitle("Entries");
3646 flistLsCutsOther->Add(hd0xd0LSCotherpt);
3649 namehist="hd0D0VSd0xd0LSCother_pt";
3651 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Other ptbin=";
3653 hd0D0VSd0xd0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3654 hd0D0VSd0xd0LSCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3655 hd0D0VSd0xd0LSCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3656 flistLsCutsOther->Add(hd0D0VSd0xd0LSCotherpt);
3659 namehist="hangletracksVSd0xd0LSCother_pt";
3661 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Other ptbin=";
3663 hangletracksVSd0xd0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3664 hangletracksVSd0xd0LSCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3665 hangletracksVSd0xd0LSCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
3666 flistLsCutsOther->Add(hangletracksVSd0xd0LSCotherpt);
3669 namehist="hangletracksVSd0D0LSCother_pt";
3671 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Other ptbin=";
3673 hangletracksVSd0D0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3674 hangletracksVSd0D0LSCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3675 hangletracksVSd0D0LSCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
3676 flistLsCutsOther->Add(hangletracksVSd0D0LSCotherpt);
3680 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3681 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3685 //############# d0 D0 histos ###############Ã
3686 TH1F *hd0D0LSCotherPM = new TH1F("hd0D0LSCotherPM","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3687 hd0D0LSCotherPM->SetXTitle("Impact parameter [#mum]");
3688 hd0D0LSCotherPM->SetYTitle("Entries");
3690 TH1F *hd0D0VtxTrueLSCotherPM = new TH1F("hd0D0VtxTrueLSCotherPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3691 hd0D0VtxTrueLSCotherPM->SetXTitle("Impact parameter [#mum]");
3692 hd0D0VtxTrueLSCotherPM->SetYTitle("Entries");
3694 TH1F *hMCd0D0LSCotherPM = new TH1F("hMCd0D0LSCotherPM","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3695 hMCd0D0LSCotherPM->SetXTitle("MC Impact parameter [#mum]");
3696 hMCd0D0LSCotherPM->SetYTitle("Entries");
3698 TH1F *hd0D0LSCotherSB = new TH1F("hd0D0LSCotherSB","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3699 hd0D0LSCotherSB->SetXTitle("Impact parameter [#mum]");
3700 hd0D0LSCotherSB->SetYTitle("Entries");
3702 TH1F *hd0D0VtxTrueLSCotherSB = new TH1F("hd0D0VtxTrueLSCotherSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3703 hd0D0VtxTrueLSCotherSB->SetXTitle("Impact parameter [#mum]");
3704 hd0D0VtxTrueLSCotherSB->SetYTitle("Entries");
3706 TH1F *hMCd0D0LSCotherSB = new TH1F("hMCd0D0LSCotherSB","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3707 hMCd0D0LSCotherSB->SetXTitle("MC Impact parameter [#mum]");
3708 hMCd0D0LSCotherSB->SetYTitle("Entries");
3710 flistLsCutsOther->Add(hd0D0LSCotherPM);
3711 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherPM);
3712 flistLsCutsOther->Add(hMCd0D0LSCotherPM);
3713 flistLsCutsOther->Add(hd0D0LSCotherSB);
3714 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherSB);
3715 flistLsCutsOther->Add(hMCd0D0LSCotherSB);
3717 TH1F *hd0D0ptLSCotherPM;
3718 TH1F *hMCd0D0ptLSCotherPM;
3719 TH1F *hd0D0VtxTrueptLSCotherPM;
3720 TH1F *hd0D0ptLSCotherSB;
3721 TH1F *hMCd0D0ptLSCotherSB;
3722 TH1F *hd0D0VtxTrueptLSCotherSB;
3723 namehist="hd0D0ptLSCother_";
3724 titlehist="D^{0} impact par. plot, Loose Cuts, Other, ";
3725 for(Int_t i=0;i<fnbins;i++){
3727 strnamept.Append("PkMss_pt");
3730 strtitlept=titlehist;
3731 strtitlept.Append(" Mass Peak, ");
3732 strtitlept+=fptbins[i];
3733 strtitlept.Append("<= pt <");
3734 strtitlept+=fptbins[i+1];
3735 strtitlept.Append(" [GeV/c]");
3737 hd0D0ptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3738 hd0D0ptLSCotherPM->SetXTitle("Impact parameter [#mum] ");
3739 hd0D0ptLSCotherPM->SetYTitle("Entries");
3740 flistLsCutsOther->Add(hd0D0ptLSCotherPM);
3742 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3743 hMCd0D0ptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3744 hMCd0D0ptLSCotherPM->SetXTitle("MC Impact parameter [#mum] ");
3745 hMCd0D0ptLSCotherPM->SetYTitle("Entries");
3746 flistLsCutsOther->Add(hMCd0D0ptLSCotherPM);
3749 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3750 hd0D0VtxTrueptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3751 hd0D0VtxTrueptLSCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3752 hd0D0VtxTrueptLSCotherPM->SetYTitle("Entries");
3753 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherPM);
3756 strnamept.Append("SBMss_pt");
3759 strtitlept=titlehist;
3760 strtitlept.Append(" Side Bands, ");
3761 strtitlept+=fptbins[i];
3762 strtitlept.Append("<= pt <");
3763 strtitlept+=fptbins[i+1];
3764 strtitlept.Append(" [GeV/c]");
3766 hd0D0ptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3767 hd0D0ptLSCotherSB->SetXTitle("Impact parameter [#mum] ");
3768 hd0D0ptLSCotherSB->SetYTitle("Entries");
3769 flistLsCutsOther->Add(hd0D0ptLSCotherSB);
3771 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3772 hMCd0D0ptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3773 hMCd0D0ptLSCotherSB->SetXTitle("MC Impact parameter [#mum] ");
3774 hMCd0D0ptLSCotherSB->SetYTitle("Entries");
3775 flistLsCutsOther->Add(hMCd0D0ptLSCotherSB);
3777 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3778 hd0D0VtxTrueptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3779 hd0D0VtxTrueptLSCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3780 hd0D0VtxTrueptLSCotherSB->SetYTitle("Entries");
3781 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherSB);
3784 //Printf("END OF LSCUTS HISTOS CREATION \n");
3787 //################################################################################################
3789 // HISTOS FOR TIGHT CUTS #
3791 //################################################################################################
3793 //############ TIGHT CUTS SIGNAL HISTOGRAMS ###############
3795 // ####### global properties histo ############
3797 TH2F *hCPtaVSd0d0TGHCsign=new TH2F("hCPtaVSd0d0TGHCsign","hCPtaVSd0d0_TightCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
3798 TH1F *hSecVtxZTGHCsign=new TH1F("hSecVtxZTGHCsign","hSecVtxZ_TightCuts_Signal",1000,-8.,8.);
3799 TH1F *hSecVtxXTGHCsign=new TH1F("hSecVtxXTGHCsign","hSecVtxX_TightCuts_Signal",1000,-3000.,3000.);
3800 TH1F *hSecVtxYTGHCsign=new TH1F("hSecVtxYTGHCsign","hSecVtxY_TightCuts_Signal",1000,-3000.,3000.);
3801 TH2F *hSecVtxXYTGHCsign=new TH2F("hSecVtxXYTGHCsign","hSecVtxXY_TightCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
3802 TH1F *hSecVtxPhiTGHCsign=new TH1F("hSecVtxPhiTGHCsign","hSecVtxPhi_TightCuts_Signal",180,-180.1,180.1);
3803 TH1F *hd0singlTrackTGHCsign=new TH1F("hd0singlTrackTGHCsign","hd0singlTrackTightCuts_Signal",1000,-5000.,5000.);
3804 TH1F *hCPtaTGHCsign=new TH1F("hCPtaTGHCsign","hCPta_TightCuts_Signal",100,-1.,1.);
3805 TH1F *hd0xd0TGHCsign=new TH1F("hd0xd0TGHCsign","hd0xd0_TightCuts_Signal",1000,-100000.,100000.);
3806 TH1F *hMassTrueTGHCsign=new TH1F("hMassTrueTGHCsign","D^{0} MC inv. Mass Tight Cuts Signal(All momenta)",600,1.600,2.200);
3807 TH1F *hMassTGHCsign=new TH1F("hMassTGHCsign","D^{0} inv. Mass Tight Cuts Signal (All momenta)",600,1.600,2.200);
3808 hMassTGHCsign->Sumw2();
3809 TH1F *hMassTrueTGHCsignPM=new TH1F("hMassTrueTGHCsignPM","D^{0} MC inv. Mass Tight Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
3810 TH1F *hMassTGHCsignPM=new TH1F("hMassTGHCsignPM","D^{0} inv. Mass Tight Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
3811 hMassTGHCsignPM->Sumw2();
3812 TH1F *hMassTrueTGHCsignSB=new TH1F("hMassTrueTGHCsignSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Signal(All momenta)",600,1.600,2.200);
3813 TH1F *hMassTGHCsignSB=new TH1F("hMassTGHCsignSB","D^{0} inv. Mass in Side Bands Tight Cuts Signal (All momenta)",600,1.600,2.200);
3814 hMassTGHCsignSB->Sumw2();
3816 flistTghCutsSignal->Add(hCPtaVSd0d0TGHCsign);
3817 flistTghCutsSignal->Add(hSecVtxZTGHCsign);
3818 flistTghCutsSignal->Add(hSecVtxYTGHCsign);
3819 flistTghCutsSignal->Add(hSecVtxXTGHCsign);
3820 flistTghCutsSignal->Add(hSecVtxXYTGHCsign);
3821 flistTghCutsSignal->Add(hSecVtxPhiTGHCsign);
3822 flistTghCutsSignal->Add(hd0singlTrackTGHCsign);
3823 flistTghCutsSignal->Add(hCPtaTGHCsign);
3824 flistTghCutsSignal->Add(hd0xd0TGHCsign);
3825 flistTghCutsSignal->Add(hMassTrueTGHCsign);
3826 flistTghCutsSignal->Add(hMassTGHCsign);
3827 flistTghCutsSignal->Add(hMassTrueTGHCsignPM);
3828 flistTghCutsSignal->Add(hMassTGHCsignPM);
3829 flistTghCutsSignal->Add(hMassTrueTGHCsignSB);
3830 flistTghCutsSignal->Add(hMassTGHCsignSB);
3837 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3838 TH1F *hdcaTGHCsign=new TH1F("hdcaTGHCsign","hdca_TightCuts_Signal",100,0.,1000.);
3839 hdcaTGHCsign->SetXTitle("dca [#mum]");
3840 hdcaTGHCsign->SetYTitle("Entries");
3841 TH1F *hcosthetastarTGHCsign=new TH1F("hcosthetastarTGHCsign","hCosThetaStar_TightCuts_Signal",50,-1.,1.);
3842 hcosthetastarTGHCsign->SetXTitle("cos #theta^{*}");
3843 hcosthetastarTGHCsign->SetYTitle("Entries");
3844 TH1F *hptD0TGHCsign=new TH1F("hptD0TGHCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3845 hptD0TGHCsign->SetXTitle("p_{t} [GeV/c]");
3846 hptD0TGHCsign->SetYTitle("Entries");
3847 TH1F *hptD0VsMaxPtTGHCsign=new TH1F("hptD0VsMaxPtTGHCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3848 TH2F *hptD0PTallsqrtTGHCsign=new TH2F("hptD0PTallsqrtTGHCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3849 TH2F *hptD0PTallTGHCsign=new TH2F("hptD0PTallTGHCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3850 TH2F *hptD0vsptBTGHCsign=new TH2F("hptD0vsptBTGHCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3851 TH2F *hpD0vspBTGHCsign=new TH2F("hpD0vspBTGHCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3852 TH2F *hptD0vsptcquarkTGHCsign=new TH2F("hptD0vsptcquarkTGHCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3853 TH2F *hpD0vspcquarkTGHCsign=new TH2F("hpD0vspcquarkTGHCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3854 flistTghCutsSignal->Add(hdcaTGHCsign);
3855 flistTghCutsSignal->Add(hcosthetastarTGHCsign);
3856 flistTghCutsSignal->Add(hptD0TGHCsign);
3857 flistTghCutsSignal->Add(hptD0VsMaxPtTGHCsign);
3858 flistTghCutsSignal->Add(hptD0PTallsqrtTGHCsign);
3859 flistTghCutsSignal->Add(hptD0PTallTGHCsign);
3860 flistTghCutsSignal->Add(hptD0vsptBTGHCsign);
3861 flistTghCutsSignal->Add(hpD0vspBTGHCsign);
3862 flistTghCutsSignal->Add(hptD0vsptcquarkTGHCsign);
3863 flistTghCutsSignal->Add(hpD0vspcquarkTGHCsign);
3865 TH1F *hd0zD0ptTGHCsign;
3866 TH1F *hInvMassD0TGHCsign,*hInvMassD0barTGHCsign;
3867 TH2F *hInvMassPtTGHCsign=new TH2F("hInvMassPtTGHCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3868 THnSparseF *hSparseTGHCsign=new THnSparseF("hSparseTGHCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3869 hSparseTGHCsign->SetBinEdges(0,massbins);
3870 hSparseTGHCsign->SetBinEdges(1,massbins);
3871 hSparseTGHCsign->SetBinEdges(2,ptbinsForNsparse);
3872 hSparseTGHCsign->SetBinEdges(3,impparbins);
3873 hSparseTGHCsign->SetBinEdges(4,massHypoBins);
3874 flistTghCutsSignal->Add(hSparseTGHCsign);
3878 THnSparseF *hSparseCxyLxyTGHCsign=new THnSparseF("hSparseCxyLxyTGHCsign","Candidate Mass;massD0;Pt;CosXY;Lxy",4,nbinsSparsCxyLxy,binLowLimitSparseCxyLxy,binUpLimitSparseCxyLxy);
3879 hSparseCxyLxyTGHCsign->SetBinEdges(1,ptbinlimitsCxyLxy);
3880 hSparseCxyLxyTGHCsign->GetAxis(0)->SetName("mass");
3881 hSparseCxyLxyTGHCsign->GetAxis(0)->SetTitle("Invariant Mass (K#pi) [GeV/c^{2}]");
3882 hSparseCxyLxyTGHCsign->GetAxis(1)->SetName("pt");
3883 hSparseCxyLxyTGHCsign->GetAxis(1)->SetTitle("p_{t} [GeV/c]");
3884 hSparseCxyLxyTGHCsign->GetAxis(2)->SetName("CosPointXY");
3885 hSparseCxyLxyTGHCsign->GetAxis(2)->SetTitle("Cos#theta_{point}^{XY}");
3886 hSparseCxyLxyTGHCsign->GetAxis(3)->SetName("NormDecLengthXY");
3887 hSparseCxyLxyTGHCsign->GetAxis(3)->SetTitle("Normalized XY decay length");
3890 flistTghCutsSignal->Add(hSparseCxyLxyTGHCsign);
3894 TH1F *hCosPDPBTGHCsign;
3895 TH1F *hCosPcPDTGHCsign;
3896 flistTghCutsSignal->Add(hInvMassPtTGHCsign);
3897 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3898 TH2F *hd0D0VSd0xd0TGHCsignpt;
3899 TH2F *hangletracksVSd0xd0TGHCsignpt;
3900 TH2F *hangletracksVSd0D0TGHCsignpt;
3901 TH1F *hd0xd0TGHCsignpt;
3902 TH1F *hPhiHistPMTGHCsignpt,*hPhiHistSBTGHCsignpt;
3904 TH2F *hTOFpidTGHCsign=new TH2F("hTOFpidTGHCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3905 flistTghCutsSignal->Add(hTOFpidTGHCsign);
3907 for(Int_t i=0;i<fnbins;i++){
3908 // Printf("INSIDE FIRST LOOP FOR TIGHT CUTS HISTO CREATION %d\n", fnbins);
3909 namehist="hPhiHistPMTGHCsign_pt";
3911 titlehist="Azimuthal correlation TGH Cuts Sign PM ptbin=";
3913 hPhiHistPMTGHCsignpt=new TH1F(namehist.Data(),titlehist.Data(),100,-3.15,3.15);
3914 hPhiHistPMTGHCsignpt->Sumw2();
3915 flistTghCutsSignal->Add(hPhiHistPMTGHCsignpt);
3917 namehist="hPhiHistSBTGHCsign_pt";
3919 titlehist="Azimuthal correlation TGH Cuts Sign SB ptbin=";
3921 hPhiHistSBTGHCsignpt=new TH1F(namehist.Data(),titlehist.Data(),100,-3.15,3.15);
3922 hPhiHistSBTGHCsignpt->Sumw2();
3923 flistTghCutsSignal->Add(hPhiHistSBTGHCsignpt);
3925 namehist="hd0zD0ptTGHCsign_pt";
3927 titlehist="d0(z) Tight Cuts Signal ptbin=";
3929 hd0zD0ptTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3930 hd0zD0ptTGHCsign->SetXTitle("d_{0}(z) [#mum]");
3931 hd0zD0ptTGHCsign->SetYTitle("Entries");
3932 flistTghCutsSignal->Add(hd0zD0ptTGHCsign);
3934 namehist="hInvMassD0TGHCsign_pt";
3936 titlehist="Invariant Mass Tight Cuts Signal ptbin=";
3938 hInvMassD0TGHCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3939 hInvMassD0TGHCsign->SetXTitle("Invariant Mass [GeV]");
3940 hInvMassD0TGHCsign->SetYTitle("Entries");
3941 flistTghCutsSignal->Add(hInvMassD0TGHCsign);
3943 namehist="hInvMassD0barTGHCsign_pt";
3945 titlehist="Invariant Mass D0bar Tight Cuts Signal ptbin=";
3947 hInvMassD0barTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3948 hInvMassD0barTGHCsign->SetXTitle("Invariant Mass [GeV]");
3949 hInvMassD0barTGHCsign->SetYTitle("Entries");
3950 flistTghCutsSignal->Add(hInvMassD0barTGHCsign);
3953 namehist="hetaTGHCsign_pt";
3955 titlehist="eta Tight Cuts Signal ptbin=";
3957 hetaTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3958 hetaTGHCsign->SetXTitle("Pseudorapidity");
3959 hetaTGHCsign->SetYTitle("Entries");
3960 flistTghCutsSignal->Add(hetaTGHCsign);
3962 namehist="hCosPDPBTGHCsign_pt";
3964 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3966 hCosPDPBTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3967 hCosPDPBTGHCsign->SetXTitle("Cosine between D0 momentum and B momentum");
3968 hCosPDPBTGHCsign->SetYTitle("Entries");
3969 flistTghCutsSignal->Add(hCosPDPBTGHCsign);
3971 namehist="hCosPcPDTGHCsign_pt";
3973 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3975 hCosPcPDTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3976 hCosPcPDTGHCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
3977 hCosPcPDTGHCsign->SetYTitle("Entries");
3978 flistTghCutsSignal->Add(hCosPcPDTGHCsign);
3980 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3981 namehist="hd0xd0TGHCsign_pt";
3983 titlehist="d0xd0 Tight Cuts Signal ptbin=";
3985 hd0xd0TGHCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3986 hd0xd0TGHCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3987 hd0xd0TGHCsignpt->SetYTitle("Entries");
3988 flistTghCutsSignal->Add(hd0xd0TGHCsignpt);
3991 namehist="hd0D0VSd0xd0TGHCsign_pt";
3993 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Signal ptbin=";
3995 hd0D0VSd0xd0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3996 hd0D0VSd0xd0TGHCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3997 hd0D0VSd0xd0TGHCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3998 flistTghCutsSignal->Add(hd0D0VSd0xd0TGHCsignpt);
4001 namehist="hangletracksVSd0xd0TGHCsign_pt";
4003 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Signal ptbin=";
4005 hangletracksVSd0xd0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4006 hangletracksVSd0xd0TGHCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4007 hangletracksVSd0xd0TGHCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
4008 flistTghCutsSignal->Add(hangletracksVSd0xd0TGHCsignpt);
4011 namehist="hangletracksVSd0D0TGHCsign_pt";
4013 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Signal ptbin=";
4015 hangletracksVSd0D0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4016 hangletracksVSd0D0TGHCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4017 hangletracksVSd0D0TGHCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
4018 flistTghCutsSignal->Add(hangletracksVSd0D0TGHCsignpt);
4021 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4022 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4031 // ####### d0 D0 histos ############
4032 TH1F *hd0D0TGHCsignPM = new TH1F("hd0D0TGHCsignPM","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
4033 hd0D0TGHCsignPM->SetXTitle("Impact parameter [#mum]");
4034 hd0D0TGHCsignPM->SetYTitle("Entries");
4036 TH1F *hd0D0VtxTrueTGHCsignPM = new TH1F("hd0D0VtxTrueTGHCsignPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
4037 hd0D0VtxTrueTGHCsignPM->SetXTitle("Impact parameter [#mum]");
4038 hd0D0VtxTrueTGHCsignPM->SetYTitle("Entries");
4040 TH1F *hMCd0D0TGHCsignPM = new TH1F("hMCd0D0TGHCsignPM","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
4041 hMCd0D0TGHCsignPM->SetXTitle("MC Impact parameter [#mum]");
4042 hMCd0D0TGHCsignPM->SetYTitle("Entries");
4044 TH1F *hd0D0TGHCsignSB = new TH1F("hd0D0TGHCsignSB","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
4045 hd0D0TGHCsignSB->SetXTitle("Impact parameter [#mum]");
4046 hd0D0TGHCsignSB->SetYTitle("Entries");
4048 TH1F *hd0D0VtxTrueTGHCsignSB = new TH1F("hd0D0VtxTrueTGHCsignSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
4049 hd0D0VtxTrueTGHCsignSB->SetXTitle("Impact parameter [#mum]");
4050 hd0D0VtxTrueTGHCsignSB->SetYTitle("Entries");
4052 TH1F *hMCd0D0TGHCsignSB = new TH1F("hMCd0D0TGHCsignSB","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
4053 hMCd0D0TGHCsignSB->SetXTitle("MC Impact parameter [#mum]");
4054 hMCd0D0TGHCsignSB->SetYTitle("Entries");
4056 flistTghCutsSignal->Add(hd0D0TGHCsignPM);
4057 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignPM);
4058 flistTghCutsSignal->Add(hMCd0D0TGHCsignPM);
4059 flistTghCutsSignal->Add(hd0D0TGHCsignSB);
4060 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignSB);
4061 flistTghCutsSignal->Add(hMCd0D0TGHCsignSB);
4063 TH1F *hd0D0ptTGHCsignPM;
4064 TH1F *hMCd0D0ptTGHCsignPM;
4065 TH1F *hd0D0VtxTrueptTGHCsignPM;
4066 TH1F *hd0D0ptTGHCsignSB;
4067 TH1F *hMCd0D0ptTGHCsignSB;
4068 TH1F *hd0D0VtxTrueptTGHCsignSB;
4069 namehist="hd0D0ptTGHCsign_";
4070 titlehist="D^{0} impact par. plot, Tight Cuts, Signal, ";
4071 for(Int_t i=0;i<fnbins;i++){
4073 strnamept.Append("PkMss_pt");
4076 strtitlept=titlehist;
4077 strtitlept.Append(" Mass Peak, ");
4078 strtitlept+=fptbins[i];
4079 strtitlept.Append("<= pt <");
4080 strtitlept+=fptbins[i+1];
4081 strtitlept.Append(" [GeV/c]");
4083 hd0D0ptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4084 hd0D0ptTGHCsignPM->SetXTitle("Impact parameter [#mum] ");
4085 hd0D0ptTGHCsignPM->SetYTitle("Entries");
4086 flistTghCutsSignal->Add(hd0D0ptTGHCsignPM);
4088 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4089 hMCd0D0ptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4090 hMCd0D0ptTGHCsignPM->SetXTitle("MC Impact parameter [#mum] ");
4091 hMCd0D0ptTGHCsignPM->SetYTitle("Entries");
4092 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignPM);
4095 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4096 hd0D0VtxTrueptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4097 hd0D0VtxTrueptTGHCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4098 hd0D0VtxTrueptTGHCsignPM->SetYTitle("Entries");
4099 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignPM);
4102 strnamept.Append("SBMss_pt");
4105 strtitlept=titlehist;
4106 strtitlept.Append(" Side Bands, ");
4107 strtitlept+=fptbins[i];
4108 strtitlept.Append("<= pt <");
4109 strtitlept+=fptbins[i+1];
4110 strtitlept.Append(" [GeV/c]");
4112 hd0D0ptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4113 hd0D0ptTGHCsignSB->SetXTitle("Impact parameter [#mum] ");
4114 hd0D0ptTGHCsignSB->SetYTitle("Entries");
4115 flistTghCutsSignal->Add(hd0D0ptTGHCsignSB);
4117 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4118 hMCd0D0ptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4119 hMCd0D0ptTGHCsignSB->SetXTitle("MC Impact parameter [#mum] ");
4120 hMCd0D0ptTGHCsignSB->SetYTitle("Entries");
4121 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignSB);
4123 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4124 hd0D0VtxTrueptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4125 hd0D0VtxTrueptTGHCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4126 hd0D0VtxTrueptTGHCsignSB->SetYTitle("Entries");
4127 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignSB);
4131 //############ TIGHT CUTS BACKGROUND HISTOGRAMS ###########
4133 // ######## global properties histos #######
4134 TH2F *hCPtaVSd0d0TGHCback=new TH2F("hCPtaVSd0d0TGHCback","hCPtaVSd0d0_TightCuts_Background",1000,-100000.,100000.,100,-1.,1.);
4135 TH1F *hSecVtxZTGHCback=new TH1F("hSecVtxZTGHCback","hSecVtxZ_TightCuts_Background",1000,-8.,8.);
4136 TH1F *hSecVtxXTGHCback=new TH1F("hSecVtxXTGHCback","hSecVtxX_TightCuts_Background",1000,-3000.,3000.);
4137 TH1F *hSecVtxYTGHCback=new TH1F("hSecVtxYTGHCback","hSecVtxY_TightCuts_Background",1000,-3000.,3000.);
4138 TH2F *hSecVtxXYTGHCback=new TH2F("hSecVtxXYTGHCback","hSecVtxXY_TightCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
4139 TH1F *hSecVtxPhiTGHCback=new TH1F("hSecVtxPhiTGHCback","hSecVtxPhi_TightCuts_Background",180,-180.1,180.1);
4140 TH1F *hd0singlTrackTGHCback=new TH1F("hd0singlTrackTGHCback","hd0singlTrackTightCuts_Back",1000,-5000.,5000.);
4141 TH1F *hCPtaTGHCback=new TH1F("hCPtaTGHCback","hCPta_TightCuts_Background",100,-1.,1.);
4142 TH1F *hd0xd0TGHCback=new TH1F("hd0xd0TGHCback","hd0xd0_TightCuts_Background",1000,-100000.,100000.);
4143 TH1F *hMassTrueTGHCback=new TH1F("hMassTrueTGHCback","D^{0} MC inv. Mass Tight Cuts Background(All momenta)",600,1.600,2.200);
4144 TH1F *hMassTGHCback=new TH1F("hMassTGHCback","D^{0} inv. Mass Tight Cuts Background (All momenta)",600,1.600,2.200);
4145 hMassTGHCback->Sumw2();
4146 TH1F *hMassTrueTGHCbackPM=new TH1F("hMassTrueTGHCbackPM","D^{0} MC inv. Mass Tight Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
4147 TH1F *hMassTGHCbackPM=new TH1F("hMassTGHCbackPM","D^{0} inv. Mass Tight Cuts Background (All momenta), MassPeak",600,1.600,2.200);
4148 hMassTGHCbackPM->Sumw2();
4149 TH1F *hMassTrueTGHCbackSB=new TH1F("hMassTrueTGHCbackSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Backgrround(All momenta)",600,1.600,2.200);
4150 TH1F *hMassTGHCbackSB=new TH1F("hMassTGHCbackSB","D^{0} inv. Mass in Side Bands Tight Cuts Background (All momenta)",600,1.600,2.200);
4151 hMassTGHCbackSB->Sumw2();
4153 flistTghCutsBack->Add(hCPtaVSd0d0TGHCback);
4154 flistTghCutsBack->Add(hSecVtxZTGHCback);
4155 flistTghCutsBack->Add(hSecVtxYTGHCback);
4156 flistTghCutsBack->Add(hSecVtxXTGHCback);
4157 flistTghCutsBack->Add(hSecVtxXYTGHCback);
4158 flistTghCutsBack->Add(hSecVtxPhiTGHCback);
4159 flistTghCutsBack->Add(hd0singlTrackTGHCback);
4160 flistTghCutsBack->Add(hCPtaTGHCback);
4161 flistTghCutsBack->Add(hd0xd0TGHCback);
4162 flistTghCutsBack->Add(hMassTrueTGHCback);
4163 flistTghCutsBack->Add(hMassTGHCback);
4164 flistTghCutsBack->Add(hMassTrueTGHCbackPM);
4165 flistTghCutsBack->Add(hMassTGHCbackPM);
4166 flistTghCutsBack->Add(hMassTrueTGHCbackSB);
4167 flistTghCutsBack->Add(hMassTGHCbackSB);
4175 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4176 TH1F *hdcaTGHCback=new TH1F("hdcaTGHCback","hdca_TightCuts_Backgr",100,0.,1000.);
4177 hdcaTGHCback->SetXTitle("dca [#mum]");
4178 hdcaTGHCback->SetYTitle("Entries");
4179 TH1F *hcosthetastarTGHCback=new TH1F("hcosthetastarTGHCback","hCosThetaStar_TightCuts_Backgr",50,-1.,1.);
4180 hcosthetastarTGHCback->SetXTitle("cos #theta^{*}");
4181 hcosthetastarTGHCback->SetYTitle("Entries");
4182 TH1F *hptD0TGHCback=new TH1F("hptD0TGHCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4183 hptD0TGHCback->SetXTitle("p_{t} [GeV/c]");
4184 hptD0TGHCback->SetYTitle("Entries");
4185 TH1F *hptD0VsMaxPtTGHCback=new TH1F("hptD0VsMaxPtTGHCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4186 TH2F *hptD0PTallsqrtTGHCback=new TH2F("hptD0PTallsqrtTGHCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4187 TH2F *hptD0PTallTGHCback=new TH2F("hptD0PTallTGHCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4188 TH2F *hptD0vsptBTGHCback=new TH2F("hptD0vsptBTGHCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4189 TH2F *hpD0vspBTGHCback=new TH2F("hpD0vspBTGHCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4190 TH2F *hptD0vsptcquarkTGHCback=new TH2F("hptD0vsptcquarkTGHCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4191 TH2F *hpD0vspcquarkTGHCback=new TH2F("hpD0vspcquarkTGHCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4192 flistTghCutsBack->Add(hdcaTGHCback);
4193 flistTghCutsBack->Add(hcosthetastarTGHCback);
4194 flistTghCutsBack->Add(hptD0TGHCback);
4195 flistTghCutsBack->Add(hptD0VsMaxPtTGHCback);
4196 flistTghCutsBack->Add(hptD0PTallsqrtTGHCback);
4197 flistTghCutsBack->Add(hptD0PTallTGHCback);
4198 flistTghCutsBack->Add(hptD0vsptBTGHCback);
4199 flistTghCutsBack->Add(hpD0vspBTGHCback);
4200 flistTghCutsBack->Add(hptD0vsptcquarkTGHCback);
4201 flistTghCutsBack->Add(hpD0vspcquarkTGHCback);
4203 TH1F *hd0zD0ptTGHCback;
4204 TH1F *hInvMassD0TGHCback,*hInvMassD0barTGHCback;
4205 TH2F *hInvMassPtTGHCback=new TH2F("hInvMassPtTGHCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4206 THnSparseF *hSparseTGHCback=new THnSparseF("hSparseTGHCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4207 hSparseTGHCback->SetBinEdges(0,massbins);
4208 hSparseTGHCback->SetBinEdges(1,massbins);
4209 hSparseTGHCback->SetBinEdges(2,ptbinsForNsparse);
4210 hSparseTGHCback->SetBinEdges(3,impparbins);
4211 hSparseTGHCback->SetBinEdges(4,massHypoBins);
4212 flistTghCutsBack->Add(hSparseTGHCback);
4214 TH1F *hCosPDPBTGHCback;
4215 TH1F *hCosPcPDTGHCback;
4216 flistTghCutsBack->Add(hInvMassPtTGHCback);
4217 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4218 TH2F *hd0D0VSd0xd0TGHCbackpt;
4219 TH2F *hangletracksVSd0xd0TGHCbackpt;
4220 TH2F *hangletracksVSd0D0TGHCbackpt;
4221 TH1F *hd0xd0TGHCbackpt;
4223 TH2F *hTOFpidTGHCback=new TH2F("hTOFpidTGHCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4224 flistTghCutsBack->Add(hTOFpidTGHCback);
4227 for(Int_t i=0;i<fnbins;i++){
4228 namehist="hd0zD0ptTGHCback_pt";
4230 titlehist="d0(z) Tight Cuts Backgrm ptbin=";
4232 hd0zD0ptTGHCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4233 hd0zD0ptTGHCback->SetXTitle("d_{0}(z) [#mum]");
4234 hd0zD0ptTGHCback->SetYTitle("Entries");
4235 flistTghCutsBack->Add(hd0zD0ptTGHCback);
4237 namehist="hInvMassD0TGHCback_pt";
4239 titlehist="Invariant Mass Tight Cuts Backgr ptbin=";
4241 hInvMassD0TGHCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4242 hInvMassD0TGHCback->SetXTitle("Invariant Mass [GeV]");
4243 hInvMassD0TGHCback->SetYTitle("Entries");
4244 flistTghCutsBack->Add(hInvMassD0TGHCback);
4246 namehist="hInvMassD0barTGHCback_pt";
4248 titlehist="Invariant Mass D0bar Tight Cuts Back ptbin=";
4250 hInvMassD0barTGHCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4251 hInvMassD0barTGHCback->SetXTitle("Invariant Mass [GeV]");
4252 hInvMassD0barTGHCback->SetYTitle("Entries");
4253 flistTghCutsBack->Add(hInvMassD0barTGHCback);
4255 namehist="hetaTGHCback_pt";
4257 titlehist="eta Tight Cuts Backgr ptbin=";
4259 hetaTGHCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4260 hetaTGHCback->SetXTitle("Pseudorapidity");
4261 hetaTGHCback->SetYTitle("Entries");
4262 flistTghCutsBack->Add(hetaTGHCback);
4264 namehist="hCosPDPBTGHCback_pt";
4266 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4268 hCosPDPBTGHCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4269 hCosPDPBTGHCback->SetXTitle("Cosine between D0 momentum and B momentum");
4270 hCosPDPBTGHCback->SetYTitle("Entries");
4271 flistTghCutsBack->Add(hCosPDPBTGHCback);
4273 namehist="hCosPcPDTGHCback_pt";
4275 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4277 hCosPcPDTGHCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4278 hCosPcPDTGHCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
4279 hCosPcPDTGHCback->SetYTitle("Entries");
4280 flistTghCutsBack->Add(hCosPcPDTGHCback);
4282 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4283 namehist="hd0xd0TGHCback_pt";
4285 titlehist="d0xd0 Tight Cuts Back ptbin=";
4287 hd0xd0TGHCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4288 hd0xd0TGHCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4289 hd0xd0TGHCbackpt->SetYTitle("Entries");
4290 flistTghCutsBack->Add(hd0xd0TGHCbackpt);
4293 namehist="hd0D0VSd0xd0TGHCback_pt";
4295 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Back ptbin=";
4297 hd0D0VSd0xd0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4298 hd0D0VSd0xd0TGHCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4299 hd0D0VSd0xd0TGHCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4300 flistTghCutsBack->Add(hd0D0VSd0xd0TGHCbackpt);
4303 namehist="hangletracksVSd0xd0TGHCback_pt";
4305 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Back ptbin=";
4307 hangletracksVSd0xd0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4308 hangletracksVSd0xd0TGHCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4309 hangletracksVSd0xd0TGHCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
4310 flistTghCutsBack->Add(hangletracksVSd0xd0TGHCbackpt);
4313 namehist="hangletracksVSd0D0TGHCback_pt";
4315 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Back ptbin=";
4317 hangletracksVSd0D0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4318 hangletracksVSd0D0TGHCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4319 hangletracksVSd0D0TGHCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
4320 flistTghCutsBack->Add(hangletracksVSd0D0TGHCbackpt);
4324 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4325 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4330 // ####### d0 D0 histos ############
4332 TH1F *hd0D0TGHCbackPM = new TH1F("hd0D0TGHCbackPM","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4333 hd0D0TGHCbackPM->SetXTitle("Impact parameter [#mum]");
4334 hd0D0TGHCbackPM->SetYTitle("Entries");
4336 TH1F *hd0D0VtxTrueTGHCbackPM = new TH1F("hd0D0VtxTrueTGHCbackPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4337 hd0D0VtxTrueTGHCbackPM->SetXTitle("Impact parameter [#mum]");
4338 hd0D0VtxTrueTGHCbackPM->SetYTitle("Entries");
4340 TH1F *hMCd0D0TGHCbackPM = new TH1F("hMCd0D0TGHCbackPM","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4341 hMCd0D0TGHCbackPM->SetXTitle("MC Impact parameter [#mum]");
4342 hMCd0D0TGHCbackPM->SetYTitle("Entries");
4344 TH1F *hd0D0TGHCbackSB = new TH1F("hd0D0TGHCbackSB","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4345 hd0D0TGHCbackSB->SetXTitle("Impact parameter [#mum]");
4346 hd0D0TGHCbackSB->SetYTitle("Entries");
4348 TH1F *hd0D0VtxTrueTGHCbackSB = new TH1F("hd0D0VtxTrueTGHCbackSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4349 hd0D0VtxTrueTGHCbackSB->SetXTitle("Impact parameter [#mum]");
4350 hd0D0VtxTrueTGHCbackSB->SetYTitle("Entries");
4352 TH1F *hMCd0D0TGHCbackSB = new TH1F("hMCd0D0TGHCbackSB","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4353 hMCd0D0TGHCbackSB->SetXTitle("MC Impact parameter [#mum]");
4354 hMCd0D0TGHCbackSB->SetYTitle("Entries");
4356 flistTghCutsBack->Add(hd0D0TGHCbackPM);
4357 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackPM);
4358 flistTghCutsBack->Add(hMCd0D0TGHCbackPM);
4359 flistTghCutsBack->Add(hd0D0TGHCbackSB);
4360 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackSB);
4361 flistTghCutsBack->Add(hMCd0D0TGHCbackSB);
4363 TH1F *hd0D0ptTGHCbackPM;
4364 TH1F *hMCd0D0ptTGHCbackPM;
4365 TH1F *hd0D0VtxTrueptTGHCbackPM;
4366 TH1F *hd0D0ptTGHCbackSB;
4367 TH1F *hMCd0D0ptTGHCbackSB;
4368 TH1F *hd0D0VtxTrueptTGHCbackSB;
4369 namehist="hd0D0ptTGHCback_";
4370 titlehist="D^{0} impact par. plot, Tight Cuts, Background, ";
4371 for(Int_t i=0;i<fnbins;i++){
4373 strnamept.Append("PkMss_pt");
4376 strtitlept=titlehist;
4377 strtitlept.Append(" Mass Peak, ");
4378 strtitlept+=fptbins[i];
4379 strtitlept.Append("<= pt <");
4380 strtitlept+=fptbins[i+1];
4381 strtitlept.Append(" [GeV/c]");
4383 hd0D0ptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4384 hd0D0ptTGHCbackPM->SetXTitle("Impact parameter [#mum] ");
4385 hd0D0ptTGHCbackPM->SetYTitle("Entries");
4386 flistTghCutsBack->Add(hd0D0ptTGHCbackPM);
4388 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4389 hMCd0D0ptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4390 hMCd0D0ptTGHCbackPM->SetXTitle("MC Impact parameter [#mum] ");
4391 hMCd0D0ptTGHCbackPM->SetYTitle("Entries");
4392 flistTghCutsBack->Add(hMCd0D0ptTGHCbackPM);
4395 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4396 hd0D0VtxTrueptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4397 hd0D0VtxTrueptTGHCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4398 hd0D0VtxTrueptTGHCbackPM->SetYTitle("Entries");
4399 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackPM);
4402 strnamept.Append("SBMss_pt");
4405 strtitlept=titlehist;
4406 strtitlept.Append(" Side Bands, ");
4407 strtitlept+=fptbins[i];
4408 strtitlept.Append("<= pt <");
4409 strtitlept+=fptbins[i+1];
4410 strtitlept.Append(" [GeV/c]");
4412 hd0D0ptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4413 hd0D0ptTGHCbackSB->SetXTitle("Impact parameter [#mum] ");
4414 hd0D0ptTGHCbackSB->SetYTitle("Entries");
4415 flistTghCutsBack->Add(hd0D0ptTGHCbackSB);
4417 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4418 hMCd0D0ptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4419 hMCd0D0ptTGHCbackSB->SetXTitle("MC Impact parameter [#mum] ");
4420 hMCd0D0ptTGHCbackSB->SetYTitle("Entries");
4421 flistTghCutsBack->Add(hMCd0D0ptTGHCbackSB);
4423 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4424 hd0D0VtxTrueptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4425 hd0D0VtxTrueptTGHCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4426 hd0D0VtxTrueptTGHCbackSB->SetYTitle("Entries");
4427 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackSB);
4432 //############ TIGHT CUTS FROMB HISTOGRAMS ###########
4434 //####### global properties histos
4436 TH2F *hCPtaVSd0d0TGHCfromB=new TH2F("hCPtaVSd0d0TGHCfromB","hCPtaVSd0d0_TightCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
4437 TH1F *hSecVtxZTGHCfromB=new TH1F("hSecVtxZTGHCfromB","hSecVtxZ_TightCuts_FromB",1000,-8.,8.);
4438 TH1F *hSecVtxXTGHCfromB=new TH1F("hSecVtxXTGHCfromB","hSecVtxX_TightCuts_FromB",1000,-3000.,3000.);
4439 TH1F *hSecVtxYTGHCfromB=new TH1F("hSecVtxYTGHCfromB","hSecVtxY_TightCuts_FromB",1000,-3000.,3000.);
4440 TH2F *hSecVtxXYTGHCfromB=new TH2F("hSecVtxXYTGHCfromB","hSecVtxXY_TightCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
4441 TH1F *hSecVtxPhiTGHCfromB=new TH1F("hSecVtxPhiTGHCfromB","hSecVtxPhi_TightCuts_FromB",180,-180.1,180.1);
4442 TH1F *hd0singlTrackTGHCfromB=new TH1F("hd0singlTrackTGHCfromB","hd0singlTrackTightCuts_FromB",1000,-5000.,5000.);
4443 TH1F *hCPtaTGHCfromB=new TH1F("hCPtaTGHCfromB","hCPta_TightCuts_FromB",100,-1.,1.);
4444 TH1F *hd0xd0TGHCfromB=new TH1F("hd0xd0TGHCfromB","hd0xd0_TightCuts_FromB",1000,-100000.,100000.);
4445 TH1F *hMassTrueTGHCfromB=new TH1F("hMassTrueTGHCfromB","D^{0} MC inv. Mass Tight Cuts FromB(All momenta)",600,1.600,2.200);
4446 TH1F *hMassTGHCfromB=new TH1F("hMassTGHCfromB","D^{0} inv. Mass Tight Cuts FromB (All momenta)",600,1.600,2.200);
4447 hMassTGHCfromB->Sumw2();
4448 TH1F *hMassTrueTGHCfromBPM=new TH1F("hMassTrueTGHCfromBPM","D^{0} MC inv. Mass Tight Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
4449 TH1F *hMassTGHCfromBPM=new TH1F("hMassTGHCfromBPM","D^{0} inv. Mass Tight Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
4450 hMassTGHCfromBPM->Sumw2();
4451 TH1F *hMassTrueTGHCfromBSB=new TH1F("hMassTrueTGHCfromBSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromB(All momenta)",600,1.600,2.200);
4452 TH1F *hMassTGHCfromBSB=new TH1F("hMassTGHCfromBSB","D^{0} inv. Mass in Side Bands Tight Cuts FromB (All momenta)",600,1.600,2.200);
4453 hMassTGHCfromBSB->Sumw2();
4455 flistTghCutsFromB->Add(hCPtaVSd0d0TGHCfromB);
4456 flistTghCutsFromB->Add(hSecVtxZTGHCfromB);
4457 flistTghCutsFromB->Add(hSecVtxYTGHCfromB);
4458 flistTghCutsFromB->Add(hSecVtxXTGHCfromB);
4459 flistTghCutsFromB->Add(hSecVtxXYTGHCfromB);
4460 flistTghCutsFromB->Add(hSecVtxPhiTGHCfromB);
4461 flistTghCutsFromB->Add(hd0singlTrackTGHCfromB);
4462 flistTghCutsFromB->Add(hCPtaTGHCfromB);
4463 flistTghCutsFromB->Add(hd0xd0TGHCfromB);
4464 flistTghCutsFromB->Add(hMassTrueTGHCfromB);
4465 flistTghCutsFromB->Add(hMassTGHCfromB);
4466 flistTghCutsFromB->Add(hMassTrueTGHCfromBPM);
4467 flistTghCutsFromB->Add(hMassTGHCfromBPM);
4468 flistTghCutsFromB->Add(hMassTrueTGHCfromBSB);
4469 flistTghCutsFromB->Add(hMassTGHCfromBSB);
4473 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4474 TH1F *hdcaTGHCfromB=new TH1F("hdcaTGHCfromB","hdca_TightCuts_FromB",100,0.,1000.);
4475 hdcaTGHCfromB->SetXTitle("dca [#mum]");
4476 hdcaTGHCfromB->SetYTitle("Entries");
4477 TH1F *hcosthetastarTGHCfromB=new TH1F("hcosthetastarTGHCfromB","hCosThetaStar_TightCuts_FromB",50,-1.,1.);
4478 hcosthetastarTGHCfromB->SetXTitle("cos #theta^{*}");
4479 hcosthetastarTGHCfromB->SetYTitle("Entries");
4480 TH1F *hptD0TGHCfromB=new TH1F("hptD0TGHCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4481 hptD0TGHCfromB->SetXTitle("p_{t} [GeV/c]");
4482 hptD0TGHCfromB->SetYTitle("Entries");
4483 TH1F *hptD0VsMaxPtTGHCfromB=new TH1F("hptD0VsMaxPtTGHCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4484 TH2F *hptD0PTallsqrtTGHCfromB=new TH2F("hptD0PTallsqrtTGHCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4485 TH2F *hptD0PTallTGHCfromB=new TH2F("hptD0PTallTGHCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4486 TH2F *hptD0vsptBTGHCfromB=new TH2F("hptD0vsptBTGHCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4487 TH2F *hpD0vspBTGHCfromB=new TH2F("hpD0vspBTGHCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4488 TH2F *hptD0vsptcquarkTGHCfromB=new TH2F("hptD0vsptcquarkTGHCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4489 TH2F *hpD0vspcquarkTGHCfromB=new TH2F("hpD0vspcquarkTGHCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4490 flistTghCutsFromB->Add(hdcaTGHCfromB);
4491 flistTghCutsFromB->Add(hcosthetastarTGHCfromB);
4492 flistTghCutsFromB->Add(hptD0TGHCfromB);
4493 flistTghCutsFromB->Add(hptD0VsMaxPtTGHCfromB);
4494 flistTghCutsFromB->Add(hptD0PTallsqrtTGHCfromB);
4495 flistTghCutsFromB->Add(hptD0PTallTGHCfromB);
4496 flistTghCutsFromB->Add(hptD0vsptBTGHCfromB);
4497 flistTghCutsFromB->Add(hpD0vspBTGHCfromB);
4498 flistTghCutsFromB->Add(hptD0vsptcquarkTGHCfromB);
4499 flistTghCutsFromB->Add(hpD0vspcquarkTGHCfromB);
4501 TH1F *hd0zD0ptTGHCfromB;
4502 TH1F *hInvMassD0TGHCfromB,*hInvMassD0barTGHCfromB;
4503 TH2F *hInvMassPtTGHCfromB=new TH2F("hInvMassPtTGHCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4504 THnSparseF *hSparseTGHCfromB=new THnSparseF("hSparseTGHCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4505 hSparseTGHCfromB->SetBinEdges(0,massbins);
4506 hSparseTGHCfromB->SetBinEdges(1,massbins);
4507 hSparseTGHCfromB->SetBinEdges(2,ptbinsForNsparse);
4508 hSparseTGHCfromB->SetBinEdges(3,impparbins);
4509 hSparseTGHCfromB->SetBinEdges(4,massHypoBins);
4510 flistTghCutsFromB->Add(hSparseTGHCfromB);
4511 TH1F *hetaTGHCfromB;
4512 TH1F *hCosPDPBTGHCfromB;
4513 TH1F *hCosPcPDTGHCfromB;
4514 flistTghCutsFromB->Add(hInvMassPtTGHCfromB);
4515 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4516 TH2F *hd0D0VSd0xd0TGHCfromBpt;
4517 TH2F *hangletracksVSd0xd0TGHCfromBpt;
4518 TH2F *hangletracksVSd0D0TGHCfromBpt;
4519 TH1F *hd0xd0TGHCfromBpt;
4521 TH2F *hTOFpidTGHCfromB=new TH2F("hTOFpidTGHCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4522 flistTghCutsFromB->Add(hTOFpidTGHCfromB);
4525 for(Int_t i=0;i<fnbins;i++){
4526 namehist="hd0zD0ptTGHCfromB_pt";
4528 titlehist="d0(z) Tight Cuts FromBm ptbin=";
4530 hd0zD0ptTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4531 hd0zD0ptTGHCfromB->SetXTitle("d_{0}(z) [#mum]");
4532 hd0zD0ptTGHCfromB->SetYTitle("Entries");
4533 flistTghCutsFromB->Add(hd0zD0ptTGHCfromB);
4535 namehist="hInvMassD0TGHCfromB_pt";
4537 titlehist="Invariant Mass Tight Cuts FromB ptbin=";
4539 hInvMassD0TGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4540 hInvMassD0TGHCfromB->SetXTitle("Invariant Mass [GeV]");
4541 hInvMassD0TGHCfromB->SetYTitle("Entries");
4542 flistTghCutsFromB->Add(hInvMassD0TGHCfromB);
4544 namehist="hInvMassD0barTGHCfromB_pt";
4546 titlehist="Invariant Mass D0bar Tight Cuts FromB ptbin=";
4548 hInvMassD0barTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4549 hInvMassD0barTGHCfromB->SetXTitle("Invariant Mass [GeV]");
4550 hInvMassD0barTGHCfromB->SetYTitle("Entries");
4551 flistTghCutsFromB->Add(hInvMassD0barTGHCfromB);
4553 namehist="hetaTGHCfromB_pt";
4555 titlehist="eta Tight Cuts FromB ptbin=";
4557 hetaTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4558 hetaTGHCfromB->SetXTitle("Pseudorapidity");
4559 hetaTGHCfromB->SetYTitle("Entries");
4560 flistTghCutsFromB->Add(hetaTGHCfromB);
4562 namehist="hCosPDPBTGHCfromB_pt";
4564 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4566 hCosPDPBTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4567 hCosPDPBTGHCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
4568 hCosPDPBTGHCfromB->SetYTitle("Entries");
4569 flistTghCutsFromB->Add(hCosPDPBTGHCfromB);
4571 namehist="hCosPcPDTGHCfromB_pt";
4573 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4575 hCosPcPDTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4576 hCosPcPDTGHCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
4577 hCosPcPDTGHCfromB->SetYTitle("Entries");
4578 flistTghCutsFromB->Add(hCosPcPDTGHCfromB);
4580 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4581 namehist="hd0xd0TGHCfromB_pt";
4583 titlehist="d0xd0 Tight Cuts FromB ptbin=";
4585 hd0xd0TGHCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4586 hd0xd0TGHCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4587 hd0xd0TGHCfromBpt->SetYTitle("Entries");
4588 flistTghCutsFromB->Add(hd0xd0TGHCfromBpt);
4591 namehist="hd0D0VSd0xd0TGHCfromB_pt";
4593 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromB ptbin=";
4595 hd0D0VSd0xd0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4596 hd0D0VSd0xd0TGHCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4597 hd0D0VSd0xd0TGHCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4598 flistTghCutsFromB->Add(hd0D0VSd0xd0TGHCfromBpt);
4601 namehist="hangletracksVSd0xd0TGHCfromB_pt";
4603 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromB ptbin=";
4605 hangletracksVSd0xd0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4606 hangletracksVSd0xd0TGHCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4607 hangletracksVSd0xd0TGHCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
4608 flistTghCutsFromB->Add(hangletracksVSd0xd0TGHCfromBpt);
4611 namehist="hangletracksVSd0D0TGHCfromB_pt";
4613 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts FromB ptbin=";
4615 hangletracksVSd0D0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4616 hangletracksVSd0D0TGHCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4617 hangletracksVSd0D0TGHCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
4618 flistTghCutsFromB->Add(hangletracksVSd0D0TGHCfromBpt);
4621 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4622 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4628 // ######### d0 D0 histos ##############
4629 TH1F *hd0D0TGHCfromBPM = new TH1F("hd0D0TGHCfromBPM","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4630 hd0D0TGHCfromBPM->SetXTitle("Impact parameter [#mum]");
4631 hd0D0TGHCfromBPM->SetYTitle("Entries");
4633 TH1F *hd0D0VtxTrueTGHCfromBPM = new TH1F("hd0D0VtxTrueTGHCfromBPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4634 hd0D0VtxTrueTGHCfromBPM->SetXTitle("Impact parameter [#mum]");
4635 hd0D0VtxTrueTGHCfromBPM->SetYTitle("Entries");
4637 TH1F *hMCd0D0TGHCfromBPM = new TH1F("hMCd0D0TGHCfromBPM","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4638 hMCd0D0TGHCfromBPM->SetXTitle("MC Impact parameter [#mum]");
4639 hMCd0D0TGHCfromBPM->SetYTitle("Entries");
4641 TH1F *hd0D0TGHCfromBSB = new TH1F("hd0D0TGHCfromBSB","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4642 hd0D0TGHCfromBSB->SetXTitle("Impact parameter [#mum]");
4643 hd0D0TGHCfromBSB->SetYTitle("Entries");
4645 TH1F *hd0D0VtxTrueTGHCfromBSB = new TH1F("hd0D0VtxTrueTGHCfromBSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4646 hd0D0VtxTrueTGHCfromBSB->SetXTitle("Impact parameter [#mum]");
4647 hd0D0VtxTrueTGHCfromBSB->SetYTitle("Entries");
4649 TH1F *hMCd0D0TGHCfromBSB = new TH1F("hMCd0D0TGHCfromBSB","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4650 hMCd0D0TGHCfromBSB->SetXTitle("MC Impact parameter [#mum]");
4651 hMCd0D0TGHCfromBSB->SetYTitle("Entries");
4653 flistTghCutsFromB->Add(hd0D0TGHCfromBPM);
4654 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBPM);
4655 flistTghCutsFromB->Add(hMCd0D0TGHCfromBPM);
4656 flistTghCutsFromB->Add(hd0D0TGHCfromBSB);
4657 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBSB);
4658 flistTghCutsFromB->Add(hMCd0D0TGHCfromBSB);
4660 TH1F *hd0D0ptTGHCfromBPM;
4661 TH1F *hMCd0D0ptTGHCfromBPM;
4662 TH1F *hd0D0VtxTrueptTGHCfromBPM;
4663 TH1F *hd0D0ptTGHCfromBSB;
4664 TH1F *hMCd0D0ptTGHCfromBSB;
4665 TH1F *hd0D0VtxTrueptTGHCfromBSB;
4666 namehist="hd0D0ptTGHCfromB_";
4667 titlehist="D^{0} impact par. plot, Tight Cuts, FromB, ";
4668 for(Int_t i=0;i<fnbins;i++){
4670 strnamept.Append("PkMss_pt");
4673 strtitlept=titlehist;
4674 strtitlept.Append(" Mass Peak, ");
4675 strtitlept+=fptbins[i];
4676 strtitlept.Append("<= pt <");
4677 strtitlept+=fptbins[i+1];
4678 strtitlept.Append(" [GeV/c]");
4680 hd0D0ptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4681 hd0D0ptTGHCfromBPM->SetXTitle("Impact parameter [#mum] ");
4682 hd0D0ptTGHCfromBPM->SetYTitle("Entries");
4683 flistTghCutsFromB->Add(hd0D0ptTGHCfromBPM);
4685 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4686 hMCd0D0ptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4687 hMCd0D0ptTGHCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
4688 hMCd0D0ptTGHCfromBPM->SetYTitle("Entries");
4689 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBPM);
4692 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4693 hd0D0VtxTrueptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4694 hd0D0VtxTrueptTGHCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4695 hd0D0VtxTrueptTGHCfromBPM->SetYTitle("Entries");
4696 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBPM);
4699 strnamept.Append("SBMss_pt");
4702 strtitlept=titlehist;
4703 strtitlept.Append(" Side Bands, ");
4704 strtitlept+=fptbins[i];
4705 strtitlept.Append("<= pt <");
4706 strtitlept+=fptbins[i+1];
4707 strtitlept.Append(" [GeV/c]");
4709 hd0D0ptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4710 hd0D0ptTGHCfromBSB->SetXTitle("Impact parameter [#mum] ");
4711 hd0D0ptTGHCfromBSB->SetYTitle("Entries");
4712 flistTghCutsFromB->Add(hd0D0ptTGHCfromBSB);
4714 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4715 hMCd0D0ptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4716 hMCd0D0ptTGHCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
4717 hMCd0D0ptTGHCfromBSB->SetYTitle("Entries");
4718 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBSB);
4720 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4721 hd0D0VtxTrueptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4722 hd0D0VtxTrueptTGHCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4723 hd0D0VtxTrueptTGHCfromBSB->SetYTitle("Entries");
4724 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBSB);
4729 //############ TIGHT CUTS FROM DSTAR HISTOGRAMS ###########
4731 //############## global properties histos
4732 TH2F *hCPtaVSd0d0TGHCfromDstar=new TH2F("hCPtaVSd0d0TGHCfromDstar","hCPtaVSd0d0_TightCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
4733 TH1F *hSecVtxZTGHCfromDstar=new TH1F("hSecVtxZTGHCfromDstar","hSecVtxZ_TightCuts_FromDStar",1000,-8.,8.);
4734 TH1F *hSecVtxXTGHCfromDstar=new TH1F("hSecVtxXTGHCfromDstar","hSecVtxX_TightCuts_FromDStar",1000,-3000.,3000.);
4735 TH1F *hSecVtxYTGHCfromDstar=new TH1F("hSecVtxYTGHCfromDstar","hSecVtxY_TightCuts_FromDStar",1000,-3000.,3000.);
4736 TH2F *hSecVtxXYTGHCfromDstar=new TH2F("hSecVtxXYTGHCfromDstar","hSecVtxXY_TightCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
4737 TH1F *hSecVtxPhiTGHCfromDstar=new TH1F("hSecVtxPhiTGHCfromDstar","hSecVtxPhi_TightCuts_FromDStar",180,-180.1,180.1);
4738 TH1F *hd0singlTrackTGHCfromDstar=new TH1F("hd0singlTrackTGHCfromDstar","hd0singlTrackTightCuts_FromDstar",1000,-5000.,5000.);
4739 TH1F *hCPtaTGHCfromDstar=new TH1F("hCPtaTGHCfromDstar","hCPta_TightCuts_FromDStar",100,-1.,1.);
4740 TH1F *hd0xd0TGHCfromDstar=new TH1F("hd0xd0TGHCfromDstar","hd0xd0_TightCuts_FromDStar",1000,-100000.,100000.);
4741 TH1F *hMassTrueTGHCfromDstar=new TH1F("hMassTrueTGHCfromDstar","D^{0} MC inv. Mass Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
4742 TH1F *hMassTGHCfromDstar=new TH1F("hMassTGHCfromDstar","D^{0} inv. Mass Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
4743 hMassTGHCfromDstar->Sumw2();
4744 TH1F *hMassTrueTGHCfromDstarPM=new TH1F("hMassTrueTGHCfromDstarPM","D^{0} MC inv. Mass Tight Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
4745 TH1F *hMassTGHCfromDstarPM=new TH1F("hMassTGHCfromDstarPM","D^{0} inv. Mass Tight Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
4746 hMassTGHCfromDstarPM->Sumw2();
4747 TH1F *hMassTrueTGHCfromDstarSB=new TH1F("hMassTrueTGHCfromDstarSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
4748 TH1F *hMassTGHCfromDstarSB=new TH1F("hMassTGHCfromDstarSB","D^{0} inv. Mass in Side Bands Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
4749 hMassTGHCfromDstarSB->Sumw2();
4751 flistTghCutsFromDstar->Add(hCPtaVSd0d0TGHCfromDstar);
4752 flistTghCutsFromDstar->Add(hSecVtxZTGHCfromDstar);
4753 flistTghCutsFromDstar->Add(hSecVtxYTGHCfromDstar);
4754 flistTghCutsFromDstar->Add(hSecVtxXTGHCfromDstar);
4755 flistTghCutsFromDstar->Add(hSecVtxXYTGHCfromDstar);
4756 flistTghCutsFromDstar->Add(hSecVtxPhiTGHCfromDstar);
4757 flistTghCutsFromDstar->Add(hd0singlTrackTGHCfromDstar);
4758 flistTghCutsFromDstar->Add(hCPtaTGHCfromDstar);
4759 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstar);
4760 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstar);
4761 flistTghCutsFromDstar->Add(hMassTGHCfromDstar);
4762 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarPM);
4763 flistTghCutsFromDstar->Add(hMassTGHCfromDstarPM);
4764 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarSB);
4765 flistTghCutsFromDstar->Add(hMassTGHCfromDstarSB);
4771 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4772 TH1F *hdcaTGHCfromDstar=new TH1F("hdcaTGHCfromDstar","hdca_TightCuts_FromDstar",100,0.,1000.);
4773 hdcaTGHCfromDstar->SetXTitle("dca [#mum]");
4774 hdcaTGHCfromDstar->SetYTitle("Entries");
4775 TH1F *hcosthetastarTGHCfromDstar=new TH1F("hcosthetastarTGHCfromDstar","hCosThetaStar_TightCuts_FromDstar",50,-1.,1.);
4776 hcosthetastarTGHCfromDstar->SetXTitle("cos #theta^{*}");
4777 hcosthetastarTGHCfromDstar->SetYTitle("Entries");
4778 TH1F *hptD0TGHCfromDstar=new TH1F("hptD0TGHCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4779 hptD0TGHCfromDstar->SetXTitle("p_{t} [GeV/c]");
4780 hptD0TGHCfromDstar->SetYTitle("Entries");
4781 TH1F *hptD0VsMaxPtTGHCfromDstar=new TH1F("hptD0VsMaxPtTGHCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4782 TH2F *hptD0PTallsqrtTGHCfromDstar=new TH2F("hptD0PTallsqrtTGHCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4783 TH2F *hptD0PTallTGHCfromDstar=new TH2F("hptD0PTallTGHCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4784 TH2F *hptD0vsptBTGHCfromDstar=new TH2F("hptD0vsptBTGHCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4785 TH2F *hpD0vspBTGHCfromDstar=new TH2F("hpD0vspBTGHCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4786 TH2F *hptD0vsptcquarkTGHCfromDstar=new TH2F("hptD0vsptcquarkTGHCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4787 TH2F *hpD0vspcquarkTGHCfromDstar=new TH2F("hpD0vspcquarkTGHCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4788 flistTghCutsFromDstar->Add(hdcaTGHCfromDstar);
4789 flistTghCutsFromDstar->Add(hcosthetastarTGHCfromDstar);
4790 flistTghCutsFromDstar->Add(hptD0TGHCfromDstar);
4791 flistTghCutsFromDstar->Add(hptD0VsMaxPtTGHCfromDstar);
4792 flistTghCutsFromDstar->Add(hptD0PTallsqrtTGHCfromDstar);
4793 flistTghCutsFromDstar->Add(hptD0PTallTGHCfromDstar);
4794 flistTghCutsFromDstar->Add(hptD0vsptBTGHCfromDstar);
4795 flistTghCutsFromDstar->Add(hpD0vspBTGHCfromDstar);
4796 flistTghCutsFromDstar->Add(hptD0vsptcquarkTGHCfromDstar);
4797 flistTghCutsFromDstar->Add(hpD0vspcquarkTGHCfromDstar);
4799 TH1F *hd0zD0ptTGHCfromDstar;
4800 TH1F *hInvMassD0TGHCfromDstar,*hInvMassD0barTGHCfromDstar;
4801 TH1F *hetaTGHCfromDstar;
4802 TH2F *hInvMassPtTGHCfromDstar=new TH2F("hInvMassPtTGHCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4803 THnSparseF *hSparseTGHCfromDstar=new THnSparseF("hSparseTGHCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4804 hSparseTGHCfromDstar->SetBinEdges(0,massbins);
4805 hSparseTGHCfromDstar->SetBinEdges(1,massbins);
4806 hSparseTGHCfromDstar->SetBinEdges(2,ptbinsForNsparse);
4807 hSparseTGHCfromDstar->SetBinEdges(3,impparbins);
4808 hSparseTGHCfromDstar->SetBinEdges(4,massHypoBins);
4809 flistTghCutsFromDstar->Add(hSparseTGHCfromDstar);
4810 TH1F *hCosPDPBTGHCfromDstar;
4811 TH1F *hCosPcPDTGHCfromDstar;
4812 flistTghCutsFromDstar->Add(hInvMassPtTGHCfromDstar);
4813 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4814 TH2F *hd0D0VSd0xd0TGHCfromDstarpt;
4815 TH2F *hangletracksVSd0xd0TGHCfromDstarpt;
4816 TH2F *hangletracksVSd0D0TGHCfromDstarpt;
4817 TH1F *hd0xd0TGHCfromDstarpt;
4819 TH2F *hTOFpidTGHCfromDstar=new TH2F("hTOFpidTGHCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4820 flistTghCutsFromDstar->Add(hTOFpidTGHCfromDstar);
4822 for(Int_t i=0;i<fnbins;i++){
4823 namehist="hd0zD0ptTGHCfromDstar_pt";
4825 titlehist="d0(z) Tight Cuts FromDstarm ptbin=";
4827 hd0zD0ptTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4828 hd0zD0ptTGHCfromDstar->SetXTitle("d_{0}(z) [#mum]");
4829 hd0zD0ptTGHCfromDstar->SetYTitle("Entries");
4830 flistTghCutsFromDstar->Add(hd0zD0ptTGHCfromDstar);
4832 namehist="hInvMassD0TGHCfromDstar_pt";
4834 titlehist="Invariant Mass Tight Cuts FromDstar ptbin=";
4836 hInvMassD0TGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4837 hInvMassD0TGHCfromDstar->SetXTitle("Invariant Mass [GeV]");
4838 hInvMassD0TGHCfromDstar->SetYTitle("Entries");
4839 flistTghCutsFromDstar->Add(hInvMassD0TGHCfromDstar);
4841 namehist="hInvMassD0barTGHCfromDstar_pt";
4843 titlehist="Invariant Mass D0bar Tight Cuts FromDstar ptbin=";
4845 hInvMassD0barTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4846 hInvMassD0barTGHCfromDstar->SetXTitle("Invariant Mass [GeV]");
4847 hInvMassD0barTGHCfromDstar->SetYTitle("Entries");
4848 flistTghCutsFromDstar->Add(hInvMassD0barTGHCfromDstar);
4850 namehist="hetaTGHCfromDstar_pt";
4852 titlehist="eta Tight Cuts FromDstar ptbin=";
4854 hetaTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4855 hetaTGHCfromDstar->SetXTitle("Pseudorapidity");
4856 hetaTGHCfromDstar->SetYTitle("Entries");
4857 flistTghCutsFromDstar->Add(hetaTGHCfromDstar);
4859 namehist="hCosPDPBTGHCfromDstar_pt";
4861 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4863 hCosPDPBTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4864 hCosPDPBTGHCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
4865 hCosPDPBTGHCfromDstar->SetYTitle("Entries");
4866 flistTghCutsFromDstar->Add(hCosPDPBTGHCfromDstar);
4868 namehist="hCosPcPDTGHCfromDstar_pt";
4870 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4872 hCosPcPDTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4873 hCosPcPDTGHCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
4874 hCosPcPDTGHCfromDstar->SetYTitle("Entries");
4875 flistTghCutsFromDstar->Add(hCosPcPDTGHCfromDstar);
4877 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4878 namehist="hd0xd0TGHCfromDstar_pt";
4880 titlehist="d0xd0 Tight Cuts FromDstar ptbin=";
4882 hd0xd0TGHCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4883 hd0xd0TGHCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4884 hd0xd0TGHCfromDstarpt->SetYTitle("Entries");
4885 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstarpt);
4888 namehist="hd0D0VSd0xd0TGHCfromDstar_pt";
4890 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromDstar ptbin=";
4892 hd0D0VSd0xd0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4893 hd0D0VSd0xd0TGHCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4894 hd0D0VSd0xd0TGHCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4895 flistTghCutsFromDstar->Add(hd0D0VSd0xd0TGHCfromDstarpt);
4898 namehist="hangletracksVSd0xd0TGHCfromDstar_pt";
4900 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromDstar ptbin=";
4902 hangletracksVSd0xd0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4903 hangletracksVSd0xd0TGHCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4904 hangletracksVSd0xd0TGHCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
4905 flistTghCutsFromDstar->Add(hangletracksVSd0xd0TGHCfromDstarpt);
4908 namehist="hangletracksVSd0D0TGHCfromDstar_pt";
4910 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts FromDstar ptbin=";
4912 hangletracksVSd0D0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4913 hangletracksVSd0D0TGHCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4914 hangletracksVSd0D0TGHCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
4915 flistTghCutsFromDstar->Add(hangletracksVSd0D0TGHCfromDstarpt);
4919 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4920 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4923 //########## d0 D0 histos #############
4924 TH1F *hd0D0TGHCfromDstPM = new TH1F("hd0D0TGHCfromDstarPM","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4925 hd0D0TGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
4926 hd0D0TGHCfromDstPM->SetYTitle("Entries");
4928 TH1F *hd0D0VtxTrueTGHCfromDstPM = new TH1F("hd0D0VtxTrueTGHCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4929 hd0D0VtxTrueTGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
4930 hd0D0VtxTrueTGHCfromDstPM->SetYTitle("Entries");
4932 TH1F *hMCd0D0TGHCfromDstPM = new TH1F("hMCd0D0TGHCfromDstarPM","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4933 hMCd0D0TGHCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
4934 hMCd0D0TGHCfromDstPM->SetYTitle("Entries");
4936 TH1F *hd0D0TGHCfromDstSB = new TH1F("hd0D0TGHCfromDstarSB","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4937 hd0D0TGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
4938 hd0D0TGHCfromDstSB->SetYTitle("Entries");
4940 TH1F *hd0D0VtxTrueTGHCfromDstSB = new TH1F("hd0D0VtxTrueTGHCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4941 hd0D0VtxTrueTGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
4942 hd0D0VtxTrueTGHCfromDstSB->SetYTitle("Entries");
4944 TH1F *hMCd0D0TGHCfromDstSB = new TH1F("hMCd0D0TGHCfromDstarSB","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4945 hMCd0D0TGHCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
4946 hMCd0D0TGHCfromDstSB->SetYTitle("Entries");
4948 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstPM);
4949 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstPM);
4950 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstPM);
4951 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstSB);
4952 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstSB);
4953 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstSB);
4955 TH1F *hd0D0ptTGHCfromDstPM;
4956 TH1F *hMCd0D0ptTGHCfromDstPM;
4957 TH1F *hd0D0VtxTrueptTGHCfromDstPM;
4958 TH1F *hd0D0ptTGHCfromDstSB;
4959 TH1F *hMCd0D0ptTGHCfromDstSB;
4960 TH1F *hd0D0VtxTrueptTGHCfromDstSB;
4961 namehist="hd0D0ptTGHCfromDstar_";
4962 titlehist="D^{0} impact par. plot, Tight Cuts, FromDStar, ";
4963 for(Int_t i=0;i<fnbins;i++){
4965 strnamept.Append("PkMss_pt");
4968 strtitlept=titlehist;
4969 strtitlept.Append(" Mass Peak, ");
4970 strtitlept+=fptbins[i];
4971 strtitlept.Append("<= pt <");
4972 strtitlept+=fptbins[i+1];
4973 strtitlept.Append(" [GeV/c]");
4975 hd0D0ptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4976 hd0D0ptTGHCfromDstPM->SetXTitle("Impact parameter [#mum] ");
4977 hd0D0ptTGHCfromDstPM->SetYTitle("Entries");
4978 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstPM);
4980 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4981 hMCd0D0ptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4982 hMCd0D0ptTGHCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
4983 hMCd0D0ptTGHCfromDstPM->SetYTitle("Entries");
4984 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstPM);
4987 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4988 hd0D0VtxTrueptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4989 hd0D0VtxTrueptTGHCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4990 hd0D0VtxTrueptTGHCfromDstPM->SetYTitle("Entries");
4991 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstPM);
4994 strnamept.Append("SBMss_pt");
4997 strtitlept=titlehist;
4998 strtitlept.Append(" Side Bands, ");
4999 strtitlept+=fptbins[i];
5000 strtitlept.Append("<= pt <");
5001 strtitlept+=fptbins[i+1];
5002 strtitlept.Append(" [GeV/c]");
5004 hd0D0ptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5005 hd0D0ptTGHCfromDstSB->SetXTitle("Impact parameter [#mum] ");
5006 hd0D0ptTGHCfromDstSB->SetYTitle("Entries");
5007 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstSB);
5009 strnamept.ReplaceAll("hd0D0","hMCd0D0");
5010 hMCd0D0ptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5011 hMCd0D0ptTGHCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
5012 hMCd0D0ptTGHCfromDstSB->SetYTitle("Entries");
5013 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstSB);
5015 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
5016 hd0D0VtxTrueptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5017 hd0D0VtxTrueptTGHCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
5018 hd0D0VtxTrueptTGHCfromDstSB->SetYTitle("Entries");
5019 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstSB);
5023 //############ TIGHT CUTS OTHER HISTOGRAMS ###########
5025 //########### global properties histos ###########
5027 TH2F *hCPtaVSd0d0TGHCother=new TH2F("hCPtaVSd0d0TGHCother","hCPtaVSd0d0_TightCuts_other",1000,-100000.,100000.,100,-1.,1.);
5028 TH1F *hSecVtxZTGHCother=new TH1F("hSecVtxZTGHCother","hSecVtxZ_TightCuts_other",1000,-8.,8.);
5029 TH1F *hSecVtxXTGHCother=new TH1F("hSecVtxXTGHCother","hSecVtxX_TightCuts_other",1000,-3000.,3000.);
5030 TH1F *hSecVtxYTGHCother=new TH1F("hSecVtxYTGHCother","hSecVtxY_TightCuts_other",1000,-3000.,3000.);
5031 TH2F *hSecVtxXYTGHCother=new TH2F("hSecVtxXYTGHCother","hSecVtxXY_TightCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
5032 TH1F *hSecVtxPhiTGHCother=new TH1F("hSecVtxPhiTGHCother","hSecVtxPhi_TightCuts_other",180,-180.1,180.1);
5033 TH1F *hd0singlTrackTGHCother=new TH1F("hd0singlTrackTGHCother","hd0singlTrackTightCuts_Other",1000,-5000.,5000.);
5034 TH1F *hCPtaTGHCother=new TH1F("hCPtaTGHCother","hCPta_TightCuts_other",100,-1.,1.);
5035 TH1F *hd0xd0TGHCother=new TH1F("hd0xd0TGHCother","hd0xd0_TightCuts_other",1000,-100000.,100000.);
5036 TH1F *hMassTrueTGHCother=new TH1F("hMassTrueTGHCother","D^{0} MC inv. Mass Tight Cuts other(All momenta)",600,1.600,2.200);
5037 TH1F *hMassTGHCother=new TH1F("hMassTGHCother","D^{0} inv. Mass Tight Cuts other (All momenta)",600,1.600,2.200);
5038 hMassTGHCother->Sumw2();
5039 TH1F *hMassTrueTGHCotherPM=new TH1F("hMassTrueTGHCotherPM","D^{0} MC inv. Mass Tight Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
5040 TH1F *hMassTGHCotherPM=new TH1F("hMassTGHCotherPM","D^{0} inv. Mass Tight Cuts other (All momenta), MassPeak",600,1.600,2.200);
5041 hMassTGHCotherPM->Sumw2();
5042 TH1F *hMassTrueTGHCotherSB=new TH1F("hMassTrueTGHCotherSB","D^{0} MC inv. Mass in Side Bands Tight Cuts other(All momenta)",600,1.600,2.200);
5043 TH1F *hMassTGHCotherSB=new TH1F("hMassTGHCotherSB","D^{0} inv. Mass in Side Bands Tight Cuts other (All momenta)",600,1.600,2.200);
5044 hMassTGHCotherSB->Sumw2();
5046 flistTghCutsOther->Add(hCPtaVSd0d0TGHCother);
5047 flistTghCutsOther->Add(hSecVtxZTGHCother);
5048 flistTghCutsOther->Add(hSecVtxYTGHCother);
5049 flistTghCutsOther->Add(hSecVtxXTGHCother);
5050 flistTghCutsOther->Add(hSecVtxXYTGHCother);
5051 flistTghCutsOther->Add(hSecVtxPhiTGHCother);
5052 flistTghCutsOther->Add(hd0singlTrackTGHCother);
5053 flistTghCutsOther->Add(hCPtaTGHCother);
5054 flistTghCutsOther->Add(hd0xd0TGHCother);
5055 flistTghCutsOther->Add(hMassTrueTGHCother);
5056 flistTghCutsOther->Add(hMassTGHCother);
5057 flistTghCutsOther->Add(hMassTrueTGHCotherPM);
5058 flistTghCutsOther->Add(hMassTGHCotherPM);
5059 flistTghCutsOther->Add(hMassTrueTGHCotherSB);
5060 flistTghCutsOther->Add(hMassTGHCotherSB);
5065 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
5066 TH1F *hdcaTGHCother=new TH1F("hdcaTGHCother","hdca_TightCuts_Other",100,0.,1000.);
5067 hdcaTGHCother->SetXTitle("dca [#mum]");
5068 hdcaTGHCother->SetYTitle("Entries");
5069 TH1F *hcosthetastarTGHCother=new TH1F("hcosthetastarTGHCother","hCosThetaStar_TightCuts_Other",50,-1.,1.);
5070 hcosthetastarTGHCother->SetXTitle("cos #theta^{*}");
5071 hcosthetastarTGHCother->SetYTitle("Entries");
5072 TH1F *hptD0TGHCother=new TH1F("hptD0TGHCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
5073 hptD0TGHCother->SetXTitle("p_{t} [GeV/c]");
5074 hptD0TGHCother->SetYTitle("Entries");
5075 TH1F *hptD0VsMaxPtTGHCother=new TH1F("hptD0VsMaxPtTGHCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
5076 TH2F *hptD0PTallsqrtTGHCother=new TH2F("hptD0PTallsqrtTGHCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
5077 TH2F *hptD0PTallTGHCother=new TH2F("hptD0PTallTGHCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
5078 TH2F *hptD0vsptBTGHCother=new TH2F("hptD0vsptBTGHCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
5079 TH2F *hpD0vspBTGHCother=new TH2F("hpD0vspBTGHCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
5080 TH2F *hptD0vsptcquarkTGHCother=new TH2F("hptD0vsptcquarkTGHCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
5081 TH2F *hpD0vspcquarkTGHCother=new TH2F("hpD0vspcquarkTGHCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
5082 flistTghCutsOther->Add(hdcaTGHCother);
5083 flistTghCutsOther->Add(hcosthetastarTGHCother);
5084 flistTghCutsOther->Add(hptD0TGHCother);
5085 flistTghCutsOther->Add(hptD0VsMaxPtTGHCother);
5086 flistTghCutsOther->Add(hptD0PTallsqrtTGHCother);
5087 flistTghCutsOther->Add(hptD0PTallTGHCother);
5088 flistTghCutsOther->Add(hptD0vsptBTGHCother);
5089 flistTghCutsOther->Add(hpD0vspBTGHCother);
5090 flistTghCutsOther->Add(hptD0vsptcquarkTGHCother);
5091 flistTghCutsOther->Add(hpD0vspcquarkTGHCother);
5093 TH1F *hd0zD0ptTGHCother;
5094 TH1F *hInvMassD0TGHCother,*hInvMassD0barTGHCother;
5095 TH2F *hInvMassPtTGHCother=new TH2F("hInvMassPtTGHCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
5096 THnSparseF *hSparseTGHCother=new THnSparseF("hSparseTGHCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
5097 hSparseTGHCother->SetBinEdges(0,massbins);
5098 hSparseTGHCother->SetBinEdges(1,massbins);
5099 hSparseTGHCother->SetBinEdges(2,ptbinsForNsparse);
5100 hSparseTGHCother->SetBinEdges(3,impparbins);
5101 hSparseTGHCother->SetBinEdges(4,massHypoBins);
5102 flistTghCutsOther->Add(hSparseTGHCother);
5103 TH1F *hetaTGHCother;
5104 TH1F *hCosPDPBTGHCother;
5105 TH1F *hCosPcPDTGHCother;
5106 flistTghCutsOther->Add(hInvMassPtTGHCother);
5107 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
5108 TH2F *hd0D0VSd0xd0TGHCotherpt;
5109 TH2F *hangletracksVSd0xd0TGHCotherpt;
5110 TH2F *hangletracksVSd0D0TGHCotherpt;
5111 TH1F *hd0xd0TGHCotherpt;
5113 TH2F *hTOFpidTGHCother=new TH2F("hTOFpidTGHCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
5114 flistTghCutsOther->Add(hTOFpidTGHCother);
5116 for(Int_t i=0;i<fnbins;i++){
5117 namehist="hd0zD0ptTGHCother_pt";
5119 titlehist="d0(z) Tight Cuts Otherm ptbin=";
5121 hd0zD0ptTGHCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
5122 hd0zD0ptTGHCother->SetXTitle("d_{0}(z) [#mum]");
5123 hd0zD0ptTGHCother->SetYTitle("Entries");
5124 flistTghCutsOther->Add(hd0zD0ptTGHCother);
5126 namehist="hInvMassD0TGHCother_pt";
5128 titlehist="Invariant Mass Tight Cuts Other ptbin=";
5130 hInvMassD0TGHCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
5131 hInvMassD0TGHCother->SetXTitle("Invariant Mass [GeV]");
5132 hInvMassD0TGHCother->SetYTitle("Entries");
5133 flistTghCutsOther->Add(hInvMassD0TGHCother);
5135 namehist="hInvMassD0barTGHCother_pt";
5137 titlehist="Invariant Mass D0bar Tight Cuts Other ptbin=";
5139 hInvMassD0barTGHCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
5140 hInvMassD0barTGHCother->SetXTitle("Invariant Mass [GeV]");
5141 hInvMassD0barTGHCother->SetYTitle("Entries");
5142 flistTghCutsOther->Add(hInvMassD0barTGHCother);
5144 namehist="hetaTGHCother_pt";
5146 titlehist="eta Tight Cuts Other ptbin=";
5148 hetaTGHCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
5149 hetaTGHCother->SetXTitle("Pseudorapidity");
5150 hetaTGHCother->SetYTitle("Entries");
5151 flistTghCutsOther->Add(hetaTGHCother);
5153 namehist="hCosPDPBTGHCother_pt";
5155 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
5157 hCosPDPBTGHCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
5158 hCosPDPBTGHCother->SetXTitle("Cosine between D0 momentum and B momentum");
5159 hCosPDPBTGHCother->SetYTitle("Entries");
5160 flistTghCutsOther->Add(hCosPDPBTGHCother);
5162 namehist="hCosPcPDTGHCother_pt";
5164 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
5166 hCosPcPDTGHCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
5167 hCosPcPDTGHCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
5168 hCosPcPDTGHCother->SetYTitle("Entries");
5169 flistTghCutsOther->Add(hCosPcPDTGHCother);
5171 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
5172 namehist="hd0xd0TGHCother_pt";
5174 titlehist="d0xd0 Tight Cuts Other ptbin=";
5176 hd0xd0TGHCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
5177 hd0xd0TGHCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
5178 hd0xd0TGHCotherpt->SetYTitle("Entries");
5179 flistTghCutsOther->Add(hd0xd0TGHCotherpt);
5182 namehist="hd0D0VSd0xd0TGHCother_pt";
5184 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Other ptbin=";
5186 hd0D0VSd0xd0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
5187 hd0D0VSd0xd0TGHCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
5188 hd0D0VSd0xd0TGHCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
5189 flistTghCutsOther->Add(hd0D0VSd0xd0TGHCotherpt);
5192 namehist="hangletracksVSd0xd0TGHCother_pt";
5194 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Other ptbin=";
5196 hangletracksVSd0xd0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
5197 hangletracksVSd0xd0TGHCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
5198 hangletracksVSd0xd0TGHCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
5199 flistTghCutsOther->Add(hangletracksVSd0xd0TGHCotherpt);
5202 namehist="hangletracksVSd0D0TGHCother_pt";
5204 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Other ptbin=";
5206 hangletracksVSd0D0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
5207 hangletracksVSd0D0TGHCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
5208 hangletracksVSd0D0TGHCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
5209 flistTghCutsOther->Add(hangletracksVSd0D0TGHCotherpt);
5212 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
5213 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5219 //############# d0 D0 histos ###############Ã
5220 TH1F *hd0D0TGHCotherPM = new TH1F("hd0D0TGHCotherPM","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5221 hd0D0TGHCotherPM->SetXTitle("Impact parameter [#mum]");
5222 hd0D0TGHCotherPM->SetYTitle("Entries");
5224 TH1F *hd0D0VtxTrueTGHCotherPM = new TH1F("hd0D0VtxTrueTGHCotherPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5225 hd0D0VtxTrueTGHCotherPM->SetXTitle("Impact parameter [#mum]");
5226 hd0D0VtxTrueTGHCotherPM->SetYTitle("Entries");
5228 TH1F *hMCd0D0TGHCotherPM = new TH1F("hMCd0D0TGHCotherPM","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5229 hMCd0D0TGHCotherPM->SetXTitle("MC Impact parameter [#mum]");
5230 hMCd0D0TGHCotherPM->SetYTitle("Entries");
5232 TH1F *hd0D0TGHCotherSB = new TH1F("hd0D0TGHCotherSB","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5233 hd0D0TGHCotherSB->SetXTitle("Impact parameter [#mum]");
5234 hd0D0TGHCotherSB->SetYTitle("Entries");
5236 TH1F *hd0D0VtxTrueTGHCotherSB = new TH1F("hd0D0VtxTrueTGHCotherSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5237 hd0D0VtxTrueTGHCotherSB->SetXTitle("Impact parameter [#mum]");
5238 hd0D0VtxTrueTGHCotherSB->SetYTitle("Entries");
5240 TH1F *hMCd0D0TGHCotherSB = new TH1F("hMCd0D0TGHCotherSB","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5241 hMCd0D0TGHCotherSB->SetXTitle("MC Impact parameter [#mum]");
5242 hMCd0D0TGHCotherSB->SetYTitle("Entries");
5244 flistTghCutsOther->Add(hd0D0TGHCotherPM);
5245 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherPM);
5246 flistTghCutsOther->Add(hMCd0D0TGHCotherPM);
5247 flistTghCutsOther->Add(hd0D0TGHCotherSB);
5248 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherSB);
5249 flistTghCutsOther->Add(hMCd0D0TGHCotherSB);
5251 TH1F *hd0D0ptTGHCotherPM;
5252 TH1F *hMCd0D0ptTGHCotherPM;
5253 TH1F *hd0D0VtxTrueptTGHCotherPM;
5254 TH1F *hd0D0ptTGHCotherSB;
5255 TH1F *hMCd0D0ptTGHCotherSB;
5256 TH1F *hd0D0VtxTrueptTGHCotherSB;
5257 namehist="hd0D0ptTGHCother_";
5258 titlehist="D^{0} impact par. plot, Tight Cuts, Other, ";
5259 for(Int_t i=0;i<fnbins;i++){
5261 strnamept.Append("PkMss_pt");
5264 strtitlept=titlehist;
5265 strtitlept.Append(" Mass Peak, ");
5266 strtitlept+=fptbins[i];
5267 strtitlept.Append("<= pt <");
5268 strtitlept+=fptbins[i+1];
5269 strtitlept.Append(" [GeV/c]");
5271 hd0D0ptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5272 hd0D0ptTGHCotherPM->SetXTitle("Impact parameter [#mum] ");
5273 hd0D0ptTGHCotherPM->SetYTitle("Entries");
5274 flistTghCutsOther->Add(hd0D0ptTGHCotherPM);
5276 strnamept.ReplaceAll("hd0D0","hMCd0D0");
5277 hMCd0D0ptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5278 hMCd0D0ptTGHCotherPM->SetXTitle("MC Impact parameter [#mum] ");
5279 hMCd0D0ptTGHCotherPM->SetYTitle("Entries");
5280 flistTghCutsOther->Add(hMCd0D0ptTGHCotherPM);
5283 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
5284 hd0D0VtxTrueptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5285 hd0D0VtxTrueptTGHCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
5286 hd0D0VtxTrueptTGHCotherPM->SetYTitle("Entries");
5287 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherPM);
5290 strnamept.Append("SBMss_pt");
5293 strtitlept=titlehist;
5294 strtitlept.Append(" Side Bands, ");
5295 strtitlept+=fptbins[i];
5296 strtitlept.Append("<= pt <");
5297 strtitlept+=fptbins[i+1];
5298 strtitlept.Append(" [GeV/c]");
5300 hd0D0ptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5301 hd0D0ptTGHCotherSB->SetXTitle("Impact parameter [#mum] ");
5302 hd0D0ptTGHCotherSB->SetYTitle("Entries");
5303 flistTghCutsOther->Add(hd0D0ptTGHCotherSB);
5305 strnamept.ReplaceAll("hd0D0","hMCd0D0");
5306 hMCd0D0ptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5307 hMCd0D0ptTGHCotherSB->SetXTitle("MC Impact parameter [#mum] ");
5308 hMCd0D0ptTGHCotherSB->SetYTitle("Entries");
5309 flistTghCutsOther->Add(hMCd0D0ptTGHCotherSB);
5311 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
5312 hd0D0VtxTrueptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5313 hd0D0VtxTrueptTGHCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
5314 hd0D0VtxTrueptTGHCotherSB->SetYTitle("Entries");
5315 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherSB);
5317 Printf("AFTER DATA HISTOS CREATION \n");
5324 //________________________________________________________________________
5325 void AliAnalysisTaskSECharmFraction::UserExec(Option_t */*option*/)
5327 // Execute analysis for current event:
5328 // heavy flavor candidates association to MC truth
5330 AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
5332 Printf("ERROR: aod not available");
5335 TClonesArray *arrayD0toKpi;
5336 if(!aod && AODEvent() && IsStandardAOD()) {
5337 // In case there is an AOD handler writing a standard AOD, use the AOD
5338 // event in memory rather than the input (ESD) event.
5339 aod = dynamic_cast<AliAODEvent*> (AODEvent());
5340 // in this case the braches in the deltaAOD (AliAOD.VertexingHF.root)
5341 // have to taken from the AOD event hold by the AliAODExtension
5342 AliAODHandler* aodHandler = (AliAODHandler*)
5343 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
5345 if(aodHandler->GetExtensions()) {
5346 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root");
5347 AliAODEvent* aodFromExt = ext->GetAOD();
5349 // load 2Prong Like Sign
5350 arrayD0toKpi =(TClonesArray*)aodFromExt->GetList()->FindObject("LikeSign2Prong");
5352 Printf("AliAnalysisTaskSECharmFraction::UserExec: LikeSign branch not found!\n");
5357 // load D0->Kpi candidates
5358 arrayD0toKpi = (TClonesArray*)aodFromExt->GetList()->FindObject("D0toKpi");
5360 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
5367 // load 2Prong Like Sign
5368 arrayD0toKpi =(TClonesArray*)aod->GetList()->FindObject("LikeSign2Prong");
5370 Printf("AliAnalysisTaskSECharmFraction::UserExec: LikeSign branch not found!\n");
5375 // load D0->Kpi candidates
5376 arrayD0toKpi = (TClonesArray*)aod->GetList()->FindObject("D0toKpi");
5378 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
5386 printf("AliAnalysisTaskSECharmFraction::UserExec: input branch not found!\n");
5390 //histogram filled with 1 for every AOD
5392 fCounter->StoreEvent(aod,fCutsLoose,fReadMC);
5394 // trigger class for PbPb C0SMH-B-NOPF-ALLNOTRD, C0SMH-B-NOPF-ALL
5395 // TString trigclass=aod->GetFiredTriggerClasses();
5396 // if(trigclass.Contains("C0SMH-B-NOPF-ALLNOTRD") || trigclass.Contains("C0SMH-B-NOPF-ALL")) fNentries->Fill(14);
5398 Int_t nSelectedloose=0, nSelectedtight=0;
5400 Bool_t isEventSelTGHT=kTRUE,isEventSelLOOSE=kTRUE;
5401 if(!fCutsTight->IsEventSelected(aod)){
5402 isEventSelTGHT=kFALSE;
5403 if(fCutsTight->GetWhyRejection()==1){
5404 // rejected for pileup
5407 if(fCutsTight->GetWhyRejection()==6){
5408 // |prim Vtx Zspd| > acceptable
5415 if(!fCutsLoose->IsEventSelected(aod)){
5416 isEventSelLOOSE=kFALSE;
5417 if(fCutsLoose->GetWhyRejection()==1){
5418 // rejected for pileup
5422 if(fCutsLoose->GetWhyRejection()==6){
5423 // |prim Vtx Z| > acceptable
5424 fNentries->Fill(11);
5431 if(!(isEventSelTGHT||isEventSelLOOSE)){
5432 PostData(1,fNentries);
5435 // fix for temporary bug in ESDfilter
5436 // the AODs with null vertex pointer didn't pass the PhysSel
5437 if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001){
5438 if(isEventSelTGHT)fNentries->Fill(19);
5439 if(isEventSelLOOSE)fNentries->Fill(20);
5440 PostData(1,fNentries);
5443 // AOD primary vertex
5444 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
5445 TString primTitle = vtx1->GetTitle();
5446 if(primTitle.Contains("VertexerTracks") && vtx1->GetNContributors()>0) {
5448 if(isEventSelTGHT)fNentries->Fill(3);
5449 if(isEventSelLOOSE)fNentries->Fill(10);
5452 PostData(1,fNentries);
5457 // FILL n-tracks counter
5458 if(isEventSelTGHT)fNentries->Fill(5,aod->GetNumberOfTracks());
5459 if(isEventSelLOOSE)fNentries->Fill(12,aod->GetNumberOfTracks());
5462 Bool_t aziListIsFilled=kFALSE;
5463 Double_t azilist[30000];
5464 Int_t trkIDlist[30000],nprim=0;
5467 for(Int_t ephi=0;ephi<30000;ephi++){
5468 azilist[ephi]=-999.;
5469 trkIDlist[ephi]=-999;
5471 //aziListIsFilled=kFALSE;
5477 TClonesArray *arrayMC=0x0;
5478 AliAODMCHeader *aodmcHeader=0x0;
5479 Double_t vtxTrue[3];
5483 // load MC particles
5485 (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
5487 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC particles branch not found!\n");
5492 (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
5494 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC header branch not found!\n");
5497 // MC primary vertex
5498 aodmcHeader->GetVertex(vtxTrue);
5499 // FILL HISTOS FOR D0 mesons, c quarks and D0 from B properties
5500 FillHistoMCproperties(arrayMC);
5505 //Printf("There are %d tracks in this event", aod->GetNumberOfTracks());
5506 // Int_t nTotHF=0,nTotDstar=0,nTot3Prong=0;
5507 Int_t nTotD0toKpi=0;
5508 Int_t okd0tight,okd0bartight,okd0loose,okd0barloose,okd0tightnopid,okd0bartightnopid;
5509 Bool_t defaultNC=kTRUE;
5510 Bool_t isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,isSideBand;
5511 Bool_t isinacceptance;
5512 Int_t signallevel=-1;
5514 // const Int_t nptbins=10;
5515 Double_t invMassD0,invMassD0bar,ptD0,massmumtrue;
5518 AliAODRecoDecayHF *aodDMC=0x0;// to be used to create a fake true sec vertex
5519 // make trkIDtoEntry register (temporary)
5521 if(fFastAnalysis<1){
5522 Int_t trkIDtoEntry[100000];
5528 for(Int_t it=0;it<aod->GetNumberOfTracks();it++) {
5529 AliAODTrack *track = aod->GetTrack(it);
5530 fptAll+=track->Pt();
5531 fptAllSq+=track->Pt()*track->Pt();
5532 if(track->Pt()>fptMax[0]){
5533 fptMax[2]=fptMax[1];
5534 fptMax[1]=fptMax[0];
5535 fptMax[0]=track->Pt();
5537 else if(track->Pt()>fptMax[1]){
5538 fptMax[2]=fptMax[1];
5539 fptMax[1]=track->Pt();
5541 else if(track->Pt()>fptMax[2])fptMax[2]=track->Pt();
5542 if(track->GetID()<0) {
5543 if(isEventSelTGHT)fNentries->Fill(19);
5544 if(isEventSelLOOSE)fNentries->Fill(20);
5545 //printf("Track ID <0, id= %d\n",track->GetID());
5546 PostData(1,fNentries);
5549 trkIDtoEntry[track->GetID()]=it;
5553 // loop over D0->Kpi candidates
5554 Int_t nD0toKpi = arrayD0toKpi->GetEntriesFast();
5555 nTotD0toKpi += nD0toKpi;
5556 // fille D0 candidate counter
5557 if(isEventSelTGHT)fNentries->Fill(6,nD0toKpi);
5558 if(isEventSelLOOSE)fNentries->Fill(13,nD0toKpi);
5560 // cout<<"Number of D0->Kpi: "<<nD0toKpi<<endl;
5562 for (Int_t iD0toKpi = 0; iD0toKpi < nD0toKpi; iD0toKpi++) {
5563 if(aodDMC!=0x0)delete aodDMC;
5568 isSideBandD0=kFALSE;
5569 isSideBandD0bar=kFALSE;
5571 isinacceptance=kFALSE;
5575 okd0bartightnopid=0;
5582 AliAODRecoDecayHF2Prong *d = (AliAODRecoDecayHF2Prong*)arrayD0toKpi->UncheckedAt(iD0toKpi);
5583 // Bool_t unsetvtx=kFALSE;
5584 // if(!d->GetOwnPrimaryVtx()) {
5585 // d->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
5589 //recalculate vertex w/o daughters
5590 AliAODVertex *origownvtx=0x0;
5591 if(fCleanCandOwnVtx){
5592 if(d->GetOwnPrimaryVtx()) origownvtx=new AliAODVertex(*d->GetOwnPrimaryVtx());
5593 if(!fCutsTight->RecalcOwnPrimaryVtx(d,aod)) defaultNC=kFALSE;
5598 // ############ MISALIGN HERE: TEMPORARY SOLUTION ##########
5599 // d->Misalign("resC");
5602 //############# SIGNALLEVEL DESCRIPTION #####################
5603 // TO BE CONSIDERED WITH GREAT CARE, only =0 and =1 (and MC selection when possible) are reliable
5604 // For the other signallevel numbers the order in which cut are applied is relevant
5605 // signallevel =0,1: is selected as signal,is signal (MC)
5606 // from 2 to 20: MC information
5607 // from 21 to 29: "detector" selection (acceptance, pt, refits)
5608 // 21: acceptance, eta (N.B. before 24 May was signallevel=9)
5609 // 22: isinfiducialacceptance
5610 // 23: single track p
5611 // 25: ITS cluster selection
5614 // 28: no (TOF||TPC) pid information (no kTOFpid,kTOFout,kTIME,kTPCpid,...)
5616 // from 30 to 39: PID selection
5617 // 31: no Kaon compatible tracks found between daughters
5618 // 32: no Kaon identified tracks found (strong sel. at low momenta)
5619 // 33: both mass hypotheses are rejected
5620 // from 40 to 45: standard cut selection
5621 // from 45 to 49: special cut signal kinematic selection
5623 // from 50 to 60: special cut selection
5624 // 51: Nvtx contributors
5625 // 52: angle between tracks
5626 // 53: vtx not reconstructed when excludind daughters
5627 // 54: track not propagated to dca when the vtx is recalculated
5628 // 55: single track normalized impact par.
5629 // 56: normalized d0xd0
5630 // 57: d0xd0 cut with vtx on the fly
5631 // 58,59: cut normalized decay lenght and decay lenght
5632 //####### DATA SELECTION ####################################
5634 // ######## CHECK FOR ACCEPTANCE ##########
5636 ptbin=fCutsTight->PtBin(ptD0);
5637 // Double_t relangle=d->ProngsRelAngle(0,1);
5638 // UPV: HERE TO CHANGE WITH:
5639 // isinacceptance = (TMath::Abs(d->EtaProng(0))<fAcceptanceCuts[0]&&TMath::Abs(d->EtaProng(1))<fAcceptanceCuts[0]); //eta acceptance
5641 // INVESTIGATE SIGNAL TYPE : ACCESS TO MC INFORMATION
5643 aodDMC=GetD0toKPiSignalType(d,arrayMC,signallevel,massmumtrue,vtxTrue);
5646 // ACCOUNT FOR ETA & ITS CLUSTER SELECTION
5647 if(fFastAnalysis<1){ // ALREADY DONE BY AliRDHFCutsD0ToKPi selection
5648 isinacceptance=fCutsTight->AreDaughtersSelected(d);
5649 if(!isinacceptance)signallevel=21;
5651 if(!fCutsTight->IsInFiducialAcceptance(ptD0,d->Y(421))){
5652 isinacceptance=kFALSE;
5659 //###################################################################################
5661 // ################ SPECIAL ADDITIONAL CUTS FOR SIGNAL SEARCH #######################
5662 // UPV: ITS CLUSTER SELECTION ALREADY DONE , COUNT THEM THE SAME
5664 Int_t nlayers=0,nSPD=0,nSSD=0;
5666 if(fFastAnalysis<1){
5667 for(Int_t idg=0;idg<d->GetNDaughters();idg++){
5669 AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(idg);
5670 if(TESTBIT(dgTrack->GetITSClusterMap(),5)){
5674 if(TESTBIT(dgTrack->GetITSClusterMap(),4)){
5678 if(TESTBIT(dgTrack->GetITSClusterMap(),3))nlayers++;
5679 if(TESTBIT(dgTrack->GetITSClusterMap(),2))nlayers++;
5680 if(TESTBIT(dgTrack->GetITSClusterMap(),1)){
5684 if(TESTBIT(dgTrack->GetITSClusterMap(),0)){
5692 // ######## NOW SELECTION ##########
5693 if(dgTrack->Pt()<0.5){
5694 // ########## k-Both selection ##############
5695 if(nlayers<5)signallevel=25;
5696 if(nSPD<2)signallevel=25;
5698 else if(dgTrack->Pt()<1.){
5699 // ########## 4 its clust (1 SSD,1 SPD) && k-Any selection ##############
5700 if(nlayers<4)signallevel=25;
5701 if(nSSD<1)signallevel=25;
5702 if(nSPD<1)signallevel=25;
5705 // ########## 3 its clust (1 SPD, 1 SSD) && k-Any selection ##########
5706 if(nlayers<3)signallevel=25;
5707 if(nSSD<1)signallevel=25;
5708 if(nSPD<1)signallevel=25;
5716 //########### END OF SPECIAL CUTS ######################
5718 //###############################################################
5721 // Check tighter cuts w/o PID:
5723 // Int_t ncont=vtx1->GetNContributors();
5724 if(fFastAnalysis<1)if(vtx1->GetNContributors()<1)signallevel=51;
5726 if(defaultNC&&fFastAnalysis<1&&fNtrMaxforVtx<2)defaultNC=SpecialSelD0(d,nVtx);// No More in USE!
5727 if(isEventSelTGHT&&defaultNC){
5728 Bool_t iscutusingpid=fCutsTight->GetIsUsePID();
5729 fCutsTight->SetUsePID(kFALSE);
5730 Int_t isSelectedTightNoPid=fCutsTight->IsSelected(d,AliRDHFCuts::kAll,aod);
5731 switch(isSelectedTightNoPid){
5733 okd0tightnopid=kFALSE;
5734 okd0bartightnopid=kFALSE;
5737 okd0tightnopid=kTRUE;
5738 okd0bartightnopid=kFALSE;
5741 okd0tightnopid=kFALSE;
5742 okd0bartightnopid=kTRUE;
5745 okd0tightnopid=kTRUE;
5746 okd0bartightnopid=kTRUE;
5749 okd0tightnopid=kTRUE;
5750 okd0bartightnopid=kTRUE;
5755 // signallevel=fCutsTight->GetSelectionStep();
5756 fSignalType->Fill(signallevel);
5761 // ######### SPECIAL SELECTION PID ##############
5762 fCutsTight->SetUsePID(iscutusingpid);
5763 if(okd0tightnopid||okd0bartightnopid){
5764 Int_t isSelectedPid=fCutsTight->IsSelected(d,AliRDHFCuts::kPID,aod);
5765 Int_t isSelectedTight=fCutsTight->CombineSelectionLevels(3,isSelectedTightNoPid,isSelectedPid);
5766 switch(isSelectedTight){
5769 okd0bartight=kFALSE;
5773 okd0bartight=kFALSE;
5791 fSignalType->Fill(signallevel);
5797 if(isEventSelLOOSE&&defaultNC){
5798 // CHECK LOOSER CUTS
5799 //ptbin=SetStandardCuts(ptD0,flargeInvMassCut);
5801 // d->SelectD0(fCutsLoose->GetD0toKpiCuts(),okd0loose,okd0barloose);
5802 Int_t isSelectedLoose=fCutsLoose->IsSelected(d,AliRDHFCuts::kAll,aod);
5803 switch(isSelectedLoose){
5806 okd0barloose=kFALSE;
5810 okd0barloose=kFALSE;
5829 //NO CUTS Case: force okD0 and okD0bar = kTRUE
5830 // special cuts are applied also in the "NO Cuts" case
5833 // SPECIAL modification:
5834 // IMPORTANT!!!!!! ONLY FOR TEMPORARY CONVENIENCE
5835 // IF fusePID is kTRUE, NO CUTS BECOMES NO PID case with tight cuts (fill signal histos when 30<=signallevel<40 )!!!!!!!!!!
5836 if((!fusePID)&&isEventSelTGHT){
5837 okd0tightnopid=defaultNC;
5838 okd0bartightnopid=defaultNC;
5841 if(okd0loose||okd0barloose||okd0tight||okd0bartight||okd0tightnopid||okd0bartightnopid){
5842 //######## INVARIANT MASS SELECTION ###############
5843 CheckInvMassD0(d,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar);
5844 if((isSideBandD0||isSideBandD0bar)){
5845 if(!(isPeakD0||isPeakD0bar))isSideBand=kTRUE; //(isSideBand no more used in the following, can remove it)
5846 else {// AVOID TO CONSIDER IN THE SIDEBAND THOSE CANDIDATES FOR WHICH 1 MASS HYPOTHESIS IS IN THE PEAK REGION
5848 isSideBandD0=kFALSE;
5849 isSideBandD0bar=kFALSE;
5852 if(fFastAnalysis<3){
5853 if(!aziListIsFilled){
5854 FillAziList(aod,azilist,trkIDlist,nprim);
5855 aziListIsFilled=kTRUE;
5858 if(signallevel==1||signallevel==0){
5859 FillAziHistos(d,flistNoCutsSignal,ptbin,azilist,trkIDlist,nprim,okd0tightnopid,okd0bartightnopid,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar);
5860 FillAziHistos(d,flistTghCutsSignal,ptbin,azilist,trkIDlist,nprim,okd0tight,okd0bartight,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar);
5861 FillAziHistos(d,flistLsCutsSignal,ptbin,azilist,trkIDlist,nprim,okd0loose,okd0barloose,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar);
5866 if(((isPeakD0&&okd0tight)||(isPeakD0bar&&okd0bartight))&&isinacceptance)fSignalTypeTghCuts->Fill(signallevel);
5867 if(((isPeakD0&&okd0loose)||(isPeakD0bar&&okd0barloose))&&isinacceptance)fSignalTypeLsCuts->Fill(signallevel);
5872 //################### FILL HISTOS ########################
5873 //################################################################
5875 //######## improvement: SPEED HERE CAN BE IMPROVED: CALCULATE ONCE AND FOR ALL
5876 // CANDIDATE VARIABLES
5879 if(signallevel==1||signallevel==0)FillHistos(d,flistNoCutsSignal,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue); // else if(fusePID&&signallevel>=30&&signallevel<40)FillHistos(d,flistNoCutsSignal,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);// OLD LINE, COULD BE REMOVED
5880 else if(signallevel==2)FillHistos(d,flistNoCutsFromDstar,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5881 else if(signallevel==3||signallevel==4)FillHistos(d,flistNoCutsFromB,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5882 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10||signallevel==9)FillHistos(d,flistNoCutsBack,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5883 else if(signallevel==5||signallevel==6)FillHistos(d,flistNoCutsOther,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5888 if(okd0loose||okd0barloose)fNentries->Fill(14);
5890 if(signallevel==1||signallevel==0)FillHistos(d,flistLsCutsSignal,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5891 else if(signallevel==2)FillHistos(d,flistLsCutsFromDstar,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5892 else if(signallevel==3||signallevel==4)FillHistos(d,flistLsCutsFromB,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5893 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10)FillHistos(d,flistLsCutsBack,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5894 else if(signallevel==5||signallevel==6)FillHistos(d,flistLsCutsOther,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5897 if(okd0tight||okd0bartight){
5902 if(signallevel==1||signallevel==0)FillHistos(d,flistTghCutsSignal,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5903 else if(signallevel==2)FillHistos(d,flistTghCutsFromDstar,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5904 else if(signallevel==3||signallevel==4)FillHistos(d,flistTghCutsFromB,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5905 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10)FillHistos(d,flistTghCutsBack,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5906 else if(signallevel==5||signallevel==6)FillHistos(d,flistTghCutsOther,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5909 // ######## PRINTING INFO FOR D0-like candidate
5911 if(nSPD==2&&ptD0>2.){
5912 if((okd0tight&&TMath::Abs(invMassD0-1.864)<0.01)||(okd0bartight&&TMath::Abs(invMassD0bar-1.864)<0.01)){
5913 //printf("INFO FOR DRAWING: \n pt: %f \n Rapidity: %f \n Period Number: %d \n Run Number: %d \n BunchCrossNumb: %d \n OrbitNumber: %d \n",ptD0,d->Y(421),aod->GetPeriodNumber(),aod->GetRunNumber(),aod->GetBunchCrossNumber(),aod->GetOrbitNumber());
5914 //printf("PrimVtx NContributors: %d \n Prongs Rel Angle: %f \n \n",ncont,relangle);
5922 if(fCleanCandOwnVtx)fCutsTight->CleanOwnPrimaryVtx(d,aod,origownvtx);
5925 // if(unsetvtx) d->UnsetOwnPrimaryVtx();
5930 fCounter->StoreCandidates(aod,nSelectedloose,kTRUE);
5931 fCounter->StoreCandidates(aod,nSelectedtight,kFALSE);
5934 // ####################### POST OUTPUT TLIST DATA #########################
5935 // ####### histo for #AOD entries already posted
5936 PostData(1,fNentries);
5937 PostData(2,fSignalType);
5938 PostData(3,fSignalTypeLsCuts);
5939 PostData(4,fSignalTypeTghCuts);
5940 PostData(5,fCounter);
5941 PostData(6,flistMCproperties);
5942 PostData(7,flistNoCutsSignal);
5943 PostData(8,flistNoCutsBack);
5944 PostData(9,flistNoCutsFromB);
5945 PostData(10,flistNoCutsFromDstar);
5946 PostData(11,flistNoCutsOther);
5947 PostData(12,flistLsCutsSignal);
5948 PostData(13,flistLsCutsBack);
5949 PostData(14,flistLsCutsFromB);
5950 PostData(15,flistLsCutsFromDstar);
5951 PostData(16,flistLsCutsOther);
5952 PostData(17,flistTghCutsSignal);
5953 PostData(18,flistTghCutsBack);
5954 PostData(19,flistTghCutsFromB);
5955 PostData(20,flistTghCutsFromDstar);
5956 PostData(21,flistTghCutsOther);
5963 //_________________________________________
5964 Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Float_t *&ptbinlimits){
5966 // creating cuts for D0 -> Kpi
5969 Printf("Using Default Cuts as set in AliAnalysisTaskSECharmFraction \n");
5970 // const Double_t ptmin = 0.1;
5971 const Double_t ptmax = 9999.;
5972 const Int_t nptbins =13;
5973 const Int_t nvars=9;
5977 delete fCutsTight;fCutsTight=NULL;
5980 delete fCutsLoose;fCutsLoose=NULL;
5984 fCutsTight = new AliRDHFCutsD0toKpi();
5985 fCutsTight->SetName("D0toKpiCutsStandard");
5986 fCutsTight->SetTitle("Standard Cuts for D0 analysis");
5988 fCutsLoose = new AliRDHFCutsD0toKpi();
5989 fCutsLoose->SetName("D0toKpiCutsLoose");
5990 fCutsLoose->SetTitle("Loose Cuts for D0 analysis");
5993 fCutsTight->SetMinVtxContr(1);
5994 fCutsLoose->SetMinVtxContr(1);
5996 // TRACKS ON SINGLE TRACKS
5997 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
5998 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
5999 esdTrackCuts->SetRequireTPCRefit(kTRUE);
6000 esdTrackCuts->SetRequireITSRefit(kTRUE);
6001 // esdTrackCuts->SetMinNClustersITS(4);
6002 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
6003 esdTrackCuts->SetMinDCAToVertexXY(0.);
6004 esdTrackCuts->SetEtaRange(-0.8,0.8);
6005 esdTrackCuts->SetPtRange(0.3,1.e10);
6008 fCutsTight->AddTrackCuts(esdTrackCuts);
6009 fCutsLoose->AddTrackCuts(esdTrackCuts);
6013 Float_t ptbins[nptbins+1];
6029 fCutsTight->SetGlobalIndex(nvars,nptbins);
6030 fCutsLoose->SetGlobalIndex(nvars,nptbins);
6031 fCutsTight->SetPtBins(nptbins+1,ptbins);
6032 fCutsLoose->SetPtBins(nptbins+1,ptbins);
6034 /* Float_t cutsArrayD0toKpiStand_1[9]={0.200,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-35000.*1E-8,0.7}; // pt<1
6035 Float_t cutsArrayD0toKpiStand_2[9]={0.200,200.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-30000.*1E-8,0.8}; // 1<=pt<2
6036 Float_t cutsArrayD0toKpiStand_3[9]={0.200,200.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-26000.*1E-8,0.94}; // 2<=pt<3
6037 Float_t cutsArrayD0toKpiStand_4[9]={0.200,200.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-15000.*1E-8,0.88}; // 3<=pt<5
6038 Float_t cutsArrayD0toKpiStand_5[9]={0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.9}; // 5<=pt<8
6039 Float_t cutsArrayD0toKpiStand_6[9]={0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.9}; // 8<pt<12
6040 Float_t cutsArrayD0toKpiStand_7[9]={0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.9}; // pt>12
6043 const Int_t nvary=3;
6044 Float_t varyd0xd0[nptbins][nvary]={{-35000.*1E-8,-40000.*1E-8,-50000.*1E-8},/* pt<0.5*/
6045 {-35000.*1E-8,-40000.*1E-8,-50000.*1E-8},/* 0.5<pt<1*/
6046 {-25000.*1E-8,-32000.*1E-8,-38000.*1E-8},/* 1<pt<2 */
6047 {-22000.*1E-8,-26000.*1E-8,-30000.*1E-8},/* 2<pt<3 */
6048 {-12000.*1E-8,-15000.*1E-8,-20000.*1E-8},/* 3<pt<4 */
6049 {-12000.*1E-8,-15000.*1E-8,-20000.*1E-8},/* 4<pt<5 */
6050 {-5000.*1E-8,-10000.*1E-8,-15000.*1E-8},/* 5<pt<6 */
6051 {-5000.*1E-8,-10000.*1E-8,-15000.*1E-8},/* 6<pt<8 */
6052 {-0.*1E-8,-10000.*1E-8,-12000.*1E-8},/* 8<pt<12 */
6053 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 12<pt<16 */
6054 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 16<pt<20 */
6055 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 20<pt<24 */
6056 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8}};/* pt>24 */
6059 Float_t varyCosPoint[nptbins][nvary]={{0.75,0.80,0.85},/* 0<pt<0.5 */
6060 {0.75,0.80,0.85},/* 0.5<pt<1*/
6061 {0.75,0.80,0.85},/* 1<pt<2 */
6062 {0.92,0.94,0.95},/* 2<pt<3 */
6063 {0.85,0.88,0.91},/* 3<pt<4 */
6064 {0.85,0.88,0.91},/* 4<pt<5 */
6065 {0.88,0.90,0.92},/* 5<pt<6 */
6066 {0.88,0.90,0.92},/* 6<pt<8 */
6067 {0.85,0.90,0.92},/* 8<pt<12 */
6068 {0.85,0.90,0.92},/* 12<pt<16 */
6069 {0.8,0.85,0.9},/* 16<pt<20 */
6070 {0.8,0.85,0.9},/* 20<pt<24 */
6071 {0.75,0.82,0.9}};/* pt>24 */
6075 if(varycuts==-1){//DEFAULT CUTS
6077 varyd0xd0[9][1]=-10000.*1E-8;
6078 varyd0xd0[10][1]=-10000.*1E-8;
6079 varyd0xd0[11][1]=-10000.*1E-8;
6080 varyd0xd0[12][1]=-10000.*1E-8;
6082 Int_t vcd0xd0=varycuts/10;
6083 Int_t vccospoint=varycuts%10;
6084 // ######################## STAND VARY CUTS ###########################################
6085 Float_t cutsMatrixD0toKpiStand[nptbins][nvars]={{0.400,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,varyd0xd0[0][vcd0xd0],varyCosPoint[0][vccospoint]},/* 0<pt<0.5*/
6086 {0.400,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,varyd0xd0[1][vcd0xd0],varyCosPoint[1][vccospoint]},/* 0.5<pt<1*/
6087 {0.400,300.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,varyd0xd0[2][vcd0xd0],varyCosPoint[2][vccospoint]},/* 1<pt<2 */
6088 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[3][vcd0xd0],varyCosPoint[3][vccospoint]},/* 2<pt<3 */
6089 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[4][vcd0xd0],varyCosPoint[4][vccospoint]},/* 3<pt<4 */
6090 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[5][vcd0xd0],varyCosPoint[5][vccospoint]},/* 4<pt<5*/
6091 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[6][vcd0xd0],varyCosPoint[6][vccospoint]},/* 5<pt<6 */
6092 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[7][vcd0xd0],varyCosPoint[7][vccospoint]},/* 6<pt<8 */
6093 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[8][vcd0xd0],varyCosPoint[8][vccospoint]},/* 8<pt<12 */
6094 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[9][vcd0xd0],varyCosPoint[9][vccospoint]},/*12< pt <16*/
6095 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[10][vcd0xd0],varyCosPoint[10][vccospoint]}, /*16< pt <20*/
6096 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[11][vcd0xd0],varyCosPoint[11][vccospoint]}, /*20< pt <24*/
6097 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[12][vcd0xd0],varyCosPoint[12][vccospoint]}
6100 Float_t cutsMatrixD0toKpiLoose[nptbins][nvars]={{0.400,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-35000.*1E-8,0.73},/* pt<0.5*/
6101 {0.400,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-35000.*1E-8,0.73},/* 0.5<pt<1*/
6102 {0.400,300.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-25000.*1E-8,0.75},/* 1<pt<2 */
6103 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-15000.*1E-8,0.8},/* 2<pt<3 */
6104 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85},/* 3<pt<4 */
6105 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85},/* 4<pt<5 */
6106 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85},/* 5<pt<6 */
6107 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85},/* 6<pt<8 */
6108 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.85},/* 8<pt<12 */
6109 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.*1E-8,0.85},/* 12<pt<16 */
6110 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.85},/* 16<pt<20 */
6111 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.85},/* 20<pt<24 */
6112 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.85}};/* pt>24 */
6115 //CREATE TRANSPOSE MATRIX...REVERSE INDICES as required by AliRDHFCuts
6116 Float_t **cutsMatrixTransposeStand=new Float_t*[nvars];
6117 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=new Float_t[nptbins];
6118 Float_t **cutsMatrixTransposeLoose=new Float_t*[nvars];
6119 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeLoose[iv]=new Float_t[nptbins];
6121 for (Int_t ibin=0;ibin<nptbins;ibin++){
6122 for (Int_t ivar = 0; ivar<nvars; ivar++){
6123 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
6124 cutsMatrixTransposeLoose[ivar][ibin]=cutsMatrixD0toKpiLoose[ibin][ivar];
6125 //printf("cutsMatrixD0toKpi[%d][%d] = %f\n",ibin, ivar,cutsMatrixD0toKpiStand[ibin][ivar]);
6131 fCutsTight->SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
6132 fCutsLoose->SetCuts(nvars,nptbins,cutsMatrixTransposeLoose);
6135 for (Int_t ivar = 0; ivar<nvars; ivar++){
6136 delete [] cutsMatrixTransposeStand[ivar];
6137 delete [] cutsMatrixTransposeLoose[ivar];
6139 delete [] cutsMatrixTransposeStand;
6140 cutsMatrixTransposeStand=NULL;
6141 delete [] cutsMatrixTransposeLoose;
6142 cutsMatrixTransposeLoose=NULL;
6146 fCutsTight->SetUseSpecialCuts(kTRUE);
6147 fCutsLoose->SetUseSpecialCuts(kTRUE);
6148 fCutsTight->SetRemoveDaughtersFromPrim(kTRUE);
6149 fCutsLoose->SetRemoveDaughtersFromPrim(kTRUE);
6151 AliAODPidHF* pidObj=new AliAODPidHF();
6152 //pidObj->SetName("pid4D0");
6154 const Int_t nlims=2;
6155 Double_t plims[nlims]={0.6,0.8}; //TPC limits in momentum [GeV/c]
6156 Bool_t compat=kTRUE; //effective only for this mode
6158 Double_t sigmas[5]={2.,1.,0.,3.,0.}; //to be checked and to be modified with new implementation of setters by Rossella
6159 pidObj->SetAsym(asym);// if you want to use the asymmetric bands in TPC
6160 pidObj->SetMatch(mode);
6161 pidObj->SetPLimit(plims,nlims);
6162 pidObj->SetSigma(sigmas);
6163 pidObj->SetCompat(compat);
6164 pidObj->SetTPC(kTRUE);
6165 pidObj->SetTOF(kTRUE);
6167 fCutsTight->SetPidHF(pidObj);
6168 fCutsLoose->SetPidHF(pidObj);
6169 delete pidObj; pidObj=NULL;
6170 fCutsTight->SetUsePID(kTRUE);
6171 fCutsLoose->SetUsePID(kTRUE);
6173 fCutsTight->SetUseDefaultPID(kFALSE);
6174 fCutsLoose->SetUseDefaultPID(kFALSE);
6176 // PILE UP REJECTION
6177 fCutsTight->SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
6178 fCutsLoose->SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
6181 fCutsTight->PrintAll();
6189 //_________________________________________
6190 Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Double_t pt,Double_t invMassCut){
6191 // UPV: this should set the cut object
6194 // TEMPORARY: to be change in :
6196 // if pt < standardptbin[j+1]
6200 // the way the cuts are set is for further development
6201 // (to be interfaced with AliAnalsysTaskSETuneCuts)
6204 // 0 = inv. mass half width [GeV]
6209 // 5 = d0K [cm] upper limit!
6210 // 6 = d0Pi [cm] upper limit!
6212 // 8 = cosThetaPoint
6217 /*//#######################################################################
6218 //###########################################################################
6219 // STANDARD SETS OF CUTS ("tight"~PPR like; commented loose are more stringent than "tight")
6220 // #########################################################################
6222 if(pt>0. && pt<=1.) {
6224 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
6225 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6226 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.0002,0.7);
6228 if(pt>1. && pt<=2.) {
6230 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
6231 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6232 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.7);
6233 //printf("I'm in the bin %d\n",ptbin);
6235 if(pt>2. && pt<=3.) {
6237 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
6238 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6239 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.7);
6240 //printf("I'm in the bin %d\n",ptbin);
6242 if(pt>3. && pt<=5.){
6244 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.0001,0.8);
6245 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6246 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.0001,0.75);
6247 //printf("I'm in the bin %d\n",ptbin);
6251 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00005,0.8);
6252 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6253 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.00005,0.75);
6256 //############################################################################
6261 /* //#######################################################################
6262 //################# VARY CUTS for d0xd0 STUDY ##########################
6264 if(pt>0. && pt<=1.) {
6266 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
6267 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6268 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.0002,0.7);
6270 if(pt>1. && pt<=2.) {
6272 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,0.2,0.6);
6273 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6274 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.1);
6275 //printf("I'm in the bin %d\n",ptbin);
6277 if(pt>2. && pt<=3.) {
6279 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,0.2,0.6);
6280 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6281 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.1);
6282 //printf("I'm in the bin %d\n",ptbin);
6284 if(pt>3. && pt<=5.){
6286 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,0.2,0.8);
6287 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6288 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.3,0.4,0.4,1.,1.,-0.0001,0.1);
6289 //printf("I'm in the bin %d\n",ptbin);
6293 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,0.2,0.8);
6294 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6295 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.00005,0.1);
6298 // #################################################################
6301 //##########################################################################
6302 //################## CUTS with d0xd0 cut released #########################
6303 //### and TGHC cuts d0K and d0Pi to 0.1 instead of 0.05
6304 //### USED FOR PHDthesis
6305 //##########################################################################
6307 /* if(pt>0. && pt<=1.) {
6309 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.1,0.1,-0.000,0.5);
6310 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6311 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.000,0.7);
6313 if(pt>1. && pt<=2.) {
6315 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.1,0.1,-0.000,0.6);
6316 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6317 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.0000,0.7);
6318 //printf("I'm in the bin %d\n",ptbin);
6320 if(pt>2. && pt<=3.) {
6322 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.1,0.1,-0.000,0.6);
6323 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6324 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.000,0.7);
6325 //printf("I'm in the bin %d\n",ptbin);
6327 if(pt>3. && pt<=5.){
6329 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.000,0.8);
6330 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6331 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.000,0.75);
6332 //printf("I'm in the bin %d\n",ptbin);
6336 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0000,0.8);
6337 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6338 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.0000,0.75);
6346 //########## LOOKING FOR SIGNAL #####################
6348 if(pt>0. && pt<=1.) {
6350 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.03,0.8,0.3,0.3,0.1,0.1,-0.00035,0.7);
6351 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6352 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.04,0.8,0.3,0.3,0.1,0.1,-0.00025,0.7);
6354 if(pt>1. && pt<=2.) {
6356 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.4,0.4,0.1,0.1,-0.00035,0.8);
6357 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6358 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.03,0.8,0.3,0.3,0.1,0.1,-0.0025,0.75);
6359 //printf("I'm in the bin %d\n",ptbin);
6361 if(pt>2. && pt<=3.) {
6363 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00026,0.94);
6364 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6365 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0002,0.92);
6366 //printf("I'm in the bin %d\n",ptbin);
6368 if(pt>3. && pt<=5.){
6370 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00015,0.88);
6371 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6372 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00015,0.9);
6373 //printf("I'm in the bin %d\n",ptbin);
6377 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0001,0.9);
6378 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6379 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0000,0.88);
6383 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0001,0.9);
6384 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6385 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0005,0.88);
6390 printf("AliAnalysisTaskSECharmFraction::Obsolete method! Parameters pt=%f,invmasscut=%f not used \n",pt,invMassCut);
6395 //__________________________________________________________
6396 void AliAnalysisTaskSECharmFraction::CheckInvMassD0(AliAODRecoDecayHF2Prong *d,Double_t &invMassD0,Double_t &invMassD0bar,Bool_t &isPeakD0,Bool_t &isPeakD0bar,Bool_t &isSideBandD0,Bool_t &isSideBandD0bar){
6397 //Check wheter the candidate inv. mass is compatible with signal or sideband inv. mass selection
6399 d->InvMassD0(invMassD0,invMassD0bar);
6401 if(TMath::Abs(invMassD0-fmD0PDG)<fsignalInvMassCut)isPeakD0=kTRUE;
6402 if(TMath::Abs(invMassD0bar-fmD0PDG)<fsignalInvMassCut)isPeakD0bar=kTRUE;
6403 //CHECK if ISSIDEBAND: no constraint is present between signal region definition and side band definition
6404 // ######## TO BE CHANGED the distinction between sidebandD0 and sidebandD0bar is meaningless
6405 // and it is present only for side band region study (see which inv mass has the D0(D0bar)
6406 // in case the D0bar(D0) is in the sideband) #######
6407 if(TMath::Abs(invMassD0-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
6410 if(TMath::Abs(invMassD0bar-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0bar-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
6411 isSideBandD0bar=kTRUE;
6418 //_______________________
6419 AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::GetD0toKPiSignalType(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx){
6420 //THIS METHOD CHECK THE TYPE OF SIGNAL/BACKGROUND THE CANDIDATE IS.
6421 // IF (!AND ONLY IF) THE TWO DAUGHTERS COME FROM A COMMONE MOTHER A FAKE TRUE SECONDARY VERTEX IS CONSTRUCTED (aodDMC)
6423 // THE FOLLOWING SCHEME IS ADOPTED: signaltype is set to
6424 // 1:signal (D0 prompt); 2: signal D0 from Dstar; 3: D0 fromB 4: D0 from Dstar fromB
6425 // then background categories: -1: one or both daughters is a fake track
6426 // 5: both daughters come from a D meson != D0
6427 // 6: both daughters come from a D0->4prongs
6428 // 7: both daughetrs are primaries
6429 // 8: generic background (can include one of the previous if desired)
6430 // 9: daughters out of acceptance
6431 // 10: pathologic cases (not clear)
6432 // 11: end of the method without output
6433 // 12: different result than MatchToMC method
6435 AliAODMCParticle *mum1=0x0;
6436 AliAODMCParticle *b1=0x0,*b2=0x0;
6437 AliAODMCParticle *grandmoth1=0x0;
6440 Int_t pdgmum,dglabels[2],matchtoMC;
6441 Int_t pdgdaughters[2]={211,321};
6442 // get daughter AOD tracks
6443 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
6444 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
6445 AliAODRecoDecayHF *aodDMC=0x0;
6446 if(trk0==0x0||trk1==0x0){
6447 AliDebug(2,"Delete tracks I AM \n");
6453 dglabels[0]=trk0->GetLabel();
6454 dglabels[1]=trk1->GetLabel();
6455 if(dglabels[0]<0||dglabels[1]<0){
6456 AliDebug(2,"HERE I AM \n");
6464 // printf("Before entering the MC checks \n");
6466 b1=(AliAODMCParticle*)arrayMC->At(trk0->GetLabel());
6467 b2=(AliAODMCParticle*)arrayMC->At(trk1->GetLabel());
6469 //Tracks with no mother ??? FAKE DECAY VERTEX
6473 if(b1->GetMother()<0||b2->GetMother()<0){
6474 //Tracks with no mother ??? FAKE DECAY VERTEX
6479 mum1=(AliAODMCParticle*)arrayMC->At(b1->GetMother());
6480 // mum2=(AliAODMCParticle*)arrayMC->At(b2->GetMother());//FOR FURTHER USE
6482 if(b1->GetMother()!=b2->GetMother()){
6483 //Check the label of the mother is the same
6490 massMumTrue=mum1->GetCalcMass();
6492 matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
6493 aodDMC=ConstructFakeTrueSecVtx(b1,b2,mum1,primaryVtx);
6500 // if((mum1->GetPdgCode()!=mum2->GetPdgCode()))continue; //Check the mother is the same particle
6501 // printf("Particle codes: tr1: %d, tr2: %d, mum1: %d, mum 2: %d \n",b1->GetPdgCode(),b2->GetPdgCode(),mum1->GetPdgCode(),mum2->GetPdgCode());
6502 if(!((TMath::Abs(b1->GetPdgCode())==321&&TMath::Abs(b1->GetPdgCode())!=211)||(TMath::Abs(b1->GetPdgCode())==211&&TMath::Abs(b1->GetPdgCode()!=321)))){
6503 // Not a Kaon and a Pion
6509 pdgmum=mum1->GetPdgCode();
6510 if(TMath::Abs(pdgmum)!=421){
6511 if(TMath::Abs(pdgmum)==411||TMath::Abs(pdgmum)==431||TMath::Abs(pdgmum)==443){
6512 // IT IS A SECONDARY VERTEX FROM CHARM BUT NOT A D0
6523 if(mum1->GetDaughter(1)-mum1->GetDaughter(0)+1!=2){
6524 // from D0 but NOT A 2 PRONG DECAY
6530 if(mum1->GetMother()<0){
6531 // A particle coming from nothing
6536 Bool_t isfromDstar=kFALSE;
6537 // matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
6538 grandmoth1=(AliAODMCParticle*)arrayMC->At(mum1->GetMother());
6539 if(TMath::Abs(grandmoth1->GetPdgCode())==413||TMath::Abs(grandmoth1->GetPdgCode())==423)isfromDstar=kTRUE;// D0 COMING FROM A D0*
6542 //CHECK FOR CABIBBO SUPPRESSED DECAY
6543 Int_t isCabibSup=0,pdgKaon;
6545 pdgKaon=b1->GetPdgCode();
6546 if(TMath::Abs(pdgKaon)!=321)pdgKaon=b2->GetPdgCode();
6547 if(pdgmum>0&&pdgKaon>0)isCabibSup=1;
6548 if(pdgmum<0&&pdgKaon<0)isCabibSup=1;
6554 // if(fcheckMCD0){//THIS CHECK IS NEEDED TO AVOID POSSIBLE FAILURE IN THE SECOND WHILE, FOR DEBUGGING
6555 while(TMath::Abs(grandmoth1->GetPdgCode())!=4&&TMath::Abs(grandmoth1->GetPdgCode())!=5){
6556 if(grandmoth1->GetMother()<0){
6557 //### THE FOLLOWING IN CASE OF DEBUGGING ##########Ã
6558 /*printf("mother=-1, pdgcode: %d \n",grandmoth1->GetPdgCode());
6559 Int_t son=grandmoth1->GetDaughter(0);
6560 sonpart=(AliAODMCParticle*)arrayMC->At(son);
6561 while(TMath::Abs(sonpart->GetPdgCode())!=421){
6562 printf("mother=-1, pdgcode: %d \n",sonpart->GetPdgCode());
6564 sonpart=(AliAODMCParticle*)arrayMC->At(son);
6570 grandmoth1=(AliAODMCParticle*)arrayMC->At(grandmoth1->GetMother());
6573 if(TMath::Abs(grandmoth1->GetPdgCode())==4){
6576 if(isfromDstar)signaltype=2;
6586 else if(TMath::Abs(grandmoth1->GetPdgCode())==5){
6588 if(isfromDstar)signaltype=4;
6599 signaltype=11;// JUST FOR SAFETY: SHOULD NEVER REACH THIS POINT
6604 //___________________________________
6605 AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::ConstructFakeTrueSecVtx(const AliAODMCParticle *b1, const AliAODMCParticle *b2, const AliAODMCParticle *mum,Double_t *primaryVtxTrue){
6606 // CONSTRUCT A FAKE TRUE SECONDARY VERTEX (aodDMC)
6607 //!!!NOTE THAT ONLY ONE MOTHER IS CONSIDERED: THE METHOD REQUIRES THE DAUGHTERS COME FROM THE SAME MOTHER !!
6608 if(b1==0x0||b2==0x0)return 0x0;
6609 if(mum==0x0)return 0x0;
6610 Double_t pD[3],xD[3],pXtrTrue[2],pYtrTrue[2],pZtrTrue[2],xtr1[3],xtr2[3];
6611 Int_t charge[2]={0,0};
6612 if(b1->Charge()==-1)charge[0]=1;
6614 if(b2->Charge()==-1){
6615 //printf("Same charges for prongs \n");
6616 if(!fLikeSign)return 0x0;
6621 pXtrTrue[charge[0]]=b1->Px();
6622 pYtrTrue[charge[0]]=b1->Py();
6623 pZtrTrue[charge[0]]=b1->Pz();
6624 if(!b1->XvYvZv(xtr1)){
6628 pXtrTrue[charge[1]]=b2->Px();
6629 pYtrTrue[charge[1]]=b2->Py();
6630 pZtrTrue[charge[1]]=b2->Pz();
6632 if(!mum->PxPyPz(pD)){
6633 //printf("!D from B:Get momentum failed \n");
6636 if(!mum->XvYvZv(xD)){
6637 //printf("!D from B:Get position failed \n");
6640 /* ############ THIS HAPPENS FROM TIME TO TIME: NUMERIC PROBLEM KNOWN #################
6641 if(pXtrTrue[0]+pXtrTrue[1]!=pD[0]){
6645 if(!b2->XvYvZv(xtr2)){
6648 Double_t d0dummy[2]={0.,0.};//TEMPORARY : dummy d0 for AliAODRecoDeay constructor
6649 AliAODRecoDecayHF* aodDMC=new AliAODRecoDecayHF(primaryVtxTrue,xD,2,0,pXtrTrue,pYtrTrue,pZtrTrue,d0dummy);
6651 /* ######## THE FOLLOWINF FOR DEBUGGING ############
6652 Printf("testing the Fake vertex: SecVtxX: %f, Px: %f, Py: %f, Pz:%f \n ",aodDMC->GetSecVtxX(),aodDMC->Px(),aodDMC->Py(),aodDMC->Pz());
6653 Printf("pD: x=%f, y=%f,z=%f\n",pD[0],pD[1],pD[2]);
6654 Printf("Daughters :px1:%f, px2:%f \n",pXtrTrue[0],pXtrTrue[1]);
6655 Printf("Daughters :py1:%f, py2:%f \n",pYtrTrue[0],pYtrTrue[1]);
6656 Printf("Daughters :pz1:%f, pz2:%f \n",pZtrTrue[0],pZtrTrue[1]);
6657 Printf("Mother pdg: %d",mum->GetPdgCode());
6658 Printf("Impact Par Prod: %f\n",aodDMC->ImpParXY());
6664 //________________________________________________________
6665 Bool_t AliAnalysisTaskSECharmFraction::FillHistos(AliAODRecoDecayHF2Prong *d,TList *&list,Int_t ptbin,Int_t okD0,Int_t okD0bar,Double_t invMassD0,Double_t invMassD0bar,Bool_t isPeakD0,Bool_t isPeakD0bar,Bool_t isSideBandD0,Bool_t isSideBandD0bar,Double_t massmumtrue,AliAODRecoDecayHF *aodDMC,Double_t *vtxTrue){//FILL THE HISTOGRAMS: TAKE THE HISTOS FROM THE list NAME
6668 if((!okD0)&&(!okD0bar))return kTRUE;
6669 if(ptbin==-1)return kTRUE;
6670 // flistNoCutsSignal->Add(hptD0NCsign);
6671 // flistNoCutsSignal->Add(hptD0VsMaxPtNCsign);
6672 // flistNoCutsSignal->Add(hptD0PTallsqrtNCsign);
6673 // flistNoCutsSignal->Add(hptD0PTallNCsign);
6675 // %%%%%% TO BE DONE
6676 // flistNoCutsSignal->Add(hptD0vsptBNCsign);
6677 // flistNoCutsSignal->Add(hpD0vspBNCsign);
6678 //flistNoCutsSignal->Add(hptD0vsptcquarkNCsign);
6679 //flistNoCutsSignal->Add(hpD0vspcquarkNCsign);
6680 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%
6681 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6684 //hd0zD0ptLSCsign_pt
6685 //hInvMassD0LSCsign_pt
6688 // %%% TO BE DONE %%
6689 //hCosPDPBLSCsign_pt
6690 //hCosPcPDLSCsign_pt
6692 Double_t pt=d->Pt();
6693 Double_t impparxy=d->ImpParXY()*10000.;
6697 // ######### Get Standard label for hist in tlist ###############
6698 TString namehist=list->GetName(),str;
6699 namehist.ReplaceAll("list","");
6701 // ######### Global properties histos #################
6702 // ####### take care: only for candidates which pass the cuts !! not for side band ########
6703 if(fFastAnalysis<2){
6704 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar)){
6706 str.Append(namehist.Data());
6707 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->CosPointingAngle());
6710 str.Append(namehist.Data());
6711 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxZ());
6714 str.Append(namehist.Data());
6715 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.);
6718 str.Append(namehist.Data());
6719 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxY()*10000.);
6722 str.Append(namehist.Data());
6723 ((TH2F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.,d->GetSecVtxY()*10000.);
6726 str.Append(namehist.Data());
6727 ((TH1F*)list->FindObject(str.Data()))->Fill(TMath::ATan2(d->GetSecVtxY()*10000.,d->GetSecVtxX()*10000.)*TMath::RadToDeg());
6730 str="hd0singlTrack";
6731 str.Append(namehist.Data());
6732 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Getd0Prong(0)*10000.);
6733 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Getd0Prong(1)*10000.);
6736 str.Append(namehist.Data());
6737 ((TH1F*)list->FindObject(str.Data()))->Fill(d->CosPointingAngle());
6740 str.Append(namehist.Data());
6741 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
6743 //%%%%%%%% NEW HISTO %%%%%%%%%%
6745 str.Append(namehist.Data());
6746 ((TH1F*)list->FindObject(str.Data()))->Fill(1e4*d->GetDCA());
6748 str="hcosthetastar";
6749 str.Append(namehist.Data());
6750 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(d->CosThetaStarD0());
6751 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(d->CosThetaStarD0bar());
6754 str.Append(namehist.Data());
6755 ((TH1F*)list->FindObject(str.Data()))->Fill(pt);
6758 str.Append(namehist.Data());
6760 if(d->PtProng(1)>d->PtProng(0))pr=1;
6761 if(d->PtProng(pr)<fptMax[0]) ((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[0]);
6762 else if(d->PtProng(TMath::Abs(pr-1))<fptMax[1])((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[1]);
6763 else ((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[2]);
6766 str="hptD0PTallsqrt";
6767 str.Append(namehist.Data());
6768 Double_t sumsqrpt=fptAllSq-d->PtProng(1)*d->PtProng(1)-d->PtProng(0)*d->PtProng(0);
6769 if(sumsqrpt>0.)((TH1F*)list->FindObject(str.Data()))->Fill(pt,TMath::Sqrt(sumsqrpt));
6772 str.Append(namehist.Data());
6773 ((TH1F*)list->FindObject(str.Data()))->Fill(pt,fptAll-d->PtProng(1)-d->PtProng(0));
6777 str.Append(namehist.Data());
6780 if(d->GetPrimaryVtx()!=0x0)((TH1F*)list->FindObject(str.Data()))->Fill(1e4*(d->Zv()-d->GetPrimaryVtx()->GetZ()));
6783 str.Append(namehist.Data());
6786 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Eta());
6788 // OTHER NEW ADDITIONAL HISTOS
6791 str.Append(namehist.Data());
6794 //printf("Hist name: %s \n",str.Data());
6795 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
6799 str.Append(namehist.Data());
6802 //printf("Hist name: %s \n",str.Data());
6803 ((TH2F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),impparxy);
6806 str="hangletracksVSd0xd0";
6807 str.Append(namehist.Data());
6810 //printf("Hist name: %s \n",str.Data());
6811 ((TH2F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->ProngsRelAngle(0,1));
6813 str="hangletracksVSd0D0";
6814 str.Append(namehist.Data());
6817 // printf("Hist name: %s \n",str.Data());
6818 ((TH2F*)list->FindObject(str.Data()))->Fill(impparxy,d->ProngsRelAngle(0,1));
6819 // ####################################################
6823 // ######### Invariant mass histos #################
6824 if(fFastAnalysis<1){
6826 str.Append(namehist.Data());
6827 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6828 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6831 if(isPeakD0||isPeakD0bar){
6833 str.Append(namehist.Data());
6835 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6836 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6840 // The Following is a NEW HISTO
6842 str.Append(namehist.Data());
6845 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6846 if((!fsplitMassD0D0bar)&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6847 str="hInvMassD0bar";
6848 str.Append(namehist.Data());
6851 if(fsplitMassD0D0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6854 // FILLING OF THE SPARSE HISTO
6855 if(fFastAnalysis<=2){ // ONLY IF NOT VERY FAST ANALYSIS
6857 str.Append(namehist.Data());
6859 Double_t point[5]={invMassD0,invMassD0bar,pt,impparxy,0.};
6860 if(fReadMC&&aodDMC!=0x0&&namehist.Contains("fromB")){
6861 point[3]=aodDMC->ImpParXY()*10000.;
6863 if(okD0&&okD0bar)point[4]=3.5;
6864 else if(okD0)point[4]=1.5;
6865 else if(okD0bar)point[4]=2.5;
6866 ((THnSparseF*)list->FindObject(str.Data()))->Fill(point);
6869 str.Append(namehist.Data());
6870 if(okD0)((TH2F*)list->FindObject(str.Data()))->Fill(invMassD0,pt);
6871 if(okD0bar)((TH2F*)list->FindObject(str.Data()))->Fill(invMassD0bar,pt);
6878 if(fFastAnalysis<=3&&namehist.Contains("sign")){
6879 str="hSparseCxyLxy";
6880 str.Append(namehist.Data());
6881 Double_t nLxy=d->NormalizedDecayLengthXY()*d->P()/pt;
6882 Double_t cosPxy=TMath::Abs(d->CosPointingAngleXY());
6883 Double_t point[4]={invMassD0,pt,cosPxy,nLxy};
6885 // printf("Listname: %s, Here the histo : %p \n",namehist.Data(),((THnSparseF*)list->FindObject(str.Data())));
6886 ((THnSparseF*)list->FindObject(str.Data()))->Fill(point);
6888 point[0]=invMassD0bar;
6890 ((THnSparseF*)list->FindObject(str.Data()))->Fill(point);
6896 /* if(isPeakD0||isPeakD0bar){
6898 str.Append(namehist.Data());
6900 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6901 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6902 // The Following is a NEW HISTO
6904 str.Append(namehist.Data());
6907 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6908 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6910 if(fFastAnalysis<2){
6911 if(isSideBandD0||isSideBandD0bar){
6913 str.Append(namehist.Data());
6915 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6916 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6923 str.Append(namehist.Data());
6924 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6926 if(isPeakD0||isPeakD0bar){
6928 str.Append(namehist.Data());
6930 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6932 if(isSideBandD0||isSideBandD0bar){
6934 str.Append(namehist.Data());
6936 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6941 // ################ D0 Impact Parameter Histos #####################
6942 if(isPeakD0||isPeakD0bar){
6945 str.Append(namehist.Data());
6948 // WE COUNT TWICE A CANDIDATE UNDER THE INV MASS PEAK BOTH AS a D0 and a D0bar (if selected) for DATA ONLY
6949 // THIS BECAUSE WE SUBTRACT a "BACKGROUND" AMOUNT ESTIMATED USING THE INV MASS FIT INFORMATION
6950 // WHICH SHOULD ACCOUNT FOR REFLECTIONS
6952 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6954 if(isPeakD0bar&&okD0bar){
6955 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6959 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar))((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6963 str.Append(namehist.Data());
6964 str.Append("_PkMss_pt");
6967 // WE COUNT TWICE A CANDIDATE UNDER THE INV MASS PEAK BOTH AS a D0 and a D0bar (if selected) for DATA ONLY
6968 // THIS BECAUSE WE SUBTRACT a "BACKGROUND" AMOUNT ESTIMATED USING THE INV MASS FIT INFORMATION
6969 // WHICH SHOULD ACCOUNT FOR REFLECTIONS
6971 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6973 if(isPeakD0bar&&okD0bar){
6974 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6978 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar))((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6982 if(fReadMC&&vtxTrue){
6983 // ONLY AN HISTO FOR QA: WE DO NOT CONSIDER THE IMPACT PARAMETER FOR EACH MASS HYPOTHESIS
6985 str.Append(namehist.Data());
6987 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6989 str="hd0D0VtxTruept";
6990 str.Append(namehist.Data());
6991 str.Append("_PkMss_pt");
6993 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6996 if(fReadMC&&aodDMC!=0x0){
6997 // WE NEED JUST THE SHAPE: AVOID TAKING THE IMPACT PAR FOR EACH MASS HYPO PASSING THE CUTS
6998 // aodDMC->Print("");
6999 //aodDMC->ImpParXY();
7000 // aodDMC->Print("");
7002 str.Append(namehist.Data());
7004 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
7007 str.Append(namehist.Data());
7008 str.Append("_PkMss_pt");
7010 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
7013 else if(isSideBandD0||isSideBandD0bar){
7014 // WE ASSUME THE IMPACT PARAMETER DISTRIBUION FOR BACKGROUND(SIDEBANDS) CANDIDATES
7015 // IS NOT CORRELATED TO THE INVARIANT MASSES. THEREFORE WE JUST TAKE ONE TIME
7016 // THE IMPACT PARAMETER AND NOT ONE FOR EACH MASS HYPOTHESIS PASSING THE CUTS
7019 str.Append(namehist.Data());
7021 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
7024 str.Append(namehist.Data());
7025 str.Append("_SBMss_pt");
7027 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
7030 if(fReadMC&&vtxTrue){
7032 str.Append(namehist.Data());
7034 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
7036 str="hd0D0VtxTruept";
7037 str.Append(namehist.Data());
7038 str.Append("_SBMss_pt");
7040 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
7044 if(fReadMC&&aodDMC!=0x0){
7046 str.Append(namehist.Data());
7048 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
7051 str.Append(namehist.Data());
7052 str.Append("_SBMss_pt");
7054 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
7063 void AliAnalysisTaskSECharmFraction::FillHistoMCproperties(TClonesArray *arrayMC){
7064 //#############################################################
7065 // HERE LOOK AT global properties of D0 mesons, c quarks and B
7067 //#############################################################
7068 Double_t pxyzMum[3],pxyzDaught[3],cosOpenAngle=-1.1,ptmum,ptdaught;
7069 Int_t ncdaught=0,cquarksMC=0,nD0all=0,nD0FromB=0,nBdaught=0,nD0bquark=0,nD0bMeson=0,nD0bBaryon=0;
7070 for (Int_t iPart=0; iPart<arrayMC->GetEntriesFast(); iPart++) {
7071 AliAODMCParticle* mcPart = dynamic_cast<AliAODMCParticle*>(arrayMC->At(iPart));
7073 AliWarning("Particle not found in tree, skipping");
7076 if (TMath::Abs(mcPart->GetPdgCode()) == 4){
7078 mcPart->PxPyPz(pxyzMum);
7081 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllPt"))->Fill(ptmum);
7082 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllEta"))->Fill(mcPart->Eta());
7083 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllEnergy"))->Fill(mcPart->E());
7084 //NOW LOOK FOR A D0 among cquark daughters
7085 ncdaught=mcPart->GetDaughter(1)-mcPart->GetDaughter(0)+1;
7086 ((TH1F*)flistMCproperties->FindObject("hMCcquarkNdaught"))->Fill(ncdaught);
7088 for(Int_t iDaught=mcPart->GetDaughter(0);iDaught<mcPart->GetDaughter(1);iDaught++){
7089 AliAODMCParticle* mcPartD0 = dynamic_cast<AliAODMCParticle*>(arrayMC->At(iDaught));
7090 if(mcPartD0==0x0)continue;
7091 if(TMath::Abs(mcPartD0->GetPdgCode()) == 421){
7092 // a D0 coming from a c quark
7093 mcPartD0->PxPyPz(pxyzDaught);
7094 ptdaught=mcPartD0->Pt();
7095 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcPt"))->Fill(ptdaught);
7096 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcEta"))->Fill(mcPartD0->Eta());
7097 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcEnergy"))->Fill(mcPartD0->E());
7098 // ##############################################################################################
7099 // Compare D0 momentum and c quarks:
7100 // NB: here ALL D0 are considered, also those not decaying in KPi !!!
7101 // ##############################################################################################
7102 ((TH2F*)flistMCproperties->FindObject("hMCD0VscquarkPt"))->Fill(mcPart->Pt(),mcPartD0->Pt());
7103 ((TH2F*)flistMCproperties->FindObject("hMCD0VscquarkEnergy"))->Fill(mcPart->E(),mcPartD0->E());
7104 ((TH1F*)flistMCproperties->FindObject("hMCD0deltacquarkEnergy"))->Fill(mcPartD0->E()/mcPart->E());
7105 ((TH1F*)flistMCproperties->FindObject("hMCD0EnergyVsAvcquarkDaughtEn"))->Fill((mcPartD0->E()-(mcPart->E()/ncdaught))/mcPart->E());
7106 //calculate open angle
7107 if((pxyzMum[0]!=0.||pxyzMum[1]!=0.||pxyzMum[2]!=0.)&&(pxyzDaught[0]!=0.||pxyzDaught[1]!=0.||pxyzDaught[2]!=0.))cosOpenAngle=(pxyzDaught[0]*pxyzMum[0]+pxyzDaught[1]*pxyzMum[1]+pxyzDaught[2]*pxyzMum[2])/(TMath::Sqrt(pxyzDaught[0]*pxyzDaught[0]+pxyzDaught[1]*pxyzDaught[1]+pxyzDaught[2]*pxyzDaught[2])*TMath::Sqrt(pxyzDaught[0]*pxyzDaught[0]+pxyzDaught[1]*pxyzDaught[1]+pxyzDaught[2]*pxyzDaught[2]));
7108 ((TH1F*)flistMCproperties->FindObject("hMCD0cquarkAngle"))->Fill(cosOpenAngle);
7109 ((TH2F*)flistMCproperties->FindObject("hMCD0cquarkAngleEnergy"))->Fill(mcPart->E(),cosOpenAngle);
7115 // NOW LOOK FOR D0 not coming from cquarks
7116 if (TMath::Abs(mcPart->GetPdgCode()) == 421){
7118 if(mcPart->GetMother()<0)continue;
7119 AliAODMCParticle* mcD0Parent = dynamic_cast<AliAODMCParticle*>(arrayMC->At(mcPart->GetMother()));
7120 if(mcD0Parent==0x0)continue;
7121 Bool_t notfound=kFALSE,bMeson=kFALSE,bBaryon=kFALSE;
7123 while(TMath::Abs(mcD0Parent->GetPdgCode())!=4&&TMath::Abs(mcD0Parent->GetPdgCode())!=5){
7124 if(500<TMath::Abs(mcD0Parent->GetPdgCode())%10000&&TMath::Abs(mcD0Parent->GetPdgCode())<600){
7128 else if (5000<TMath::Abs(mcD0Parent->GetPdgCode())&&TMath::Abs(mcD0Parent->GetPdgCode())<6000){
7132 if(mcD0Parent->GetMother()<0){
7136 mcD0Parent=dynamic_cast<AliAODMCParticle*>(arrayMC->At(mcD0Parent->GetMother()));
7138 if(notfound)continue;
7139 if(TMath::Abs(mcD0Parent->GetPdgCode())==4)continue;//D0 from c quarks already counted
7140 ((TH1F*)flistMCproperties->FindObject("hMCfromBpdgB"))->Fill(TMath::Abs(mcD0Parent->GetPdgCode()));
7141 if(bBaryon)nD0bBaryon++;
7142 else if(bMeson)nD0bMeson++;
7145 mcD0Parent->PxPyPz(pxyzMum);
7146 ptmum=mcD0Parent->Pt();
7147 ((TH1F*)flistMCproperties->FindObject("hMCBhadrPt"))->Fill(ptmum);
7148 ((TH1F*)flistMCproperties->FindObject("hMCBhadrEta"))->Fill(mcD0Parent->Eta());
7149 ((TH1F*)flistMCproperties->FindObject("hMCBhadrEnergy"))->Fill(mcD0Parent->E());
7151 nBdaught=mcD0Parent->GetDaughter(1)-mcD0Parent->GetDaughter(0)+1;
7152 ((TH1F*)flistMCproperties->FindObject("hMCBhadrNdaught"))->Fill(nBdaught);
7155 // Now take properties of this D0 coming from a B
7156 mcPart->PxPyPz(pxyzDaught);
7157 ptdaught=mcPart->Pt();
7158 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBPt"))->Fill(ptdaught);
7159 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBEta"))->Fill(mcPart->Eta());
7160 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBEnergy"))->Fill(mcPart->E());
7161 // ##############################################################################################
7162 // Compare D0 momentum and b hadron:
7163 // NB: here ALL D0 are considered, also those not decaying in KPi !!!
7164 // ##############################################################################################
7165 ((TH2F*)flistMCproperties->FindObject("hMCD0VsBhadrPt"))->Fill(mcD0Parent->Pt(),mcPart->Pt());
7166 ((TH2F*)flistMCproperties->FindObject("hMCD0VsBhadrEnergy"))->Fill(mcD0Parent->E(),mcPart->E());
7167 ((TH1F*)flistMCproperties->FindObject("hMCD0deltaBhadrEnergy"))->Fill(mcPart->E()/mcD0Parent->E());
7168 ((TH1F*)flistMCproperties->FindObject("hMCD0EnergyVsAvBDaughtEn"))->Fill((mcPart->E()-(mcD0Parent->E()/nBdaught))/mcD0Parent->E());
7169 //calculate open angle
7170 if((pxyzMum[0]!=0.||pxyzMum[1]!=0.||pxyzMum[2]!=0.)&&(pxyzDaught[0]!=0.||pxyzDaught[1]!=0.||pxyzDaught[2]!=0.))cosOpenAngle=(pxyzDaught[0]*pxyzMum[0]+pxyzDaught[1]*pxyzMum[1]+pxyzDaught[2]*pxyzMum[2])/(TMath::Sqrt(pxyzDaught[0]*pxyzDaught[0]+pxyzDaught[1]*pxyzDaught[1]+pxyzDaught[2]*pxyzDaught[2])*TMath::Sqrt(pxyzDaught[0]*pxyzDaught[0]+pxyzDaught[1]*pxyzDaught[1]+pxyzDaught[2]*pxyzDaught[2]));
7171 ((TH1F*)flistMCproperties->FindObject("hMCD0BhadrAngle"))->Fill(cosOpenAngle);
7172 ((TH2F*)flistMCproperties->FindObject("hMCD0BhadrAngleEnergy"))->Fill(mcPart->E(),cosOpenAngle);
7175 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(1,cquarksMC);
7176 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(2,nD0all);
7177 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(3,nD0FromB);
7178 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(4,nD0bMeson);
7179 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(5,nD0bBaryon);
7184 void AliAnalysisTaskSECharmFraction::SetPtBins(Int_t nbins,const Float_t *ptbins){
7185 if((fptbins)!=0x0)delete fptbins;
7186 fnbins=nbins;fptbins=new Float_t[fnbins];
7187 memcpy(fptbins,ptbins,fnbins*sizeof(Float_t));
7191 void AliAnalysisTaskSECharmFraction::SetStandardMassSelection(){
7192 //SET THE DEFAULT VALUES FOR INVARIANT MASS SELECTION
7195 SetSignalInvMassCut();
7196 SetLargeInvMassCut();
7197 SetSideBandInvMassCut();
7198 SetSideBandInvMassWindow();
7201 // HERE FOR SEARCH FOR SIGNAL
7202 SetSignalInvMassCut();
7203 SetLargeInvMassCut();
7204 SetSideBandInvMassCut();
7205 SetSideBandInvMassWindow();
7209 Bool_t AliAnalysisTaskSECharmFraction::SpecialSelD0(AliAODRecoDecayHF2Prong *d,Int_t &nusedforVtx){
7211 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
7212 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
7214 if(trk0->GetUsedForPrimVtxFit())nusedforVtx++;
7215 if(trk1->GetUsedForPrimVtxFit())nusedforVtx++;
7216 if(nusedforVtx>fNtrMaxforVtx)return kFALSE;
7218 if(TMath::Abs(d->Getd0Prong(1)) < -99999. ||
7219 TMath::Abs(d->Getd0Prong(0)) < -99999.) return kFALSE;
7226 AliAODVertex* AliAnalysisTaskSECharmFraction::GetPrimaryVtxSkipped(AliAODEvent *aodev,AliAODRecoDecayHF2Prong *d){
7227 //Calculate the primary vertex w/o the daughter tracks of the candidate
7229 AliESDVertex *vertexESD=0x0;
7230 AliAODVertex *vertexAOD=0x0;
7231 AliVertexerTracks *vertexer = new AliVertexerTracks(aodev->GetMagneticField());
7234 Int_t nTrksToSkip=2;
7235 AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(0);
7236 skipped[0]=dgTrack->GetID();
7237 dgTrack = (AliAODTrack*)d->GetDaughter(1);
7238 skipped[1]=dgTrack->GetID();
7242 vertexer->SetSkipTracks(nTrksToSkip,skipped);
7243 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(aodev);
7244 vertexer->SetMinClusters(4);
7245 if(!vertexESD) return vertexAOD;
7246 if(vertexESD->GetNContributors()<=0) {
7247 AliDebug(2,"vertexing failed");
7248 delete vertexESD; vertexESD=NULL;
7252 delete vertexer; vertexer=NULL;
7255 // convert to AliAODVertex
7256 Double_t pos[3],cov[6],chi2perNDF;
7257 vertexESD->GetXYZ(pos); // position
7258 vertexESD->GetCovMatrix(cov); //covariance matrix
7259 chi2perNDF = vertexESD->GetChi2toNDF();
7260 delete vertexESD; vertexESD=NULL;
7262 vertexAOD = new AliAODVertex(pos,cov,chi2perNDF);
7269 Bool_t AliAnalysisTaskSECharmFraction::FillAziList(AliAODEvent *aod,Double_t azilist[30000],Int_t trkIDlist[30000],Int_t &nprim)const{
7270 Int_t ntracks=aod->GetNumberOfTracks();
7277 for(Int_t it=0;it<ntracks;it++) {
7278 AliAODTrack *track = aod->GetTrack(it);
7280 if(track->IsPrimaryCandidate()){
7281 if(track->Pt()>ptmin){
7283 azilist[nprim]=track->Phi();
7284 trkIDlist[nprim]=track->GetID();
7293 void AliAnalysisTaskSECharmFraction::FillAziHistos(AliAODRecoDecayHF2Prong *d,TList *&list,Int_t ptbin,Double_t azilist[30000],Int_t trkIDlist[30000],Int_t nprim,Int_t okD0,Int_t okD0bar,Bool_t isPeakD0,Bool_t isPeakD0bar,Bool_t isSideBandD0,Bool_t isSideBandD0bar)const{
7295 if((!okD0)&&(!okD0bar))return;
7296 if(ptbin==-1)return;
7297 TString namehist=list->GetName(),str;
7298 namehist.ReplaceAll("list","");
7299 // Double_t ptD=d->Pt();
7302 if(isPeakD0||isPeakD0bar)str.Append("PM");
7303 else if(isSideBandD0||isSideBandD0bar)str.Append("SB");
7305 str.Append(namehist.Data());
7310 dtr=(AliAODTrack*)d->GetDaughter(0);
7311 Int_t id1=dtr->GetID();
7312 dtr=(AliAODTrack*)d->GetDaughter(1);
7313 Int_t id2=dtr->GetID();
7315 Double_t phi=d->Phi();
7316 Double_t weight=1./nprim;
7318 for(Int_t j=0;j<nprim;j++){
7319 if(trkIDlist[j]!=id1&&trkIDlist[j]!=id2){
7321 if(azi>TMath::Pi())azi-=2.*TMath::Pi();
7322 else if(azi<-TMath::Pi())azi+=2.*TMath::Pi();
7324 ((TH1F*)list->FindObject(str.Data()))->Fill(azi,weight);
7339 void AliAnalysisTaskSECharmFraction::Terminate(const Option_t*){
7340 //TERMINATE METHOD: NOTHING TO DO