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 **************************************************************************/
18 /////////////////////////////////////////////////////////////
20 // Class AliAnalysisTaskSECharmFraction
21 // AliAnalysisTaskSE for the extraction of the fraction of prompt charm
22 // using the charm hadron impact parameter to the primary vertex
24 // Author: Andrea Rossi, andrea.rossi@pd.infn.it
25 /////////////////////////////////////////////////////////////
30 #include <THnSparse.h>
31 #include <TDatabasePDG.h>
34 #include "AliAODEvent.h"
35 #include "AliAODRecoDecayHF2Prong.h"
36 #include "AliAODRecoDecayHF.h"
37 #include "AliAODRecoDecay.h"
38 #include "AliAnalysisDataSlot.h"
39 #include "AliAnalysisDataContainer.h"
40 #include "AliAODTrack.h"
41 #include "AliAODHandler.h"
42 #include "AliESDtrack.h"
43 #include "AliAODVertex.h"
44 #include "AliESDVertex.h"
45 #include "AliVertexerTracks.h"
46 #include "AliAODMCParticle.h"
47 #include "AliAODPid.h"
48 #include "AliTPCPIDResponse.h"
49 #include "AliAODMCHeader.h"
50 #include "AliAnalysisVertexingHF.h"
51 #include "AliAnalysisTaskSECharmFraction.h"
52 #include "AliRDHFCutsD0toKpi.h"
53 #include "AliAODInputHandler.h"
54 #include "AliAnalysisManager.h"
59 class AliAnalysisTaskSE;
62 ClassImp(AliAnalysisTaskSECharmFraction)
64 //________________________________________________________________________
65 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction()
66 : AliAnalysisTaskSE(),
71 fsplitMassD0D0bar(kTRUE),
84 fsidebandInvMassCut(),
85 fsidebandInvMassWindow(),
90 fSignalTypeTghCuts(0),
95 flistNoCutsFromDstar(0),
100 flistLsCutsFromDstar(0),
102 flistTghCutsSignal(0),
104 flistTghCutsFromB(0),
105 flistTghCutsFromDstar(0),
109 //Default constructor
111 //________________________________________________________________________
112 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name)
113 : AliAnalysisTaskSE(name),
118 fsplitMassD0D0bar(kTRUE),
129 fsignalInvMassCut(-1.),
130 flargeInvMassCut(-1.),
131 fsidebandInvMassCut(-1.),
132 fsidebandInvMassWindow(-1.),
136 fSignalTypeLsCuts(0),
137 fSignalTypeTghCuts(0),
138 flistMCproperties(0),
139 flistNoCutsSignal(0),
142 flistNoCutsFromDstar(0),
144 flistLsCutsSignal(0),
147 flistLsCutsFromDstar(0),
149 flistTghCutsSignal(0),
151 flistTghCutsFromB(0),
152 flistTghCutsFromDstar(0),
158 // Define input and output slots here
159 // Input slot #0 works with a TChain
160 // Output slot #0 writes into a TH1 container
163 fnbins=SetStandardCuts(fptbins);// THIS TO SET NBINS AND BINNING
165 DefineOutput(1, TH1F::Class());
166 DefineOutput(2, TH1F::Class());
167 DefineOutput(3, TH1F::Class());
168 DefineOutput(4, TH1F::Class());
169 for(Int_t j=5;j<21;j++){
170 DefineOutput(j, TList::Class());
173 // Output slot for the Cut Objects
174 DefineOutput(21,AliRDHFCutsD0toKpi::Class()); //My private output
175 DefineOutput(22,AliRDHFCutsD0toKpi::Class()); //My private output
180 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name,AliRDHFCutsD0toKpi *cutsA,AliRDHFCutsD0toKpi *cutsB)
181 : AliAnalysisTaskSE(name),
186 fsplitMassD0D0bar(kTRUE),
197 fsignalInvMassCut(-1.),
198 flargeInvMassCut(-1.),
199 fsidebandInvMassCut(-1.),
200 fsidebandInvMassWindow(-1.),
204 fSignalTypeLsCuts(0),
205 fSignalTypeTghCuts(0),
206 flistMCproperties(0),
207 flistNoCutsSignal(0),
210 flistNoCutsFromDstar(0),
212 flistLsCutsSignal(0),
215 flistLsCutsFromDstar(0),
217 flistTghCutsSignal(0),
219 flistTghCutsFromB(0),
220 flistTghCutsFromDstar(0),
225 delete fCutsTight;fCutsTight=NULL;
228 delete fCutsLoose;fCutsLoose=NULL;
231 //Check consistency between sets of cuts:
232 if(cutsA->GetNPtBins()!=cutsB->GetNPtBins()){
233 printf("Different number of pt bins between the two sets of cuts: SWITCH TO STANDARD CUTS \n");
234 fnbins=SetStandardCuts(fptbins);
237 fCutsTight=new AliRDHFCutsD0toKpi(*cutsA);
238 fCutsLoose=new AliRDHFCutsD0toKpi(*cutsB);
239 for(Int_t j=0;j<cutsA->GetNPtBins();j++){
240 if(TMath::Abs(cutsA->GetPtBinLimits()[j]-cutsB->GetPtBinLimits()[j])>1.e-7){
241 printf("Different pt bin limits in the two set of cuts: use the first as reference \n");
242 fCutsLoose->SetPtBins(cutsA->GetNPtBins(),cutsA->GetPtBinLimits());
246 SetPtBins(fCutsTight->GetNPtBins(),fCutsTight->GetPtBinLimits());
249 // Output slot #0 writes into a TH1 container
250 DefineOutput(1, TH1F::Class());
251 DefineOutput(2, TH1F::Class());
252 DefineOutput(3, TH1F::Class());
253 DefineOutput(4, TH1F::Class());
254 for(Int_t j=5;j<21;j++){
256 DefineOutput(j, TList::Class());
258 // Output slot for the Cut Objects
259 DefineOutput(21,AliRDHFCutsD0toKpi::Class()); //My private output
260 DefineOutput(22,AliRDHFCutsD0toKpi::Class()); //My private output
264 //________________________________________________________________________
265 AliAnalysisTaskSECharmFraction::~AliAnalysisTaskSECharmFraction()
280 /* if(fAcceptanceCuts){
281 delete fAcceptanceCuts;
292 if (fSignalTypeLsCuts) {
293 delete fSignalTypeLsCuts;
294 fSignalTypeLsCuts = 0;
296 if (fSignalTypeTghCuts) {
297 delete fSignalTypeTghCuts;
298 fSignalTypeTghCuts = 0;
300 if(flistMCproperties){
301 flistMCproperties->Delete();
302 delete flistMCproperties;
305 if(flistNoCutsSignal){
306 flistNoCutsSignal->Delete();
307 delete flistNoCutsSignal;
311 flistNoCutsBack->Delete();
312 delete flistNoCutsBack;
315 if(flistNoCutsFromB){
316 flistNoCutsFromB->Delete();
317 delete flistNoCutsFromB;
320 if(flistNoCutsFromDstar){
321 flistNoCutsFromDstar->Delete();
322 delete flistNoCutsFromDstar;
323 flistNoCutsFromDstar=0;
325 if(flistNoCutsOther){
326 flistNoCutsOther->Delete();
327 delete flistNoCutsOther;
331 if(flistLsCutsSignal){
332 flistLsCutsSignal->Delete();
333 delete flistLsCutsSignal;
337 flistLsCutsBack->Delete();
338 delete flistLsCutsBack;
341 if(flistLsCutsFromB){
342 flistLsCutsFromB->Delete();
343 delete flistLsCutsFromB;
346 if(flistLsCutsFromDstar){
347 flistLsCutsFromDstar->Delete();
348 delete flistLsCutsFromDstar;
349 flistLsCutsFromDstar=0;
351 if(flistLsCutsOther){
352 flistLsCutsOther->Delete();
353 delete flistLsCutsOther;
357 if(flistTghCutsSignal){
358 flistTghCutsSignal->Delete();
359 delete flistTghCutsSignal;
360 flistTghCutsSignal=0;
362 if(flistTghCutsBack){
363 flistTghCutsBack->Delete();
364 delete flistTghCutsBack;
367 if(flistTghCutsFromB){
368 flistTghCutsFromB->Delete();
369 delete flistTghCutsFromB;
372 if(flistTghCutsFromDstar){
373 flistTghCutsFromDstar->Delete();
374 delete flistTghCutsFromDstar;
375 flistTghCutsFromDstar=0;
377 if(flistTghCutsOther){
378 flistTghCutsOther->Delete();
379 delete flistTghCutsOther;
387 //________________________________________________________________________
388 void AliAnalysisTaskSECharmFraction::Init()
392 if(fDebug > 1) printf("AnalysisTaskSED0Mass::Init() \n");
393 fmD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
395 // gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/ConfigVertexingHF.C");
396 // gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/D0fromBSetCuts.C");
397 // 2 sets of dedicated cuts: fCutsTight is assumed as the standard cut object
399 // SetAcceptanceCut();
400 if(fNtrMaxforVtx<0)SetNMaxTrForVtx(3); //DEFAULT : NO SELECTION
401 if(fsignalInvMassCut<0.||flargeInvMassCut<0.||fsidebandInvMassCut<0.||fsidebandInvMassWindow<0.){
402 printf("AliAnalysisTaskSECharmFraction: Not All info for mass selection provided: switch to default values \n");
403 SetStandardMassSelection();
406 AliRDHFCutsD0toKpi* copyfCutsTight=new AliRDHFCutsD0toKpi(*fCutsTight);
407 const char* nameoutputTight=GetOutputSlot(21)->GetContainer()->GetName();
408 copyfCutsTight->SetName(nameoutputTight);
409 AliRDHFCutsD0toKpi* copyfCutsLoose=new AliRDHFCutsD0toKpi(*fCutsLoose);
410 const char* nameoutputLoose=GetOutputSlot(22)->GetContainer()->GetName();
411 copyfCutsLoose->SetName(nameoutputLoose);
413 PostData(21,copyfCutsTight);
414 PostData(22,copyfCutsLoose);
419 //________________________________________________________________________
420 void AliAnalysisTaskSECharmFraction::UserCreateOutputObjects()
425 // ################ NAMING SCHEME ###################################
426 // LISTS NAMING SCHEME
427 // "list" + cut selection string + MC selection string
428 // cut strings: "NC" =nocuts, "LSC"= loose cuts, "TGHC"= tight cuts
429 // MC sel. strings: "sign"= D0 from c quark
430 // "fromDstar" = D0 from Dstar from c quark
431 // "fromB"= D0from B decay (->from b quark) + D0from Dstar from B
432 // "back"= backgroun, generic except the cas "other"
433 // "other"= background case for candidates made of a pion and a kaon coming from the same D0 (in 4 prong) or from D+
435 // HISTS NAMING SCHEME
437 // "h" + specific name + cut selection string + MC selection string + (InvMass region string) + (pt string)
439 // cut selection strings = those for lists
440 // MC selection strings = those for lists
441 // inv mass region strings : "PM" or "SB" for global properties and pt integrated histos
442 // "_PkMss" or "_SBMss" for impact par. pt dependent histos
443 // pt string : "_pt" + integer number of ptbin
445 //###################################################################
449 TString strnamept,strtitlept;
450 Printf("INSIDE USER CREATE \n");
452 // fNentries=new TH1F("nentriesChFr", "Look at the number of entries! = number of AODs", 2,1.,2.);
453 fNentries=new TH1F("nentriesChFr", "Analyzed sample properties", 15,-0.5,14.5);
455 fNentries->GetXaxis()->SetBinLabel(1,"nEventsAnal");
456 fNentries->GetXaxis()->SetBinLabel(2,"nCandSel(Cuts)");
457 fNentries->GetXaxis()->SetBinLabel(3,"nD0Selected");
458 fNentries->GetXaxis()->SetBinLabel(4,"nEventsGoodVtxS");
459 fNentries->GetXaxis()->SetBinLabel(5,"ptbin = -1");
460 fNentries->GetXaxis()->SetBinLabel(6,"no daughter");
461 fNentries->GetXaxis()->SetBinLabel(7,"nCandSel(Tr)");
462 fNentries->GetXaxis()->SetBinLabel(8,"PID=0");
463 fNentries->GetXaxis()->SetBinLabel(9,"PID=1");
464 fNentries->GetXaxis()->SetBinLabel(10,"PID=2");
465 fNentries->GetXaxis()->SetBinLabel(11,"PID=3");
466 fNentries->GetXaxis()->SetBinLabel(12,"K");
467 fNentries->GetXaxis()->SetBinLabel(13,"Lambda");
468 fNentries->GetXaxis()->SetBinLabel(14,"Pile-up Rej");
469 fNentries->GetXaxis()->SetBinLabel(15,"N. of 0SMH");
470 fNentries->GetXaxis()->SetNdivisions(1,kFALSE);
472 fSignalType=new TH1F("hsignaltype", "Histo for type of MC signal", 61,-1.,60.);
473 fSignalTypeLsCuts=new TH1F("hsignaltypeLsCuts", "Histo for type of MC signal with loose cuts", 61,-1.,60.);
474 fSignalTypeTghCuts=new TH1F("hsignaltypeTghCuts", "Histo for type of MC signal with tight cuts", 61,-1.,60.);
476 //########## DEFINE THE TLISTS ##################
477 flistMCproperties=new TList();
478 flistMCproperties->SetOwner();
479 flistMCproperties->SetName("listMCproperties");
481 flistNoCutsSignal = new TList();
482 flistNoCutsSignal->SetOwner();
483 flistNoCutsSignal->SetName("listNCsign");
485 flistNoCutsBack = new TList();
486 flistNoCutsBack->SetOwner();
487 flistNoCutsBack->SetName("listNCback");
489 flistNoCutsFromB = new TList();
490 flistNoCutsFromB->SetOwner();
491 flistNoCutsFromB->SetName("listNCfromB");
493 flistNoCutsFromDstar = new TList();
494 flistNoCutsFromDstar->SetOwner();
495 flistNoCutsFromDstar->SetName("listNCfromDstar");
497 flistNoCutsOther = new TList();
498 flistNoCutsOther->SetOwner();
499 flistNoCutsOther->SetName("listNCother");
502 flistLsCutsSignal = new TList();
503 flistLsCutsSignal->SetOwner();
504 flistLsCutsSignal->SetName("listLSCsign");
506 flistLsCutsBack = new TList();
507 flistLsCutsBack->SetOwner();
508 flistLsCutsBack->SetName("listLSCback");
510 flistLsCutsFromB = new TList();
511 flistLsCutsFromB->SetOwner();
512 flistLsCutsFromB->SetName("listLSCfromB");
514 flistLsCutsFromDstar = new TList();
515 flistLsCutsFromDstar->SetOwner();
516 flistLsCutsFromDstar->SetName("listLSCfromDstar");
518 flistLsCutsOther = new TList();
519 flistLsCutsOther->SetOwner();
520 flistLsCutsOther->SetName("listLSCother");
523 flistTghCutsSignal = new TList();
524 flistTghCutsSignal->SetOwner();
525 flistTghCutsSignal->SetName("listTGHCsign");
527 flistTghCutsBack = new TList();
528 flistTghCutsBack->SetOwner();
529 flistTghCutsBack->SetName("listTGHCback");
531 flistTghCutsFromB = new TList();
532 flistTghCutsFromB->SetOwner();
533 flistTghCutsFromB->SetName("listTGHCfromB");
535 flistTghCutsFromDstar = new TList();
536 flistTghCutsFromDstar->SetOwner();
537 flistTghCutsFromDstar->SetName("listTGHCfromDstar");
539 flistTghCutsOther = new TList();
540 flistTghCutsOther->SetOwner();
541 flistTghCutsOther->SetName("listTGHCother");
545 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.};
546 Float_t dumbinning[201];
547 for(Int_t j=0;j<201;j++){
548 dumbinning[j]=(Float_t)j*0.5;
551 // DEFINE EDGES FOR SPARSE HISTOS
552 const Int_t nPtbinsForSparse=91;//nuber of edges, -1 to get number of bins
553 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
555 Double_t massbins[186],impparbins[401];
556 Double_t massHypoBins[4]={1.,2.,3.,4.};
557 Int_t nbinsSparse[5]={185,185,nPtbinsForSparse-1,400,3};
558 for(Int_t nBins=0;nBins<nPtbinsForSparse;nBins++){
559 ptbinsForNsparse[nBins]=pT;
561 else if(pT<20)pT+=0.5;
563 else if(pT<70)pT+=5.;
565 for(Int_t nBins=0;nBins<186;nBins++){
566 massbins[nBins]=1.680+nBins*(2.050-1.680)/185.;
568 for(Int_t nBins=0;nBins<401;nBins++){
569 impparbins[nBins]=-1000+nBins*(2000.)/400.;
574 //################################################################################################
576 // HISTO FOR MC PROPERTIES OF D0, c quarks and B mesons #
578 //################################################################################################
579 TH1F *hMCcquarkAllPt=new TH1F("hMCcquarkAllPt","c quark Pt (all cquarks produced)",34,ptbinsD0arr);
580 TH1F *hMCcquarkAllEta=new TH1F("hMCcquarkAllEta","c quark Eta (all cquarks produced)",50,-3.,3.);
581 TH1F *hMCcquarkAllEnergy=new TH1F("hMCcquarkAllEnergy","c quark Pt (all cquarks produced)",200,0.,100.);
582 TH1F *hMCcquarkNdaught=new TH1F("hMCcquarkNdaught","N cquark daughters (all cquarks produced)",100,0.,100.);
583 TH1F *hMCD0fromcPt=new TH1F("hMCD0fromcPt","D0 from c Pt",34,ptbinsD0arr);
584 TH1F *hMCD0fromcEta=new TH1F("hMCD0fromcEta","D0 from c Eta",50,-3.,3.);
585 TH1F *hMCD0fromcEnergy=new TH1F("hMCD0fromcEnergy","D0 from c Energy",200,0.,100.);
587 TH2F *hMCD0VscquarkPt=new TH2F("hMCD0VscquarkPt","D0 pt Vs cquark pt",34,ptbinsD0arr,34,ptbinsD0arr);
588 TH2F *hMCD0VscquarkEnergy=new TH2F("hMCD0VscquarkEnergy","D0 Energy Vs cquark Energy",200,0.,50.,200,0.,50.);
589 TH1F *hMCD0deltacquarkEnergy=new TH1F("hMCD0deltacquarkEnergy","Fractional D0 Energy w.r.t. cquark Energy",20,0.,1.);
590 TH1F *hMCD0EnergyVsAvcquarkDaughtEn=new TH1F("hMCD0EnergyVsAvcquarkDaughtEn","#Delta(E^{D^0}-E_{avg})/E_{cquark}",40,-1.,1.);
591 TH1F *hMCD0cquarkAngle=new TH1F("hMCD0cquarkAngle","cosine of the angle between D0 and c quark particle",40,-1.,1.);
592 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.);
594 TH1I *hMCfromBpdgB=new TH1I("hMCfromBpdgB","hMCfromBpdgB",10000,0.,10000);
595 TH1F *hMCBhadrPt=new TH1F("hMCBhadrPt","B hadr Pt",34,ptbinsD0arr);
596 TH1F *hMCBhadrEta=new TH1F("hMCBhadrEta","B hadr Eta",50,-3.,3.);
597 TH1F *hMCBhadrEnergy=new TH1F("hMCBhadrEnergy","B hadr Pt",200,0.,100.);
598 TH1F *hMCBhadrNdaught=new TH1F("hMCBhadrNdaught","N Bhadr daughters",100,0.,100.);
599 TH1F *hMCD0fromBPt=new TH1F("hMCD0fromBPt","D0 from B Pt",34,ptbinsD0arr);
600 TH1F *hMCD0fromBEta=new TH1F("hMCD0fromBEta","D0 from B Eta",50,-3.,3.);
601 TH1F *hMCD0fromBEnergy=new TH1F("hMCD0fromBEnergy","D0 from B Energy",200,0.,100.);
603 TH2F *hMCD0VsBhadrPt=new TH2F("hMCD0VsBhadrPt","D0 pt Vs Bhadr pt",34,ptbinsD0arr,34,ptbinsD0arr);
604 TH2F *hMCD0VsBhadrEnergy=new TH2F("hMCD0VsBhadrEnergy","D0 Energy Vs Bhadr Energy",200,0.,50.,200,0.,50.);
605 TH1F *hMCD0deltaBhadrEnergy=new TH1F("hMCD0deltaBhadrEnergy","Fractional D0 Energy w.r.t. Bhadr Energy",20,0.,1.);
606 TH1F *hMCD0EnergyVsAvBDaughtEn=new TH1F("hMCD0EnergyVsAvBDaughtEn","#Delta(E^{D^0}-E_{avg})/E_{Bahdr}",40,-1.,1.);
607 TH1F *hMCD0BhadrAngle=new TH1F("hMCD0BhadrAngle","cosine of the angle between D0 and Bhadr particle",40,-1.,1.);
608 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.);
610 TH1I *hMCPartFound=new TH1I("hMCPartFound","1=c,2=D0,3=fromBall,4=fromBmeson,5=fromBbaryon",6,0,6);
613 flistMCproperties->Add(hMCcquarkAllPt);
614 flistMCproperties->Add(hMCcquarkAllEta);
615 flistMCproperties->Add(hMCcquarkAllEnergy);
616 flistMCproperties->Add(hMCcquarkNdaught);
617 flistMCproperties->Add(hMCD0fromcPt);
618 flistMCproperties->Add(hMCD0fromcEta);
619 flistMCproperties->Add(hMCD0fromcEnergy);
620 flistMCproperties->Add(hMCD0VscquarkPt);
621 flistMCproperties->Add(hMCD0VscquarkEnergy);
622 flistMCproperties->Add(hMCD0deltacquarkEnergy);
623 flistMCproperties->Add(hMCD0EnergyVsAvcquarkDaughtEn);
624 flistMCproperties->Add(hMCD0cquarkAngle);
625 flistMCproperties->Add(hMCD0cquarkAngleEnergy);
627 flistMCproperties->Add(hMCfromBpdgB);
628 flistMCproperties->Add(hMCBhadrPt);
629 flistMCproperties->Add(hMCBhadrEta);
630 flistMCproperties->Add(hMCBhadrEnergy);
631 flistMCproperties->Add(hMCBhadrNdaught);
632 flistMCproperties->Add(hMCD0fromBPt);
633 flistMCproperties->Add(hMCD0fromBEta);
634 flistMCproperties->Add(hMCD0fromBEnergy);
635 flistMCproperties->Add(hMCD0VsBhadrPt);
636 flistMCproperties->Add(hMCD0VsBhadrEnergy);
637 flistMCproperties->Add(hMCD0deltaBhadrEnergy);
638 flistMCproperties->Add(hMCD0EnergyVsAvBDaughtEn);
639 flistMCproperties->Add(hMCD0BhadrAngle);
640 flistMCproperties->Add(hMCD0BhadrAngleEnergy);
641 flistMCproperties->Add(hMCPartFound);
643 //################################################################################################
645 // HISTOS FOR NO CUTS CASE #
647 //################################################################################################
648 Printf("AFTER MC HISTOS \n");
650 //############ NO CUTS SIGNAL HISTOGRAMS ###############
652 // ####### global properties histo ############
654 TH2F *hCPtaVSd0d0NCsign=new TH2F("hCPtaVSd0d0NCsign","hCPtaVSd0d0_NoCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
655 TH1F *hSecVtxZNCsign=new TH1F("hSecVtxZNCsign","hSecVtxZ_NoCuts_Signal",1000,-8.,8.);
656 TH1F *hSecVtxXNCsign=new TH1F("hSecVtxXNCsign","hSecVtxX_NoCuts_Signal",1000,-3000.,3000.);
657 TH1F *hSecVtxYNCsign=new TH1F("hSecVtxYNCsign","hSecVtxY_NoCuts_Signal",1000,-3000.,3000.);
658 TH2F *hSecVtxXYNCsign=new TH2F("hSecVtxXYNCsign","hSecVtxXY_NoCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
659 TH1F *hSecVtxPhiNCsign=new TH1F("hSecVtxPhiNCsign","hSecVtxPhi_NoCuts_Signal",180,-180.1,180.1);
660 TH1F *hd0singlTrackNCsign=new TH1F("hd0singlTrackNCsign","hd0singlTrackNoCuts_Signal",1000,-5000.,5000.);
661 TH1F *hCPtaNCsign=new TH1F("hCPtaNCsign","hCPta_NoCuts_Signal",100,-1.,1.);
662 TH1F *hd0xd0NCsign=new TH1F("hd0xd0NCsign","hd0xd0_NoCuts_Signal",1000,-100000.,100000.);
663 TH1F *hMassTrueNCsign=new TH1F("hMassTrueNCsign","D^{0} MC inv. Mass No Cuts Signal(All momenta)",600,1.600,2.200);
664 TH1F *hMassNCsign=new TH1F("hMassNCsign","D^{0} inv. Mass No Cuts Signal (All momenta)",600,1.600,2.200);
665 hMassNCsign->Sumw2();
666 TH1F *hMassTrueNCsignPM=new TH1F("hMassTrueNCsignPM","D^{0} MC inv. Mass No Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
667 TH1F *hMassNCsignPM=new TH1F("hMassNCsignPM","D^{0} inv. Mass No Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
668 hMassNCsignPM->Sumw2();
670 TH1F *hMassTrueNCsignSB=new TH1F("hMassTrueNCsignSB","D^{0} MC inv. Mass in Side Bands No Cuts Signal(All momenta)",600,1.600,2.200);
671 TH1F *hMassNCsignSB=new TH1F("hMassNCsignSB","D^{0} inv. Mass in Side Bands No Cuts Signal (All momenta)",600,1.600,2.200);
672 hMassNCsignSB->Sumw2();
674 flistNoCutsSignal->Add(hCPtaVSd0d0NCsign);
675 flistNoCutsSignal->Add(hSecVtxZNCsign);
676 flistNoCutsSignal->Add(hSecVtxYNCsign);
677 flistNoCutsSignal->Add(hSecVtxXNCsign);
678 flistNoCutsSignal->Add(hSecVtxXYNCsign);
679 flistNoCutsSignal->Add(hSecVtxPhiNCsign);
680 flistNoCutsSignal->Add(hd0singlTrackNCsign);
681 flistNoCutsSignal->Add(hCPtaNCsign);
682 flistNoCutsSignal->Add(hd0xd0NCsign);
683 flistNoCutsSignal->Add(hMassTrueNCsign);
684 flistNoCutsSignal->Add(hMassNCsign);
685 flistNoCutsSignal->Add(hMassTrueNCsignPM);
686 flistNoCutsSignal->Add(hMassNCsignPM);
687 flistNoCutsSignal->Add(hMassTrueNCsignSB);
688 flistNoCutsSignal->Add(hMassNCsignSB);
690 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
691 TH1F *hdcaNCsign=new TH1F("hdcaNCsign","hdca_NoCuts_Signal",100,0.,1000.);
692 hdcaNCsign->SetXTitle("dca [#mum]");
693 hdcaNCsign->SetYTitle("Entries");
694 TH1F *hcosthetastarNCsign=new TH1F("hcosthetastarNCsign","hCosThetaStar_NoCuts_Signal",50,-1.,1.);
695 hcosthetastarNCsign->SetXTitle("cos #theta^{*}");
696 hcosthetastarNCsign->SetYTitle("Entries");
697 TH1F *hptD0NCsign=new TH1F("hptD0NCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
698 hptD0NCsign->SetXTitle("p_{t} [GeV/c]");
699 hptD0NCsign->SetYTitle("Entries");
700 TH1F *hptD0VsMaxPtNCsign=new TH1F("hptD0VsMaxPtNCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
701 TH2F *hptD0PTallsqrtNCsign=new TH2F("hptD0PTallsqrtNCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
702 TH2F *hptD0PTallNCsign=new TH2F("hptD0PTallNCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
703 TH2F *hptD0vsptBNCsign=new TH2F("hptD0vsptBNCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
704 TH2F *hpD0vspBNCsign=new TH2F("hpD0vspBNCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
705 TH2F *hptD0vsptcquarkNCsign=new TH2F("hptD0vsptcquarkNCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
706 TH2F *hpD0vspcquarkNCsign=new TH2F("hpD0vspcquarkNCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
707 flistNoCutsSignal->Add(hdcaNCsign);
708 flistNoCutsSignal->Add(hcosthetastarNCsign);
709 flistNoCutsSignal->Add(hptD0NCsign);
710 flistNoCutsSignal->Add(hptD0VsMaxPtNCsign);
711 flistNoCutsSignal->Add(hptD0PTallsqrtNCsign);
712 flistNoCutsSignal->Add(hptD0PTallNCsign);
713 flistNoCutsSignal->Add(hptD0vsptBNCsign);
714 flistNoCutsSignal->Add(hpD0vspBNCsign);
715 flistNoCutsSignal->Add(hptD0vsptcquarkNCsign);
716 flistNoCutsSignal->Add(hpD0vspcquarkNCsign);
718 TH1F *hd0zD0ptNCsign;
719 TH1F *hInvMassD0NCsign,*hInvMassD0barNCsign;
720 TH2F *hInvMassPtNCsign=new TH2F("hInvMassPtNCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
721 flistNoCutsSignal->Add(hInvMassPtNCsign);
722 THnSparseF *hSparseNCsign=new THnSparseF("hSparseNCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
723 hSparseNCsign->SetBinEdges(0,massbins);
724 hSparseNCsign->SetBinEdges(1,massbins);
725 hSparseNCsign->SetBinEdges(2,ptbinsForNsparse);
726 hSparseNCsign->SetBinEdges(3,impparbins);
727 hSparseNCsign->SetBinEdges(4,massHypoBins);
728 flistNoCutsSignal->Add(hSparseNCsign);
732 TH1F *hCosPDPBNCsign;
733 TH1F *hCosPcPDNCsign;
735 TH2F *hd0D0VSd0xd0NCsignpt;
736 TH2F *hangletracksVSd0xd0NCsignpt;
737 TH2F *hangletracksVSd0D0NCsignpt;
738 TH1F *hd0xd0NCsignpt;
740 TH2F *hTOFpidNCsign=new TH2F("hTOFpidNCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
741 flistNoCutsSignal->Add(hTOFpidNCsign);
744 for(Int_t i=0;i<fnbins;i++){
745 //Printf("INSIDE HISTOS CREATION LOOP: %d \n",fnbins);
747 namehist="hd0zD0ptNCsign_pt";
749 titlehist="d0(z) No Cuts Signalm ptbin=";
751 hd0zD0ptNCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
752 hd0zD0ptNCsign->SetXTitle("d_{0}(z) [#mum]");
753 hd0zD0ptNCsign->SetYTitle("Entries");
754 flistNoCutsSignal->Add(hd0zD0ptNCsign);
756 namehist="hInvMassD0NCsign_pt";
758 titlehist="Invariant Mass D0 No Cuts Signal ptbin=";
760 hInvMassD0NCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
761 hInvMassD0NCsign->SetXTitle("Invariant Mass [GeV]");
762 hInvMassD0NCsign->SetYTitle("Entries");
763 flistNoCutsSignal->Add(hInvMassD0NCsign);
766 namehist="hInvMassD0barNCsign_pt";
768 titlehist="Invariant Mass D0bar No Cuts Signal ptbin=";
770 hInvMassD0barNCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
771 hInvMassD0barNCsign->SetXTitle("Invariant Mass [GeV]");
772 hInvMassD0barNCsign->SetYTitle("Entries");
773 flistNoCutsSignal->Add(hInvMassD0barNCsign);
776 namehist="hetaNCsign_pt";
778 titlehist="eta No Cuts Signal ptbin=";
780 hetaNCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
781 hetaNCsign->SetXTitle("Pseudorapidity");
782 hetaNCsign->SetYTitle("Entries");
783 flistNoCutsSignal->Add(hetaNCsign);
785 namehist="hCosPDPBNCsign_pt";
787 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
789 hCosPDPBNCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
790 hCosPDPBNCsign->SetXTitle("Cosine between D0 momentum and B momentum");
791 hCosPDPBNCsign->SetYTitle("Entries");
792 flistNoCutsSignal->Add(hCosPDPBNCsign);
794 namehist="hCosPcPDNCsign_pt";
796 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
798 hCosPcPDNCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
799 hCosPcPDNCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
800 hCosPcPDNCsign->SetYTitle("Entries");
801 flistNoCutsSignal->Add(hCosPcPDNCsign);
804 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
805 namehist="hd0xd0NCsign_pt";
807 titlehist="d0xd0 No Cuts Signal ptbin=";
809 hd0xd0NCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
810 hd0xd0NCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
811 hd0xd0NCsignpt->SetYTitle("Entries");
812 flistNoCutsSignal->Add(hd0xd0NCsignpt);
815 namehist="hd0D0VSd0xd0NCsign_pt";
817 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Signal ptbin=";
819 hd0D0VSd0xd0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
820 hd0D0VSd0xd0NCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
821 hd0D0VSd0xd0NCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
822 flistNoCutsSignal->Add(hd0D0VSd0xd0NCsignpt);
825 namehist="hangletracksVSd0xd0NCsign_pt";
827 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Signal ptbin=";
829 hangletracksVSd0xd0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
830 hangletracksVSd0xd0NCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
831 hangletracksVSd0xd0NCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
832 flistNoCutsSignal->Add(hangletracksVSd0xd0NCsignpt);
835 namehist="hangletracksVSd0D0NCsign_pt";
837 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Signal ptbin=";
839 hangletracksVSd0D0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
840 hangletracksVSd0D0NCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
841 hangletracksVSd0D0NCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
842 flistNoCutsSignal->Add(hangletracksVSd0D0NCsignpt);
845 Printf("AFTER LOOP HISTOS CREATION \n");
846 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
847 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
849 // ####### d0 D0 histos ############
850 TH1F *hd0D0NCsignPM = new TH1F("hd0D0NCsignPM","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
851 hd0D0NCsignPM->SetXTitle("Impact parameter [#mum]");
852 hd0D0NCsignPM->SetYTitle("Entries");
854 TH1F *hd0D0VtxTrueNCsignPM = new TH1F("hd0D0VtxTrueNCsignPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
855 hd0D0VtxTrueNCsignPM->SetXTitle("Impact parameter [#mum]");
856 hd0D0VtxTrueNCsignPM->SetYTitle("Entries");
858 TH1F *hMCd0D0NCsignPM = new TH1F("hMCd0D0NCsignPM","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
859 hMCd0D0NCsignPM->SetXTitle("MC Impact parameter [#mum]");
860 hMCd0D0NCsignPM->SetYTitle("Entries");
862 TH1F *hd0D0NCsignSB = new TH1F("hd0D0NCsignSB","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
863 hd0D0NCsignSB->SetXTitle("Impact parameter [#mum]");
864 hd0D0NCsignSB->SetYTitle("Entries");
866 TH1F *hd0D0VtxTrueNCsignSB = new TH1F("hd0D0VtxTrueNCsignSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
867 hd0D0VtxTrueNCsignSB->SetXTitle("Impact parameter [#mum]");
868 hd0D0VtxTrueNCsignSB->SetYTitle("Entries");
870 TH1F *hMCd0D0NCsignSB = new TH1F("hMCd0D0NCsignSB","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
871 hMCd0D0NCsignSB->SetXTitle("MC Impact parameter [#mum]");
872 hMCd0D0NCsignSB->SetYTitle("Entries");
874 flistNoCutsSignal->Add(hd0D0NCsignPM);
875 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignPM);
876 flistNoCutsSignal->Add(hMCd0D0NCsignPM);
877 flistNoCutsSignal->Add(hd0D0NCsignSB);
878 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignSB);
879 flistNoCutsSignal->Add(hMCd0D0NCsignSB);
881 TH1F *hd0D0ptNCsignPM;
882 TH1F *hMCd0D0ptNCsignPM;
883 TH1F *hd0D0VtxTrueptNCsignPM;
884 TH1F *hd0D0ptNCsignSB;
885 TH1F *hMCd0D0ptNCsignSB;
886 TH1F *hd0D0VtxTrueptNCsignSB;
887 namehist="hd0D0ptNCsign_";
888 titlehist="D^{0} impact par. plot, No Cuts, Signal, ";
889 for(Int_t i=0;i<fnbins;i++){
890 //Printf("IN HISTOS CREATION USING PTBINS VALUES for NAMES \n");
892 strnamept.Append("PkMss_pt");
895 strtitlept=titlehist;
896 strtitlept.Append(" Mass Peak, ");
898 strtitlept+=fptbins[i];
899 //Printf("IN HISTOS CREATION USING PTBINS VALUES for NAMES %d: %f\n",i,fptbins[i]);
900 strtitlept.Append("<= pt <");
901 strtitlept+=fptbins[i+1];
902 strtitlept.Append(" [GeV/c]");
904 hd0D0ptNCsignPM= new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
905 hd0D0ptNCsignPM->SetXTitle("Impact parameter [#mum] ");
906 hd0D0ptNCsignPM->SetYTitle("Entries");
907 flistNoCutsSignal->Add(hd0D0ptNCsignPM);
909 strnamept.ReplaceAll("hd0D0","hMCd0D0");
910 hMCd0D0ptNCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
911 hMCd0D0ptNCsignPM->SetXTitle("MC Impact parameter [#mum] ");
912 hMCd0D0ptNCsignPM->SetYTitle("Entries");
913 flistNoCutsSignal->Add(hMCd0D0ptNCsignPM);
916 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
917 hd0D0VtxTrueptNCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
918 hd0D0VtxTrueptNCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
919 hd0D0VtxTrueptNCsignPM->SetYTitle("Entries");
920 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignPM);
923 strnamept.Append("SBMss_pt");
926 strtitlept=titlehist;
927 strtitlept.Append(" Side Bands, ");
928 strtitlept+=fptbins[i];
929 strtitlept.Append("<= pt <");
930 strtitlept+=fptbins[i+1];
931 strtitlept.Append(" [GeV/c]");
933 hd0D0ptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
934 hd0D0ptNCsignSB->SetXTitle("Impact parameter [#mum] ");
935 hd0D0ptNCsignSB->SetYTitle("Entries");
936 flistNoCutsSignal->Add(hd0D0ptNCsignSB);
938 strnamept.ReplaceAll("hd0D0","hMCd0D0");
939 hMCd0D0ptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
940 hMCd0D0ptNCsignSB->SetXTitle("MC Impact parameter [#mum] ");
941 hMCd0D0ptNCsignSB->SetYTitle("Entries");
942 flistNoCutsSignal->Add(hMCd0D0ptNCsignSB);
944 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
945 hd0D0VtxTrueptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
946 hd0D0VtxTrueptNCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
947 hd0D0VtxTrueptNCsignSB->SetYTitle("Entries");
948 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignSB);
951 //Printf("AFTER SIGNAL HISTOS CREATION for NOCUTS\n");
954 //############ NO CUTS BACKGROUND HISTOGRAMS ###########
956 // ######## global properties histos #######
957 TH2F *hCPtaVSd0d0NCback=new TH2F("hCPtaVSd0d0NCback","hCPtaVSd0d0_NoCuts_Background",1000,-100000.,100000.,100,-1.,1.);
958 TH1F *hSecVtxZNCback=new TH1F("hSecVtxZNCback","hSecVtxZ_NoCuts_Background",1000,-8.,8.);
959 TH1F *hSecVtxXNCback=new TH1F("hSecVtxXNCback","hSecVtxX_NoCuts_Background",1000,-3000.,3000.);
960 TH1F *hSecVtxYNCback=new TH1F("hSecVtxYNCback","hSecVtxY_NoCuts_Background",1000,-3000.,3000.);
961 TH2F *hSecVtxXYNCback=new TH2F("hSecVtxXYNCback","hSecVtxXY_NoCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
962 TH1F *hSecVtxPhiNCback=new TH1F("hSecVtxPhiNCback","hSecVtxPhi_NoCuts_Background",180,-180.1,180.1);
963 TH1F *hd0singlTrackNCback=new TH1F("hd0singlTrackNCback","hd0singlTrackNoCuts_Back",1000,-5000.,5000.);
964 TH1F *hCPtaNCback=new TH1F("hCPtaNCback","hCPta_NoCuts_Background",100,-1.,1.);
965 TH1F *hd0xd0NCback=new TH1F("hd0xd0NCback","hd0xd0_NoCuts_Background",1000,-100000.,100000.);
966 TH1F *hMassTrueNCback=new TH1F("hMassTrueNCback","D^{0} MC inv. Mass No Cuts Background(All momenta)",600,1.600,2.200);
967 TH1F *hMassNCback=new TH1F("hMassNCback","D^{0} inv. Mass No Cuts Background (All momenta)",600,1.600,2.200);
968 hMassNCback->Sumw2();
969 TH1F *hMassTrueNCbackPM=new TH1F("hMassTrueNCbackPM","D^{0} MC inv. Mass No Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
970 TH1F *hMassNCbackPM=new TH1F("hMassNCbackPM","D^{0} inv. Mass No Cuts Background (All momenta), MassPeak",600,1.600,2.200);
971 hMassNCbackPM->Sumw2();
972 TH1F *hMassTrueNCbackSB=new TH1F("hMassTrueNCbackSB","D^{0} MC inv. Mass in Side Bands No Cuts Background(All momenta)",600,1.600,2.200);
973 TH1F *hMassNCbackSB=new TH1F("hMassNCbackSB","D^{0} inv. Mass in Side Bands No Cuts Background (All momenta)",600,1.600,2.200);
974 hMassNCbackSB->Sumw2();
976 flistNoCutsBack->Add(hCPtaVSd0d0NCback);
977 flistNoCutsBack->Add(hSecVtxZNCback);
978 flistNoCutsBack->Add(hSecVtxYNCback);
979 flistNoCutsBack->Add(hSecVtxXNCback);
980 flistNoCutsBack->Add(hSecVtxXYNCback);
981 flistNoCutsBack->Add(hSecVtxPhiNCback);
982 flistNoCutsBack->Add(hd0singlTrackNCback);
983 flistNoCutsBack->Add(hCPtaNCback);
984 flistNoCutsBack->Add(hd0xd0NCback);
985 flistNoCutsBack->Add(hMassTrueNCback);
986 flistNoCutsBack->Add(hMassNCback);
987 flistNoCutsBack->Add(hMassTrueNCbackPM);
988 flistNoCutsBack->Add(hMassNCbackPM);
989 flistNoCutsBack->Add(hMassTrueNCbackSB);
990 flistNoCutsBack->Add(hMassNCbackSB);
993 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
994 TH1F *hdcaNCback=new TH1F("hdcaNCback","hdca_NoCuts_Backgr",100,0.,1000.);
995 hdcaNCback->SetXTitle("dca [#mum]");
996 hdcaNCback->SetYTitle("Entries");
997 TH1F *hcosthetastarNCback=new TH1F("hcosthetastarNCback","hCosThetaStar_NoCuts_Backgr",50,-1.,1.);
998 hcosthetastarNCback->SetXTitle("cos #theta^{*}");
999 hcosthetastarNCback->SetYTitle("Entries");
1000 TH1F *hptD0NCback=new TH1F("hptD0NCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1001 hptD0NCback->SetXTitle("p_{t} [GeV/c]");
1002 hptD0NCback->SetYTitle("Entries");
1003 TH1F *hptD0VsMaxPtNCback=new TH1F("hptD0VsMaxPtNCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1004 TH2F *hptD0PTallsqrtNCback=new TH2F("hptD0PTallsqrtNCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1005 TH2F *hptD0PTallNCback=new TH2F("hptD0PTallNCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1006 TH2F *hptD0vsptBNCback=new TH2F("hptD0vsptBNCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1007 TH2F *hpD0vspBNCback=new TH2F("hpD0vspBNCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1008 TH2F *hptD0vsptcquarkNCback=new TH2F("hptD0vsptcquarkNCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1009 TH2F *hpD0vspcquarkNCback=new TH2F("hpD0vspcquarkNCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1010 flistNoCutsBack->Add(hdcaNCback);
1011 flistNoCutsBack->Add(hcosthetastarNCback);
1012 flistNoCutsBack->Add(hptD0NCback);
1013 flistNoCutsBack->Add(hptD0VsMaxPtNCback);
1014 flistNoCutsBack->Add(hptD0PTallsqrtNCback);
1015 flistNoCutsBack->Add(hptD0PTallNCback);
1016 flistNoCutsBack->Add(hptD0vsptBNCback);
1017 flistNoCutsBack->Add(hpD0vspBNCback);
1018 flistNoCutsBack->Add(hptD0vsptcquarkNCback);
1019 flistNoCutsBack->Add(hpD0vspcquarkNCback);
1021 TH1F *hd0zD0ptNCback;
1022 TH1F *hInvMassD0NCback,*hInvMassD0barNCback;
1023 TH2F *hInvMassPtNCback=new TH2F("hInvMassPtNCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1024 THnSparseF *hSparseNCback=new THnSparseF("hSparseNCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1025 hSparseNCback->SetBinEdges(0,massbins);
1026 hSparseNCback->SetBinEdges(1,massbins);
1027 hSparseNCback->SetBinEdges(2,ptbinsForNsparse);
1028 hSparseNCback->SetBinEdges(3,impparbins);
1029 hSparseNCback->SetBinEdges(4,massHypoBins);
1030 flistNoCutsBack->Add(hSparseNCback);
1033 TH1F *hCosPDPBNCback;
1034 TH1F *hCosPcPDNCback;
1035 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1036 TH2F *hd0D0VSd0xd0NCbackpt;
1037 TH2F *hangletracksVSd0xd0NCbackpt;
1038 TH2F *hangletracksVSd0D0NCbackpt;
1039 TH1F *hd0xd0NCbackpt;
1040 flistNoCutsBack->Add(hInvMassPtNCback);
1042 TH2F *hTOFpidNCback=new TH2F("hTOFpidNCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1043 flistNoCutsBack->Add(hTOFpidNCback);
1045 for(Int_t i=0;i<fnbins;i++){
1046 namehist="hd0zD0ptNCback_pt";
1048 titlehist="d0(z) No Cuts Backgrm ptbin=";
1050 hd0zD0ptNCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1051 hd0zD0ptNCback->SetXTitle("d_{0}(z) [#mum]");
1052 hd0zD0ptNCback->SetYTitle("Entries");
1053 flistNoCutsBack->Add(hd0zD0ptNCback);
1055 namehist="hInvMassD0NCback_pt";
1057 titlehist="Invariant Mass No Cuts Backgr ptbin=";
1059 hInvMassD0NCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1060 hInvMassD0NCback->SetXTitle("Invariant Mass [GeV]");
1061 hInvMassD0NCback->SetYTitle("Entries");
1062 flistNoCutsBack->Add(hInvMassD0NCback);
1065 namehist="hInvMassD0barNCback_pt";
1067 titlehist="Invariant Mass D0bar No Cuts Back ptbin=";
1069 hInvMassD0barNCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1070 hInvMassD0barNCback->SetXTitle("Invariant Mass [GeV]");
1071 hInvMassD0barNCback->SetYTitle("Entries");
1072 flistNoCutsBack->Add(hInvMassD0barNCback);
1075 namehist="hetaNCback_pt";
1077 titlehist="eta No Cuts Backgr ptbin=";
1079 hetaNCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1080 hetaNCback->SetXTitle("Pseudorapidity");
1081 hetaNCback->SetYTitle("Entries");
1082 flistNoCutsBack->Add(hetaNCback);
1084 namehist="hCosPDPBNCback_pt";
1086 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1088 hCosPDPBNCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1089 hCosPDPBNCback->SetXTitle("Cosine between D0 momentum and B momentum");
1090 hCosPDPBNCback->SetYTitle("Entries");
1091 flistNoCutsBack->Add(hCosPDPBNCback);
1093 namehist="hCosPcPDNCback_pt";
1095 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1097 hCosPcPDNCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1098 hCosPcPDNCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
1099 hCosPcPDNCback->SetYTitle("Entries");
1100 flistNoCutsBack->Add(hCosPcPDNCback);
1103 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1104 namehist="hd0xd0NCback_pt";
1106 titlehist="d0xd0 No Cuts Background ptbin=";
1108 hd0xd0NCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1109 hd0xd0NCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1110 hd0xd0NCbackpt->SetYTitle("Entries");
1111 flistNoCutsBack->Add(hd0xd0NCbackpt);
1114 namehist="hd0D0VSd0xd0NCback_pt";
1116 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Back ptbin=";
1118 hd0D0VSd0xd0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1119 hd0D0VSd0xd0NCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1120 hd0D0VSd0xd0NCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1121 flistNoCutsBack->Add(hd0D0VSd0xd0NCbackpt);
1124 namehist="hangletracksVSd0xd0NCback_pt";
1126 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Back ptbin=";
1128 hangletracksVSd0xd0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1129 hangletracksVSd0xd0NCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1130 hangletracksVSd0xd0NCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
1131 flistNoCutsBack->Add(hangletracksVSd0xd0NCbackpt);
1134 namehist="hangletracksVSd0D0NCback_pt";
1136 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Back ptbin=";
1138 hangletracksVSd0D0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1139 hangletracksVSd0D0NCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1140 hangletracksVSd0D0NCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
1141 flistNoCutsBack->Add(hangletracksVSd0D0NCbackpt);
1146 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1147 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1151 // ####### d0 D0 histos ############
1153 TH1F *hd0D0NCbackPM = new TH1F("hd0D0NCbackPM","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1154 hd0D0NCbackPM->SetXTitle("Impact parameter [#mum]");
1155 hd0D0NCbackPM->SetYTitle("Entries");
1157 TH1F *hd0D0VtxTrueNCbackPM = new TH1F("hd0D0VtxTrueNCbackPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1158 hd0D0VtxTrueNCbackPM->SetXTitle("Impact parameter [#mum]");
1159 hd0D0VtxTrueNCbackPM->SetYTitle("Entries");
1161 TH1F *hMCd0D0NCbackPM = new TH1F("hMCd0D0NCbackPM","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1162 hMCd0D0NCbackPM->SetXTitle("MC Impact parameter [#mum]");
1163 hMCd0D0NCbackPM->SetYTitle("Entries");
1165 TH1F *hd0D0NCbackSB = new TH1F("hd0D0NCbackSB","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1166 hd0D0NCbackSB->SetXTitle("Impact parameter [#mum]");
1167 hd0D0NCbackSB->SetYTitle("Entries");
1169 TH1F *hd0D0VtxTrueNCbackSB = new TH1F("hd0D0VtxTrueNCbackSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1170 hd0D0VtxTrueNCbackSB->SetXTitle("Impact parameter [#mum]");
1171 hd0D0VtxTrueNCbackSB->SetYTitle("Entries");
1173 TH1F *hMCd0D0NCbackSB = new TH1F("hMCd0D0NCbackSB","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1174 hMCd0D0NCbackSB->SetXTitle("MC Impact parameter [#mum]");
1175 hMCd0D0NCbackSB->SetYTitle("Entries");
1177 flistNoCutsBack->Add(hd0D0NCbackPM);
1178 flistNoCutsBack->Add(hd0D0VtxTrueNCbackPM);
1179 flistNoCutsBack->Add(hMCd0D0NCbackPM);
1180 flistNoCutsBack->Add(hd0D0NCbackSB);
1181 flistNoCutsBack->Add(hd0D0VtxTrueNCbackSB);
1182 flistNoCutsBack->Add(hMCd0D0NCbackSB);
1184 TH1F *hd0D0ptNCbackPM;
1185 TH1F *hMCd0D0ptNCbackPM;
1186 TH1F *hd0D0VtxTrueptNCbackPM;
1187 TH1F *hd0D0ptNCbackSB;
1188 TH1F *hMCd0D0ptNCbackSB;
1189 TH1F *hd0D0VtxTrueptNCbackSB;
1190 namehist="hd0D0ptNCback_";
1191 titlehist="D^{0} impact par. plot, No Cuts, Background, ";
1192 for(Int_t i=0;i<fnbins;i++){
1194 strnamept.Append("PkMss_pt");
1197 strtitlept=titlehist;
1198 strtitlept.Append(" Mass Peak, ");
1199 strtitlept+=fptbins[i];
1200 strtitlept.Append("<= pt <");
1201 strtitlept+=fptbins[i+1];
1202 strtitlept.Append(" [GeV/c]");
1204 hd0D0ptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1205 hd0D0ptNCbackPM->SetXTitle("Impact parameter [#mum] ");
1206 hd0D0ptNCbackPM->SetYTitle("Entries");
1207 flistNoCutsBack->Add(hd0D0ptNCbackPM);
1209 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1210 hMCd0D0ptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1211 hMCd0D0ptNCbackPM->SetXTitle("MC Impact parameter [#mum] ");
1212 hMCd0D0ptNCbackPM->SetYTitle("Entries");
1213 flistNoCutsBack->Add(hMCd0D0ptNCbackPM);
1216 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1217 hd0D0VtxTrueptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1218 hd0D0VtxTrueptNCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1219 hd0D0VtxTrueptNCbackPM->SetYTitle("Entries");
1220 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackPM);
1223 strnamept.Append("SBMss_pt");
1226 strtitlept=titlehist;
1227 strtitlept.Append(" Side Bands, ");
1228 strtitlept+=fptbins[i];
1229 strtitlept.Append("<= pt <");
1230 strtitlept+=fptbins[i+1];
1231 strtitlept.Append(" [GeV/c]");
1233 hd0D0ptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1234 hd0D0ptNCbackSB->SetXTitle("Impact parameter [#mum] ");
1235 hd0D0ptNCbackSB->SetYTitle("Entries");
1236 flistNoCutsBack->Add(hd0D0ptNCbackSB);
1238 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1239 hMCd0D0ptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1240 hMCd0D0ptNCbackSB->SetXTitle("MC Impact parameter [#mum] ");
1241 hMCd0D0ptNCbackSB->SetYTitle("Entries");
1242 flistNoCutsBack->Add(hMCd0D0ptNCbackSB);
1244 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1245 hd0D0VtxTrueptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1246 hd0D0VtxTrueptNCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1247 hd0D0VtxTrueptNCbackSB->SetYTitle("Entries");
1248 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackSB);
1253 //############ NO CUTS FROMB HISTOGRAMS ###########
1255 //####### global properties histos
1257 TH2F *hCPtaVSd0d0NCfromB=new TH2F("hCPtaVSd0d0NCfromB","hCPtaVSd0d0_NoCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
1258 TH1F *hSecVtxZNCfromB=new TH1F("hSecVtxZNCfromB","hSecVtxZ_NoCuts_FromB",1000,-8.,8.);
1259 TH1F *hSecVtxXNCfromB=new TH1F("hSecVtxXNCfromB","hSecVtxX_NoCuts_FromB",1000,-3000.,3000.);
1260 TH1F *hSecVtxYNCfromB=new TH1F("hSecVtxYNCfromB","hSecVtxY_NoCuts_FromB",1000,-3000.,3000.);
1261 TH2F *hSecVtxXYNCfromB=new TH2F("hSecVtxXYNCfromB","hSecVtxXY_NoCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
1262 TH1F *hSecVtxPhiNCfromB=new TH1F("hSecVtxPhiNCfromB","hSecVtxPhi_NoCuts_FromB",180,-180.1,180.1);
1263 TH1F *hd0singlTrackNCfromB=new TH1F("hd0singlTrackNCfromB","hd0singlTrackNoCuts_FromB",1000,-5000.,5000.);
1264 TH1F *hCPtaNCfromB=new TH1F("hCPtaNCfromB","hCPta_NoCuts_FromB",100,-1.,1.);
1265 TH1F *hd0xd0NCfromB=new TH1F("hd0xd0NCfromB","hd0xd0_NoCuts_FromB",1000,-100000.,100000.);
1266 TH1F *hMassTrueNCfromB=new TH1F("hMassTrueNCfromB","D^{0} MC inv. Mass No Cuts FromB(All momenta)",600,1.600,2.200);
1267 TH1F *hMassNCfromB=new TH1F("hMassNCfromB","D^{0} inv. Mass No Cuts FromB (All momenta)",600,1.600,2.200);
1268 hMassNCfromB->Sumw2();
1269 TH1F *hMassTrueNCfromBPM=new TH1F("hMassTrueNCfromBPM","D^{0} MC inv. Mass No Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
1270 TH1F *hMassNCfromBPM=new TH1F("hMassNCfromBPM","D^{0} inv. Mass No Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
1271 hMassNCfromB->Sumw2();
1272 TH1F *hMassTrueNCfromBSB=new TH1F("hMassTrueNCfromBSB","D^{0} MC inv. Mass in Side Bands No Cuts FromB(All momenta)",600,1.600,2.200);
1273 TH1F *hMassNCfromBSB=new TH1F("hMassNCfromBSB","D^{0} inv. Mass in Side Bands No Cuts FromB (All momenta)",600,1.600,2.200);
1274 hMassNCfromBSB->Sumw2();
1276 flistNoCutsFromB->Add(hCPtaVSd0d0NCfromB);
1277 flistNoCutsFromB->Add(hSecVtxZNCfromB);
1278 flistNoCutsFromB->Add(hSecVtxYNCfromB);
1279 flistNoCutsFromB->Add(hSecVtxXNCfromB);
1280 flistNoCutsFromB->Add(hSecVtxXYNCfromB);
1281 flistNoCutsFromB->Add(hSecVtxPhiNCfromB);
1282 flistNoCutsFromB->Add(hd0singlTrackNCfromB);
1283 flistNoCutsFromB->Add(hCPtaNCfromB);
1284 flistNoCutsFromB->Add(hd0xd0NCfromB);
1285 flistNoCutsFromB->Add(hMassTrueNCfromB);
1286 flistNoCutsFromB->Add(hMassNCfromB);
1287 flistNoCutsFromB->Add(hMassTrueNCfromBPM);
1288 flistNoCutsFromB->Add(hMassNCfromBPM);
1289 flistNoCutsFromB->Add(hMassTrueNCfromBSB);
1290 flistNoCutsFromB->Add(hMassNCfromBSB);
1296 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1297 TH1F *hdcaNCfromB=new TH1F("hdcaNCfromB","hdca_NoCuts_FromB",100,0.,1000.);
1298 hdcaNCfromB->SetXTitle("dca [#mum]");
1299 hdcaNCfromB->SetYTitle("Entries");
1300 TH1F *hcosthetastarNCfromB=new TH1F("hcosthetastarNCfromB","hCosThetaStar_NoCuts_FromB",50,-1.,1.);
1301 hcosthetastarNCfromB->SetXTitle("cos #theta^{*}");
1302 hcosthetastarNCfromB->SetYTitle("Entries");
1303 TH1F *hptD0NCfromB=new TH1F("hptD0NCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1304 hptD0NCfromB->SetXTitle("p_{t} [GeV/c]");
1305 hptD0NCfromB->SetYTitle("Entries");
1306 TH1F *hptD0VsMaxPtNCfromB=new TH1F("hptD0VsMaxPtNCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1307 TH2F *hptD0PTallsqrtNCfromB=new TH2F("hptD0PTallsqrtNCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1308 TH2F *hptD0PTallNCfromB=new TH2F("hptD0PTallNCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1309 TH2F *hptD0vsptBNCfromB=new TH2F("hptD0vsptBNCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1310 TH2F *hpD0vspBNCfromB=new TH2F("hpD0vspBNCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1311 TH2F *hptD0vsptcquarkNCfromB=new TH2F("hptD0vsptcquarkNCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1312 TH2F *hpD0vspcquarkNCfromB=new TH2F("hpD0vspcquarkNCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1313 flistNoCutsFromB->Add(hdcaNCfromB);
1314 flistNoCutsFromB->Add(hcosthetastarNCfromB);
1315 flistNoCutsFromB->Add(hptD0NCfromB);
1316 flistNoCutsFromB->Add(hptD0VsMaxPtNCfromB);
1317 flistNoCutsFromB->Add(hptD0PTallsqrtNCfromB);
1318 flistNoCutsFromB->Add(hptD0PTallNCfromB);
1319 flistNoCutsFromB->Add(hptD0vsptBNCfromB);
1320 flistNoCutsFromB->Add(hpD0vspBNCfromB);
1321 flistNoCutsFromB->Add(hptD0vsptcquarkNCfromB);
1322 flistNoCutsFromB->Add(hpD0vspcquarkNCfromB);
1324 TH1F *hd0zD0ptNCfromB;
1325 TH1F *hInvMassD0NCfromB,*hInvMassD0barNCfromB;
1326 TH2F *hInvMassPtNCfromB=new TH2F("hInvMassPtNCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1327 THnSparseF *hSparseNCfromB=new THnSparseF("hSparseNCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1328 hSparseNCfromB->SetBinEdges(0,massbins);
1329 hSparseNCfromB->SetBinEdges(1,massbins);
1330 hSparseNCfromB->SetBinEdges(2,ptbinsForNsparse);
1331 hSparseNCfromB->SetBinEdges(3,impparbins);
1332 hSparseNCfromB->SetBinEdges(4,massHypoBins);
1333 flistNoCutsFromB->Add(hSparseNCfromB);
1336 TH1F *hCosPDPBNCfromB;
1337 TH1F *hCosPcPDNCfromB;
1339 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1340 TH2F *hd0D0VSd0xd0NCfromBpt;
1341 TH2F *hangletracksVSd0xd0NCfromBpt;
1342 TH2F *hangletracksVSd0D0NCfromBpt;
1343 TH1F *hd0xd0NCfromBpt;
1344 flistNoCutsFromB->Add(hInvMassPtNCfromB);
1346 TH2F *hTOFpidNCfromB=new TH2F("hTOFpidNCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1347 flistNoCutsFromB->Add(hTOFpidNCfromB);
1349 for(Int_t i=0;i<fnbins;i++){
1350 namehist="hd0zD0ptNCfromB_pt";
1352 titlehist="d0(z) No Cuts FromB ptbin=";
1354 hd0zD0ptNCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1355 hd0zD0ptNCfromB->SetXTitle("d_{0}(z) [#mum]");
1356 hd0zD0ptNCfromB->SetYTitle("Entries");
1357 flistNoCutsFromB->Add(hd0zD0ptNCfromB);
1359 namehist="hInvMassD0NCfromB_pt";
1361 titlehist="Invariant Mass No Cuts FromB ptbin=";
1363 hInvMassD0NCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1364 hInvMassD0NCfromB->SetXTitle("Invariant Mass [GeV]");
1365 hInvMassD0NCfromB->SetYTitle("Entries");
1366 flistNoCutsFromB->Add(hInvMassD0NCfromB);
1369 namehist="hInvMassD0barNCfromB_pt";
1371 titlehist="Invariant Mass D0bar No Cuts FromB ptbin=";
1373 hInvMassD0barNCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1374 hInvMassD0barNCfromB->SetXTitle("Invariant Mass [GeV]");
1375 hInvMassD0barNCfromB->SetYTitle("Entries");
1376 flistNoCutsFromB->Add(hInvMassD0barNCfromB);
1380 namehist="hetaNCfromB_pt";
1382 titlehist="eta No Cuts FromB ptbin=";
1384 hetaNCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1385 hetaNCfromB->SetXTitle("Pseudorapidity");
1386 hetaNCfromB->SetYTitle("Entries");
1387 flistNoCutsFromB->Add(hetaNCfromB);
1389 namehist="hCosPDPBNCfromB_pt";
1391 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1393 hCosPDPBNCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1394 hCosPDPBNCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
1395 hCosPDPBNCfromB->SetYTitle("Entries");
1396 flistNoCutsFromB->Add(hCosPDPBNCfromB);
1398 namehist="hCosPcPDNCfromB_pt";
1400 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1402 hCosPcPDNCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1403 hCosPcPDNCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
1404 hCosPcPDNCfromB->SetYTitle("Entries");
1405 flistNoCutsFromB->Add(hCosPcPDNCfromB);
1407 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1408 namehist="hd0xd0NCfromB_pt";
1410 titlehist="d0xd0 No Cuts FromB ptbin=";
1412 hd0xd0NCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1413 hd0xd0NCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1414 hd0xd0NCfromBpt->SetYTitle("Entries");
1415 flistNoCutsFromB->Add(hd0xd0NCfromBpt);
1418 namehist="hd0D0VSd0xd0NCfromB_pt";
1420 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromB ptbin=";
1422 hd0D0VSd0xd0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1423 hd0D0VSd0xd0NCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1424 hd0D0VSd0xd0NCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1425 flistNoCutsFromB->Add(hd0D0VSd0xd0NCfromBpt);
1428 namehist="hangletracksVSd0xd0NCfromB_pt";
1430 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromB ptbin=";
1432 hangletracksVSd0xd0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1433 hangletracksVSd0xd0NCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1434 hangletracksVSd0xd0NCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
1435 flistNoCutsFromB->Add(hangletracksVSd0xd0NCfromBpt);
1438 namehist="hangletracksVSd0D0NCfromB_pt";
1440 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts FromB ptbin=";
1442 hangletracksVSd0D0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1443 hangletracksVSd0D0NCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1444 hangletracksVSd0D0NCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
1445 flistNoCutsFromB->Add(hangletracksVSd0D0NCfromBpt);
1449 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1450 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1454 // ######### d0 D0 histos ##############
1455 TH1F *hd0D0NCfromBPM = new TH1F("hd0D0NCfromBPM","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1456 hd0D0NCfromBPM->SetXTitle("Impact parameter [#mum]");
1457 hd0D0NCfromBPM->SetYTitle("Entries");
1459 TH1F *hd0D0VtxTrueNCfromBPM = new TH1F("hd0D0VtxTrueNCfromBPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1460 hd0D0VtxTrueNCfromBPM->SetXTitle("Impact parameter [#mum]");
1461 hd0D0VtxTrueNCfromBPM->SetYTitle("Entries");
1463 TH1F *hMCd0D0NCfromBPM = new TH1F("hMCd0D0NCfromBPM","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1464 hMCd0D0NCfromBPM->SetXTitle("MC Impact parameter [#mum]");
1465 hMCd0D0NCfromBPM->SetYTitle("Entries");
1467 TH1F *hd0D0NCfromBSB = new TH1F("hd0D0NCfromBSB","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1468 hd0D0NCfromBSB->SetXTitle("Impact parameter [#mum]");
1469 hd0D0NCfromBSB->SetYTitle("Entries");
1471 TH1F *hd0D0VtxTrueNCfromBSB = new TH1F("hd0D0VtxTrueNCfromBSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1472 hd0D0VtxTrueNCfromBSB->SetXTitle("Impact parameter [#mum]");
1473 hd0D0VtxTrueNCfromBSB->SetYTitle("Entries");
1475 TH1F *hMCd0D0NCfromBSB = new TH1F("hMCd0D0NCfromBSB","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1476 hMCd0D0NCfromBSB->SetXTitle("MC Impact parameter [#mum]");
1477 hMCd0D0NCfromBSB->SetYTitle("Entries");
1479 flistNoCutsFromB->Add(hd0D0NCfromBPM);
1480 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBPM);
1481 flistNoCutsFromB->Add(hMCd0D0NCfromBPM);
1482 flistNoCutsFromB->Add(hd0D0NCfromBSB);
1483 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBSB);
1484 flistNoCutsFromB->Add(hMCd0D0NCfromBSB);
1486 TH1F *hd0D0ptNCfromBPM;
1487 TH1F *hMCd0D0ptNCfromBPM;
1488 TH1F *hd0D0VtxTrueptNCfromBPM;
1489 TH1F *hd0D0ptNCfromBSB;
1490 TH1F *hMCd0D0ptNCfromBSB;
1491 TH1F *hd0D0VtxTrueptNCfromBSB;
1492 namehist="hd0D0ptNCfromB_";
1493 titlehist="D^{0} impact par. plot, No Cuts, FromB, ";
1494 for(Int_t i=0;i<fnbins;i++){
1496 strnamept.Append("PkMss_pt");
1499 strtitlept=titlehist;
1500 strtitlept.Append(" Mass Peak, ");
1501 strtitlept+=fptbins[i];
1502 strtitlept.Append("<= pt <");
1503 strtitlept+=fptbins[i+1];
1504 strtitlept.Append(" [GeV/c]");
1506 hd0D0ptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1507 hd0D0ptNCfromBPM->SetXTitle("Impact parameter [#mum] ");
1508 hd0D0ptNCfromBPM->SetYTitle("Entries");
1509 flistNoCutsFromB->Add(hd0D0ptNCfromBPM);
1511 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1512 hMCd0D0ptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1513 hMCd0D0ptNCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
1514 hMCd0D0ptNCfromBPM->SetYTitle("Entries");
1515 flistNoCutsFromB->Add(hMCd0D0ptNCfromBPM);
1518 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1519 hd0D0VtxTrueptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1520 hd0D0VtxTrueptNCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1521 hd0D0VtxTrueptNCfromBPM->SetYTitle("Entries");
1522 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBPM);
1525 strnamept.Append("SBMss_pt");
1528 strtitlept=titlehist;
1529 strtitlept.Append(" Side Bands, ");
1530 strtitlept+=fptbins[i];
1531 strtitlept.Append("<= pt <");
1532 strtitlept+=fptbins[i+1];
1533 strtitlept.Append(" [GeV/c]");
1535 hd0D0ptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1536 hd0D0ptNCfromBSB->SetXTitle("Impact parameter [#mum] ");
1537 hd0D0ptNCfromBSB->SetYTitle("Entries");
1538 flistNoCutsFromB->Add(hd0D0ptNCfromBSB);
1540 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1541 hMCd0D0ptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1542 hMCd0D0ptNCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
1543 hMCd0D0ptNCfromBSB->SetYTitle("Entries");
1544 flistNoCutsFromB->Add(hMCd0D0ptNCfromBSB);
1546 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1547 hd0D0VtxTrueptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1548 hd0D0VtxTrueptNCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1549 hd0D0VtxTrueptNCfromBSB->SetYTitle("Entries");
1550 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBSB);
1555 //############ NO CUTS FROM DSTAR HISTOGRAMS ###########
1557 //############# global properties histos #######
1559 TH2F *hCPtaVSd0d0NCfromDstar=new TH2F("hCPtaVSd0d0NCfromDstar","hCPtaVSd0d0_NoCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
1560 TH1F *hSecVtxZNCfromDstar=new TH1F("hSecVtxZNCfromDstar","hSecVtxZ_NoCuts_FromDStar",1000,-8.,8.);
1561 TH1F *hSecVtxXNCfromDstar=new TH1F("hSecVtxXNCfromDstar","hSecVtxX_NoCuts_FromDStar",1000,-3000.,3000.);
1562 TH1F *hSecVtxYNCfromDstar=new TH1F("hSecVtxYNCfromDstar","hSecVtxY_NoCuts_FromDStar",1000,-3000.,3000.);
1563 TH2F *hSecVtxXYNCfromDstar=new TH2F("hSecVtxXYNCfromDstar","hSecVtxXY_NoCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
1564 TH1F *hSecVtxPhiNCfromDstar=new TH1F("hSecVtxPhiNCfromDstar","hSecVtxPhi_NoCuts_FromDStar",180,-180.1,180.1);
1565 TH1F *hd0singlTrackNCfromDstar=new TH1F("hd0singlTrackNCfromDstar","hd0singlTrackNoCuts_fromDstar",1000,-5000.,5000.);
1566 TH1F *hCPtaNCfromDstar=new TH1F("hCPtaNCfromDstar","hCPta_NoCuts_FromDStar",100,-1.,1.);
1567 TH1F *hd0xd0NCfromDstar=new TH1F("hd0xd0NCfromDstar","hd0xd0_NoCuts_FromDStar",1000,-100000.,100000.);
1568 TH1F *hMassTrueNCfromDstar=new TH1F("hMassTrueNCfromDstar","D^{0} MC inv. Mass No Cuts FromDStar(All momenta)",600,1.600,2.200);
1569 TH1F *hMassNCfromDstar=new TH1F("hMassNCfromDstar","D^{0} inv. Mass No Cuts FromDStar (All momenta)",600,1.600,2.200);
1570 hMassNCfromDstar->Sumw2();
1571 TH1F *hMassTrueNCfromDstarPM=new TH1F("hMassTrueNCfromDstarPM","D^{0} MC inv. Mass No Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
1572 TH1F *hMassNCfromDstarPM=new TH1F("hMassNCfromDstarPM","D^{0} inv. Mass No Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
1573 hMassNCfromDstarPM->Sumw2();
1574 TH1F *hMassTrueNCfromDstarSB=new TH1F("hMassTrueNCfromDstarSB","D^{0} MC inv. Mass in Side Bands No Cuts FromDStar(All momenta)",600,1.600,2.200);
1575 TH1F *hMassNCfromDstarSB=new TH1F("hMassNCfromDstarSB","D^{0} inv. Mass in Side Bands No Cuts FromDStar (All momenta)",600,1.600,2.200);
1576 hMassNCfromDstarSB->Sumw2();
1578 flistNoCutsFromDstar->Add(hCPtaVSd0d0NCfromDstar);
1579 flistNoCutsFromDstar->Add(hSecVtxZNCfromDstar);
1580 flistNoCutsFromDstar->Add(hSecVtxYNCfromDstar);
1581 flistNoCutsFromDstar->Add(hSecVtxXNCfromDstar);
1582 flistNoCutsFromDstar->Add(hSecVtxXYNCfromDstar);
1583 flistNoCutsFromDstar->Add(hSecVtxPhiNCfromDstar);
1584 flistNoCutsFromDstar->Add(hd0singlTrackNCfromDstar);
1585 flistNoCutsFromDstar->Add(hCPtaNCfromDstar);
1586 flistNoCutsFromDstar->Add(hd0xd0NCfromDstar);
1587 flistNoCutsFromDstar->Add(hMassTrueNCfromDstar);
1588 flistNoCutsFromDstar->Add(hMassNCfromDstar);
1589 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarPM);
1590 flistNoCutsFromDstar->Add(hMassNCfromDstarPM);
1591 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarSB);
1592 flistNoCutsFromDstar->Add(hMassNCfromDstarSB);
1597 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1598 TH1F *hdcaNCfromDstar=new TH1F("hdcaNCfromDstar","hdca_NoCuts_FromDstar",100,0.,1000.);
1599 hdcaNCfromDstar->SetXTitle("dca [#mum]");
1600 hdcaNCfromDstar->SetYTitle("Entries");
1601 TH1F *hcosthetastarNCfromDstar=new TH1F("hcosthetastarNCfromDstar","hCosThetaStar_NoCuts_FromDstar",50,-1.,1.);
1602 hcosthetastarNCfromDstar->SetXTitle("cos #theta^{*}");
1603 hcosthetastarNCfromDstar->SetYTitle("Entries");
1604 TH1F *hptD0NCfromDstar=new TH1F("hptD0NCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1605 hptD0NCfromDstar->SetXTitle("p_{t} [GeV/c]");
1606 hptD0NCfromDstar->SetYTitle("Entries");
1607 TH1F *hptD0VsMaxPtNCfromDstar=new TH1F("hptD0VsMaxPtNCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1608 TH2F *hptD0PTallsqrtNCfromDstar=new TH2F("hptD0PTallsqrtNCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1609 TH2F *hptD0PTallNCfromDstar=new TH2F("hptD0PTallNCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1610 TH2F *hptD0vsptBNCfromDstar=new TH2F("hptD0vsptBNCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1611 TH2F *hpD0vspBNCfromDstar=new TH2F("hpD0vspBNCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1612 TH2F *hptD0vsptcquarkNCfromDstar=new TH2F("hptD0vsptcquarkNCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1613 TH2F *hpD0vspcquarkNCfromDstar=new TH2F("hpD0vspcquarkNCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1614 flistNoCutsFromDstar->Add(hdcaNCfromDstar);
1615 flistNoCutsFromDstar->Add(hcosthetastarNCfromDstar);
1616 flistNoCutsFromDstar->Add(hptD0NCfromDstar);
1617 flistNoCutsFromDstar->Add(hptD0VsMaxPtNCfromDstar);
1618 flistNoCutsFromDstar->Add(hptD0PTallsqrtNCfromDstar);
1619 flistNoCutsFromDstar->Add(hptD0PTallNCfromDstar);
1620 flistNoCutsFromDstar->Add(hptD0vsptBNCfromDstar);
1621 flistNoCutsFromDstar->Add(hpD0vspBNCfromDstar);
1622 flistNoCutsFromDstar->Add(hptD0vsptcquarkNCfromDstar);
1623 flistNoCutsFromDstar->Add(hpD0vspcquarkNCfromDstar);
1625 TH1F *hd0zD0ptNCfromDstar;
1626 TH1F *hInvMassD0NCfromDstar,*hInvMassD0barNCfromDstar;
1627 TH2F *hInvMassPtNCfromDstar=new TH2F("hInvMassPtNCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1628 THnSparseF *hSparseNCfromDstar=new THnSparseF("hSparseNCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1629 hSparseNCfromDstar->SetBinEdges(0,massbins);
1630 hSparseNCfromDstar->SetBinEdges(1,massbins);
1631 hSparseNCfromDstar->SetBinEdges(2,ptbinsForNsparse);
1632 hSparseNCfromDstar->SetBinEdges(3,impparbins);
1633 hSparseNCfromDstar->SetBinEdges(4,massHypoBins);
1634 flistNoCutsFromDstar->Add(hSparseNCfromDstar);
1635 TH1F *hetaNCfromDstar;
1636 TH1F *hCosPDPBNCfromDstar;
1637 TH1F *hCosPcPDNCfromDstar;
1638 flistNoCutsFromDstar->Add(hInvMassPtNCfromDstar);
1639 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1640 TH2F *hd0D0VSd0xd0NCfromDstarpt;
1641 TH2F *hangletracksVSd0xd0NCfromDstarpt;
1642 TH2F *hangletracksVSd0D0NCfromDstarpt;
1643 TH1F *hd0xd0NCfromDstarpt;
1645 TH2F *hTOFpidNCfromDstar=new TH2F("hTOFpidNCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1646 flistNoCutsFromDstar->Add(hTOFpidNCfromDstar);
1648 for(Int_t i=0;i<fnbins;i++){
1649 namehist="hd0zD0ptNCfromDstar_pt";
1651 titlehist="d0(z) No Cuts FromDstarm ptbin=";
1653 hd0zD0ptNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1654 hd0zD0ptNCfromDstar->SetXTitle("d_{0}(z) [#mum]");
1655 hd0zD0ptNCfromDstar->SetYTitle("Entries");
1656 flistNoCutsFromDstar->Add(hd0zD0ptNCfromDstar);
1658 namehist="hInvMassD0NCfromDstar_pt";
1660 titlehist="Invariant Mass No Cuts FromDstar ptbin=";
1662 hInvMassD0NCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1663 hInvMassD0NCfromDstar->SetXTitle("Invariant Mass [GeV]");
1664 hInvMassD0NCfromDstar->SetYTitle("Entries");
1665 flistNoCutsFromDstar->Add(hInvMassD0NCfromDstar);
1668 namehist="hInvMassD0barNCfromDstar_pt";
1670 titlehist="Invariant Mass D0bar No Cuts FromDstar ptbin=";
1672 hInvMassD0barNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1673 hInvMassD0barNCfromDstar->SetXTitle("Invariant Mass [GeV]");
1674 hInvMassD0barNCfromDstar->SetYTitle("Entries");
1675 flistNoCutsFromDstar->Add(hInvMassD0barNCfromDstar);
1679 namehist="hetaNCfromDstar_pt";
1681 titlehist="eta No Cuts FromDstar ptbin=";
1683 hetaNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1684 hetaNCfromDstar->SetXTitle("Pseudorapidity");
1685 hetaNCfromDstar->SetYTitle("Entries");
1686 flistNoCutsFromDstar->Add(hetaNCfromDstar);
1688 namehist="hCosPDPBNCfromDstar_pt";
1690 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1692 hCosPDPBNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1693 hCosPDPBNCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
1694 hCosPDPBNCfromDstar->SetYTitle("Entries");
1695 flistNoCutsFromDstar->Add(hCosPDPBNCfromDstar);
1697 namehist="hCosPcPDNCfromDstar_pt";
1699 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1701 hCosPcPDNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1702 hCosPcPDNCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
1703 hCosPcPDNCfromDstar->SetYTitle("Entries");
1704 flistNoCutsFromDstar->Add(hCosPcPDNCfromDstar);
1706 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1707 namehist="hd0xd0NCfromDstar_pt";
1709 titlehist="d0xd0 No Cuts FromDstar ptbin=";
1711 hd0xd0NCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1712 hd0xd0NCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1713 hd0xd0NCfromDstarpt->SetYTitle("Entries");
1714 flistNoCutsFromDstar->Add(hd0xd0NCfromDstarpt);
1717 namehist="hd0D0VSd0xd0NCfromDstar_pt";
1719 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromDstar ptbin=";
1721 hd0D0VSd0xd0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1722 hd0D0VSd0xd0NCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1723 hd0D0VSd0xd0NCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1724 flistNoCutsFromDstar->Add(hd0D0VSd0xd0NCfromDstarpt);
1727 namehist="hangletracksVSd0xd0NCfromDstar_pt";
1729 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromDstar ptbin=";
1731 hangletracksVSd0xd0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1732 hangletracksVSd0xd0NCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1733 hangletracksVSd0xd0NCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
1734 flistNoCutsFromDstar->Add(hangletracksVSd0xd0NCfromDstarpt);
1737 namehist="hangletracksVSd0D0NCfromDstar_pt";
1739 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts FromDstar ptbin=";
1741 hangletracksVSd0D0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1742 hangletracksVSd0D0NCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1743 hangletracksVSd0D0NCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
1744 flistNoCutsFromDstar->Add(hangletracksVSd0D0NCfromDstarpt);
1747 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1748 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1751 //########## d0 D0 histos #############
1752 TH1F *hd0D0NCfromDstPM = new TH1F("hd0D0NCfromDstarPM","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1753 hd0D0NCfromDstPM->SetXTitle("Impact parameter [#mum]");
1754 hd0D0NCfromDstPM->SetYTitle("Entries");
1756 TH1F *hd0D0VtxTrueNCfromDstPM = new TH1F("hd0D0VtxTrueNCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1757 hd0D0VtxTrueNCfromDstPM->SetXTitle("Impact parameter [#mum]");
1758 hd0D0VtxTrueNCfromDstPM->SetYTitle("Entries");
1760 TH1F *hMCd0D0NCfromDstPM = new TH1F("hMCd0D0NCfromDstarPM","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1761 hMCd0D0NCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
1762 hMCd0D0NCfromDstPM->SetYTitle("Entries");
1764 TH1F *hd0D0NCfromDstSB = new TH1F("hd0D0NCfromDstarSB","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1765 hd0D0NCfromDstSB->SetXTitle("Impact parameter [#mum]");
1766 hd0D0NCfromDstSB->SetYTitle("Entries");
1768 TH1F *hd0D0VtxTrueNCfromDstSB = new TH1F("hd0D0VtxTrueNCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1769 hd0D0VtxTrueNCfromDstSB->SetXTitle("Impact parameter [#mum]");
1770 hd0D0VtxTrueNCfromDstSB->SetYTitle("Entries");
1772 TH1F *hMCd0D0NCfromDstSB = new TH1F("hMCd0D0NCfromDstarSB","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1773 hMCd0D0NCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
1774 hMCd0D0NCfromDstSB->SetYTitle("Entries");
1776 flistNoCutsFromDstar->Add(hd0D0NCfromDstPM);
1777 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstPM);
1778 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstPM);
1779 flistNoCutsFromDstar->Add(hd0D0NCfromDstSB);
1780 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstSB);
1781 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstSB);
1783 TH1F *hd0D0ptNCfromDstPM;
1784 TH1F *hMCd0D0ptNCfromDstPM;
1785 TH1F *hd0D0VtxTrueptNCfromDstPM;
1786 TH1F *hd0D0ptNCfromDstSB;
1787 TH1F *hMCd0D0ptNCfromDstSB;
1788 TH1F *hd0D0VtxTrueptNCfromDstSB;
1789 namehist="hd0D0ptNCfromDstar_";
1790 titlehist="D^{0} impact par. plot, No Cuts, FromDStar, ";
1791 for(Int_t i=0;i<fnbins;i++){
1793 strnamept.Append("PkMss_pt");
1796 strtitlept=titlehist;
1797 strtitlept.Append(" Mass Peak, ");
1798 strtitlept+=fptbins[i];
1799 strtitlept.Append("<= pt <");
1800 strtitlept+=fptbins[i+1];
1801 strtitlept.Append(" [GeV/c]");
1803 hd0D0ptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1804 hd0D0ptNCfromDstPM->SetXTitle("Impact parameter [#mum] ");
1805 hd0D0ptNCfromDstPM->SetYTitle("Entries");
1806 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstPM);
1808 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1809 hMCd0D0ptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1810 hMCd0D0ptNCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
1811 hMCd0D0ptNCfromDstPM->SetYTitle("Entries");
1812 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstPM);
1815 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1816 hd0D0VtxTrueptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1817 hd0D0VtxTrueptNCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1818 hd0D0VtxTrueptNCfromDstPM->SetYTitle("Entries");
1819 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstPM);
1822 strnamept.Append("SBMss_pt");
1825 strtitlept=titlehist;
1826 strtitlept.Append(" Side Bands, ");
1827 strtitlept+=fptbins[i];
1828 strtitlept.Append("<= pt <");
1829 strtitlept+=fptbins[i+1];
1830 strtitlept.Append(" [GeV/c]");
1832 hd0D0ptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1833 hd0D0ptNCfromDstSB->SetXTitle("Impact parameter [#mum] ");
1834 hd0D0ptNCfromDstSB->SetYTitle("Entries");
1835 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstSB);
1837 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1838 hMCd0D0ptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1839 hMCd0D0ptNCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
1840 hMCd0D0ptNCfromDstSB->SetYTitle("Entries");
1841 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstSB);
1843 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1844 hd0D0VtxTrueptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1845 hd0D0VtxTrueptNCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1846 hd0D0VtxTrueptNCfromDstSB->SetYTitle("Entries");
1847 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstSB);
1851 //############ NO CUTS OTHER HISTOGRAMS ###########
1853 //########### global properties histos ###########
1855 TH2F *hCPtaVSd0d0NCother=new TH2F("hCPtaVSd0d0NCother","hCPtaVSd0d0_NoCuts_other",1000,-100000.,100000.,100,-1.,1.);
1856 TH1F *hSecVtxZNCother=new TH1F("hSecVtxZNCother","hSecVtxZ_NoCuts_other",1000,-8.,8.);
1857 TH1F *hSecVtxXNCother=new TH1F("hSecVtxXNCother","hSecVtxX_NoCuts_other",1000,-3000.,3000.);
1858 TH1F *hSecVtxYNCother=new TH1F("hSecVtxYNCother","hSecVtxY_NoCuts_other",1000,-3000.,3000.);
1859 TH2F *hSecVtxXYNCother=new TH2F("hSecVtxXYNCother","hSecVtxXY_NoCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
1860 TH1F *hSecVtxPhiNCother=new TH1F("hSecVtxPhiNCother","hSecVtxPhi_NoCuts_other",180,-180.1,180.1);
1861 TH1F *hd0singlTrackNCother=new TH1F("hd0singlTrackNCother","hd0singlTrackNoCuts_Other",1000,-5000.,5000.);
1862 TH1F *hCPtaNCother=new TH1F("hCPtaNCother","hCPta_NoCuts_other",100,-1.,1.);
1863 TH1F *hd0xd0NCother=new TH1F("hd0xd0NCother","hd0xd0_NoCuts_other",1000,-100000.,100000.);
1864 TH1F *hMassTrueNCother=new TH1F("hMassTrueNCother","D^{0} MC inv. Mass No Cuts other(All momenta)",600,1.600,2.200);
1865 TH1F *hMassNCother=new TH1F("hMassNCother","D^{0} inv. Mass No Cuts other (All momenta)",600,1.600,2.200);
1866 hMassNCother->Sumw2();
1867 TH1F *hMassTrueNCotherPM=new TH1F("hMassTrueNCotherPM","D^{0} MC inv. Mass No Cuts Other, Mass Peak. (All momenta)",600,1.600,2.200);
1868 TH1F *hMassNCotherPM=new TH1F("hMassNCotherPM","D^{0} inv. Mass No Cuts Other (All momenta), MassPeak",600,1.600,2.200);
1869 hMassNCotherPM->Sumw2();
1870 TH1F *hMassTrueNCotherSB=new TH1F("hMassTrueNCotherSB","D^{0} MC inv. Mass in Side Bands No Cuts other(All momenta)",600,1.600,2.200);
1871 TH1F *hMassNCotherSB=new TH1F("hMassNCotherSB","D^{0} inv. Mass in Side Bands No Cuts other (All momenta)",600,1.600,2.200);
1872 hMassNCotherSB->Sumw2();
1874 flistNoCutsOther->Add(hCPtaVSd0d0NCother);
1875 flistNoCutsOther->Add(hSecVtxZNCother);
1876 flistNoCutsOther->Add(hSecVtxYNCother);
1877 flistNoCutsOther->Add(hSecVtxXNCother);
1878 flistNoCutsOther->Add(hSecVtxXYNCother);
1879 flistNoCutsOther->Add(hSecVtxPhiNCother);
1880 flistNoCutsOther->Add(hd0singlTrackNCother);
1881 flistNoCutsOther->Add(hCPtaNCother);
1882 flistNoCutsOther->Add(hd0xd0NCother);
1883 flistNoCutsOther->Add(hMassTrueNCother);
1884 flistNoCutsOther->Add(hMassNCother);
1885 flistNoCutsOther->Add(hMassTrueNCotherPM);
1886 flistNoCutsOther->Add(hMassNCotherPM);
1887 flistNoCutsOther->Add(hMassTrueNCotherSB);
1888 flistNoCutsOther->Add(hMassNCotherSB);
1892 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1893 TH1F *hdcaNCother=new TH1F("hdcaNCother","hdca_NoCuts_Other",100,0.,1000.);
1894 hdcaNCother->SetXTitle("dca [#mum]");
1895 hdcaNCother->SetYTitle("Entries");
1896 TH1F *hcosthetastarNCother=new TH1F("hcosthetastarNCother","hCosThetaStar_NoCuts_Other",50,-1.,1.);
1897 hcosthetastarNCother->SetXTitle("cos #theta^{*}");
1898 hcosthetastarNCother->SetYTitle("Entries");
1899 TH1F *hptD0NCother=new TH1F("hptD0NCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1900 hptD0NCother->SetXTitle("p_{t} [GeV/c]");
1901 hptD0NCother->SetYTitle("Entries");
1902 TH1F *hptD0VsMaxPtNCother=new TH1F("hptD0VsMaxPtNCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1903 TH2F *hptD0PTallsqrtNCother=new TH2F("hptD0PTallsqrtNCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1904 TH2F *hptD0PTallNCother=new TH2F("hptD0PTallNCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1905 TH2F *hptD0vsptBNCother=new TH2F("hptD0vsptBNCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1906 TH2F *hpD0vspBNCother=new TH2F("hpD0vspBNCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1907 TH2F *hptD0vsptcquarkNCother=new TH2F("hptD0vsptcquarkNCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1908 TH2F *hpD0vspcquarkNCother=new TH2F("hpD0vspcquarkNCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1909 flistNoCutsOther->Add(hdcaNCother);
1910 flistNoCutsOther->Add(hcosthetastarNCother);
1911 flistNoCutsOther->Add(hptD0NCother);
1912 flistNoCutsOther->Add(hptD0VsMaxPtNCother);
1913 flistNoCutsOther->Add(hptD0PTallsqrtNCother);
1914 flistNoCutsOther->Add(hptD0PTallNCother);
1915 flistNoCutsOther->Add(hptD0vsptBNCother);
1916 flistNoCutsOther->Add(hpD0vspBNCother);
1917 flistNoCutsOther->Add(hptD0vsptcquarkNCother);
1918 flistNoCutsOther->Add(hpD0vspcquarkNCother);
1920 TH1F *hd0zD0ptNCother;
1921 TH1F *hInvMassD0NCother,*hInvMassD0barNCother;
1922 TH2F *hInvMassPtNCother=new TH2F("hInvMassPtNCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1923 THnSparseF *hSparseNCother=new THnSparseF("hSparseNCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1924 hSparseNCother->SetBinEdges(0,massbins);
1925 hSparseNCother->SetBinEdges(1,massbins);
1926 hSparseNCother->SetBinEdges(2,ptbinsForNsparse);
1927 hSparseNCother->SetBinEdges(3,impparbins);
1928 hSparseNCother->SetBinEdges(4,massHypoBins);
1929 flistNoCutsOther->Add(hSparseNCother);
1931 TH1F *hCosPDPBNCother;
1932 TH1F *hCosPcPDNCother;
1933 flistNoCutsOther->Add(hInvMassPtNCother);
1934 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1935 TH2F *hd0D0VSd0xd0NCotherpt;
1936 TH2F *hangletracksVSd0xd0NCotherpt;
1937 TH2F *hangletracksVSd0D0NCotherpt;
1938 TH1F *hd0xd0NCotherpt;
1940 TH2F *hTOFpidNCother=new TH2F("hTOFpidNCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1941 flistNoCutsOther->Add(hTOFpidNCother);
1943 for(Int_t i=0;i<fnbins;i++){
1944 namehist="hd0zD0ptNCother_pt";
1946 titlehist="d0(z) No Cuts Otherm ptbin=";
1948 hd0zD0ptNCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1949 hd0zD0ptNCother->SetXTitle("d_{0}(z) [#mum]");
1950 hd0zD0ptNCother->SetYTitle("Entries");
1951 flistNoCutsOther->Add(hd0zD0ptNCother);
1953 namehist="hInvMassD0NCother_pt";
1955 titlehist="Invariant Mass No Cuts Other ptbin=";
1957 hInvMassD0NCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1958 hInvMassD0NCother->SetXTitle("Invariant Mass [GeV]");
1959 hInvMassD0NCother->SetYTitle("Entries");
1960 flistNoCutsOther->Add(hInvMassD0NCother);
1963 namehist="hInvMassD0barNCother_pt";
1965 titlehist="Invariant Mass D0bar No Cuts Other ptbin=";
1967 hInvMassD0barNCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1968 hInvMassD0barNCother->SetXTitle("Invariant Mass [GeV]");
1969 hInvMassD0barNCother->SetYTitle("Entries");
1970 flistNoCutsOther->Add(hInvMassD0barNCother);
1973 namehist="hetaNCother_pt";
1975 titlehist="eta No Cuts Other ptbin=";
1977 hetaNCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1978 hetaNCother->SetXTitle("Pseudorapidity");
1979 hetaNCother->SetYTitle("Entries");
1980 flistNoCutsOther->Add(hetaNCother);
1982 namehist="hCosPDPBNCother_pt";
1984 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1986 hCosPDPBNCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1987 hCosPDPBNCother->SetXTitle("Cosine between D0 momentum and B momentum");
1988 hCosPDPBNCother->SetYTitle("Entries");
1989 flistNoCutsOther->Add(hCosPDPBNCother);
1991 namehist="hCosPcPDNCother_pt";
1993 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1995 hCosPcPDNCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1996 hCosPcPDNCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
1997 hCosPcPDNCother->SetYTitle("Entries");
1998 flistNoCutsOther->Add(hCosPcPDNCother);
2001 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2002 namehist="hd0xd0NCother_pt";
2004 titlehist="d0xd0 No Cuts Other ptbin=";
2006 hd0xd0NCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2007 hd0xd0NCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2008 hd0xd0NCotherpt->SetYTitle("Entries");
2009 flistNoCutsOther->Add(hd0xd0NCotherpt);
2012 namehist="hd0D0VSd0xd0NCother_pt";
2014 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Other ptbin=";
2016 hd0D0VSd0xd0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2017 hd0D0VSd0xd0NCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2018 hd0D0VSd0xd0NCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2019 flistNoCutsOther->Add(hd0D0VSd0xd0NCotherpt);
2022 namehist="hangletracksVSd0xd0NCother_pt";
2024 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Other ptbin=";
2026 hangletracksVSd0xd0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2027 hangletracksVSd0xd0NCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2028 hangletracksVSd0xd0NCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
2029 flistNoCutsOther->Add(hangletracksVSd0xd0NCotherpt);
2032 namehist="hangletracksVSd0D0NCother_pt";
2034 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Other ptbin=";
2036 hangletracksVSd0D0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2037 hangletracksVSd0D0NCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2038 hangletracksVSd0D0NCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
2039 flistNoCutsOther->Add(hangletracksVSd0D0NCotherpt);
2042 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2043 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2048 //############# d0 D0 histos ###############Ã
2049 TH1F *hd0D0NCotherPM = new TH1F("hd0D0NCotherPM","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2050 hd0D0NCotherPM->SetXTitle("Impact parameter [#mum]");
2051 hd0D0NCotherPM->SetYTitle("Entries");
2053 TH1F *hd0D0VtxTrueNCotherPM = new TH1F("hd0D0VtxTrueNCotherPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2054 hd0D0VtxTrueNCotherPM->SetXTitle("Impact parameter [#mum]");
2055 hd0D0VtxTrueNCotherPM->SetYTitle("Entries");
2057 TH1F *hMCd0D0NCotherPM = new TH1F("hMCd0D0NCotherPM","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2058 hMCd0D0NCotherPM->SetXTitle("MC Impact parameter [#mum]");
2059 hMCd0D0NCotherPM->SetYTitle("Entries");
2061 TH1F *hd0D0NCotherSB = new TH1F("hd0D0NCotherSB","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2062 hd0D0NCotherSB->SetXTitle("Impact parameter [#mum]");
2063 hd0D0NCotherSB->SetYTitle("Entries");
2065 TH1F *hd0D0VtxTrueNCotherSB = new TH1F("hd0D0VtxTrueNCotherSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2066 hd0D0VtxTrueNCotherSB->SetXTitle("Impact parameter [#mum]");
2067 hd0D0VtxTrueNCotherSB->SetYTitle("Entries");
2069 TH1F *hMCd0D0NCotherSB = new TH1F("hMCd0D0NCotherSB","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2070 hMCd0D0NCotherSB->SetXTitle("MC Impact parameter [#mum]");
2071 hMCd0D0NCotherSB->SetYTitle("Entries");
2073 flistNoCutsOther->Add(hd0D0NCotherPM);
2074 flistNoCutsOther->Add(hd0D0VtxTrueNCotherPM);
2075 flistNoCutsOther->Add(hMCd0D0NCotherPM);
2076 flistNoCutsOther->Add(hd0D0NCotherSB);
2077 flistNoCutsOther->Add(hd0D0VtxTrueNCotherSB);
2078 flistNoCutsOther->Add(hMCd0D0NCotherSB);
2080 TH1F *hd0D0ptNCotherPM;
2081 TH1F *hMCd0D0ptNCotherPM;
2082 TH1F *hd0D0VtxTrueptNCotherPM;
2083 TH1F *hd0D0ptNCotherSB;
2084 TH1F *hMCd0D0ptNCotherSB;
2085 TH1F *hd0D0VtxTrueptNCotherSB;
2086 namehist="hd0D0ptNCother_";
2087 titlehist="D^{0} impact par. plot, No Cuts, Other, ";
2088 for(Int_t i=0;i<fnbins;i++){
2090 strnamept.Append("PkMss_pt");
2093 strtitlept=titlehist;
2094 strtitlept.Append(" Mass Peak, ");
2095 strtitlept+=fptbins[i];
2096 strtitlept.Append("<= pt <");
2097 strtitlept+=fptbins[i+1];
2098 strtitlept.Append(" [GeV/c]");
2100 hd0D0ptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2101 hd0D0ptNCotherPM->SetXTitle("Impact parameter [#mum] ");
2102 hd0D0ptNCotherPM->SetYTitle("Entries");
2103 flistNoCutsOther->Add(hd0D0ptNCotherPM);
2105 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2106 hMCd0D0ptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2107 hMCd0D0ptNCotherPM->SetXTitle("MC Impact parameter [#mum] ");
2108 hMCd0D0ptNCotherPM->SetYTitle("Entries");
2109 flistNoCutsOther->Add(hMCd0D0ptNCotherPM);
2112 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2113 hd0D0VtxTrueptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2114 hd0D0VtxTrueptNCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2115 hd0D0VtxTrueptNCotherPM->SetYTitle("Entries");
2116 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherPM);
2119 strnamept.Append("SBMss_pt");
2122 strtitlept=titlehist;
2123 strtitlept.Append(" Side Bands, ");
2124 strtitlept+=fptbins[i];
2125 strtitlept.Append("<= pt <");
2126 strtitlept+=fptbins[i+1];
2127 strtitlept.Append(" [GeV/c]");
2129 hd0D0ptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2130 hd0D0ptNCotherSB->SetXTitle("Impact parameter [#mum] ");
2131 hd0D0ptNCotherSB->SetYTitle("Entries");
2132 flistNoCutsOther->Add(hd0D0ptNCotherSB);
2134 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2135 hMCd0D0ptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2136 hMCd0D0ptNCotherSB->SetXTitle("MC Impact parameter [#mum] ");
2137 hMCd0D0ptNCotherSB->SetYTitle("Entries");
2138 flistNoCutsOther->Add(hMCd0D0ptNCotherSB);
2140 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2141 hd0D0VtxTrueptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2142 hd0D0VtxTrueptNCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2143 hd0D0VtxTrueptNCotherSB->SetYTitle("Entries");
2144 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherSB);
2148 //################################################################################################
2150 // HISTOS FOR LOOSE CUTS #
2152 //################################################################################################
2154 //############ LOOSE CUTS SIGNAL HISTOGRAMS ###############
2156 // ####### global properties histo ############
2158 TH2F *hCPtaVSd0d0LSCsign=new TH2F("hCPtaVSd0d0LSCsign","hCPtaVSd0d0_LooseCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
2159 TH1F *hSecVtxZLSCsign=new TH1F("hSecVtxZLSCsign","hSecVtxZ_LooseCuts_Signal",1000,-8.,8.);
2160 TH1F *hSecVtxXLSCsign=new TH1F("hSecVtxXLSCsign","hSecVtxX_LooseCuts_Signal",1000,-3000.,3000.);
2161 TH1F *hSecVtxYLSCsign=new TH1F("hSecVtxYLSCsign","hSecVtxY_LooseCuts_Signal",1000,-3000.,3000.);
2162 TH2F *hSecVtxXYLSCsign=new TH2F("hSecVtxXYLSCsign","hSecVtxXY_LooseCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
2163 TH1F *hSecVtxPhiLSCsign=new TH1F("hSecVtxPhiLSCsign","hSecVtxPhi_LooseCuts_Signal",180,-180.1,180.1);
2164 TH1F *hd0singlTrackLSCsign=new TH1F("hd0singlTrackLSCsign","hd0singlTrackLooseCuts_Signal",1000,-5000.,5000.);
2165 TH1F *hCPtaLSCsign=new TH1F("hCPtaLSCsign","hCPta_LooseCuts_Signal",100,-1.,1.);
2166 TH1F *hd0xd0LSCsign=new TH1F("hd0xd0LSCsign","hd0xd0_LooseCuts_Signal",1000,-100000.,100000.);
2167 TH1F *hMassTrueLSCsign=new TH1F("hMassTrueLSCsign","D^{0} MC inv. Mass Loose Cuts Signal(All momenta)",600,1.600,2.200);
2168 TH1F *hMassLSCsign=new TH1F("hMassLSCsign","D^{0} inv. Mass Loose Cuts Signal (All momenta)",600,1.600,2.200);
2169 hMassLSCsign->Sumw2();
2170 TH1F *hMassTrueLSCsignPM=new TH1F("hMassTrueLSCsignPM","D^{0} MC inv. Mass Loose Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
2171 TH1F *hMassLSCsignPM=new TH1F("hMassLSCsignPM","D^{0} inv. Mass Loose Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
2172 hMassLSCsignPM->Sumw2();
2173 TH1F *hMassTrueLSCsignSB=new TH1F("hMassTrueLSCsignSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Signal(All momenta)",600,1.600,2.200);
2174 TH1F *hMassLSCsignSB=new TH1F("hMassLSCsignSB","D^{0} inv. Mass in Side Bands Loose Cuts Signal (All momenta)",600,1.600,2.200);
2175 hMassLSCsignSB->Sumw2();
2177 flistLsCutsSignal->Add(hCPtaVSd0d0LSCsign);
2178 flistLsCutsSignal->Add(hSecVtxZLSCsign);
2179 flistLsCutsSignal->Add(hSecVtxYLSCsign);
2180 flistLsCutsSignal->Add(hSecVtxXLSCsign);
2181 flistLsCutsSignal->Add(hSecVtxXYLSCsign);
2182 flistLsCutsSignal->Add(hSecVtxPhiLSCsign);
2183 flistLsCutsSignal->Add(hd0singlTrackLSCsign);
2184 flistLsCutsSignal->Add(hCPtaLSCsign);
2185 flistLsCutsSignal->Add(hd0xd0LSCsign);
2186 flistLsCutsSignal->Add(hMassTrueLSCsign);
2187 flistLsCutsSignal->Add(hMassLSCsign);
2188 flistLsCutsSignal->Add(hMassTrueLSCsignPM);
2189 flistLsCutsSignal->Add(hMassLSCsignPM);
2190 flistLsCutsSignal->Add(hMassTrueLSCsignSB);
2191 flistLsCutsSignal->Add(hMassLSCsignSB);
2194 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2195 TH1F *hdcaLSCsign=new TH1F("hdcaLSCsign","hdca_LooseCuts_Sign",100,0.,1000.);
2196 hdcaLSCsign->SetXTitle("dca [#mum]");
2197 hdcaLSCsign->SetYTitle("Entries");
2198 TH1F *hcosthetastarLSCsign=new TH1F("hcosthetastarLSCsign","hCosThetaStar_LooseCuts_Sign",50,-1.,1.);
2199 hcosthetastarLSCsign->SetXTitle("cos #theta^{*}");
2200 hcosthetastarLSCsign->SetYTitle("Entries");
2201 TH1F *hptD0LSCsign=new TH1F("hptD0LSCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2202 hptD0LSCsign->SetXTitle("p_{t} [GeV/c]");
2203 hptD0LSCsign->SetYTitle("Entries");
2204 TH1F *hptD0VsMaxPtLSCsign=new TH1F("hptD0VsMaxPtLSCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2205 TH2F *hptD0PTallsqrtLSCsign=new TH2F("hptD0PTallsqrtLSCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2206 TH2F *hptD0PTallLSCsign=new TH2F("hptD0PTallLSCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2207 TH2F *hptD0vsptBLSCsign=new TH2F("hptD0vsptBLSCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2208 TH2F *hpD0vspBLSCsign=new TH2F("hpD0vspBLSCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2209 TH2F *hptD0vsptcquarkLSCsign=new TH2F("hptD0vsptcquarkLSCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2210 TH2F *hpD0vspcquarkLSCsign=new TH2F("hpD0vspcquarkLSCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2211 flistLsCutsSignal->Add(hdcaLSCsign);
2212 flistLsCutsSignal->Add(hcosthetastarLSCsign);
2213 flistLsCutsSignal->Add(hptD0LSCsign);
2214 flistLsCutsSignal->Add(hptD0VsMaxPtLSCsign);
2215 flistLsCutsSignal->Add(hptD0PTallsqrtLSCsign);
2216 flistLsCutsSignal->Add(hptD0PTallLSCsign);
2217 flistLsCutsSignal->Add(hptD0vsptBLSCsign);
2218 flistLsCutsSignal->Add(hpD0vspBLSCsign);
2219 flistLsCutsSignal->Add(hptD0vsptcquarkLSCsign);
2220 flistLsCutsSignal->Add(hpD0vspcquarkLSCsign);
2222 TH1F *hd0zD0ptLSCsign;
2223 TH1F *hInvMassD0LSCsign,*hInvMassD0barLSCsign;
2224 TH2F *hInvMassPtLSCsign=new TH2F("hInvMassPtLSCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2225 THnSparseF *hSparseLSCsign=new THnSparseF("hSparseLSCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2226 hSparseLSCsign->SetBinEdges(0,massbins);
2227 hSparseLSCsign->SetBinEdges(1,massbins);
2228 hSparseLSCsign->SetBinEdges(2,ptbinsForNsparse);
2229 hSparseLSCsign->SetBinEdges(3,impparbins);
2230 hSparseLSCsign->SetBinEdges(4,massHypoBins);
2231 flistLsCutsSignal->Add(hSparseLSCsign);
2233 TH1F *hCosPDPBLSCsign;
2234 TH1F *hCosPcPDLSCsign;
2235 flistLsCutsSignal->Add(hInvMassPtLSCsign);
2237 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2238 TH2F *hd0D0VSd0xd0LSCsignpt;
2239 TH2F *hangletracksVSd0xd0LSCsignpt;
2240 TH2F *hangletracksVSd0D0LSCsignpt;
2241 TH1F *hd0xd0LSCsignpt;
2243 TH2F *hTOFpidLSCsign=new TH2F("hTOFpidLSCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2244 flistLsCutsSignal->Add(hTOFpidLSCsign);
2246 for(Int_t i=0;i<fnbins;i++){
2247 namehist="hd0zD0ptLSCsign_pt";
2249 titlehist="d0(z) Loose Cuts Signm ptbin=";
2251 hd0zD0ptLSCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2252 hd0zD0ptLSCsign->SetXTitle("d_{0}(z) [#mum]");
2253 hd0zD0ptLSCsign->SetYTitle("Entries");
2254 flistLsCutsSignal->Add(hd0zD0ptLSCsign);
2256 namehist="hInvMassD0LSCsign_pt";
2258 titlehist="Invariant Mass Loose Cuts Sign ptbin=";
2260 hInvMassD0LSCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2261 hInvMassD0LSCsign->SetXTitle("Invariant Mass [GeV]");
2262 hInvMassD0LSCsign->SetYTitle("Entries");
2263 flistLsCutsSignal->Add(hInvMassD0LSCsign);
2266 namehist="hInvMassD0barLSCsign_pt";
2268 titlehist="Invariant Mass D0bar Loose Cuts Signal ptbin=";
2270 hInvMassD0barLSCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2271 hInvMassD0barLSCsign->SetXTitle("Invariant Mass [GeV]");
2272 hInvMassD0barLSCsign->SetYTitle("Entries");
2273 flistLsCutsSignal->Add(hInvMassD0barLSCsign);
2275 namehist="hetaLSCsign_pt";
2277 titlehist="eta Loose Cuts Sign ptbin=";
2279 hetaLSCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2280 hetaLSCsign->SetXTitle("Pseudorapidity");
2281 hetaLSCsign->SetYTitle("Entries");
2282 flistLsCutsSignal->Add(hetaLSCsign);
2284 namehist="hCosPDPBLSCsign_pt";
2286 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2288 hCosPDPBLSCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2289 hCosPDPBLSCsign->SetXTitle("Cosine between D0 momentum and B momentum");
2290 hCosPDPBLSCsign->SetYTitle("Entries");
2291 flistLsCutsSignal->Add(hCosPDPBLSCsign);
2293 namehist="hCosPcPDLSCsign_pt";
2295 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2297 hCosPcPDLSCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2298 hCosPcPDLSCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
2299 hCosPcPDLSCsign->SetYTitle("Entries");
2300 flistLsCutsSignal->Add(hCosPcPDLSCsign);
2303 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2304 namehist="hd0xd0LSCsign_pt";
2306 titlehist="d0xd0 Loose Cuts Sign ptbin=";
2308 hd0xd0LSCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2309 hd0xd0LSCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2310 hd0xd0LSCsignpt->SetYTitle("Entries");
2311 flistLsCutsSignal->Add(hd0xd0LSCsignpt);
2314 namehist="hd0D0VSd0xd0LSCsign_pt";
2316 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Sign ptbin=";
2318 hd0D0VSd0xd0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2319 hd0D0VSd0xd0LSCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2320 hd0D0VSd0xd0LSCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2321 flistLsCutsSignal->Add(hd0D0VSd0xd0LSCsignpt);
2324 namehist="hangletracksVSd0xd0LSCsign_pt";
2326 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Sign ptbin=";
2328 hangletracksVSd0xd0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2329 hangletracksVSd0xd0LSCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2330 hangletracksVSd0xd0LSCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
2331 flistLsCutsSignal->Add(hangletracksVSd0xd0LSCsignpt);
2334 namehist="hangletracksVSd0D0LSCsign_pt";
2336 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Sign ptbin=";
2338 hangletracksVSd0D0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2339 hangletracksVSd0D0LSCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2340 hangletracksVSd0D0LSCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
2341 flistLsCutsSignal->Add(hangletracksVSd0D0LSCsignpt);
2345 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2346 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2349 // ####### d0 D0 histos ############
2350 TH1F *hd0D0LSCsignPM = new TH1F("hd0D0LSCsignPM","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2351 hd0D0LSCsignPM->SetXTitle("Impact parameter [#mum]");
2352 hd0D0LSCsignPM->SetYTitle("Entries");
2354 TH1F *hd0D0VtxTrueLSCsignPM = new TH1F("hd0D0VtxTrueLSCsignPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2355 hd0D0VtxTrueLSCsignPM->SetXTitle("Impact parameter [#mum]");
2356 hd0D0VtxTrueLSCsignPM->SetYTitle("Entries");
2358 TH1F *hMCd0D0LSCsignPM = new TH1F("hMCd0D0LSCsignPM","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2359 hMCd0D0LSCsignPM->SetXTitle("MC Impact parameter [#mum]");
2360 hMCd0D0LSCsignPM->SetYTitle("Entries");
2362 TH1F *hd0D0LSCsignSB = new TH1F("hd0D0LSCsignSB","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2363 hd0D0LSCsignSB->SetXTitle("Impact parameter [#mum]");
2364 hd0D0LSCsignSB->SetYTitle("Entries");
2366 TH1F *hd0D0VtxTrueLSCsignSB = new TH1F("hd0D0VtxTrueLSCsignSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2367 hd0D0VtxTrueLSCsignSB->SetXTitle("Impact parameter [#mum]");
2368 hd0D0VtxTrueLSCsignSB->SetYTitle("Entries");
2370 TH1F *hMCd0D0LSCsignSB = new TH1F("hMCd0D0LSCsignSB","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2371 hMCd0D0LSCsignSB->SetXTitle("MC Impact parameter [#mum]");
2372 hMCd0D0LSCsignSB->SetYTitle("Entries");
2374 flistLsCutsSignal->Add(hd0D0LSCsignPM);
2375 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignPM);
2376 flistLsCutsSignal->Add(hMCd0D0LSCsignPM);
2377 flistLsCutsSignal->Add(hd0D0LSCsignSB);
2378 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignSB);
2379 flistLsCutsSignal->Add(hMCd0D0LSCsignSB);
2381 TH1F *hd0D0ptLSCsignPM;
2382 TH1F *hMCd0D0ptLSCsignPM;
2383 TH1F *hd0D0VtxTrueptLSCsignPM;
2384 TH1F *hd0D0ptLSCsignSB;
2385 TH1F *hMCd0D0ptLSCsignSB;
2386 TH1F *hd0D0VtxTrueptLSCsignSB;
2387 namehist="hd0D0ptLSCsign_";
2388 titlehist="D^{0} impact par. plot, Loose Cuts, Signal, ";
2389 for(Int_t i=0;i<fnbins;i++){
2391 strnamept.Append("PkMss_pt");
2394 strtitlept=titlehist;
2395 strtitlept.Append(" Mass Peak, ");
2396 strtitlept+=fptbins[i];
2397 strtitlept.Append("<= pt <");
2398 strtitlept+=fptbins[i+1];
2399 strtitlept.Append(" [GeV/c]");
2401 hd0D0ptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2402 hd0D0ptLSCsignPM->SetXTitle("Impact parameter [#mum] ");
2403 hd0D0ptLSCsignPM->SetYTitle("Entries");
2404 flistLsCutsSignal->Add(hd0D0ptLSCsignPM);
2406 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2407 hMCd0D0ptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2408 hMCd0D0ptLSCsignPM->SetXTitle("MC Impact parameter [#mum] ");
2409 hMCd0D0ptLSCsignPM->SetYTitle("Entries");
2410 flistLsCutsSignal->Add(hMCd0D0ptLSCsignPM);
2413 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2414 hd0D0VtxTrueptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2415 hd0D0VtxTrueptLSCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2416 hd0D0VtxTrueptLSCsignPM->SetYTitle("Entries");
2417 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignPM);
2420 strnamept.Append("SBMss_pt");
2423 strtitlept=titlehist;
2424 strtitlept.Append(" Side Bands, ");
2425 strtitlept+=fptbins[i];
2426 strtitlept.Append("<= pt <");
2427 strtitlept+=fptbins[i+1];
2428 strtitlept.Append(" [GeV/c]");
2430 hd0D0ptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2431 hd0D0ptLSCsignSB->SetXTitle("Impact parameter [#mum] ");
2432 hd0D0ptLSCsignSB->SetYTitle("Entries");
2433 flistLsCutsSignal->Add(hd0D0ptLSCsignSB);
2435 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2436 hMCd0D0ptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2437 hMCd0D0ptLSCsignSB->SetXTitle("MC Impact parameter [#mum] ");
2438 hMCd0D0ptLSCsignSB->SetYTitle("Entries");
2439 flistLsCutsSignal->Add(hMCd0D0ptLSCsignSB);
2441 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2442 hd0D0VtxTrueptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2443 hd0D0VtxTrueptLSCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2444 hd0D0VtxTrueptLSCsignSB->SetYTitle("Entries");
2445 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignSB);
2449 //############ LOOSE CUTS BACKGROUND HISTOGRAMS ###########
2451 // ######## global properties histos #######
2452 TH2F *hCPtaVSd0d0LSCback=new TH2F("hCPtaVSd0d0LSCback","hCPtaVSd0d0_LooseCuts_Background",1000,-100000.,100000.,100,-1.,1.);
2453 TH1F *hSecVtxZLSCback=new TH1F("hSecVtxZLSCback","hSecVtxZ_LooseCuts_Background",1000,-8.,8.);
2454 TH1F *hSecVtxXLSCback=new TH1F("hSecVtxXLSCback","hSecVtxX_LooseCuts_Background",1000,-3000.,3000.);
2455 TH1F *hSecVtxYLSCback=new TH1F("hSecVtxYLSCback","hSecVtxY_LooseCuts_Background",1000,-3000.,3000.);
2456 TH2F *hSecVtxXYLSCback=new TH2F("hSecVtxXYLSCback","hSecVtxXY_LooseCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
2457 TH1F *hSecVtxPhiLSCback=new TH1F("hSecVtxPhiLSCback","hSecVtxPhi_LooseCuts_Background",180,-180.1,180.1);
2458 TH1F *hd0singlTrackLSCback=new TH1F("hd0singlTrackLSCback","hd0singlTrackLooseCuts_Back",1000,-5000.,5000.);
2459 TH1F *hCPtaLSCback=new TH1F("hCPtaLSCback","hCPta_LooseCuts_Background",100,-1.,1.);
2460 TH1F *hd0xd0LSCback=new TH1F("hd0xd0LSCback","hd0xd0_LooseCuts_Background",1000,-100000.,100000.);
2461 TH1F *hMassTrueLSCback=new TH1F("hMassTrueLSCback","D^{0} MC inv. Mass Loose Cuts Background(All momenta)",600,1.600,2.200);
2462 TH1F *hMassLSCback=new TH1F("hMassLSCback","D^{0} inv. Mass Loose Cuts Background (All momenta)",600,1.600,2.200);
2463 hMassLSCback->Sumw2();
2464 TH1F *hMassTrueLSCbackPM=new TH1F("hMassTrueLSCbackPM","D^{0} MC inv. Mass Loose Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
2465 TH1F *hMassLSCbackPM=new TH1F("hMassLSCbackPM","D^{0} inv. Mass Loose Cuts Background (All momenta), MassPeak",600,1.600,2.200);
2466 hMassLSCbackPM->Sumw2();
2467 TH1F *hMassTrueLSCbackSB=new TH1F("hMassTrueLSCbackSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Background(All momenta)",600,1.600,2.200);
2468 TH1F *hMassLSCbackSB=new TH1F("hMassLSCbackSB","D^{0} inv. Mass in Side Bands Loose Cuts Background (All momenta)",600,1.600,2.200);
2469 hMassLSCbackSB->Sumw2();
2471 flistLsCutsBack->Add(hCPtaVSd0d0LSCback);
2472 flistLsCutsBack->Add(hSecVtxZLSCback);
2473 flistLsCutsBack->Add(hSecVtxYLSCback);
2474 flistLsCutsBack->Add(hSecVtxXLSCback);
2475 flistLsCutsBack->Add(hSecVtxXYLSCback);
2476 flistLsCutsBack->Add(hSecVtxPhiLSCback);
2477 flistLsCutsBack->Add(hd0singlTrackLSCback);
2478 flistLsCutsBack->Add(hCPtaLSCback);
2479 flistLsCutsBack->Add(hd0xd0LSCback);
2480 flistLsCutsBack->Add(hMassTrueLSCback);
2481 flistLsCutsBack->Add(hMassLSCback);
2482 flistLsCutsBack->Add(hMassTrueLSCbackPM);
2483 flistLsCutsBack->Add(hMassLSCbackPM);
2484 flistLsCutsBack->Add(hMassTrueLSCbackSB);
2485 flistLsCutsBack->Add(hMassLSCbackSB);
2494 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2495 TH1F *hdcaLSCback=new TH1F("hdcaLSCback","hdca_LooseCuts_Backgr",100,0.,1000.);
2496 hdcaLSCback->SetXTitle("dca [#mum]");
2497 hdcaLSCback->SetYTitle("Entries");
2498 TH1F *hcosthetastarLSCback=new TH1F("hcosthetastarLSCback","hCosThetaStar_LooseCuts_Backgr",50,-1.,1.);
2499 hcosthetastarLSCback->SetXTitle("cos #theta^{*}");
2500 hcosthetastarLSCback->SetYTitle("Entries");
2501 TH1F *hptD0LSCback=new TH1F("hptD0LSCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2502 hptD0LSCback->SetXTitle("p_{t} [GeV/c]");
2503 hptD0LSCback->SetYTitle("Entries");
2504 TH1F *hptD0VsMaxPtLSCback=new TH1F("hptD0VsMaxPtLSCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2505 TH2F *hptD0PTallsqrtLSCback=new TH2F("hptD0PTallsqrtLSCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2506 TH2F *hptD0PTallLSCback=new TH2F("hptD0PTallLSCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2507 TH2F *hptD0vsptBLSCback=new TH2F("hptD0vsptBLSCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2508 TH2F *hpD0vspBLSCback=new TH2F("hpD0vspBLSCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2509 TH2F *hptD0vsptcquarkLSCback=new TH2F("hptD0vsptcquarkLSCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2510 TH2F *hpD0vspcquarkLSCback=new TH2F("hpD0vspcquarkLSCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2511 flistLsCutsBack->Add(hdcaLSCback);
2512 flistLsCutsBack->Add(hcosthetastarLSCback);
2513 flistLsCutsBack->Add(hptD0LSCback);
2514 flistLsCutsBack->Add(hptD0VsMaxPtLSCback);
2515 flistLsCutsBack->Add(hptD0PTallsqrtLSCback);
2516 flistLsCutsBack->Add(hptD0PTallLSCback);
2517 flistLsCutsBack->Add(hptD0vsptBLSCback);
2518 flistLsCutsBack->Add(hpD0vspBLSCback);
2519 flistLsCutsBack->Add(hptD0vsptcquarkLSCback);
2520 flistLsCutsBack->Add(hpD0vspcquarkLSCback);
2522 TH1F *hd0zD0ptLSCback;
2523 TH1F *hInvMassD0LSCback,*hInvMassD0barLSCback;
2524 TH2F *hInvMassPtLSCback=new TH2F("hInvMassPtLSCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2525 THnSparseF *hSparseLSCback=new THnSparseF("hSparseLSCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2526 hSparseLSCback->SetBinEdges(0,massbins);
2527 hSparseLSCback->SetBinEdges(1,massbins);
2528 hSparseLSCback->SetBinEdges(2,ptbinsForNsparse);
2529 hSparseLSCback->SetBinEdges(3,impparbins);
2530 hSparseLSCback->SetBinEdges(4,massHypoBins);
2531 flistLsCutsBack->Add(hSparseLSCback);
2533 TH1F *hCosPDPBLSCback;
2534 TH1F *hCosPcPDLSCback;
2535 flistLsCutsBack->Add(hInvMassPtLSCback);
2536 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2537 TH2F *hd0D0VSd0xd0LSCbackpt;
2538 TH2F *hangletracksVSd0xd0LSCbackpt;
2539 TH2F *hangletracksVSd0D0LSCbackpt;
2540 TH1F *hd0xd0LSCbackpt;
2542 TH2F *hTOFpidLSCback=new TH2F("hTOFpidLSCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2543 flistLsCutsBack->Add(hTOFpidLSCback);
2545 for(Int_t i=0;i<fnbins;i++){
2546 namehist="hd0zD0ptLSCback_pt";
2548 titlehist="d0(z) Loose Cuts Backgr ptbin=";
2550 hd0zD0ptLSCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2551 hd0zD0ptLSCback->SetXTitle("d_{0}(z) [#mum]");
2552 hd0zD0ptLSCback->SetYTitle("Entries");
2553 flistLsCutsBack->Add(hd0zD0ptLSCback);
2555 namehist="hInvMassD0LSCback_pt";
2557 titlehist="Invariant Mass Loose Cuts Backgr ptbin=";
2559 hInvMassD0LSCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2560 hInvMassD0LSCback->SetXTitle("Invariant Mass [GeV]");
2561 hInvMassD0LSCback->SetYTitle("Entries");
2562 flistLsCutsBack->Add(hInvMassD0LSCback);
2564 namehist="hInvMassD0barLSCback_pt";
2566 titlehist="Invariant Mass D0bar Loose Cuts Back ptbin=";
2568 hInvMassD0barLSCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2569 hInvMassD0barLSCback->SetXTitle("Invariant Mass [GeV]");
2570 hInvMassD0barLSCback->SetYTitle("Entries");
2571 flistLsCutsBack->Add(hInvMassD0barLSCback);
2574 namehist="hetaLSCback_pt";
2576 titlehist="eta Loose Cuts Backgr ptbin=";
2578 hetaLSCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2579 hetaLSCback->SetXTitle("Pseudorapidity");
2580 hetaLSCback->SetYTitle("Entries");
2581 flistLsCutsBack->Add(hetaLSCback);
2583 namehist="hCosPDPBLSCback_pt";
2585 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2587 hCosPDPBLSCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2588 hCosPDPBLSCback->SetXTitle("Cosine between D0 momentum and B momentum");
2589 hCosPDPBLSCback->SetYTitle("Entries");
2590 flistLsCutsBack->Add(hCosPDPBLSCback);
2592 namehist="hCosPcPDLSCback_pt";
2594 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2596 hCosPcPDLSCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2597 hCosPcPDLSCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
2598 hCosPcPDLSCback->SetYTitle("Entries");
2599 flistLsCutsBack->Add(hCosPcPDLSCback);
2601 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2602 namehist="hd0xd0LSCback_pt";
2604 titlehist="d0xd0 Loose Cuts Back ptbin=";
2606 hd0xd0LSCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2607 hd0xd0LSCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2608 hd0xd0LSCbackpt->SetYTitle("Entries");
2609 flistLsCutsBack->Add(hd0xd0LSCbackpt);
2612 namehist="hd0D0VSd0xd0LSCback_pt";
2614 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Back ptbin=";
2616 hd0D0VSd0xd0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2617 hd0D0VSd0xd0LSCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2618 hd0D0VSd0xd0LSCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2619 flistLsCutsBack->Add(hd0D0VSd0xd0LSCbackpt);
2622 namehist="hangletracksVSd0xd0LSCback_pt";
2624 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Back ptbin=";
2626 hangletracksVSd0xd0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2627 hangletracksVSd0xd0LSCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2628 hangletracksVSd0xd0LSCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
2629 flistLsCutsBack->Add(hangletracksVSd0xd0LSCbackpt);
2632 namehist="hangletracksVSd0D0LSCback_pt";
2634 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Back ptbin=";
2636 hangletracksVSd0D0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2637 hangletracksVSd0D0LSCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2638 hangletracksVSd0D0LSCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
2639 flistLsCutsBack->Add(hangletracksVSd0D0LSCbackpt);
2642 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2643 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2651 // ####### d0 D0 histos ############
2653 TH1F *hd0D0LSCbackPM = new TH1F("hd0D0LSCbackPM","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2654 hd0D0LSCbackPM->SetXTitle("Impact parameter [#mum]");
2655 hd0D0LSCbackPM->SetYTitle("Entries");
2657 TH1F *hd0D0VtxTrueLSCbackPM = new TH1F("hd0D0VtxTrueLSCbackPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2658 hd0D0VtxTrueLSCbackPM->SetXTitle("Impact parameter [#mum]");
2659 hd0D0VtxTrueLSCbackPM->SetYTitle("Entries");
2661 TH1F *hMCd0D0LSCbackPM = new TH1F("hMCd0D0LSCbackPM","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2662 hMCd0D0LSCbackPM->SetXTitle("MC Impact parameter [#mum]");
2663 hMCd0D0LSCbackPM->SetYTitle("Entries");
2665 TH1F *hd0D0LSCbackSB = new TH1F("hd0D0LSCbackSB","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2666 hd0D0LSCbackSB->SetXTitle("Impact parameter [#mum]");
2667 hd0D0LSCbackSB->SetYTitle("Entries");
2669 TH1F *hd0D0VtxTrueLSCbackSB = new TH1F("hd0D0VtxTrueLSCbackSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2670 hd0D0VtxTrueLSCbackSB->SetXTitle("Impact parameter [#mum]");
2671 hd0D0VtxTrueLSCbackSB->SetYTitle("Entries");
2673 TH1F *hMCd0D0LSCbackSB = new TH1F("hMCd0D0LSCbackSB","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2674 hMCd0D0LSCbackSB->SetXTitle("MC Impact parameter [#mum]");
2675 hMCd0D0LSCbackSB->SetYTitle("Entries");
2677 flistLsCutsBack->Add(hd0D0LSCbackPM);
2678 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackPM);
2679 flistLsCutsBack->Add(hMCd0D0LSCbackPM);
2680 flistLsCutsBack->Add(hd0D0LSCbackSB);
2681 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackSB);
2682 flistLsCutsBack->Add(hMCd0D0LSCbackSB);
2684 TH1F *hd0D0ptLSCbackPM;
2685 TH1F *hMCd0D0ptLSCbackPM;
2686 TH1F *hd0D0VtxTrueptLSCbackPM;
2687 TH1F *hd0D0ptLSCbackSB;
2688 TH1F *hMCd0D0ptLSCbackSB;
2689 TH1F *hd0D0VtxTrueptLSCbackSB;
2690 namehist="hd0D0ptLSCback_";
2691 titlehist="D^{0} impact par. plot, Loose Cuts, Background, ";
2692 for(Int_t i=0;i<fnbins;i++){
2694 strnamept.Append("PkMss_pt");
2697 strtitlept=titlehist;
2698 strtitlept.Append(" Mass Peak, ");
2699 strtitlept+=fptbins[i];
2700 strtitlept.Append("<= pt <");
2701 strtitlept+=fptbins[i+1];
2702 strtitlept.Append(" [GeV/c]");
2704 hd0D0ptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2705 hd0D0ptLSCbackPM->SetXTitle("Impact parameter [#mum] ");
2706 hd0D0ptLSCbackPM->SetYTitle("Entries");
2707 flistLsCutsBack->Add(hd0D0ptLSCbackPM);
2709 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2710 hMCd0D0ptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2711 hMCd0D0ptLSCbackPM->SetXTitle("MC Impact parameter [#mum] ");
2712 hMCd0D0ptLSCbackPM->SetYTitle("Entries");
2713 flistLsCutsBack->Add(hMCd0D0ptLSCbackPM);
2716 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2717 hd0D0VtxTrueptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2718 hd0D0VtxTrueptLSCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2719 hd0D0VtxTrueptLSCbackPM->SetYTitle("Entries");
2720 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackPM);
2723 strnamept.Append("SBMss_pt");
2726 strtitlept=titlehist;
2727 strtitlept.Append(" Side Bands, ");
2728 strtitlept+=fptbins[i];
2729 strtitlept.Append("<= pt <");
2730 strtitlept+=fptbins[i+1];
2731 strtitlept.Append(" [GeV/c]");
2733 hd0D0ptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2734 hd0D0ptLSCbackSB->SetXTitle("Impact parameter [#mum] ");
2735 hd0D0ptLSCbackSB->SetYTitle("Entries");
2736 flistLsCutsBack->Add(hd0D0ptLSCbackSB);
2738 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2739 hMCd0D0ptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2740 hMCd0D0ptLSCbackSB->SetXTitle("MC Impact parameter [#mum] ");
2741 hMCd0D0ptLSCbackSB->SetYTitle("Entries");
2742 flistLsCutsBack->Add(hMCd0D0ptLSCbackSB);
2744 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2745 hd0D0VtxTrueptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2746 hd0D0VtxTrueptLSCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2747 hd0D0VtxTrueptLSCbackSB->SetYTitle("Entries");
2748 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackSB);
2753 //############ LOOSE CUTS FROMB HISTOGRAMS ###########
2755 //####### global properties histos
2757 TH2F *hCPtaVSd0d0LSCfromB=new TH2F("hCPtaVSd0d0LSCfromB","hCPtaVSd0d0_LooseCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
2758 TH1F *hSecVtxZLSCfromB=new TH1F("hSecVtxZLSCfromB","hSecVtxZ_LooseCuts_FromB",1000,-8.,8.);
2759 TH1F *hSecVtxXLSCfromB=new TH1F("hSecVtxXLSCfromB","hSecVtxX_LooseCuts_FromB",1000,-3000.,3000.);
2760 TH1F *hSecVtxYLSCfromB=new TH1F("hSecVtxYLSCfromB","hSecVtxY_LooseCuts_FromB",1000,-3000.,3000.);
2761 TH2F *hSecVtxXYLSCfromB=new TH2F("hSecVtxXYLSCfromB","hSecVtxXY_LooseCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
2762 TH1F *hSecVtxPhiLSCfromB=new TH1F("hSecVtxPhiLSCfromB","hSecVtxPhi_LooseCuts_FromB",180,-180.1,180.1);
2763 TH1F *hd0singlTrackLSCfromB=new TH1F("hd0singlTrackLSCfromB","hd0singlTrackLooseCuts_FromB",1000,-5000.,5000.);
2764 TH1F *hCPtaLSCfromB=new TH1F("hCPtaLSCfromB","hCPta_LooseCuts_FromB",100,-1.,1.);
2765 TH1F *hd0xd0LSCfromB=new TH1F("hd0xd0LSCfromB","hd0xd0_LooseCuts_FromB",1000,-100000.,100000.);
2766 TH1F *hMassTrueLSCfromB=new TH1F("hMassTrueLSCfromB","D^{0} MC inv. Mass Loose Cuts FromB(All momenta)",600,1.600,2.200);
2767 TH1F *hMassLSCfromB=new TH1F("hMassLSCfromB","D^{0} inv. Mass Loose Cuts FromB (All momenta)",600,1.600,2.200);
2768 hMassLSCfromB->Sumw2();
2769 TH1F *hMassTrueLSCfromBPM=new TH1F("hMassTrueLSCfromBPM","D^{0} MC inv. Mass Loose Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
2770 TH1F *hMassLSCfromBPM=new TH1F("hMassLSCfromBPM","D^{0} inv. Mass Loose Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
2771 hMassLSCfromBPM->Sumw2();
2772 TH1F *hMassTrueLSCfromBSB=new TH1F("hMassTrueLSCfromBSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromB(All momenta)",600,1.600,2.200);
2773 TH1F *hMassLSCfromBSB=new TH1F("hMassLSCfromBSB","D^{0} inv. Mass in Side Bands Loose Cuts FromB (All momenta)",600,1.600,2.200);
2774 hMassLSCfromBSB->Sumw2();
2776 flistLsCutsFromB->Add(hCPtaVSd0d0LSCfromB);
2777 flistLsCutsFromB->Add(hSecVtxZLSCfromB);
2778 flistLsCutsFromB->Add(hSecVtxYLSCfromB);
2779 flistLsCutsFromB->Add(hSecVtxXLSCfromB);
2780 flistLsCutsFromB->Add(hSecVtxXYLSCfromB);
2781 flistLsCutsFromB->Add(hSecVtxPhiLSCfromB);
2782 flistLsCutsFromB->Add(hd0singlTrackLSCfromB);
2783 flistLsCutsFromB->Add(hCPtaLSCfromB);
2784 flistLsCutsFromB->Add(hd0xd0LSCfromB);
2785 flistLsCutsFromB->Add(hMassTrueLSCfromB);
2786 flistLsCutsFromB->Add(hMassLSCfromB);
2787 flistLsCutsFromB->Add(hMassTrueLSCfromBPM);
2788 flistLsCutsFromB->Add(hMassLSCfromBPM);
2789 flistLsCutsFromB->Add(hMassTrueLSCfromBSB);
2790 flistLsCutsFromB->Add(hMassLSCfromBSB);
2795 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2796 TH1F *hdcaLSCfromB=new TH1F("hdcaLSCfromB","hdca_LooseCuts_FromB",100,0.,1000.);
2797 hdcaLSCfromB->SetXTitle("dca [#mum]");
2798 hdcaLSCfromB->SetYTitle("Entries");
2799 TH1F *hcosthetastarLSCfromB=new TH1F("hcosthetastarLSCfromB","hCosThetaStar_LooseCuts_FromB",50,-1.,1.);
2800 hcosthetastarLSCfromB->SetXTitle("cos #theta^{*}");
2801 hcosthetastarLSCfromB->SetYTitle("Entries");
2802 TH1F *hptD0LSCfromB=new TH1F("hptD0LSCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2803 hptD0LSCfromB->SetXTitle("p_{t} [GeV/c]");
2804 hptD0LSCfromB->SetYTitle("Entries");
2805 TH1F *hptD0VsMaxPtLSCfromB=new TH1F("hptD0VsMaxPtLSCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2806 TH2F *hptD0PTallsqrtLSCfromB=new TH2F("hptD0PTallsqrtLSCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2807 TH2F *hptD0PTallLSCfromB=new TH2F("hptD0PTallLSCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2808 TH2F *hptD0vsptBLSCfromB=new TH2F("hptD0vsptBLSCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2809 TH2F *hpD0vspBLSCfromB=new TH2F("hpD0vspBLSCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2810 TH2F *hptD0vsptcquarkLSCfromB=new TH2F("hptD0vsptcquarkLSCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2811 TH2F *hpD0vspcquarkLSCfromB=new TH2F("hpD0vspcquarkLSCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2812 flistLsCutsFromB->Add(hdcaLSCfromB);
2813 flistLsCutsFromB->Add(hcosthetastarLSCfromB);
2814 flistLsCutsFromB->Add(hptD0LSCfromB);
2815 flistLsCutsFromB->Add(hptD0VsMaxPtLSCfromB);
2816 flistLsCutsFromB->Add(hptD0PTallsqrtLSCfromB);
2817 flistLsCutsFromB->Add(hptD0PTallLSCfromB);
2818 flistLsCutsFromB->Add(hptD0vsptBLSCfromB);
2819 flistLsCutsFromB->Add(hpD0vspBLSCfromB);
2820 flistLsCutsFromB->Add(hptD0vsptcquarkLSCfromB);
2821 flistLsCutsFromB->Add(hpD0vspcquarkLSCfromB);
2823 TH1F *hd0zD0ptLSCfromB;
2824 TH1F *hInvMassD0LSCfromB,*hInvMassD0barLSCfromB;
2825 TH2F *hInvMassPtLSCfromB=new TH2F("hInvMassPtLSCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2826 THnSparseF *hSparseLSCfromB=new THnSparseF("hSparseLSCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2827 hSparseLSCfromB->SetBinEdges(0,massbins);
2828 hSparseLSCfromB->SetBinEdges(1,massbins);
2829 hSparseLSCfromB->SetBinEdges(2,ptbinsForNsparse);
2830 hSparseLSCfromB->SetBinEdges(3,impparbins);
2831 hSparseLSCfromB->SetBinEdges(4,massHypoBins);
2832 flistLsCutsFromB->Add(hSparseLSCfromB);
2834 TH1F *hCosPDPBLSCfromB;
2835 TH1F *hCosPcPDLSCfromB;
2836 flistLsCutsFromB->Add(hInvMassPtLSCfromB);
2837 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2838 TH2F *hd0D0VSd0xd0LSCfromBpt;
2839 TH2F *hangletracksVSd0xd0LSCfromBpt;
2840 TH2F *hangletracksVSd0D0LSCfromBpt;
2841 TH1F *hd0xd0LSCfromBpt;
2844 TH2F *hTOFpidLSCfromB=new TH2F("hTOFpidLSCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2845 flistLsCutsFromB->Add(hTOFpidLSCfromB);
2847 for(Int_t i=0;i<fnbins;i++){
2848 namehist="hd0zD0ptLSCfromB_pt";
2850 titlehist="d0(z) Loose Cuts FromBm ptbin=";
2852 hd0zD0ptLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2853 hd0zD0ptLSCfromB->SetXTitle("d_{0}(z) [#mum]");
2854 hd0zD0ptLSCfromB->SetYTitle("Entries");
2855 flistLsCutsFromB->Add(hd0zD0ptLSCfromB);
2857 namehist="hInvMassD0LSCfromB_pt";
2859 titlehist="Invariant Mass Loose Cuts FromB ptbin=";
2861 hInvMassD0LSCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2862 hInvMassD0LSCfromB->SetXTitle("Invariant Mass [GeV]");
2863 hInvMassD0LSCfromB->SetYTitle("Entries");
2864 flistLsCutsFromB->Add(hInvMassD0LSCfromB);
2866 namehist="hInvMassD0barLSCfromB_pt";
2868 titlehist="Invariant Mass D0bar Loose Cuts FromB ptbin=";
2870 hInvMassD0barLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2871 hInvMassD0barLSCfromB->SetXTitle("Invariant Mass [GeV]");
2872 hInvMassD0barLSCfromB->SetYTitle("Entries");
2873 flistLsCutsFromB->Add(hInvMassD0barLSCfromB);
2875 namehist="hetaLSCfromB_pt";
2877 titlehist="eta Loose Cuts FromB ptbin=";
2879 hetaLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2880 hetaLSCfromB->SetXTitle("Pseudorapidity");
2881 hetaLSCfromB->SetYTitle("Entries");
2882 flistLsCutsFromB->Add(hetaLSCfromB);
2884 namehist="hCosPDPBLSCfromB_pt";
2886 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2888 hCosPDPBLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2889 hCosPDPBLSCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
2890 hCosPDPBLSCfromB->SetYTitle("Entries");
2891 flistLsCutsFromB->Add(hCosPDPBLSCfromB);
2893 namehist="hCosPcPDLSCfromB_pt";
2895 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2897 hCosPcPDLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2898 hCosPcPDLSCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
2899 hCosPcPDLSCfromB->SetYTitle("Entries");
2900 flistLsCutsFromB->Add(hCosPcPDLSCfromB);
2902 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2903 namehist="hd0xd0LSCfromB_pt";
2905 titlehist="d0xd0 Loose Cuts FromB ptbin=";
2907 hd0xd0LSCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2908 hd0xd0LSCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2909 hd0xd0LSCfromBpt->SetYTitle("Entries");
2910 flistLsCutsFromB->Add(hd0xd0LSCfromBpt);
2913 namehist="hd0D0VSd0xd0LSCfromB_pt";
2915 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromB ptbin=";
2917 hd0D0VSd0xd0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2918 hd0D0VSd0xd0LSCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2919 hd0D0VSd0xd0LSCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2920 flistLsCutsFromB->Add(hd0D0VSd0xd0LSCfromBpt);
2923 namehist="hangletracksVSd0xd0LSCfromB_pt";
2925 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromB ptbin=";
2927 hangletracksVSd0xd0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2928 hangletracksVSd0xd0LSCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2929 hangletracksVSd0xd0LSCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
2930 flistLsCutsFromB->Add(hangletracksVSd0xd0LSCfromBpt);
2933 namehist="hangletracksVSd0D0LSCfromB_pt";
2935 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts FromB ptbin=";
2937 hangletracksVSd0D0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2938 hangletracksVSd0D0LSCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2939 hangletracksVSd0D0LSCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
2940 flistLsCutsFromB->Add(hangletracksVSd0D0LSCfromBpt);
2943 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2944 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2950 // ######### d0 D0 histos ##############
2951 TH1F *hd0D0LSCfromBPM = new TH1F("hd0D0LSCfromBPM","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2952 hd0D0LSCfromBPM->SetXTitle("Impact parameter [#mum]");
2953 hd0D0LSCfromBPM->SetYTitle("Entries");
2955 TH1F *hd0D0VtxTrueLSCfromBPM = new TH1F("hd0D0VtxTrueLSCfromBPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2956 hd0D0VtxTrueLSCfromBPM->SetXTitle("Impact parameter [#mum]");
2957 hd0D0VtxTrueLSCfromBPM->SetYTitle("Entries");
2959 TH1F *hMCd0D0LSCfromBPM = new TH1F("hMCd0D0LSCfromBPM","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2960 hMCd0D0LSCfromBPM->SetXTitle("MC Impact parameter [#mum]");
2961 hMCd0D0LSCfromBPM->SetYTitle("Entries");
2963 TH1F *hd0D0LSCfromBSB = new TH1F("hd0D0LSCfromBSB","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2964 hd0D0LSCfromBSB->SetXTitle("Impact parameter [#mum]");
2965 hd0D0LSCfromBSB->SetYTitle("Entries");
2967 TH1F *hd0D0VtxTrueLSCfromBSB = new TH1F("hd0D0VtxTrueLSCfromBSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2968 hd0D0VtxTrueLSCfromBSB->SetXTitle("Impact parameter [#mum]");
2969 hd0D0VtxTrueLSCfromBSB->SetYTitle("Entries");
2971 TH1F *hMCd0D0LSCfromBSB = new TH1F("hMCd0D0LSCfromBSB","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2972 hMCd0D0LSCfromBSB->SetXTitle("MC Impact parameter [#mum]");
2973 hMCd0D0LSCfromBSB->SetYTitle("Entries");
2975 flistLsCutsFromB->Add(hd0D0LSCfromBPM);
2976 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBPM);
2977 flistLsCutsFromB->Add(hMCd0D0LSCfromBPM);
2978 flistLsCutsFromB->Add(hd0D0LSCfromBSB);
2979 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBSB);
2980 flistLsCutsFromB->Add(hMCd0D0LSCfromBSB);
2982 TH1F *hd0D0ptLSCfromBPM;
2983 TH1F *hMCd0D0ptLSCfromBPM;
2984 TH1F *hd0D0VtxTrueptLSCfromBPM;
2985 TH1F *hd0D0ptLSCfromBSB;
2986 TH1F *hMCd0D0ptLSCfromBSB;
2987 TH1F *hd0D0VtxTrueptLSCfromBSB;
2988 namehist="hd0D0ptLSCfromB_";
2989 titlehist="D^{0} impact par. plot, Loose Cuts, FromB, ";
2990 for(Int_t i=0;i<fnbins;i++){
2992 strnamept.Append("PkMss_pt");
2995 strtitlept=titlehist;
2996 strtitlept.Append(" Mass Peak, ");
2997 strtitlept+=fptbins[i];
2998 strtitlept.Append("<= pt <");
2999 strtitlept+=fptbins[i+1];
3000 strtitlept.Append(" [GeV/c]");
3002 hd0D0ptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3003 hd0D0ptLSCfromBPM->SetXTitle("Impact parameter [#mum] ");
3004 hd0D0ptLSCfromBPM->SetYTitle("Entries");
3005 flistLsCutsFromB->Add(hd0D0ptLSCfromBPM);
3007 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3008 hMCd0D0ptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3009 hMCd0D0ptLSCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
3010 hMCd0D0ptLSCfromBPM->SetYTitle("Entries");
3011 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBPM);
3014 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3015 hd0D0VtxTrueptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3016 hd0D0VtxTrueptLSCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3017 hd0D0VtxTrueptLSCfromBPM->SetYTitle("Entries");
3018 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBPM);
3021 strnamept.Append("SBMss_pt");
3024 strtitlept=titlehist;
3025 strtitlept.Append(" Side Bands, ");
3026 strtitlept+=fptbins[i];
3027 strtitlept.Append("<= pt <");
3028 strtitlept+=fptbins[i+1];
3029 strtitlept.Append(" [GeV/c]");
3031 hd0D0ptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3032 hd0D0ptLSCfromBSB->SetXTitle("Impact parameter [#mum] ");
3033 hd0D0ptLSCfromBSB->SetYTitle("Entries");
3034 flistLsCutsFromB->Add(hd0D0ptLSCfromBSB);
3036 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3037 hMCd0D0ptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3038 hMCd0D0ptLSCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
3039 hMCd0D0ptLSCfromBSB->SetYTitle("Entries");
3040 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBSB);
3042 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3043 hd0D0VtxTrueptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3044 hd0D0VtxTrueptLSCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3045 hd0D0VtxTrueptLSCfromBSB->SetYTitle("Entries");
3046 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBSB);
3051 //############ LOOSE CUTS FROM DSTAR HISTOGRAMS ###########
3053 //############## global properties histos
3054 TH2F *hCPtaVSd0d0LSCfromDstar=new TH2F("hCPtaVSd0d0LSCfromDstar","hCPtaVSd0d0_LooseCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
3055 TH1F *hSecVtxZLSCfromDstar=new TH1F("hSecVtxZLSCfromDstar","hSecVtxZ_LooseCuts_FromDStar",1000,-8.,8.);
3056 TH1F *hSecVtxXLSCfromDstar=new TH1F("hSecVtxXLSCfromDstar","hSecVtxX_LooseCuts_FromDStar",1000,-3000.,3000.);
3057 TH1F *hSecVtxYLSCfromDstar=new TH1F("hSecVtxYLSCfromDstar","hSecVtxY_LooseCuts_FromDStar",1000,-3000.,3000.);
3058 TH2F *hSecVtxXYLSCfromDstar=new TH2F("hSecVtxXYLSCfromDstar","hSecVtxXY_LooseCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
3059 TH1F *hSecVtxPhiLSCfromDstar=new TH1F("hSecVtxPhiLSCfromDstar","hSecVtxPhi_LooseCuts_FromDStar",180,-180.1,180.1);
3060 TH1F *hd0singlTrackLSCfromDstar=new TH1F("hd0singlTrackLSCfromDstar","hd0singlTrackLooseCuts_FromDstar",1000,-5000.,5000.);
3061 TH1F *hCPtaLSCfromDstar=new TH1F("hCPtaLSCfromDstar","hCPta_LooseCuts_FromDStar",100,-1.,1.);
3062 TH1F *hd0xd0LSCfromDstar=new TH1F("hd0xd0LSCfromDstar","hd0xd0_LooseCuts_FromDStar",1000,-100000.,100000.);
3063 TH1F *hMassTrueLSCfromDstar=new TH1F("hMassTrueLSCfromDstar","D^{0} MC inv. Mass Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
3064 TH1F *hMassLSCfromDstar=new TH1F("hMassLSCfromDstar","D^{0} inv. Mass Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
3065 hMassLSCfromDstar->Sumw2();
3066 TH1F *hMassTrueLSCfromDstarPM=new TH1F("hMassTrueLSCfromDstarPM","D^{0} MC inv. Mass Loose Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
3067 TH1F *hMassLSCfromDstarPM=new TH1F("hMassLSCfromDstarPM","D^{0} inv. Mass Loose Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
3068 hMassLSCfromDstarPM->Sumw2();
3069 TH1F *hMassTrueLSCfromDstarSB=new TH1F("hMassTrueLSCfromDstarSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
3070 TH1F *hMassLSCfromDstarSB=new TH1F("hMassLSCfromDstarSB","D^{0} inv. Mass in Side Bands Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
3071 hMassLSCfromDstarSB->Sumw2();
3073 flistLsCutsFromDstar->Add(hCPtaVSd0d0LSCfromDstar);
3074 flistLsCutsFromDstar->Add(hSecVtxZLSCfromDstar);
3075 flistLsCutsFromDstar->Add(hSecVtxYLSCfromDstar);
3076 flistLsCutsFromDstar->Add(hSecVtxXLSCfromDstar);
3077 flistLsCutsFromDstar->Add(hSecVtxXYLSCfromDstar);
3078 flistLsCutsFromDstar->Add(hSecVtxPhiLSCfromDstar);
3079 flistLsCutsFromDstar->Add(hd0singlTrackLSCfromDstar);
3080 flistLsCutsFromDstar->Add(hCPtaLSCfromDstar);
3081 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstar);
3082 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstar);
3083 flistLsCutsFromDstar->Add(hMassLSCfromDstar);
3084 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarPM);
3085 flistLsCutsFromDstar->Add(hMassLSCfromDstarPM);
3086 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarSB);
3087 flistLsCutsFromDstar->Add(hMassLSCfromDstarSB);
3095 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3096 TH1F *hdcaLSCfromDstar=new TH1F("hdcaLSCfromDstar","hdca_LooseCuts_FromDstar",100,0.,1000.);
3097 hdcaLSCfromDstar->SetXTitle("dca [#mum]");
3098 hdcaLSCfromDstar->SetYTitle("Entries");
3099 TH1F *hcosthetastarLSCfromDstar=new TH1F("hcosthetastarLSCfromDstar","hCosThetaStar_LooseCuts_FromDstar",50,-1.,1.);
3100 hcosthetastarLSCfromDstar->SetXTitle("cos #theta^{*}");
3101 hcosthetastarLSCfromDstar->SetYTitle("Entries");
3102 TH1F *hptD0LSCfromDstar=new TH1F("hptD0LSCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3103 hptD0LSCfromDstar->SetXTitle("p_{t} [GeV/c]");
3104 hptD0LSCfromDstar->SetYTitle("Entries");
3105 TH1F *hptD0VsMaxPtLSCfromDstar=new TH1F("hptD0VsMaxPtLSCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3106 TH2F *hptD0PTallsqrtLSCfromDstar=new TH2F("hptD0PTallsqrtLSCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3107 TH2F *hptD0PTallLSCfromDstar=new TH2F("hptD0PTallLSCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3108 TH2F *hptD0vsptBLSCfromDstar=new TH2F("hptD0vsptBLSCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3109 TH2F *hpD0vspBLSCfromDstar=new TH2F("hpD0vspBLSCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3110 TH2F *hptD0vsptcquarkLSCfromDstar=new TH2F("hptD0vsptcquarkLSCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3111 TH2F *hpD0vspcquarkLSCfromDstar=new TH2F("hpD0vspcquarkLSCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3112 flistLsCutsFromDstar->Add(hdcaLSCfromDstar);
3113 flistLsCutsFromDstar->Add(hcosthetastarLSCfromDstar);
3114 flistLsCutsFromDstar->Add(hptD0LSCfromDstar);
3115 flistLsCutsFromDstar->Add(hptD0VsMaxPtLSCfromDstar);
3116 flistLsCutsFromDstar->Add(hptD0PTallsqrtLSCfromDstar);
3117 flistLsCutsFromDstar->Add(hptD0PTallLSCfromDstar);
3118 flistLsCutsFromDstar->Add(hptD0vsptBLSCfromDstar);
3119 flistLsCutsFromDstar->Add(hpD0vspBLSCfromDstar);
3120 flistLsCutsFromDstar->Add(hptD0vsptcquarkLSCfromDstar);
3121 flistLsCutsFromDstar->Add(hpD0vspcquarkLSCfromDstar);
3123 TH1F *hd0zD0ptLSCfromDstar;
3124 TH1F *hInvMassD0LSCfromDstar,*hInvMassD0barLSCfromDstar;
3125 TH2F *hInvMassPtLSCfromDstar=new TH2F("hInvMassPtLSCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3126 THnSparseF *hSparseLSCfromDstar=new THnSparseF("hSparseLSCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3127 hSparseLSCfromDstar->SetBinEdges(0,massbins);
3128 hSparseLSCfromDstar->SetBinEdges(1,massbins);
3129 hSparseLSCfromDstar->SetBinEdges(2,ptbinsForNsparse);
3130 hSparseLSCfromDstar->SetBinEdges(3,impparbins);
3131 hSparseLSCfromDstar->SetBinEdges(4,massHypoBins);
3132 flistLsCutsFromDstar->Add(hSparseLSCfromDstar);
3133 TH1F *hetaLSCfromDstar;
3134 TH1F *hCosPDPBLSCfromDstar;
3135 TH1F *hCosPcPDLSCfromDstar;
3136 flistLsCutsFromDstar->Add(hInvMassPtLSCfromDstar);
3137 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3138 TH2F *hd0D0VSd0xd0LSCfromDstarpt;
3139 TH2F *hangletracksVSd0xd0LSCfromDstarpt;
3140 TH2F *hangletracksVSd0D0LSCfromDstarpt;
3141 TH1F *hd0xd0LSCfromDstarpt;
3143 TH2F *hTOFpidLSCfromDstar=new TH2F("hTOFpidLSCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3144 flistLsCutsFromDstar->Add(hTOFpidLSCfromDstar);
3146 for(Int_t i=0;i<fnbins;i++){
3147 namehist="hd0zD0ptLSCfromDstar_pt";
3149 titlehist="d0(z) Loose Cuts FromDstarm ptbin=";
3151 hd0zD0ptLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3152 hd0zD0ptLSCfromDstar->SetXTitle("d_{0}(z) [#mum]");
3153 hd0zD0ptLSCfromDstar->SetYTitle("Entries");
3154 flistLsCutsFromDstar->Add(hd0zD0ptLSCfromDstar);
3156 namehist="hInvMassD0LSCfromDstar_pt";
3158 titlehist="Invariant Mass Loose Cuts FromDstar ptbin=";
3160 hInvMassD0LSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3161 hInvMassD0LSCfromDstar->SetXTitle("Invariant Mass [GeV]");
3162 hInvMassD0LSCfromDstar->SetYTitle("Entries");
3163 flistLsCutsFromDstar->Add(hInvMassD0LSCfromDstar);
3165 namehist="hInvMassD0barLSCfromDstar_pt";
3167 titlehist="Invariant Mass D0bar Loose Cuts FromDstar ptbin=";
3169 hInvMassD0barLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3170 hInvMassD0barLSCfromDstar->SetXTitle("Invariant Mass [GeV]");
3171 hInvMassD0barLSCfromDstar->SetYTitle("Entries");
3172 flistLsCutsFromDstar->Add(hInvMassD0barLSCfromDstar);
3174 namehist="hetaLSCfromDstar_pt";
3176 titlehist="eta Loose Cuts FromDstar ptbin=";
3178 hetaLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3179 hetaLSCfromDstar->SetXTitle("Pseudorapidity");
3180 hetaLSCfromDstar->SetYTitle("Entries");
3181 flistLsCutsFromDstar->Add(hetaLSCfromDstar);
3183 namehist="hCosPDPBLSCfromDstar_pt";
3185 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3187 hCosPDPBLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3188 hCosPDPBLSCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
3189 hCosPDPBLSCfromDstar->SetYTitle("Entries");
3190 flistLsCutsFromDstar->Add(hCosPDPBLSCfromDstar);
3192 namehist="hCosPcPDLSCfromDstar_pt";
3194 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3196 hCosPcPDLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3197 hCosPcPDLSCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
3198 hCosPcPDLSCfromDstar->SetYTitle("Entries");
3199 flistLsCutsFromDstar->Add(hCosPcPDLSCfromDstar);
3201 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3202 namehist="hd0xd0LSCfromDstar_pt";
3204 titlehist="d0xd0 Loose Cuts FromDstar ptbin=";
3206 hd0xd0LSCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3207 hd0xd0LSCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3208 hd0xd0LSCfromDstarpt->SetYTitle("Entries");
3209 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstarpt);
3212 namehist="hd0D0VSd0xd0LSCfromDstar_pt";
3214 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromDstar ptbin=";
3216 hd0D0VSd0xd0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3217 hd0D0VSd0xd0LSCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3218 hd0D0VSd0xd0LSCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3219 flistLsCutsFromDstar->Add(hd0D0VSd0xd0LSCfromDstarpt);
3222 namehist="hangletracksVSd0xd0LSCfromDstar_pt";
3224 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromDstar ptbin=";
3226 hangletracksVSd0xd0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3227 hangletracksVSd0xd0LSCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3228 hangletracksVSd0xd0LSCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
3229 flistLsCutsFromDstar->Add(hangletracksVSd0xd0LSCfromDstarpt);
3232 namehist="hangletracksVSd0D0LSCfromDstar_pt";
3234 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts FromDstar ptbin=";
3236 hangletracksVSd0D0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3237 hangletracksVSd0D0LSCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3238 hangletracksVSd0D0LSCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
3239 flistLsCutsFromDstar->Add(hangletracksVSd0D0LSCfromDstarpt);
3243 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3244 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3251 //########## d0 D0 histos #############
3252 TH1F *hd0D0LSCfromDstPM = new TH1F("hd0D0LSCfromDstarPM","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3253 hd0D0LSCfromDstPM->SetXTitle("Impact parameter [#mum]");
3254 hd0D0LSCfromDstPM->SetYTitle("Entries");
3256 TH1F *hd0D0VtxTrueLSCfromDstPM = new TH1F("hd0D0VtxTrueLSCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3257 hd0D0VtxTrueLSCfromDstPM->SetXTitle("Impact parameter [#mum]");
3258 hd0D0VtxTrueLSCfromDstPM->SetYTitle("Entries");
3260 TH1F *hMCd0D0LSCfromDstPM = new TH1F("hMCd0D0LSCfromDstarPM","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3261 hMCd0D0LSCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
3262 hMCd0D0LSCfromDstPM->SetYTitle("Entries");
3264 TH1F *hd0D0LSCfromDstSB = new TH1F("hd0D0LSCfromDstarSB","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3265 hd0D0LSCfromDstSB->SetXTitle("Impact parameter [#mum]");
3266 hd0D0LSCfromDstSB->SetYTitle("Entries");
3268 TH1F *hd0D0VtxTrueLSCfromDstSB = new TH1F("hd0D0VtxTrueLSCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3269 hd0D0VtxTrueLSCfromDstSB->SetXTitle("Impact parameter [#mum]");
3270 hd0D0VtxTrueLSCfromDstSB->SetYTitle("Entries");
3272 TH1F *hMCd0D0LSCfromDstSB = new TH1F("hMCd0D0LSCfromDstarSB","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3273 hMCd0D0LSCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
3274 hMCd0D0LSCfromDstSB->SetYTitle("Entries");
3276 flistLsCutsFromDstar->Add(hd0D0LSCfromDstPM);
3277 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstPM);
3278 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstPM);
3279 flistLsCutsFromDstar->Add(hd0D0LSCfromDstSB);
3280 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstSB);
3281 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstSB);
3283 TH1F *hd0D0ptLSCfromDstPM;
3284 TH1F *hMCd0D0ptLSCfromDstPM;
3285 TH1F *hd0D0VtxTrueptLSCfromDstPM;
3286 TH1F *hd0D0ptLSCfromDstSB;
3287 TH1F *hMCd0D0ptLSCfromDstSB;
3288 TH1F *hd0D0VtxTrueptLSCfromDstSB;
3289 namehist="hd0D0ptLSCfromDstar_";
3290 titlehist="D^{0} impact par. plot, Loose Cuts, FromDStar, ";
3291 for(Int_t i=0;i<fnbins;i++){
3293 strnamept.Append("PkMss_pt");
3296 strtitlept=titlehist;
3297 strtitlept.Append(" Mass Peak, ");
3298 strtitlept+=fptbins[i];
3299 strtitlept.Append("<= pt <");
3300 strtitlept+=fptbins[i+1];
3301 strtitlept.Append(" [GeV/c]");
3303 hd0D0ptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3304 hd0D0ptLSCfromDstPM->SetXTitle("Impact parameter [#mum] ");
3305 hd0D0ptLSCfromDstPM->SetYTitle("Entries");
3306 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstPM);
3308 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3309 hMCd0D0ptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3310 hMCd0D0ptLSCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
3311 hMCd0D0ptLSCfromDstPM->SetYTitle("Entries");
3312 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstPM);
3315 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3316 hd0D0VtxTrueptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3317 hd0D0VtxTrueptLSCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3318 hd0D0VtxTrueptLSCfromDstPM->SetYTitle("Entries");
3319 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstPM);
3322 strnamept.Append("SBMss_pt");
3325 strtitlept=titlehist;
3326 strtitlept.Append(" Side Bands, ");
3327 strtitlept+=fptbins[i];
3328 strtitlept.Append("<= pt <");
3329 strtitlept+=fptbins[i+1];
3330 strtitlept.Append(" [GeV/c]");
3332 hd0D0ptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3333 hd0D0ptLSCfromDstSB->SetXTitle("Impact parameter [#mum] ");
3334 hd0D0ptLSCfromDstSB->SetYTitle("Entries");
3335 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstSB);
3337 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3338 hMCd0D0ptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3339 hMCd0D0ptLSCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
3340 hMCd0D0ptLSCfromDstSB->SetYTitle("Entries");
3341 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstSB);
3343 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3344 hd0D0VtxTrueptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3345 hd0D0VtxTrueptLSCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3346 hd0D0VtxTrueptLSCfromDstSB->SetYTitle("Entries");
3347 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstSB);
3351 //############ LOOSE CUTS OTHER HISTOGRAMS ###########
3353 //########### global properties histos ###########
3355 TH2F *hCPtaVSd0d0LSCother=new TH2F("hCPtaVSd0d0LSCother","hCPtaVSd0d0_LooseCuts_other",1000,-100000.,100000.,100,-1.,1.);
3356 TH1F *hSecVtxZLSCother=new TH1F("hSecVtxZLSCother","hSecVtxZ_LooseCuts_other",1000,-8.,8.);
3357 TH1F *hSecVtxXLSCother=new TH1F("hSecVtxXLSCother","hSecVtxX_LooseCuts_other",1000,-3000.,3000.);
3358 TH1F *hSecVtxYLSCother=new TH1F("hSecVtxYLSCother","hSecVtxY_LooseCuts_other",1000,-3000.,3000.);
3359 TH2F *hSecVtxXYLSCother=new TH2F("hSecVtxXYLSCother","hSecVtxXY_LooseCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
3360 TH1F *hSecVtxPhiLSCother=new TH1F("hSecVtxPhiLSCother","hSecVtxPhi_LooseCuts_other",180,-180.1,180.1);
3361 TH1F *hd0singlTrackLSCother=new TH1F("hd0singlTrackLSCother","hd0singlTrackLooseCuts_Other",1000,-5000.,5000.);
3362 TH1F *hCPtaLSCother=new TH1F("hCPtaLSCother","hCPta_LooseCuts_other",100,-1.,1.);
3363 TH1F *hd0xd0LSCother=new TH1F("hd0xd0LSCother","hd0xd0_LooseCuts_other",1000,-100000.,100000.);
3364 TH1F *hMassTrueLSCother=new TH1F("hMassTrueLSCother","D^{0} MC inv. Mass Loose Cuts other(All momenta)",600,1.600,2.200);
3365 TH1F *hMassLSCother=new TH1F("hMassLSCother","D^{0} inv. Mass Loose Cuts other (All momenta)",600,1.600,2.200);
3366 hMassLSCother->Sumw2();
3367 TH1F *hMassTrueLSCotherPM=new TH1F("hMassTrueLSCotherPM","D^{0} MC inv. Mass Loose Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
3368 TH1F *hMassLSCotherPM=new TH1F("hMassLSCotherPM","D^{0} inv. Mass Loose Cuts other (All momenta), MassPeak",600,1.600,2.200);
3369 hMassLSCotherPM->Sumw2();
3370 TH1F *hMassTrueLSCotherSB=new TH1F("hMassTrueLSCotherSB","D^{0} MC inv. Mass in Side Bands Loose Cuts other(All momenta)",600,1.600,2.200);
3371 TH1F *hMassLSCotherSB=new TH1F("hMassLSCotherSB","D^{0} inv. Mass in Side Bands Loose Cuts other (All momenta)",600,1.600,2.200);
3372 hMassLSCotherSB->Sumw2();
3374 flistLsCutsOther->Add(hCPtaVSd0d0LSCother);
3375 flistLsCutsOther->Add(hSecVtxZLSCother);
3376 flistLsCutsOther->Add(hSecVtxYLSCother);
3377 flistLsCutsOther->Add(hSecVtxXLSCother);
3378 flistLsCutsOther->Add(hSecVtxXYLSCother);
3379 flistLsCutsOther->Add(hSecVtxPhiLSCother);
3380 flistLsCutsOther->Add(hd0singlTrackLSCother);
3381 flistLsCutsOther->Add(hCPtaLSCother);
3382 flistLsCutsOther->Add(hd0xd0LSCother);
3383 flistLsCutsOther->Add(hMassTrueLSCother);
3384 flistLsCutsOther->Add(hMassLSCother);
3385 flistLsCutsOther->Add(hMassTrueLSCotherPM);
3386 flistLsCutsOther->Add(hMassLSCotherPM);
3387 flistLsCutsOther->Add(hMassTrueLSCotherSB);
3388 flistLsCutsOther->Add(hMassLSCotherSB);
3393 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3394 TH1F *hdcaLSCother=new TH1F("hdcaLSCother","hdca_LooseCuts_Other",100,0.,1000.);
3395 hdcaLSCother->SetXTitle("dca [#mum]");
3396 hdcaLSCother->SetYTitle("Entries");
3397 TH1F *hcosthetastarLSCother=new TH1F("hcosthetastarLSCother","hCosThetaStar_LooseCuts_Other",50,-1.,1.);
3398 hcosthetastarLSCother->SetXTitle("cos #theta^{*}");
3399 hcosthetastarLSCother->SetYTitle("Entries");
3400 TH1F *hptD0LSCother=new TH1F("hptD0LSCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3401 hptD0LSCother->SetXTitle("p_{t} [GeV/c]");
3402 hptD0LSCother->SetYTitle("Entries");
3403 TH1F *hptD0VsMaxPtLSCother=new TH1F("hptD0VsMaxPtLSCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3404 TH2F *hptD0PTallsqrtLSCother=new TH2F("hptD0PTallsqrtLSCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3405 TH2F *hptD0PTallLSCother=new TH2F("hptD0PTallLSCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3406 TH2F *hptD0vsptBLSCother=new TH2F("hptD0vsptBLSCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3407 TH2F *hpD0vspBLSCother=new TH2F("hpD0vspBLSCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3408 TH2F *hptD0vsptcquarkLSCother=new TH2F("hptD0vsptcquarkLSCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3409 TH2F *hpD0vspcquarkLSCother=new TH2F("hpD0vspcquarkLSCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3410 flistLsCutsOther->Add(hdcaLSCother);
3411 flistLsCutsOther->Add(hcosthetastarLSCother);
3412 flistLsCutsOther->Add(hptD0LSCother);
3413 flistLsCutsOther->Add(hptD0VsMaxPtLSCother);
3414 flistLsCutsOther->Add(hptD0PTallsqrtLSCother);
3415 flistLsCutsOther->Add(hptD0PTallLSCother);
3416 flistLsCutsOther->Add(hptD0vsptBLSCother);
3417 flistLsCutsOther->Add(hpD0vspBLSCother);
3418 flistLsCutsOther->Add(hptD0vsptcquarkLSCother);
3419 flistLsCutsOther->Add(hpD0vspcquarkLSCother);
3421 TH1F *hd0zD0ptLSCother;
3422 TH1F *hInvMassD0LSCother,*hInvMassD0barLSCother;
3423 TH2F *hInvMassPtLSCother=new TH2F("hInvMassPtLSCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3424 THnSparseF *hSparseLSCother=new THnSparseF("hSparseLSCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3425 hSparseLSCother->SetBinEdges(0,massbins);
3426 hSparseLSCother->SetBinEdges(1,massbins);
3427 hSparseLSCother->SetBinEdges(2,ptbinsForNsparse);
3428 hSparseLSCother->SetBinEdges(3,impparbins);
3429 hSparseLSCother->SetBinEdges(4,massHypoBins);
3430 flistLsCutsOther->Add(hSparseLSCother);
3432 TH1F *hCosPDPBLSCother;
3433 TH1F *hCosPcPDLSCother;
3434 flistLsCutsOther->Add(hInvMassPtLSCother);
3435 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3436 TH2F *hd0D0VSd0xd0LSCotherpt;
3437 TH2F *hangletracksVSd0xd0LSCotherpt;
3438 TH2F *hangletracksVSd0D0LSCotherpt;
3439 TH1F *hd0xd0LSCotherpt;
3441 TH2F *hTOFpidLSCother=new TH2F("hTOFpidLSCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3442 flistLsCutsOther->Add(hTOFpidLSCother);
3444 for(Int_t i=0;i<fnbins;i++){
3445 namehist="hd0zD0ptLSCother_pt";
3447 titlehist="d0(z) Loose Cuts Otherm ptbin=";
3449 hd0zD0ptLSCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3450 hd0zD0ptLSCother->SetXTitle("d_{0}(z) [#mum]");
3451 hd0zD0ptLSCother->SetYTitle("Entries");
3452 flistLsCutsOther->Add(hd0zD0ptLSCother);
3454 namehist="hInvMassD0LSCother_pt";
3456 titlehist="Invariant Mass Loose Cuts Other ptbin=";
3458 hInvMassD0LSCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3459 hInvMassD0LSCother->SetXTitle("Invariant Mass [GeV]");
3460 hInvMassD0LSCother->SetYTitle("Entries");
3461 flistLsCutsOther->Add(hInvMassD0LSCother);
3463 namehist="hInvMassD0barLSCother_pt";
3465 titlehist="Invariant Mass D0bar Loose Cuts Other ptbin=";
3467 hInvMassD0barLSCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3468 hInvMassD0barLSCother->SetXTitle("Invariant Mass [GeV]");
3469 hInvMassD0barLSCother->SetYTitle("Entries");
3470 flistLsCutsOther->Add(hInvMassD0barLSCother);
3472 namehist="hetaLSCother_pt";
3474 titlehist="eta Loose Cuts Other ptbin=";
3476 hetaLSCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3477 hetaLSCother->SetXTitle("Pseudorapidity");
3478 hetaLSCother->SetYTitle("Entries");
3479 flistLsCutsOther->Add(hetaLSCother);
3481 namehist="hCosPDPBLSCother_pt";
3483 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3485 hCosPDPBLSCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3486 hCosPDPBLSCother->SetXTitle("Cosine between D0 momentum and B momentum");
3487 hCosPDPBLSCother->SetYTitle("Entries");
3488 flistLsCutsOther->Add(hCosPDPBLSCother);
3490 namehist="hCosPcPDLSCother_pt";
3492 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3494 hCosPcPDLSCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3495 hCosPcPDLSCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
3496 hCosPcPDLSCother->SetYTitle("Entries");
3497 flistLsCutsOther->Add(hCosPcPDLSCother);
3499 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3500 namehist="hd0xd0LSCother_pt";
3502 titlehist="d0xd0 Loose Cuts Other ptbin=";
3504 hd0xd0LSCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3505 hd0xd0LSCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3506 hd0xd0LSCotherpt->SetYTitle("Entries");
3507 flistLsCutsOther->Add(hd0xd0LSCotherpt);
3510 namehist="hd0D0VSd0xd0LSCother_pt";
3512 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Other ptbin=";
3514 hd0D0VSd0xd0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3515 hd0D0VSd0xd0LSCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3516 hd0D0VSd0xd0LSCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3517 flistLsCutsOther->Add(hd0D0VSd0xd0LSCotherpt);
3520 namehist="hangletracksVSd0xd0LSCother_pt";
3522 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Other ptbin=";
3524 hangletracksVSd0xd0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3525 hangletracksVSd0xd0LSCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3526 hangletracksVSd0xd0LSCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
3527 flistLsCutsOther->Add(hangletracksVSd0xd0LSCotherpt);
3530 namehist="hangletracksVSd0D0LSCother_pt";
3532 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Other ptbin=";
3534 hangletracksVSd0D0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3535 hangletracksVSd0D0LSCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3536 hangletracksVSd0D0LSCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
3537 flistLsCutsOther->Add(hangletracksVSd0D0LSCotherpt);
3541 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3542 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3546 //############# d0 D0 histos ###############Ã
3547 TH1F *hd0D0LSCotherPM = new TH1F("hd0D0LSCotherPM","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3548 hd0D0LSCotherPM->SetXTitle("Impact parameter [#mum]");
3549 hd0D0LSCotherPM->SetYTitle("Entries");
3551 TH1F *hd0D0VtxTrueLSCotherPM = new TH1F("hd0D0VtxTrueLSCotherPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3552 hd0D0VtxTrueLSCotherPM->SetXTitle("Impact parameter [#mum]");
3553 hd0D0VtxTrueLSCotherPM->SetYTitle("Entries");
3555 TH1F *hMCd0D0LSCotherPM = new TH1F("hMCd0D0LSCotherPM","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3556 hMCd0D0LSCotherPM->SetXTitle("MC Impact parameter [#mum]");
3557 hMCd0D0LSCotherPM->SetYTitle("Entries");
3559 TH1F *hd0D0LSCotherSB = new TH1F("hd0D0LSCotherSB","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3560 hd0D0LSCotherSB->SetXTitle("Impact parameter [#mum]");
3561 hd0D0LSCotherSB->SetYTitle("Entries");
3563 TH1F *hd0D0VtxTrueLSCotherSB = new TH1F("hd0D0VtxTrueLSCotherSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3564 hd0D0VtxTrueLSCotherSB->SetXTitle("Impact parameter [#mum]");
3565 hd0D0VtxTrueLSCotherSB->SetYTitle("Entries");
3567 TH1F *hMCd0D0LSCotherSB = new TH1F("hMCd0D0LSCotherSB","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3568 hMCd0D0LSCotherSB->SetXTitle("MC Impact parameter [#mum]");
3569 hMCd0D0LSCotherSB->SetYTitle("Entries");
3571 flistLsCutsOther->Add(hd0D0LSCotherPM);
3572 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherPM);
3573 flistLsCutsOther->Add(hMCd0D0LSCotherPM);
3574 flistLsCutsOther->Add(hd0D0LSCotherSB);
3575 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherSB);
3576 flistLsCutsOther->Add(hMCd0D0LSCotherSB);
3578 TH1F *hd0D0ptLSCotherPM;
3579 TH1F *hMCd0D0ptLSCotherPM;
3580 TH1F *hd0D0VtxTrueptLSCotherPM;
3581 TH1F *hd0D0ptLSCotherSB;
3582 TH1F *hMCd0D0ptLSCotherSB;
3583 TH1F *hd0D0VtxTrueptLSCotherSB;
3584 namehist="hd0D0ptLSCother_";
3585 titlehist="D^{0} impact par. plot, Loose Cuts, Other, ";
3586 for(Int_t i=0;i<fnbins;i++){
3588 strnamept.Append("PkMss_pt");
3591 strtitlept=titlehist;
3592 strtitlept.Append(" Mass Peak, ");
3593 strtitlept+=fptbins[i];
3594 strtitlept.Append("<= pt <");
3595 strtitlept+=fptbins[i+1];
3596 strtitlept.Append(" [GeV/c]");
3598 hd0D0ptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3599 hd0D0ptLSCotherPM->SetXTitle("Impact parameter [#mum] ");
3600 hd0D0ptLSCotherPM->SetYTitle("Entries");
3601 flistLsCutsOther->Add(hd0D0ptLSCotherPM);
3603 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3604 hMCd0D0ptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3605 hMCd0D0ptLSCotherPM->SetXTitle("MC Impact parameter [#mum] ");
3606 hMCd0D0ptLSCotherPM->SetYTitle("Entries");
3607 flistLsCutsOther->Add(hMCd0D0ptLSCotherPM);
3610 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3611 hd0D0VtxTrueptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3612 hd0D0VtxTrueptLSCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3613 hd0D0VtxTrueptLSCotherPM->SetYTitle("Entries");
3614 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherPM);
3617 strnamept.Append("SBMss_pt");
3620 strtitlept=titlehist;
3621 strtitlept.Append(" Side Bands, ");
3622 strtitlept+=fptbins[i];
3623 strtitlept.Append("<= pt <");
3624 strtitlept+=fptbins[i+1];
3625 strtitlept.Append(" [GeV/c]");
3627 hd0D0ptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3628 hd0D0ptLSCotherSB->SetXTitle("Impact parameter [#mum] ");
3629 hd0D0ptLSCotherSB->SetYTitle("Entries");
3630 flistLsCutsOther->Add(hd0D0ptLSCotherSB);
3632 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3633 hMCd0D0ptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3634 hMCd0D0ptLSCotherSB->SetXTitle("MC Impact parameter [#mum] ");
3635 hMCd0D0ptLSCotherSB->SetYTitle("Entries");
3636 flistLsCutsOther->Add(hMCd0D0ptLSCotherSB);
3638 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3639 hd0D0VtxTrueptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3640 hd0D0VtxTrueptLSCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3641 hd0D0VtxTrueptLSCotherSB->SetYTitle("Entries");
3642 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherSB);
3645 //Printf("END OF LSCUTS HISTOS CREATION \n");
3648 //################################################################################################
3650 // HISTOS FOR TIGHT CUTS #
3652 //################################################################################################
3654 //############ TIGHT CUTS SIGNAL HISTOGRAMS ###############
3656 // ####### global properties histo ############
3658 TH2F *hCPtaVSd0d0TGHCsign=new TH2F("hCPtaVSd0d0TGHCsign","hCPtaVSd0d0_TightCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
3659 TH1F *hSecVtxZTGHCsign=new TH1F("hSecVtxZTGHCsign","hSecVtxZ_TightCuts_Signal",1000,-8.,8.);
3660 TH1F *hSecVtxXTGHCsign=new TH1F("hSecVtxXTGHCsign","hSecVtxX_TightCuts_Signal",1000,-3000.,3000.);
3661 TH1F *hSecVtxYTGHCsign=new TH1F("hSecVtxYTGHCsign","hSecVtxY_TightCuts_Signal",1000,-3000.,3000.);
3662 TH2F *hSecVtxXYTGHCsign=new TH2F("hSecVtxXYTGHCsign","hSecVtxXY_TightCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
3663 TH1F *hSecVtxPhiTGHCsign=new TH1F("hSecVtxPhiTGHCsign","hSecVtxPhi_TightCuts_Signal",180,-180.1,180.1);
3664 TH1F *hd0singlTrackTGHCsign=new TH1F("hd0singlTrackTGHCsign","hd0singlTrackTightCuts_Signal",1000,-5000.,5000.);
3665 TH1F *hCPtaTGHCsign=new TH1F("hCPtaTGHCsign","hCPta_TightCuts_Signal",100,-1.,1.);
3666 TH1F *hd0xd0TGHCsign=new TH1F("hd0xd0TGHCsign","hd0xd0_TightCuts_Signal",1000,-100000.,100000.);
3667 TH1F *hMassTrueTGHCsign=new TH1F("hMassTrueTGHCsign","D^{0} MC inv. Mass Tight Cuts Signal(All momenta)",600,1.600,2.200);
3668 TH1F *hMassTGHCsign=new TH1F("hMassTGHCsign","D^{0} inv. Mass Tight Cuts Signal (All momenta)",600,1.600,2.200);
3669 hMassTGHCsign->Sumw2();
3670 TH1F *hMassTrueTGHCsignPM=new TH1F("hMassTrueTGHCsignPM","D^{0} MC inv. Mass Tight Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
3671 TH1F *hMassTGHCsignPM=new TH1F("hMassTGHCsignPM","D^{0} inv. Mass Tight Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
3672 hMassTGHCsignPM->Sumw2();
3673 TH1F *hMassTrueTGHCsignSB=new TH1F("hMassTrueTGHCsignSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Signal(All momenta)",600,1.600,2.200);
3674 TH1F *hMassTGHCsignSB=new TH1F("hMassTGHCsignSB","D^{0} inv. Mass in Side Bands Tight Cuts Signal (All momenta)",600,1.600,2.200);
3675 hMassTGHCsignSB->Sumw2();
3677 flistTghCutsSignal->Add(hCPtaVSd0d0TGHCsign);
3678 flistTghCutsSignal->Add(hSecVtxZTGHCsign);
3679 flistTghCutsSignal->Add(hSecVtxYTGHCsign);
3680 flistTghCutsSignal->Add(hSecVtxXTGHCsign);
3681 flistTghCutsSignal->Add(hSecVtxXYTGHCsign);
3682 flistTghCutsSignal->Add(hSecVtxPhiTGHCsign);
3683 flistTghCutsSignal->Add(hd0singlTrackTGHCsign);
3684 flistTghCutsSignal->Add(hCPtaTGHCsign);
3685 flistTghCutsSignal->Add(hd0xd0TGHCsign);
3686 flistTghCutsSignal->Add(hMassTrueTGHCsign);
3687 flistTghCutsSignal->Add(hMassTGHCsign);
3688 flistTghCutsSignal->Add(hMassTrueTGHCsignPM);
3689 flistTghCutsSignal->Add(hMassTGHCsignPM);
3690 flistTghCutsSignal->Add(hMassTrueTGHCsignSB);
3691 flistTghCutsSignal->Add(hMassTGHCsignSB);
3698 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3699 TH1F *hdcaTGHCsign=new TH1F("hdcaTGHCsign","hdca_TightCuts_Signal",100,0.,1000.);
3700 hdcaTGHCsign->SetXTitle("dca [#mum]");
3701 hdcaTGHCsign->SetYTitle("Entries");
3702 TH1F *hcosthetastarTGHCsign=new TH1F("hcosthetastarTGHCsign","hCosThetaStar_TightCuts_Signal",50,-1.,1.);
3703 hcosthetastarTGHCsign->SetXTitle("cos #theta^{*}");
3704 hcosthetastarTGHCsign->SetYTitle("Entries");
3705 TH1F *hptD0TGHCsign=new TH1F("hptD0TGHCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3706 hptD0TGHCsign->SetXTitle("p_{t} [GeV/c]");
3707 hptD0TGHCsign->SetYTitle("Entries");
3708 TH1F *hptD0VsMaxPtTGHCsign=new TH1F("hptD0VsMaxPtTGHCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3709 TH2F *hptD0PTallsqrtTGHCsign=new TH2F("hptD0PTallsqrtTGHCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3710 TH2F *hptD0PTallTGHCsign=new TH2F("hptD0PTallTGHCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3711 TH2F *hptD0vsptBTGHCsign=new TH2F("hptD0vsptBTGHCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3712 TH2F *hpD0vspBTGHCsign=new TH2F("hpD0vspBTGHCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3713 TH2F *hptD0vsptcquarkTGHCsign=new TH2F("hptD0vsptcquarkTGHCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3714 TH2F *hpD0vspcquarkTGHCsign=new TH2F("hpD0vspcquarkTGHCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3715 flistTghCutsSignal->Add(hdcaTGHCsign);
3716 flistTghCutsSignal->Add(hcosthetastarTGHCsign);
3717 flistTghCutsSignal->Add(hptD0TGHCsign);
3718 flistTghCutsSignal->Add(hptD0VsMaxPtTGHCsign);
3719 flistTghCutsSignal->Add(hptD0PTallsqrtTGHCsign);
3720 flistTghCutsSignal->Add(hptD0PTallTGHCsign);
3721 flistTghCutsSignal->Add(hptD0vsptBTGHCsign);
3722 flistTghCutsSignal->Add(hpD0vspBTGHCsign);
3723 flistTghCutsSignal->Add(hptD0vsptcquarkTGHCsign);
3724 flistTghCutsSignal->Add(hpD0vspcquarkTGHCsign);
3726 TH1F *hd0zD0ptTGHCsign;
3727 TH1F *hInvMassD0TGHCsign,*hInvMassD0barTGHCsign;
3728 TH2F *hInvMassPtTGHCsign=new TH2F("hInvMassPtTGHCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3729 THnSparseF *hSparseTGHCsign=new THnSparseF("hSparseTGHCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3730 hSparseTGHCsign->SetBinEdges(0,massbins);
3731 hSparseTGHCsign->SetBinEdges(1,massbins);
3732 hSparseTGHCsign->SetBinEdges(2,ptbinsForNsparse);
3733 hSparseTGHCsign->SetBinEdges(3,impparbins);
3734 hSparseTGHCsign->SetBinEdges(4,massHypoBins);
3735 flistTghCutsSignal->Add(hSparseTGHCsign);
3737 TH1F *hCosPDPBTGHCsign;
3738 TH1F *hCosPcPDTGHCsign;
3739 flistTghCutsSignal->Add(hInvMassPtTGHCsign);
3740 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3741 TH2F *hd0D0VSd0xd0TGHCsignpt;
3742 TH2F *hangletracksVSd0xd0TGHCsignpt;
3743 TH2F *hangletracksVSd0D0TGHCsignpt;
3744 TH1F *hd0xd0TGHCsignpt;
3746 TH2F *hTOFpidTGHCsign=new TH2F("hTOFpidTGHCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3747 flistTghCutsSignal->Add(hTOFpidTGHCsign);
3749 for(Int_t i=0;i<fnbins;i++){
3750 // Printf("INSIDE FIRST LOOP FOR TIGHT CUTS HISTO CREATION %d\n", fnbins);
3751 namehist="hd0zD0ptTGHCsign_pt";
3753 titlehist="d0(z) Tight Cuts Signal ptbin=";
3755 hd0zD0ptTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3756 hd0zD0ptTGHCsign->SetXTitle("d_{0}(z) [#mum]");
3757 hd0zD0ptTGHCsign->SetYTitle("Entries");
3758 flistTghCutsSignal->Add(hd0zD0ptTGHCsign);
3760 namehist="hInvMassD0TGHCsign_pt";
3762 titlehist="Invariant Mass Tight Cuts Signal ptbin=";
3764 hInvMassD0TGHCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3765 hInvMassD0TGHCsign->SetXTitle("Invariant Mass [GeV]");
3766 hInvMassD0TGHCsign->SetYTitle("Entries");
3767 flistTghCutsSignal->Add(hInvMassD0TGHCsign);
3769 namehist="hInvMassD0barTGHCsign_pt";
3771 titlehist="Invariant Mass D0bar Tight Cuts Signal ptbin=";
3773 hInvMassD0barTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3774 hInvMassD0barTGHCsign->SetXTitle("Invariant Mass [GeV]");
3775 hInvMassD0barTGHCsign->SetYTitle("Entries");
3776 flistTghCutsSignal->Add(hInvMassD0barTGHCsign);
3779 namehist="hetaTGHCsign_pt";
3781 titlehist="eta Tight Cuts Signal ptbin=";
3783 hetaTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3784 hetaTGHCsign->SetXTitle("Pseudorapidity");
3785 hetaTGHCsign->SetYTitle("Entries");
3786 flistTghCutsSignal->Add(hetaTGHCsign);
3788 namehist="hCosPDPBTGHCsign_pt";
3790 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3792 hCosPDPBTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3793 hCosPDPBTGHCsign->SetXTitle("Cosine between D0 momentum and B momentum");
3794 hCosPDPBTGHCsign->SetYTitle("Entries");
3795 flistTghCutsSignal->Add(hCosPDPBTGHCsign);
3797 namehist="hCosPcPDTGHCsign_pt";
3799 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3801 hCosPcPDTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3802 hCosPcPDTGHCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
3803 hCosPcPDTGHCsign->SetYTitle("Entries");
3804 flistTghCutsSignal->Add(hCosPcPDTGHCsign);
3806 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3807 namehist="hd0xd0TGHCsign_pt";
3809 titlehist="d0xd0 Tight Cuts Signal ptbin=";
3811 hd0xd0TGHCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3812 hd0xd0TGHCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3813 hd0xd0TGHCsignpt->SetYTitle("Entries");
3814 flistTghCutsSignal->Add(hd0xd0TGHCsignpt);
3817 namehist="hd0D0VSd0xd0TGHCsign_pt";
3819 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Signal ptbin=";
3821 hd0D0VSd0xd0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3822 hd0D0VSd0xd0TGHCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3823 hd0D0VSd0xd0TGHCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3824 flistTghCutsSignal->Add(hd0D0VSd0xd0TGHCsignpt);
3827 namehist="hangletracksVSd0xd0TGHCsign_pt";
3829 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Signal ptbin=";
3831 hangletracksVSd0xd0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3832 hangletracksVSd0xd0TGHCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3833 hangletracksVSd0xd0TGHCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
3834 flistTghCutsSignal->Add(hangletracksVSd0xd0TGHCsignpt);
3837 namehist="hangletracksVSd0D0TGHCsign_pt";
3839 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Signal ptbin=";
3841 hangletracksVSd0D0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3842 hangletracksVSd0D0TGHCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3843 hangletracksVSd0D0TGHCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
3844 flistTghCutsSignal->Add(hangletracksVSd0D0TGHCsignpt);
3847 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3848 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3857 // ####### d0 D0 histos ############
3858 TH1F *hd0D0TGHCsignPM = new TH1F("hd0D0TGHCsignPM","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3859 hd0D0TGHCsignPM->SetXTitle("Impact parameter [#mum]");
3860 hd0D0TGHCsignPM->SetYTitle("Entries");
3862 TH1F *hd0D0VtxTrueTGHCsignPM = new TH1F("hd0D0VtxTrueTGHCsignPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3863 hd0D0VtxTrueTGHCsignPM->SetXTitle("Impact parameter [#mum]");
3864 hd0D0VtxTrueTGHCsignPM->SetYTitle("Entries");
3866 TH1F *hMCd0D0TGHCsignPM = new TH1F("hMCd0D0TGHCsignPM","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3867 hMCd0D0TGHCsignPM->SetXTitle("MC Impact parameter [#mum]");
3868 hMCd0D0TGHCsignPM->SetYTitle("Entries");
3870 TH1F *hd0D0TGHCsignSB = new TH1F("hd0D0TGHCsignSB","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3871 hd0D0TGHCsignSB->SetXTitle("Impact parameter [#mum]");
3872 hd0D0TGHCsignSB->SetYTitle("Entries");
3874 TH1F *hd0D0VtxTrueTGHCsignSB = new TH1F("hd0D0VtxTrueTGHCsignSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3875 hd0D0VtxTrueTGHCsignSB->SetXTitle("Impact parameter [#mum]");
3876 hd0D0VtxTrueTGHCsignSB->SetYTitle("Entries");
3878 TH1F *hMCd0D0TGHCsignSB = new TH1F("hMCd0D0TGHCsignSB","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3879 hMCd0D0TGHCsignSB->SetXTitle("MC Impact parameter [#mum]");
3880 hMCd0D0TGHCsignSB->SetYTitle("Entries");
3882 flistTghCutsSignal->Add(hd0D0TGHCsignPM);
3883 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignPM);
3884 flistTghCutsSignal->Add(hMCd0D0TGHCsignPM);
3885 flistTghCutsSignal->Add(hd0D0TGHCsignSB);
3886 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignSB);
3887 flistTghCutsSignal->Add(hMCd0D0TGHCsignSB);
3889 TH1F *hd0D0ptTGHCsignPM;
3890 TH1F *hMCd0D0ptTGHCsignPM;
3891 TH1F *hd0D0VtxTrueptTGHCsignPM;
3892 TH1F *hd0D0ptTGHCsignSB;
3893 TH1F *hMCd0D0ptTGHCsignSB;
3894 TH1F *hd0D0VtxTrueptTGHCsignSB;
3895 namehist="hd0D0ptTGHCsign_";
3896 titlehist="D^{0} impact par. plot, Tight Cuts, Signal, ";
3897 for(Int_t i=0;i<fnbins;i++){
3899 strnamept.Append("PkMss_pt");
3902 strtitlept=titlehist;
3903 strtitlept.Append(" Mass Peak, ");
3904 strtitlept+=fptbins[i];
3905 strtitlept.Append("<= pt <");
3906 strtitlept+=fptbins[i+1];
3907 strtitlept.Append(" [GeV/c]");
3909 hd0D0ptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3910 hd0D0ptTGHCsignPM->SetXTitle("Impact parameter [#mum] ");
3911 hd0D0ptTGHCsignPM->SetYTitle("Entries");
3912 flistTghCutsSignal->Add(hd0D0ptTGHCsignPM);
3914 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3915 hMCd0D0ptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3916 hMCd0D0ptTGHCsignPM->SetXTitle("MC Impact parameter [#mum] ");
3917 hMCd0D0ptTGHCsignPM->SetYTitle("Entries");
3918 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignPM);
3921 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3922 hd0D0VtxTrueptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3923 hd0D0VtxTrueptTGHCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3924 hd0D0VtxTrueptTGHCsignPM->SetYTitle("Entries");
3925 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignPM);
3928 strnamept.Append("SBMss_pt");
3931 strtitlept=titlehist;
3932 strtitlept.Append(" Side Bands, ");
3933 strtitlept+=fptbins[i];
3934 strtitlept.Append("<= pt <");
3935 strtitlept+=fptbins[i+1];
3936 strtitlept.Append(" [GeV/c]");
3938 hd0D0ptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3939 hd0D0ptTGHCsignSB->SetXTitle("Impact parameter [#mum] ");
3940 hd0D0ptTGHCsignSB->SetYTitle("Entries");
3941 flistTghCutsSignal->Add(hd0D0ptTGHCsignSB);
3943 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3944 hMCd0D0ptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3945 hMCd0D0ptTGHCsignSB->SetXTitle("MC Impact parameter [#mum] ");
3946 hMCd0D0ptTGHCsignSB->SetYTitle("Entries");
3947 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignSB);
3949 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3950 hd0D0VtxTrueptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3951 hd0D0VtxTrueptTGHCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3952 hd0D0VtxTrueptTGHCsignSB->SetYTitle("Entries");
3953 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignSB);
3957 //############ TIGHT CUTS BACKGROUND HISTOGRAMS ###########
3959 // ######## global properties histos #######
3960 TH2F *hCPtaVSd0d0TGHCback=new TH2F("hCPtaVSd0d0TGHCback","hCPtaVSd0d0_TightCuts_Background",1000,-100000.,100000.,100,-1.,1.);
3961 TH1F *hSecVtxZTGHCback=new TH1F("hSecVtxZTGHCback","hSecVtxZ_TightCuts_Background",1000,-8.,8.);
3962 TH1F *hSecVtxXTGHCback=new TH1F("hSecVtxXTGHCback","hSecVtxX_TightCuts_Background",1000,-3000.,3000.);
3963 TH1F *hSecVtxYTGHCback=new TH1F("hSecVtxYTGHCback","hSecVtxY_TightCuts_Background",1000,-3000.,3000.);
3964 TH2F *hSecVtxXYTGHCback=new TH2F("hSecVtxXYTGHCback","hSecVtxXY_TightCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
3965 TH1F *hSecVtxPhiTGHCback=new TH1F("hSecVtxPhiTGHCback","hSecVtxPhi_TightCuts_Background",180,-180.1,180.1);
3966 TH1F *hd0singlTrackTGHCback=new TH1F("hd0singlTrackTGHCback","hd0singlTrackTightCuts_Back",1000,-5000.,5000.);
3967 TH1F *hCPtaTGHCback=new TH1F("hCPtaTGHCback","hCPta_TightCuts_Background",100,-1.,1.);
3968 TH1F *hd0xd0TGHCback=new TH1F("hd0xd0TGHCback","hd0xd0_TightCuts_Background",1000,-100000.,100000.);
3969 TH1F *hMassTrueTGHCback=new TH1F("hMassTrueTGHCback","D^{0} MC inv. Mass Tight Cuts Background(All momenta)",600,1.600,2.200);
3970 TH1F *hMassTGHCback=new TH1F("hMassTGHCback","D^{0} inv. Mass Tight Cuts Background (All momenta)",600,1.600,2.200);
3971 hMassTGHCback->Sumw2();
3972 TH1F *hMassTrueTGHCbackPM=new TH1F("hMassTrueTGHCbackPM","D^{0} MC inv. Mass Tight Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
3973 TH1F *hMassTGHCbackPM=new TH1F("hMassTGHCbackPM","D^{0} inv. Mass Tight Cuts Background (All momenta), MassPeak",600,1.600,2.200);
3974 hMassTGHCbackPM->Sumw2();
3975 TH1F *hMassTrueTGHCbackSB=new TH1F("hMassTrueTGHCbackSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Backgrround(All momenta)",600,1.600,2.200);
3976 TH1F *hMassTGHCbackSB=new TH1F("hMassTGHCbackSB","D^{0} inv. Mass in Side Bands Tight Cuts Background (All momenta)",600,1.600,2.200);
3977 hMassTGHCbackSB->Sumw2();
3979 flistTghCutsBack->Add(hCPtaVSd0d0TGHCback);
3980 flistTghCutsBack->Add(hSecVtxZTGHCback);
3981 flistTghCutsBack->Add(hSecVtxYTGHCback);
3982 flistTghCutsBack->Add(hSecVtxXTGHCback);
3983 flistTghCutsBack->Add(hSecVtxXYTGHCback);
3984 flistTghCutsBack->Add(hSecVtxPhiTGHCback);
3985 flistTghCutsBack->Add(hd0singlTrackTGHCback);
3986 flistTghCutsBack->Add(hCPtaTGHCback);
3987 flistTghCutsBack->Add(hd0xd0TGHCback);
3988 flistTghCutsBack->Add(hMassTrueTGHCback);
3989 flistTghCutsBack->Add(hMassTGHCback);
3990 flistTghCutsBack->Add(hMassTrueTGHCbackPM);
3991 flistTghCutsBack->Add(hMassTGHCbackPM);
3992 flistTghCutsBack->Add(hMassTrueTGHCbackSB);
3993 flistTghCutsBack->Add(hMassTGHCbackSB);
4001 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4002 TH1F *hdcaTGHCback=new TH1F("hdcaTGHCback","hdca_TightCuts_Backgr",100,0.,1000.);
4003 hdcaTGHCback->SetXTitle("dca [#mum]");
4004 hdcaTGHCback->SetYTitle("Entries");
4005 TH1F *hcosthetastarTGHCback=new TH1F("hcosthetastarTGHCback","hCosThetaStar_TightCuts_Backgr",50,-1.,1.);
4006 hcosthetastarTGHCback->SetXTitle("cos #theta^{*}");
4007 hcosthetastarTGHCback->SetYTitle("Entries");
4008 TH1F *hptD0TGHCback=new TH1F("hptD0TGHCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4009 hptD0TGHCback->SetXTitle("p_{t} [GeV/c]");
4010 hptD0TGHCback->SetYTitle("Entries");
4011 TH1F *hptD0VsMaxPtTGHCback=new TH1F("hptD0VsMaxPtTGHCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4012 TH2F *hptD0PTallsqrtTGHCback=new TH2F("hptD0PTallsqrtTGHCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4013 TH2F *hptD0PTallTGHCback=new TH2F("hptD0PTallTGHCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4014 TH2F *hptD0vsptBTGHCback=new TH2F("hptD0vsptBTGHCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4015 TH2F *hpD0vspBTGHCback=new TH2F("hpD0vspBTGHCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4016 TH2F *hptD0vsptcquarkTGHCback=new TH2F("hptD0vsptcquarkTGHCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4017 TH2F *hpD0vspcquarkTGHCback=new TH2F("hpD0vspcquarkTGHCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4018 flistTghCutsBack->Add(hdcaTGHCback);
4019 flistTghCutsBack->Add(hcosthetastarTGHCback);
4020 flistTghCutsBack->Add(hptD0TGHCback);
4021 flistTghCutsBack->Add(hptD0VsMaxPtTGHCback);
4022 flistTghCutsBack->Add(hptD0PTallsqrtTGHCback);
4023 flistTghCutsBack->Add(hptD0PTallTGHCback);
4024 flistTghCutsBack->Add(hptD0vsptBTGHCback);
4025 flistTghCutsBack->Add(hpD0vspBTGHCback);
4026 flistTghCutsBack->Add(hptD0vsptcquarkTGHCback);
4027 flistTghCutsBack->Add(hpD0vspcquarkTGHCback);
4029 TH1F *hd0zD0ptTGHCback;
4030 TH1F *hInvMassD0TGHCback,*hInvMassD0barTGHCback;
4031 TH2F *hInvMassPtTGHCback=new TH2F("hInvMassPtTGHCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4032 THnSparseF *hSparseTGHCback=new THnSparseF("hSparseTGHCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4033 hSparseTGHCback->SetBinEdges(0,massbins);
4034 hSparseTGHCback->SetBinEdges(1,massbins);
4035 hSparseTGHCback->SetBinEdges(2,ptbinsForNsparse);
4036 hSparseTGHCback->SetBinEdges(3,impparbins);
4037 hSparseTGHCback->SetBinEdges(4,massHypoBins);
4038 flistTghCutsBack->Add(hSparseTGHCback);
4040 TH1F *hCosPDPBTGHCback;
4041 TH1F *hCosPcPDTGHCback;
4042 flistTghCutsBack->Add(hInvMassPtTGHCback);
4043 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4044 TH2F *hd0D0VSd0xd0TGHCbackpt;
4045 TH2F *hangletracksVSd0xd0TGHCbackpt;
4046 TH2F *hangletracksVSd0D0TGHCbackpt;
4047 TH1F *hd0xd0TGHCbackpt;
4049 TH2F *hTOFpidTGHCback=new TH2F("hTOFpidTGHCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4050 flistTghCutsBack->Add(hTOFpidTGHCback);
4053 for(Int_t i=0;i<fnbins;i++){
4054 namehist="hd0zD0ptTGHCback_pt";
4056 titlehist="d0(z) Tight Cuts Backgrm ptbin=";
4058 hd0zD0ptTGHCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4059 hd0zD0ptTGHCback->SetXTitle("d_{0}(z) [#mum]");
4060 hd0zD0ptTGHCback->SetYTitle("Entries");
4061 flistTghCutsBack->Add(hd0zD0ptTGHCback);
4063 namehist="hInvMassD0TGHCback_pt";
4065 titlehist="Invariant Mass Tight Cuts Backgr ptbin=";
4067 hInvMassD0TGHCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4068 hInvMassD0TGHCback->SetXTitle("Invariant Mass [GeV]");
4069 hInvMassD0TGHCback->SetYTitle("Entries");
4070 flistTghCutsBack->Add(hInvMassD0TGHCback);
4072 namehist="hInvMassD0barTGHCback_pt";
4074 titlehist="Invariant Mass D0bar Tight Cuts Back ptbin=";
4076 hInvMassD0barTGHCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4077 hInvMassD0barTGHCback->SetXTitle("Invariant Mass [GeV]");
4078 hInvMassD0barTGHCback->SetYTitle("Entries");
4079 flistTghCutsBack->Add(hInvMassD0barTGHCback);
4081 namehist="hetaTGHCback_pt";
4083 titlehist="eta Tight Cuts Backgr ptbin=";
4085 hetaTGHCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4086 hetaTGHCback->SetXTitle("Pseudorapidity");
4087 hetaTGHCback->SetYTitle("Entries");
4088 flistTghCutsBack->Add(hetaTGHCback);
4090 namehist="hCosPDPBTGHCback_pt";
4092 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4094 hCosPDPBTGHCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4095 hCosPDPBTGHCback->SetXTitle("Cosine between D0 momentum and B momentum");
4096 hCosPDPBTGHCback->SetYTitle("Entries");
4097 flistTghCutsBack->Add(hCosPDPBTGHCback);
4099 namehist="hCosPcPDTGHCback_pt";
4101 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4103 hCosPcPDTGHCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4104 hCosPcPDTGHCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
4105 hCosPcPDTGHCback->SetYTitle("Entries");
4106 flistTghCutsBack->Add(hCosPcPDTGHCback);
4108 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4109 namehist="hd0xd0TGHCback_pt";
4111 titlehist="d0xd0 Tight Cuts Back ptbin=";
4113 hd0xd0TGHCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4114 hd0xd0TGHCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4115 hd0xd0TGHCbackpt->SetYTitle("Entries");
4116 flistTghCutsBack->Add(hd0xd0TGHCbackpt);
4119 namehist="hd0D0VSd0xd0TGHCback_pt";
4121 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Back ptbin=";
4123 hd0D0VSd0xd0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4124 hd0D0VSd0xd0TGHCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4125 hd0D0VSd0xd0TGHCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4126 flistTghCutsBack->Add(hd0D0VSd0xd0TGHCbackpt);
4129 namehist="hangletracksVSd0xd0TGHCback_pt";
4131 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Back ptbin=";
4133 hangletracksVSd0xd0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4134 hangletracksVSd0xd0TGHCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4135 hangletracksVSd0xd0TGHCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
4136 flistTghCutsBack->Add(hangletracksVSd0xd0TGHCbackpt);
4139 namehist="hangletracksVSd0D0TGHCback_pt";
4141 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Back ptbin=";
4143 hangletracksVSd0D0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4144 hangletracksVSd0D0TGHCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4145 hangletracksVSd0D0TGHCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
4146 flistTghCutsBack->Add(hangletracksVSd0D0TGHCbackpt);
4150 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4151 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4156 // ####### d0 D0 histos ############
4158 TH1F *hd0D0TGHCbackPM = new TH1F("hd0D0TGHCbackPM","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4159 hd0D0TGHCbackPM->SetXTitle("Impact parameter [#mum]");
4160 hd0D0TGHCbackPM->SetYTitle("Entries");
4162 TH1F *hd0D0VtxTrueTGHCbackPM = new TH1F("hd0D0VtxTrueTGHCbackPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4163 hd0D0VtxTrueTGHCbackPM->SetXTitle("Impact parameter [#mum]");
4164 hd0D0VtxTrueTGHCbackPM->SetYTitle("Entries");
4166 TH1F *hMCd0D0TGHCbackPM = new TH1F("hMCd0D0TGHCbackPM","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4167 hMCd0D0TGHCbackPM->SetXTitle("MC Impact parameter [#mum]");
4168 hMCd0D0TGHCbackPM->SetYTitle("Entries");
4170 TH1F *hd0D0TGHCbackSB = new TH1F("hd0D0TGHCbackSB","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4171 hd0D0TGHCbackSB->SetXTitle("Impact parameter [#mum]");
4172 hd0D0TGHCbackSB->SetYTitle("Entries");
4174 TH1F *hd0D0VtxTrueTGHCbackSB = new TH1F("hd0D0VtxTrueTGHCbackSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4175 hd0D0VtxTrueTGHCbackSB->SetXTitle("Impact parameter [#mum]");
4176 hd0D0VtxTrueTGHCbackSB->SetYTitle("Entries");
4178 TH1F *hMCd0D0TGHCbackSB = new TH1F("hMCd0D0TGHCbackSB","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4179 hMCd0D0TGHCbackSB->SetXTitle("MC Impact parameter [#mum]");
4180 hMCd0D0TGHCbackSB->SetYTitle("Entries");
4182 flistTghCutsBack->Add(hd0D0TGHCbackPM);
4183 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackPM);
4184 flistTghCutsBack->Add(hMCd0D0TGHCbackPM);
4185 flistTghCutsBack->Add(hd0D0TGHCbackSB);
4186 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackSB);
4187 flistTghCutsBack->Add(hMCd0D0TGHCbackSB);
4189 TH1F *hd0D0ptTGHCbackPM;
4190 TH1F *hMCd0D0ptTGHCbackPM;
4191 TH1F *hd0D0VtxTrueptTGHCbackPM;
4192 TH1F *hd0D0ptTGHCbackSB;
4193 TH1F *hMCd0D0ptTGHCbackSB;
4194 TH1F *hd0D0VtxTrueptTGHCbackSB;
4195 namehist="hd0D0ptTGHCback_";
4196 titlehist="D^{0} impact par. plot, Tight Cuts, Background, ";
4197 for(Int_t i=0;i<fnbins;i++){
4199 strnamept.Append("PkMss_pt");
4202 strtitlept=titlehist;
4203 strtitlept.Append(" Mass Peak, ");
4204 strtitlept+=fptbins[i];
4205 strtitlept.Append("<= pt <");
4206 strtitlept+=fptbins[i+1];
4207 strtitlept.Append(" [GeV/c]");
4209 hd0D0ptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4210 hd0D0ptTGHCbackPM->SetXTitle("Impact parameter [#mum] ");
4211 hd0D0ptTGHCbackPM->SetYTitle("Entries");
4212 flistTghCutsBack->Add(hd0D0ptTGHCbackPM);
4214 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4215 hMCd0D0ptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4216 hMCd0D0ptTGHCbackPM->SetXTitle("MC Impact parameter [#mum] ");
4217 hMCd0D0ptTGHCbackPM->SetYTitle("Entries");
4218 flistTghCutsBack->Add(hMCd0D0ptTGHCbackPM);
4221 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4222 hd0D0VtxTrueptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4223 hd0D0VtxTrueptTGHCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4224 hd0D0VtxTrueptTGHCbackPM->SetYTitle("Entries");
4225 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackPM);
4228 strnamept.Append("SBMss_pt");
4231 strtitlept=titlehist;
4232 strtitlept.Append(" Side Bands, ");
4233 strtitlept+=fptbins[i];
4234 strtitlept.Append("<= pt <");
4235 strtitlept+=fptbins[i+1];
4236 strtitlept.Append(" [GeV/c]");
4238 hd0D0ptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4239 hd0D0ptTGHCbackSB->SetXTitle("Impact parameter [#mum] ");
4240 hd0D0ptTGHCbackSB->SetYTitle("Entries");
4241 flistTghCutsBack->Add(hd0D0ptTGHCbackSB);
4243 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4244 hMCd0D0ptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4245 hMCd0D0ptTGHCbackSB->SetXTitle("MC Impact parameter [#mum] ");
4246 hMCd0D0ptTGHCbackSB->SetYTitle("Entries");
4247 flistTghCutsBack->Add(hMCd0D0ptTGHCbackSB);
4249 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4250 hd0D0VtxTrueptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4251 hd0D0VtxTrueptTGHCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4252 hd0D0VtxTrueptTGHCbackSB->SetYTitle("Entries");
4253 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackSB);
4258 //############ TIGHT CUTS FROMB HISTOGRAMS ###########
4260 //####### global properties histos
4262 TH2F *hCPtaVSd0d0TGHCfromB=new TH2F("hCPtaVSd0d0TGHCfromB","hCPtaVSd0d0_TightCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
4263 TH1F *hSecVtxZTGHCfromB=new TH1F("hSecVtxZTGHCfromB","hSecVtxZ_TightCuts_FromB",1000,-8.,8.);
4264 TH1F *hSecVtxXTGHCfromB=new TH1F("hSecVtxXTGHCfromB","hSecVtxX_TightCuts_FromB",1000,-3000.,3000.);
4265 TH1F *hSecVtxYTGHCfromB=new TH1F("hSecVtxYTGHCfromB","hSecVtxY_TightCuts_FromB",1000,-3000.,3000.);
4266 TH2F *hSecVtxXYTGHCfromB=new TH2F("hSecVtxXYTGHCfromB","hSecVtxXY_TightCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
4267 TH1F *hSecVtxPhiTGHCfromB=new TH1F("hSecVtxPhiTGHCfromB","hSecVtxPhi_TightCuts_FromB",180,-180.1,180.1);
4268 TH1F *hd0singlTrackTGHCfromB=new TH1F("hd0singlTrackTGHCfromB","hd0singlTrackTightCuts_FromB",1000,-5000.,5000.);
4269 TH1F *hCPtaTGHCfromB=new TH1F("hCPtaTGHCfromB","hCPta_TightCuts_FromB",100,-1.,1.);
4270 TH1F *hd0xd0TGHCfromB=new TH1F("hd0xd0TGHCfromB","hd0xd0_TightCuts_FromB",1000,-100000.,100000.);
4271 TH1F *hMassTrueTGHCfromB=new TH1F("hMassTrueTGHCfromB","D^{0} MC inv. Mass Tight Cuts FromB(All momenta)",600,1.600,2.200);
4272 TH1F *hMassTGHCfromB=new TH1F("hMassTGHCfromB","D^{0} inv. Mass Tight Cuts FromB (All momenta)",600,1.600,2.200);
4273 hMassTGHCfromB->Sumw2();
4274 TH1F *hMassTrueTGHCfromBPM=new TH1F("hMassTrueTGHCfromBPM","D^{0} MC inv. Mass Tight Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
4275 TH1F *hMassTGHCfromBPM=new TH1F("hMassTGHCfromBPM","D^{0} inv. Mass Tight Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
4276 hMassTGHCfromBPM->Sumw2();
4277 TH1F *hMassTrueTGHCfromBSB=new TH1F("hMassTrueTGHCfromBSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromB(All momenta)",600,1.600,2.200);
4278 TH1F *hMassTGHCfromBSB=new TH1F("hMassTGHCfromBSB","D^{0} inv. Mass in Side Bands Tight Cuts FromB (All momenta)",600,1.600,2.200);
4279 hMassTGHCfromBSB->Sumw2();
4281 flistTghCutsFromB->Add(hCPtaVSd0d0TGHCfromB);
4282 flistTghCutsFromB->Add(hSecVtxZTGHCfromB);
4283 flistTghCutsFromB->Add(hSecVtxYTGHCfromB);
4284 flistTghCutsFromB->Add(hSecVtxXTGHCfromB);
4285 flistTghCutsFromB->Add(hSecVtxXYTGHCfromB);
4286 flistTghCutsFromB->Add(hSecVtxPhiTGHCfromB);
4287 flistTghCutsFromB->Add(hd0singlTrackTGHCfromB);
4288 flistTghCutsFromB->Add(hCPtaTGHCfromB);
4289 flistTghCutsFromB->Add(hd0xd0TGHCfromB);
4290 flistTghCutsFromB->Add(hMassTrueTGHCfromB);
4291 flistTghCutsFromB->Add(hMassTGHCfromB);
4292 flistTghCutsFromB->Add(hMassTrueTGHCfromBPM);
4293 flistTghCutsFromB->Add(hMassTGHCfromBPM);
4294 flistTghCutsFromB->Add(hMassTrueTGHCfromBSB);
4295 flistTghCutsFromB->Add(hMassTGHCfromBSB);
4299 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4300 TH1F *hdcaTGHCfromB=new TH1F("hdcaTGHCfromB","hdca_TightCuts_FromB",100,0.,1000.);
4301 hdcaTGHCfromB->SetXTitle("dca [#mum]");
4302 hdcaTGHCfromB->SetYTitle("Entries");
4303 TH1F *hcosthetastarTGHCfromB=new TH1F("hcosthetastarTGHCfromB","hCosThetaStar_TightCuts_FromB",50,-1.,1.);
4304 hcosthetastarTGHCfromB->SetXTitle("cos #theta^{*}");
4305 hcosthetastarTGHCfromB->SetYTitle("Entries");
4306 TH1F *hptD0TGHCfromB=new TH1F("hptD0TGHCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4307 hptD0TGHCfromB->SetXTitle("p_{t} [GeV/c]");
4308 hptD0TGHCfromB->SetYTitle("Entries");
4309 TH1F *hptD0VsMaxPtTGHCfromB=new TH1F("hptD0VsMaxPtTGHCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4310 TH2F *hptD0PTallsqrtTGHCfromB=new TH2F("hptD0PTallsqrtTGHCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4311 TH2F *hptD0PTallTGHCfromB=new TH2F("hptD0PTallTGHCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4312 TH2F *hptD0vsptBTGHCfromB=new TH2F("hptD0vsptBTGHCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4313 TH2F *hpD0vspBTGHCfromB=new TH2F("hpD0vspBTGHCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4314 TH2F *hptD0vsptcquarkTGHCfromB=new TH2F("hptD0vsptcquarkTGHCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4315 TH2F *hpD0vspcquarkTGHCfromB=new TH2F("hpD0vspcquarkTGHCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4316 flistTghCutsFromB->Add(hdcaTGHCfromB);
4317 flistTghCutsFromB->Add(hcosthetastarTGHCfromB);
4318 flistTghCutsFromB->Add(hptD0TGHCfromB);
4319 flistTghCutsFromB->Add(hptD0VsMaxPtTGHCfromB);
4320 flistTghCutsFromB->Add(hptD0PTallsqrtTGHCfromB);
4321 flistTghCutsFromB->Add(hptD0PTallTGHCfromB);
4322 flistTghCutsFromB->Add(hptD0vsptBTGHCfromB);
4323 flistTghCutsFromB->Add(hpD0vspBTGHCfromB);
4324 flistTghCutsFromB->Add(hptD0vsptcquarkTGHCfromB);
4325 flistTghCutsFromB->Add(hpD0vspcquarkTGHCfromB);
4327 TH1F *hd0zD0ptTGHCfromB;
4328 TH1F *hInvMassD0TGHCfromB,*hInvMassD0barTGHCfromB;
4329 TH2F *hInvMassPtTGHCfromB=new TH2F("hInvMassPtTGHCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4330 THnSparseF *hSparseTGHCfromB=new THnSparseF("hSparseTGHCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4331 hSparseTGHCfromB->SetBinEdges(0,massbins);
4332 hSparseTGHCfromB->SetBinEdges(1,massbins);
4333 hSparseTGHCfromB->SetBinEdges(2,ptbinsForNsparse);
4334 hSparseTGHCfromB->SetBinEdges(3,impparbins);
4335 hSparseTGHCfromB->SetBinEdges(4,massHypoBins);
4336 flistTghCutsFromB->Add(hSparseTGHCfromB);
4337 TH1F *hetaTGHCfromB;
4338 TH1F *hCosPDPBTGHCfromB;
4339 TH1F *hCosPcPDTGHCfromB;
4340 flistTghCutsFromB->Add(hInvMassPtTGHCfromB);
4341 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4342 TH2F *hd0D0VSd0xd0TGHCfromBpt;
4343 TH2F *hangletracksVSd0xd0TGHCfromBpt;
4344 TH2F *hangletracksVSd0D0TGHCfromBpt;
4345 TH1F *hd0xd0TGHCfromBpt;
4347 TH2F *hTOFpidTGHCfromB=new TH2F("hTOFpidTGHCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4348 flistTghCutsFromB->Add(hTOFpidTGHCfromB);
4351 for(Int_t i=0;i<fnbins;i++){
4352 namehist="hd0zD0ptTGHCfromB_pt";
4354 titlehist="d0(z) Tight Cuts FromBm ptbin=";
4356 hd0zD0ptTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4357 hd0zD0ptTGHCfromB->SetXTitle("d_{0}(z) [#mum]");
4358 hd0zD0ptTGHCfromB->SetYTitle("Entries");
4359 flistTghCutsFromB->Add(hd0zD0ptTGHCfromB);
4361 namehist="hInvMassD0TGHCfromB_pt";
4363 titlehist="Invariant Mass Tight Cuts FromB ptbin=";
4365 hInvMassD0TGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4366 hInvMassD0TGHCfromB->SetXTitle("Invariant Mass [GeV]");
4367 hInvMassD0TGHCfromB->SetYTitle("Entries");
4368 flistTghCutsFromB->Add(hInvMassD0TGHCfromB);
4370 namehist="hInvMassD0barTGHCfromB_pt";
4372 titlehist="Invariant Mass D0bar Tight Cuts FromB ptbin=";
4374 hInvMassD0barTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4375 hInvMassD0barTGHCfromB->SetXTitle("Invariant Mass [GeV]");
4376 hInvMassD0barTGHCfromB->SetYTitle("Entries");
4377 flistTghCutsFromB->Add(hInvMassD0barTGHCfromB);
4379 namehist="hetaTGHCfromB_pt";
4381 titlehist="eta Tight Cuts FromB ptbin=";
4383 hetaTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4384 hetaTGHCfromB->SetXTitle("Pseudorapidity");
4385 hetaTGHCfromB->SetYTitle("Entries");
4386 flistTghCutsFromB->Add(hetaTGHCfromB);
4388 namehist="hCosPDPBTGHCfromB_pt";
4390 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4392 hCosPDPBTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4393 hCosPDPBTGHCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
4394 hCosPDPBTGHCfromB->SetYTitle("Entries");
4395 flistTghCutsFromB->Add(hCosPDPBTGHCfromB);
4397 namehist="hCosPcPDTGHCfromB_pt";
4399 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4401 hCosPcPDTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4402 hCosPcPDTGHCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
4403 hCosPcPDTGHCfromB->SetYTitle("Entries");
4404 flistTghCutsFromB->Add(hCosPcPDTGHCfromB);
4406 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4407 namehist="hd0xd0TGHCfromB_pt";
4409 titlehist="d0xd0 Tight Cuts FromB ptbin=";
4411 hd0xd0TGHCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4412 hd0xd0TGHCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4413 hd0xd0TGHCfromBpt->SetYTitle("Entries");
4414 flistTghCutsFromB->Add(hd0xd0TGHCfromBpt);
4417 namehist="hd0D0VSd0xd0TGHCfromB_pt";
4419 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromB ptbin=";
4421 hd0D0VSd0xd0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4422 hd0D0VSd0xd0TGHCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4423 hd0D0VSd0xd0TGHCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4424 flistTghCutsFromB->Add(hd0D0VSd0xd0TGHCfromBpt);
4427 namehist="hangletracksVSd0xd0TGHCfromB_pt";
4429 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromB ptbin=";
4431 hangletracksVSd0xd0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4432 hangletracksVSd0xd0TGHCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4433 hangletracksVSd0xd0TGHCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
4434 flistTghCutsFromB->Add(hangletracksVSd0xd0TGHCfromBpt);
4437 namehist="hangletracksVSd0D0TGHCfromB_pt";
4439 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts FromB ptbin=";
4441 hangletracksVSd0D0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4442 hangletracksVSd0D0TGHCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4443 hangletracksVSd0D0TGHCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
4444 flistTghCutsFromB->Add(hangletracksVSd0D0TGHCfromBpt);
4447 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4448 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4454 // ######### d0 D0 histos ##############
4455 TH1F *hd0D0TGHCfromBPM = new TH1F("hd0D0TGHCfromBPM","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4456 hd0D0TGHCfromBPM->SetXTitle("Impact parameter [#mum]");
4457 hd0D0TGHCfromBPM->SetYTitle("Entries");
4459 TH1F *hd0D0VtxTrueTGHCfromBPM = new TH1F("hd0D0VtxTrueTGHCfromBPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4460 hd0D0VtxTrueTGHCfromBPM->SetXTitle("Impact parameter [#mum]");
4461 hd0D0VtxTrueTGHCfromBPM->SetYTitle("Entries");
4463 TH1F *hMCd0D0TGHCfromBPM = new TH1F("hMCd0D0TGHCfromBPM","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4464 hMCd0D0TGHCfromBPM->SetXTitle("MC Impact parameter [#mum]");
4465 hMCd0D0TGHCfromBPM->SetYTitle("Entries");
4467 TH1F *hd0D0TGHCfromBSB = new TH1F("hd0D0TGHCfromBSB","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4468 hd0D0TGHCfromBSB->SetXTitle("Impact parameter [#mum]");
4469 hd0D0TGHCfromBSB->SetYTitle("Entries");
4471 TH1F *hd0D0VtxTrueTGHCfromBSB = new TH1F("hd0D0VtxTrueTGHCfromBSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4472 hd0D0VtxTrueTGHCfromBSB->SetXTitle("Impact parameter [#mum]");
4473 hd0D0VtxTrueTGHCfromBSB->SetYTitle("Entries");
4475 TH1F *hMCd0D0TGHCfromBSB = new TH1F("hMCd0D0TGHCfromBSB","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4476 hMCd0D0TGHCfromBSB->SetXTitle("MC Impact parameter [#mum]");
4477 hMCd0D0TGHCfromBSB->SetYTitle("Entries");
4479 flistTghCutsFromB->Add(hd0D0TGHCfromBPM);
4480 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBPM);
4481 flistTghCutsFromB->Add(hMCd0D0TGHCfromBPM);
4482 flistTghCutsFromB->Add(hd0D0TGHCfromBSB);
4483 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBSB);
4484 flistTghCutsFromB->Add(hMCd0D0TGHCfromBSB);
4486 TH1F *hd0D0ptTGHCfromBPM;
4487 TH1F *hMCd0D0ptTGHCfromBPM;
4488 TH1F *hd0D0VtxTrueptTGHCfromBPM;
4489 TH1F *hd0D0ptTGHCfromBSB;
4490 TH1F *hMCd0D0ptTGHCfromBSB;
4491 TH1F *hd0D0VtxTrueptTGHCfromBSB;
4492 namehist="hd0D0ptTGHCfromB_";
4493 titlehist="D^{0} impact par. plot, Tight Cuts, FromB, ";
4494 for(Int_t i=0;i<fnbins;i++){
4496 strnamept.Append("PkMss_pt");
4499 strtitlept=titlehist;
4500 strtitlept.Append(" Mass Peak, ");
4501 strtitlept+=fptbins[i];
4502 strtitlept.Append("<= pt <");
4503 strtitlept+=fptbins[i+1];
4504 strtitlept.Append(" [GeV/c]");
4506 hd0D0ptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4507 hd0D0ptTGHCfromBPM->SetXTitle("Impact parameter [#mum] ");
4508 hd0D0ptTGHCfromBPM->SetYTitle("Entries");
4509 flistTghCutsFromB->Add(hd0D0ptTGHCfromBPM);
4511 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4512 hMCd0D0ptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4513 hMCd0D0ptTGHCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
4514 hMCd0D0ptTGHCfromBPM->SetYTitle("Entries");
4515 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBPM);
4518 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4519 hd0D0VtxTrueptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4520 hd0D0VtxTrueptTGHCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4521 hd0D0VtxTrueptTGHCfromBPM->SetYTitle("Entries");
4522 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBPM);
4525 strnamept.Append("SBMss_pt");
4528 strtitlept=titlehist;
4529 strtitlept.Append(" Side Bands, ");
4530 strtitlept+=fptbins[i];
4531 strtitlept.Append("<= pt <");
4532 strtitlept+=fptbins[i+1];
4533 strtitlept.Append(" [GeV/c]");
4535 hd0D0ptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4536 hd0D0ptTGHCfromBSB->SetXTitle("Impact parameter [#mum] ");
4537 hd0D0ptTGHCfromBSB->SetYTitle("Entries");
4538 flistTghCutsFromB->Add(hd0D0ptTGHCfromBSB);
4540 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4541 hMCd0D0ptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4542 hMCd0D0ptTGHCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
4543 hMCd0D0ptTGHCfromBSB->SetYTitle("Entries");
4544 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBSB);
4546 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4547 hd0D0VtxTrueptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4548 hd0D0VtxTrueptTGHCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4549 hd0D0VtxTrueptTGHCfromBSB->SetYTitle("Entries");
4550 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBSB);
4555 //############ TIGHT CUTS FROM DSTAR HISTOGRAMS ###########
4557 //############## global properties histos
4558 TH2F *hCPtaVSd0d0TGHCfromDstar=new TH2F("hCPtaVSd0d0TGHCfromDstar","hCPtaVSd0d0_TightCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
4559 TH1F *hSecVtxZTGHCfromDstar=new TH1F("hSecVtxZTGHCfromDstar","hSecVtxZ_TightCuts_FromDStar",1000,-8.,8.);
4560 TH1F *hSecVtxXTGHCfromDstar=new TH1F("hSecVtxXTGHCfromDstar","hSecVtxX_TightCuts_FromDStar",1000,-3000.,3000.);
4561 TH1F *hSecVtxYTGHCfromDstar=new TH1F("hSecVtxYTGHCfromDstar","hSecVtxY_TightCuts_FromDStar",1000,-3000.,3000.);
4562 TH2F *hSecVtxXYTGHCfromDstar=new TH2F("hSecVtxXYTGHCfromDstar","hSecVtxXY_TightCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
4563 TH1F *hSecVtxPhiTGHCfromDstar=new TH1F("hSecVtxPhiTGHCfromDstar","hSecVtxPhi_TightCuts_FromDStar",180,-180.1,180.1);
4564 TH1F *hd0singlTrackTGHCfromDstar=new TH1F("hd0singlTrackTGHCfromDstar","hd0singlTrackTightCuts_FromDstar",1000,-5000.,5000.);
4565 TH1F *hCPtaTGHCfromDstar=new TH1F("hCPtaTGHCfromDstar","hCPta_TightCuts_FromDStar",100,-1.,1.);
4566 TH1F *hd0xd0TGHCfromDstar=new TH1F("hd0xd0TGHCfromDstar","hd0xd0_TightCuts_FromDStar",1000,-100000.,100000.);
4567 TH1F *hMassTrueTGHCfromDstar=new TH1F("hMassTrueTGHCfromDstar","D^{0} MC inv. Mass Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
4568 TH1F *hMassTGHCfromDstar=new TH1F("hMassTGHCfromDstar","D^{0} inv. Mass Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
4569 hMassTGHCfromDstar->Sumw2();
4570 TH1F *hMassTrueTGHCfromDstarPM=new TH1F("hMassTrueTGHCfromDstarPM","D^{0} MC inv. Mass Tight Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
4571 TH1F *hMassTGHCfromDstarPM=new TH1F("hMassTGHCfromDstarPM","D^{0} inv. Mass Tight Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
4572 hMassTGHCfromDstarPM->Sumw2();
4573 TH1F *hMassTrueTGHCfromDstarSB=new TH1F("hMassTrueTGHCfromDstarSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
4574 TH1F *hMassTGHCfromDstarSB=new TH1F("hMassTGHCfromDstarSB","D^{0} inv. Mass in Side Bands Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
4575 hMassTGHCfromDstarSB->Sumw2();
4577 flistTghCutsFromDstar->Add(hCPtaVSd0d0TGHCfromDstar);
4578 flistTghCutsFromDstar->Add(hSecVtxZTGHCfromDstar);
4579 flistTghCutsFromDstar->Add(hSecVtxYTGHCfromDstar);
4580 flistTghCutsFromDstar->Add(hSecVtxXTGHCfromDstar);
4581 flistTghCutsFromDstar->Add(hSecVtxXYTGHCfromDstar);
4582 flistTghCutsFromDstar->Add(hSecVtxPhiTGHCfromDstar);
4583 flistTghCutsFromDstar->Add(hd0singlTrackTGHCfromDstar);
4584 flistTghCutsFromDstar->Add(hCPtaTGHCfromDstar);
4585 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstar);
4586 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstar);
4587 flistTghCutsFromDstar->Add(hMassTGHCfromDstar);
4588 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarPM);
4589 flistTghCutsFromDstar->Add(hMassTGHCfromDstarPM);
4590 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarSB);
4591 flistTghCutsFromDstar->Add(hMassTGHCfromDstarSB);
4597 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4598 TH1F *hdcaTGHCfromDstar=new TH1F("hdcaTGHCfromDstar","hdca_TightCuts_FromDstar",100,0.,1000.);
4599 hdcaTGHCfromDstar->SetXTitle("dca [#mum]");
4600 hdcaTGHCfromDstar->SetYTitle("Entries");
4601 TH1F *hcosthetastarTGHCfromDstar=new TH1F("hcosthetastarTGHCfromDstar","hCosThetaStar_TightCuts_FromDstar",50,-1.,1.);
4602 hcosthetastarTGHCfromDstar->SetXTitle("cos #theta^{*}");
4603 hcosthetastarTGHCfromDstar->SetYTitle("Entries");
4604 TH1F *hptD0TGHCfromDstar=new TH1F("hptD0TGHCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4605 hptD0TGHCfromDstar->SetXTitle("p_{t} [GeV/c]");
4606 hptD0TGHCfromDstar->SetYTitle("Entries");
4607 TH1F *hptD0VsMaxPtTGHCfromDstar=new TH1F("hptD0VsMaxPtTGHCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4608 TH2F *hptD0PTallsqrtTGHCfromDstar=new TH2F("hptD0PTallsqrtTGHCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4609 TH2F *hptD0PTallTGHCfromDstar=new TH2F("hptD0PTallTGHCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4610 TH2F *hptD0vsptBTGHCfromDstar=new TH2F("hptD0vsptBTGHCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4611 TH2F *hpD0vspBTGHCfromDstar=new TH2F("hpD0vspBTGHCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4612 TH2F *hptD0vsptcquarkTGHCfromDstar=new TH2F("hptD0vsptcquarkTGHCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4613 TH2F *hpD0vspcquarkTGHCfromDstar=new TH2F("hpD0vspcquarkTGHCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4614 flistTghCutsFromDstar->Add(hdcaTGHCfromDstar);
4615 flistTghCutsFromDstar->Add(hcosthetastarTGHCfromDstar);
4616 flistTghCutsFromDstar->Add(hptD0TGHCfromDstar);
4617 flistTghCutsFromDstar->Add(hptD0VsMaxPtTGHCfromDstar);
4618 flistTghCutsFromDstar->Add(hptD0PTallsqrtTGHCfromDstar);
4619 flistTghCutsFromDstar->Add(hptD0PTallTGHCfromDstar);
4620 flistTghCutsFromDstar->Add(hptD0vsptBTGHCfromDstar);
4621 flistTghCutsFromDstar->Add(hpD0vspBTGHCfromDstar);
4622 flistTghCutsFromDstar->Add(hptD0vsptcquarkTGHCfromDstar);
4623 flistTghCutsFromDstar->Add(hpD0vspcquarkTGHCfromDstar);
4625 TH1F *hd0zD0ptTGHCfromDstar;
4626 TH1F *hInvMassD0TGHCfromDstar,*hInvMassD0barTGHCfromDstar;
4627 TH1F *hetaTGHCfromDstar;
4628 TH2F *hInvMassPtTGHCfromDstar=new TH2F("hInvMassPtTGHCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4629 THnSparseF *hSparseTGHCfromDstar=new THnSparseF("hSparseTGHCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4630 hSparseTGHCfromDstar->SetBinEdges(0,massbins);
4631 hSparseTGHCfromDstar->SetBinEdges(1,massbins);
4632 hSparseTGHCfromDstar->SetBinEdges(2,ptbinsForNsparse);
4633 hSparseTGHCfromDstar->SetBinEdges(3,impparbins);
4634 hSparseTGHCfromDstar->SetBinEdges(4,massHypoBins);
4635 flistTghCutsFromDstar->Add(hSparseTGHCfromDstar);
4636 TH1F *hCosPDPBTGHCfromDstar;
4637 TH1F *hCosPcPDTGHCfromDstar;
4638 flistTghCutsFromDstar->Add(hInvMassPtTGHCfromDstar);
4639 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4640 TH2F *hd0D0VSd0xd0TGHCfromDstarpt;
4641 TH2F *hangletracksVSd0xd0TGHCfromDstarpt;
4642 TH2F *hangletracksVSd0D0TGHCfromDstarpt;
4643 TH1F *hd0xd0TGHCfromDstarpt;
4645 TH2F *hTOFpidTGHCfromDstar=new TH2F("hTOFpidTGHCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4646 flistTghCutsFromDstar->Add(hTOFpidTGHCfromDstar);
4648 for(Int_t i=0;i<fnbins;i++){
4649 namehist="hd0zD0ptTGHCfromDstar_pt";
4651 titlehist="d0(z) Tight Cuts FromDstarm ptbin=";
4653 hd0zD0ptTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4654 hd0zD0ptTGHCfromDstar->SetXTitle("d_{0}(z) [#mum]");
4655 hd0zD0ptTGHCfromDstar->SetYTitle("Entries");
4656 flistTghCutsFromDstar->Add(hd0zD0ptTGHCfromDstar);
4658 namehist="hInvMassD0TGHCfromDstar_pt";
4660 titlehist="Invariant Mass Tight Cuts FromDstar ptbin=";
4662 hInvMassD0TGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4663 hInvMassD0TGHCfromDstar->SetXTitle("Invariant Mass [GeV]");
4664 hInvMassD0TGHCfromDstar->SetYTitle("Entries");
4665 flistTghCutsFromDstar->Add(hInvMassD0TGHCfromDstar);
4667 namehist="hInvMassD0barTGHCfromDstar_pt";
4669 titlehist="Invariant Mass D0bar Tight Cuts FromDstar ptbin=";
4671 hInvMassD0barTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4672 hInvMassD0barTGHCfromDstar->SetXTitle("Invariant Mass [GeV]");
4673 hInvMassD0barTGHCfromDstar->SetYTitle("Entries");
4674 flistTghCutsFromDstar->Add(hInvMassD0barTGHCfromDstar);
4676 namehist="hetaTGHCfromDstar_pt";
4678 titlehist="eta Tight Cuts FromDstar ptbin=";
4680 hetaTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4681 hetaTGHCfromDstar->SetXTitle("Pseudorapidity");
4682 hetaTGHCfromDstar->SetYTitle("Entries");
4683 flistTghCutsFromDstar->Add(hetaTGHCfromDstar);
4685 namehist="hCosPDPBTGHCfromDstar_pt";
4687 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4689 hCosPDPBTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4690 hCosPDPBTGHCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
4691 hCosPDPBTGHCfromDstar->SetYTitle("Entries");
4692 flistTghCutsFromDstar->Add(hCosPDPBTGHCfromDstar);
4694 namehist="hCosPcPDTGHCfromDstar_pt";
4696 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4698 hCosPcPDTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4699 hCosPcPDTGHCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
4700 hCosPcPDTGHCfromDstar->SetYTitle("Entries");
4701 flistTghCutsFromDstar->Add(hCosPcPDTGHCfromDstar);
4703 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4704 namehist="hd0xd0TGHCfromDstar_pt";
4706 titlehist="d0xd0 Tight Cuts FromDstar ptbin=";
4708 hd0xd0TGHCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4709 hd0xd0TGHCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4710 hd0xd0TGHCfromDstarpt->SetYTitle("Entries");
4711 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstarpt);
4714 namehist="hd0D0VSd0xd0TGHCfromDstar_pt";
4716 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromDstar ptbin=";
4718 hd0D0VSd0xd0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4719 hd0D0VSd0xd0TGHCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4720 hd0D0VSd0xd0TGHCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4721 flistTghCutsFromDstar->Add(hd0D0VSd0xd0TGHCfromDstarpt);
4724 namehist="hangletracksVSd0xd0TGHCfromDstar_pt";
4726 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromDstar ptbin=";
4728 hangletracksVSd0xd0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4729 hangletracksVSd0xd0TGHCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4730 hangletracksVSd0xd0TGHCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
4731 flistTghCutsFromDstar->Add(hangletracksVSd0xd0TGHCfromDstarpt);
4734 namehist="hangletracksVSd0D0TGHCfromDstar_pt";
4736 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts FromDstar ptbin=";
4738 hangletracksVSd0D0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4739 hangletracksVSd0D0TGHCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4740 hangletracksVSd0D0TGHCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
4741 flistTghCutsFromDstar->Add(hangletracksVSd0D0TGHCfromDstarpt);
4745 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4746 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4749 //########## d0 D0 histos #############
4750 TH1F *hd0D0TGHCfromDstPM = new TH1F("hd0D0TGHCfromDstarPM","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4751 hd0D0TGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
4752 hd0D0TGHCfromDstPM->SetYTitle("Entries");
4754 TH1F *hd0D0VtxTrueTGHCfromDstPM = new TH1F("hd0D0VtxTrueTGHCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4755 hd0D0VtxTrueTGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
4756 hd0D0VtxTrueTGHCfromDstPM->SetYTitle("Entries");
4758 TH1F *hMCd0D0TGHCfromDstPM = new TH1F("hMCd0D0TGHCfromDstarPM","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4759 hMCd0D0TGHCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
4760 hMCd0D0TGHCfromDstPM->SetYTitle("Entries");
4762 TH1F *hd0D0TGHCfromDstSB = new TH1F("hd0D0TGHCfromDstarSB","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4763 hd0D0TGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
4764 hd0D0TGHCfromDstSB->SetYTitle("Entries");
4766 TH1F *hd0D0VtxTrueTGHCfromDstSB = new TH1F("hd0D0VtxTrueTGHCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4767 hd0D0VtxTrueTGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
4768 hd0D0VtxTrueTGHCfromDstSB->SetYTitle("Entries");
4770 TH1F *hMCd0D0TGHCfromDstSB = new TH1F("hMCd0D0TGHCfromDstarSB","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4771 hMCd0D0TGHCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
4772 hMCd0D0TGHCfromDstSB->SetYTitle("Entries");
4774 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstPM);
4775 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstPM);
4776 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstPM);
4777 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstSB);
4778 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstSB);
4779 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstSB);
4781 TH1F *hd0D0ptTGHCfromDstPM;
4782 TH1F *hMCd0D0ptTGHCfromDstPM;
4783 TH1F *hd0D0VtxTrueptTGHCfromDstPM;
4784 TH1F *hd0D0ptTGHCfromDstSB;
4785 TH1F *hMCd0D0ptTGHCfromDstSB;
4786 TH1F *hd0D0VtxTrueptTGHCfromDstSB;
4787 namehist="hd0D0ptTGHCfromDstar_";
4788 titlehist="D^{0} impact par. plot, Tight Cuts, FromDStar, ";
4789 for(Int_t i=0;i<fnbins;i++){
4791 strnamept.Append("PkMss_pt");
4794 strtitlept=titlehist;
4795 strtitlept.Append(" Mass Peak, ");
4796 strtitlept+=fptbins[i];
4797 strtitlept.Append("<= pt <");
4798 strtitlept+=fptbins[i+1];
4799 strtitlept.Append(" [GeV/c]");
4801 hd0D0ptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4802 hd0D0ptTGHCfromDstPM->SetXTitle("Impact parameter [#mum] ");
4803 hd0D0ptTGHCfromDstPM->SetYTitle("Entries");
4804 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstPM);
4806 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4807 hMCd0D0ptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4808 hMCd0D0ptTGHCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
4809 hMCd0D0ptTGHCfromDstPM->SetYTitle("Entries");
4810 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstPM);
4813 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4814 hd0D0VtxTrueptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4815 hd0D0VtxTrueptTGHCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4816 hd0D0VtxTrueptTGHCfromDstPM->SetYTitle("Entries");
4817 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstPM);
4820 strnamept.Append("SBMss_pt");
4823 strtitlept=titlehist;
4824 strtitlept.Append(" Side Bands, ");
4825 strtitlept+=fptbins[i];
4826 strtitlept.Append("<= pt <");
4827 strtitlept+=fptbins[i+1];
4828 strtitlept.Append(" [GeV/c]");
4830 hd0D0ptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4831 hd0D0ptTGHCfromDstSB->SetXTitle("Impact parameter [#mum] ");
4832 hd0D0ptTGHCfromDstSB->SetYTitle("Entries");
4833 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstSB);
4835 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4836 hMCd0D0ptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4837 hMCd0D0ptTGHCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
4838 hMCd0D0ptTGHCfromDstSB->SetYTitle("Entries");
4839 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstSB);
4841 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4842 hd0D0VtxTrueptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4843 hd0D0VtxTrueptTGHCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4844 hd0D0VtxTrueptTGHCfromDstSB->SetYTitle("Entries");
4845 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstSB);
4849 //############ TIGHT CUTS OTHER HISTOGRAMS ###########
4851 //########### global properties histos ###########
4853 TH2F *hCPtaVSd0d0TGHCother=new TH2F("hCPtaVSd0d0TGHCother","hCPtaVSd0d0_TightCuts_other",1000,-100000.,100000.,100,-1.,1.);
4854 TH1F *hSecVtxZTGHCother=new TH1F("hSecVtxZTGHCother","hSecVtxZ_TightCuts_other",1000,-8.,8.);
4855 TH1F *hSecVtxXTGHCother=new TH1F("hSecVtxXTGHCother","hSecVtxX_TightCuts_other",1000,-3000.,3000.);
4856 TH1F *hSecVtxYTGHCother=new TH1F("hSecVtxYTGHCother","hSecVtxY_TightCuts_other",1000,-3000.,3000.);
4857 TH2F *hSecVtxXYTGHCother=new TH2F("hSecVtxXYTGHCother","hSecVtxXY_TightCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
4858 TH1F *hSecVtxPhiTGHCother=new TH1F("hSecVtxPhiTGHCother","hSecVtxPhi_TightCuts_other",180,-180.1,180.1);
4859 TH1F *hd0singlTrackTGHCother=new TH1F("hd0singlTrackTGHCother","hd0singlTrackTightCuts_Other",1000,-5000.,5000.);
4860 TH1F *hCPtaTGHCother=new TH1F("hCPtaTGHCother","hCPta_TightCuts_other",100,-1.,1.);
4861 TH1F *hd0xd0TGHCother=new TH1F("hd0xd0TGHCother","hd0xd0_TightCuts_other",1000,-100000.,100000.);
4862 TH1F *hMassTrueTGHCother=new TH1F("hMassTrueTGHCother","D^{0} MC inv. Mass Tight Cuts other(All momenta)",600,1.600,2.200);
4863 TH1F *hMassTGHCother=new TH1F("hMassTGHCother","D^{0} inv. Mass Tight Cuts other (All momenta)",600,1.600,2.200);
4864 hMassTGHCother->Sumw2();
4865 TH1F *hMassTrueTGHCotherPM=new TH1F("hMassTrueTGHCotherPM","D^{0} MC inv. Mass Tight Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
4866 TH1F *hMassTGHCotherPM=new TH1F("hMassTGHCotherPM","D^{0} inv. Mass Tight Cuts other (All momenta), MassPeak",600,1.600,2.200);
4867 hMassTGHCotherPM->Sumw2();
4868 TH1F *hMassTrueTGHCotherSB=new TH1F("hMassTrueTGHCotherSB","D^{0} MC inv. Mass in Side Bands Tight Cuts other(All momenta)",600,1.600,2.200);
4869 TH1F *hMassTGHCotherSB=new TH1F("hMassTGHCotherSB","D^{0} inv. Mass in Side Bands Tight Cuts other (All momenta)",600,1.600,2.200);
4870 hMassTGHCotherSB->Sumw2();
4872 flistTghCutsOther->Add(hCPtaVSd0d0TGHCother);
4873 flistTghCutsOther->Add(hSecVtxZTGHCother);
4874 flistTghCutsOther->Add(hSecVtxYTGHCother);
4875 flistTghCutsOther->Add(hSecVtxXTGHCother);
4876 flistTghCutsOther->Add(hSecVtxXYTGHCother);
4877 flistTghCutsOther->Add(hSecVtxPhiTGHCother);
4878 flistTghCutsOther->Add(hd0singlTrackTGHCother);
4879 flistTghCutsOther->Add(hCPtaTGHCother);
4880 flistTghCutsOther->Add(hd0xd0TGHCother);
4881 flistTghCutsOther->Add(hMassTrueTGHCother);
4882 flistTghCutsOther->Add(hMassTGHCother);
4883 flistTghCutsOther->Add(hMassTrueTGHCotherPM);
4884 flistTghCutsOther->Add(hMassTGHCotherPM);
4885 flistTghCutsOther->Add(hMassTrueTGHCotherSB);
4886 flistTghCutsOther->Add(hMassTGHCotherSB);
4891 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4892 TH1F *hdcaTGHCother=new TH1F("hdcaTGHCother","hdca_TightCuts_Other",100,0.,1000.);
4893 hdcaTGHCother->SetXTitle("dca [#mum]");
4894 hdcaTGHCother->SetYTitle("Entries");
4895 TH1F *hcosthetastarTGHCother=new TH1F("hcosthetastarTGHCother","hCosThetaStar_TightCuts_Other",50,-1.,1.);
4896 hcosthetastarTGHCother->SetXTitle("cos #theta^{*}");
4897 hcosthetastarTGHCother->SetYTitle("Entries");
4898 TH1F *hptD0TGHCother=new TH1F("hptD0TGHCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4899 hptD0TGHCother->SetXTitle("p_{t} [GeV/c]");
4900 hptD0TGHCother->SetYTitle("Entries");
4901 TH1F *hptD0VsMaxPtTGHCother=new TH1F("hptD0VsMaxPtTGHCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4902 TH2F *hptD0PTallsqrtTGHCother=new TH2F("hptD0PTallsqrtTGHCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4903 TH2F *hptD0PTallTGHCother=new TH2F("hptD0PTallTGHCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4904 TH2F *hptD0vsptBTGHCother=new TH2F("hptD0vsptBTGHCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4905 TH2F *hpD0vspBTGHCother=new TH2F("hpD0vspBTGHCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4906 TH2F *hptD0vsptcquarkTGHCother=new TH2F("hptD0vsptcquarkTGHCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4907 TH2F *hpD0vspcquarkTGHCother=new TH2F("hpD0vspcquarkTGHCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4908 flistTghCutsOther->Add(hdcaTGHCother);
4909 flistTghCutsOther->Add(hcosthetastarTGHCother);
4910 flistTghCutsOther->Add(hptD0TGHCother);
4911 flistTghCutsOther->Add(hptD0VsMaxPtTGHCother);
4912 flistTghCutsOther->Add(hptD0PTallsqrtTGHCother);
4913 flistTghCutsOther->Add(hptD0PTallTGHCother);
4914 flistTghCutsOther->Add(hptD0vsptBTGHCother);
4915 flistTghCutsOther->Add(hpD0vspBTGHCother);
4916 flistTghCutsOther->Add(hptD0vsptcquarkTGHCother);
4917 flistTghCutsOther->Add(hpD0vspcquarkTGHCother);
4919 TH1F *hd0zD0ptTGHCother;
4920 TH1F *hInvMassD0TGHCother,*hInvMassD0barTGHCother;
4921 TH2F *hInvMassPtTGHCother=new TH2F("hInvMassPtTGHCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4922 THnSparseF *hSparseTGHCother=new THnSparseF("hSparseTGHCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4923 hSparseTGHCother->SetBinEdges(0,massbins);
4924 hSparseTGHCother->SetBinEdges(1,massbins);
4925 hSparseTGHCother->SetBinEdges(2,ptbinsForNsparse);
4926 hSparseTGHCother->SetBinEdges(3,impparbins);
4927 hSparseTGHCother->SetBinEdges(4,massHypoBins);
4928 flistTghCutsOther->Add(hSparseTGHCother);
4929 TH1F *hetaTGHCother;
4930 TH1F *hCosPDPBTGHCother;
4931 TH1F *hCosPcPDTGHCother;
4932 flistTghCutsOther->Add(hInvMassPtTGHCother);
4933 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4934 TH2F *hd0D0VSd0xd0TGHCotherpt;
4935 TH2F *hangletracksVSd0xd0TGHCotherpt;
4936 TH2F *hangletracksVSd0D0TGHCotherpt;
4937 TH1F *hd0xd0TGHCotherpt;
4939 TH2F *hTOFpidTGHCother=new TH2F("hTOFpidTGHCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4940 flistTghCutsOther->Add(hTOFpidTGHCother);
4942 for(Int_t i=0;i<fnbins;i++){
4943 namehist="hd0zD0ptTGHCother_pt";
4945 titlehist="d0(z) Tight Cuts Otherm ptbin=";
4947 hd0zD0ptTGHCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4948 hd0zD0ptTGHCother->SetXTitle("d_{0}(z) [#mum]");
4949 hd0zD0ptTGHCother->SetYTitle("Entries");
4950 flistTghCutsOther->Add(hd0zD0ptTGHCother);
4952 namehist="hInvMassD0TGHCother_pt";
4954 titlehist="Invariant Mass Tight Cuts Other ptbin=";
4956 hInvMassD0TGHCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4957 hInvMassD0TGHCother->SetXTitle("Invariant Mass [GeV]");
4958 hInvMassD0TGHCother->SetYTitle("Entries");
4959 flistTghCutsOther->Add(hInvMassD0TGHCother);
4961 namehist="hInvMassD0barTGHCother_pt";
4963 titlehist="Invariant Mass D0bar Tight Cuts Other ptbin=";
4965 hInvMassD0barTGHCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4966 hInvMassD0barTGHCother->SetXTitle("Invariant Mass [GeV]");
4967 hInvMassD0barTGHCother->SetYTitle("Entries");
4968 flistTghCutsOther->Add(hInvMassD0barTGHCother);
4970 namehist="hetaTGHCother_pt";
4972 titlehist="eta Tight Cuts Other ptbin=";
4974 hetaTGHCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4975 hetaTGHCother->SetXTitle("Pseudorapidity");
4976 hetaTGHCother->SetYTitle("Entries");
4977 flistTghCutsOther->Add(hetaTGHCother);
4979 namehist="hCosPDPBTGHCother_pt";
4981 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4983 hCosPDPBTGHCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4984 hCosPDPBTGHCother->SetXTitle("Cosine between D0 momentum and B momentum");
4985 hCosPDPBTGHCother->SetYTitle("Entries");
4986 flistTghCutsOther->Add(hCosPDPBTGHCother);
4988 namehist="hCosPcPDTGHCother_pt";
4990 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4992 hCosPcPDTGHCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4993 hCosPcPDTGHCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
4994 hCosPcPDTGHCother->SetYTitle("Entries");
4995 flistTghCutsOther->Add(hCosPcPDTGHCother);
4997 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4998 namehist="hd0xd0TGHCother_pt";
5000 titlehist="d0xd0 Tight Cuts Other ptbin=";
5002 hd0xd0TGHCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
5003 hd0xd0TGHCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
5004 hd0xd0TGHCotherpt->SetYTitle("Entries");
5005 flistTghCutsOther->Add(hd0xd0TGHCotherpt);
5008 namehist="hd0D0VSd0xd0TGHCother_pt";
5010 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Other ptbin=";
5012 hd0D0VSd0xd0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
5013 hd0D0VSd0xd0TGHCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
5014 hd0D0VSd0xd0TGHCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
5015 flistTghCutsOther->Add(hd0D0VSd0xd0TGHCotherpt);
5018 namehist="hangletracksVSd0xd0TGHCother_pt";
5020 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Other ptbin=";
5022 hangletracksVSd0xd0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
5023 hangletracksVSd0xd0TGHCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
5024 hangletracksVSd0xd0TGHCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
5025 flistTghCutsOther->Add(hangletracksVSd0xd0TGHCotherpt);
5028 namehist="hangletracksVSd0D0TGHCother_pt";
5030 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Other ptbin=";
5032 hangletracksVSd0D0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
5033 hangletracksVSd0D0TGHCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
5034 hangletracksVSd0D0TGHCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
5035 flistTghCutsOther->Add(hangletracksVSd0D0TGHCotherpt);
5038 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
5039 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5045 //############# d0 D0 histos ###############Ã
5046 TH1F *hd0D0TGHCotherPM = new TH1F("hd0D0TGHCotherPM","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5047 hd0D0TGHCotherPM->SetXTitle("Impact parameter [#mum]");
5048 hd0D0TGHCotherPM->SetYTitle("Entries");
5050 TH1F *hd0D0VtxTrueTGHCotherPM = new TH1F("hd0D0VtxTrueTGHCotherPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5051 hd0D0VtxTrueTGHCotherPM->SetXTitle("Impact parameter [#mum]");
5052 hd0D0VtxTrueTGHCotherPM->SetYTitle("Entries");
5054 TH1F *hMCd0D0TGHCotherPM = new TH1F("hMCd0D0TGHCotherPM","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5055 hMCd0D0TGHCotherPM->SetXTitle("MC Impact parameter [#mum]");
5056 hMCd0D0TGHCotherPM->SetYTitle("Entries");
5058 TH1F *hd0D0TGHCotherSB = new TH1F("hd0D0TGHCotherSB","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5059 hd0D0TGHCotherSB->SetXTitle("Impact parameter [#mum]");
5060 hd0D0TGHCotherSB->SetYTitle("Entries");
5062 TH1F *hd0D0VtxTrueTGHCotherSB = new TH1F("hd0D0VtxTrueTGHCotherSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5063 hd0D0VtxTrueTGHCotherSB->SetXTitle("Impact parameter [#mum]");
5064 hd0D0VtxTrueTGHCotherSB->SetYTitle("Entries");
5066 TH1F *hMCd0D0TGHCotherSB = new TH1F("hMCd0D0TGHCotherSB","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5067 hMCd0D0TGHCotherSB->SetXTitle("MC Impact parameter [#mum]");
5068 hMCd0D0TGHCotherSB->SetYTitle("Entries");
5070 flistTghCutsOther->Add(hd0D0TGHCotherPM);
5071 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherPM);
5072 flistTghCutsOther->Add(hMCd0D0TGHCotherPM);
5073 flistTghCutsOther->Add(hd0D0TGHCotherSB);
5074 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherSB);
5075 flistTghCutsOther->Add(hMCd0D0TGHCotherSB);
5077 TH1F *hd0D0ptTGHCotherPM;
5078 TH1F *hMCd0D0ptTGHCotherPM;
5079 TH1F *hd0D0VtxTrueptTGHCotherPM;
5080 TH1F *hd0D0ptTGHCotherSB;
5081 TH1F *hMCd0D0ptTGHCotherSB;
5082 TH1F *hd0D0VtxTrueptTGHCotherSB;
5083 namehist="hd0D0ptTGHCother_";
5084 titlehist="D^{0} impact par. plot, Tight Cuts, Other, ";
5085 for(Int_t i=0;i<fnbins;i++){
5087 strnamept.Append("PkMss_pt");
5090 strtitlept=titlehist;
5091 strtitlept.Append(" Mass Peak, ");
5092 strtitlept+=fptbins[i];
5093 strtitlept.Append("<= pt <");
5094 strtitlept+=fptbins[i+1];
5095 strtitlept.Append(" [GeV/c]");
5097 hd0D0ptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5098 hd0D0ptTGHCotherPM->SetXTitle("Impact parameter [#mum] ");
5099 hd0D0ptTGHCotherPM->SetYTitle("Entries");
5100 flistTghCutsOther->Add(hd0D0ptTGHCotherPM);
5102 strnamept.ReplaceAll("hd0D0","hMCd0D0");
5103 hMCd0D0ptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5104 hMCd0D0ptTGHCotherPM->SetXTitle("MC Impact parameter [#mum] ");
5105 hMCd0D0ptTGHCotherPM->SetYTitle("Entries");
5106 flistTghCutsOther->Add(hMCd0D0ptTGHCotherPM);
5109 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
5110 hd0D0VtxTrueptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5111 hd0D0VtxTrueptTGHCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
5112 hd0D0VtxTrueptTGHCotherPM->SetYTitle("Entries");
5113 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherPM);
5116 strnamept.Append("SBMss_pt");
5119 strtitlept=titlehist;
5120 strtitlept.Append(" Side Bands, ");
5121 strtitlept+=fptbins[i];
5122 strtitlept.Append("<= pt <");
5123 strtitlept+=fptbins[i+1];
5124 strtitlept.Append(" [GeV/c]");
5126 hd0D0ptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5127 hd0D0ptTGHCotherSB->SetXTitle("Impact parameter [#mum] ");
5128 hd0D0ptTGHCotherSB->SetYTitle("Entries");
5129 flistTghCutsOther->Add(hd0D0ptTGHCotherSB);
5131 strnamept.ReplaceAll("hd0D0","hMCd0D0");
5132 hMCd0D0ptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5133 hMCd0D0ptTGHCotherSB->SetXTitle("MC Impact parameter [#mum] ");
5134 hMCd0D0ptTGHCotherSB->SetYTitle("Entries");
5135 flistTghCutsOther->Add(hMCd0D0ptTGHCotherSB);
5137 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
5138 hd0D0VtxTrueptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5139 hd0D0VtxTrueptTGHCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
5140 hd0D0VtxTrueptTGHCotherSB->SetYTitle("Entries");
5141 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherSB);
5143 Printf("AFTER DATA HISTOS CREATION \n");
5146 //________________________________________________________________________
5147 void AliAnalysisTaskSECharmFraction::UserExec(Option_t */*option*/)
5149 // Execute analysis for current event:
5150 // heavy flavor candidates association to MC truth
5152 AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
5154 Printf("ERROR: aod not available");
5157 TClonesArray *arrayD0toKpi;
5158 if(!aod && AODEvent() && IsStandardAOD()) {
5159 // In case there is an AOD handler writing a standard AOD, use the AOD
5160 // event in memory rather than the input (ESD) event.
5161 aod = dynamic_cast<AliAODEvent*> (AODEvent());
5162 // in this case the braches in the deltaAOD (AliAOD.VertexingHF.root)
5163 // have to taken from the AOD event hold by the AliAODExtension
5164 AliAODHandler* aodHandler = (AliAODHandler*)
5165 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
5167 if(aodHandler->GetExtensions()) {
5168 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root");
5169 AliAODEvent* aodFromExt = ext->GetAOD();
5171 // load 2Prong Like Sign
5172 arrayD0toKpi =(TClonesArray*)aodFromExt->GetList()->FindObject("LikeSign2Prong");
5174 Printf("AliAnalysisTaskSECharmFraction::UserExec: LikeSign branch not found!\n");
5179 // load D0->Kpi candidates
5180 arrayD0toKpi = (TClonesArray*)aodFromExt->GetList()->FindObject("D0toKpi");
5182 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
5189 // load 2Prong Like Sign
5190 arrayD0toKpi =(TClonesArray*)aod->GetList()->FindObject("LikeSign2Prong");
5192 Printf("AliAnalysisTaskSECharmFraction::UserExec: LikeSign branch not found!\n");
5197 // load D0->Kpi candidates
5198 arrayD0toKpi = (TClonesArray*)aod->GetList()->FindObject("D0toKpi");
5200 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
5208 printf("AliAnalysisTaskSECharmFraction::UserExec: input branch not found!\n");
5212 //histogram filled with 1 for every AOD
5215 // trigger class for PbPb C0SMH-B-NOPF-ALLNOTRD, C0SMH-B-NOPF-ALL
5216 // TString trigclass=aod->GetFiredTriggerClasses();
5217 // if(trigclass.Contains("C0SMH-B-NOPF-ALLNOTRD") || trigclass.Contains("C0SMH-B-NOPF-ALL")) fNentries->Fill(14);
5219 Bool_t isEventSelTGHT=kTRUE,isEventSelLOOSE=kTRUE;
5220 if(!fCutsTight->IsEventSelected(aod)){
5221 isEventSelTGHT=kFALSE;
5222 if(fCutsTight->GetWhyRejection()==1){
5223 // rejected for pileup
5224 fNentries->Fill(13);
5226 PostData(1,fNentries);
5230 if(!fCutsLoose->IsEventSelected(aod)){
5231 isEventSelLOOSE=kFALSE;
5232 if(fCutsLoose->GetWhyRejection()==1){
5233 // rejected for pileup
5234 fNentries->Fill(13);
5235 PostData(1,fNentries);
5241 if(!(isEventSelTGHT||isEventSelLOOSE)){
5242 PostData(1,fNentries);
5245 // fix for temporary bug in ESDfilter
5246 // the AODs with null vertex pointer didn't pass the PhysSel
5247 if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001) return;
5248 // AOD primary vertex
5249 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
5250 TString primTitle = vtx1->GetTitle();
5251 if(primTitle.Contains("VertexerTracks") && vtx1->GetNContributors()>0) {
5255 PostData(1,fNentries);
5261 TClonesArray *arrayMC=0x0;
5262 AliAODMCHeader *aodmcHeader=0x0;
5263 Double_t vtxTrue[3];
5266 // load MC particles
5268 (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
5270 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC particles branch not found!\n");
5275 (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
5277 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC header branch not found!\n");
5280 // MC primary vertex
5281 aodmcHeader->GetVertex(vtxTrue);
5282 // FILL HISTOS FOR D0 mesons, c quarks and D0 from B properties
5283 FillHistoMCproperties(arrayMC);
5288 //Printf("There are %d tracks in this event", aod->GetNumberOfTracks());
5289 // Int_t nTotHF=0,nTotDstar=0,nTot3Prong=0;
5290 Int_t nTotD0toKpi=0;
5291 Int_t okd0tight,okd0bartight,okd0loose,okd0barloose,okd0tightnopid,okd0bartightnopid;
5292 Bool_t isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,isSideBand;
5293 Bool_t isinacceptance;
5294 Int_t signallevel=-1;
5296 // const Int_t nptbins=10;
5297 Double_t invMassD0,invMassD0bar,ptD0,massmumtrue;
5300 AliAODRecoDecayHF *aodDMC=0x0;// to be used to create a fake true sec vertex
5301 // make trkIDtoEntry register (temporary)
5302 Int_t trkIDtoEntry[100000];
5308 for(Int_t it=0;it<aod->GetNumberOfTracks();it++) {
5309 AliAODTrack *track = aod->GetTrack(it);
5310 fptAll+=track->Pt();
5311 fptAllSq+=track->Pt()*track->Pt();
5312 if(track->Pt()>fptMax[0]){
5313 fptMax[2]=fptMax[1];
5314 fptMax[1]=fptMax[0];
5315 fptMax[0]=track->Pt();
5317 else if(track->Pt()>fptMax[1]){
5318 fptMax[2]=fptMax[1];
5319 fptMax[1]=track->Pt();
5321 else if(track->Pt()>fptMax[2])fptMax[2]=track->Pt();
5322 if(track->GetID()<0) {
5323 //printf("Track ID <0, id= %d\n",track->GetID());
5324 PostData(1,fNentries);
5327 trkIDtoEntry[track->GetID()]=it;
5331 // loop over D0->Kpi candidates
5332 Int_t nD0toKpi = arrayD0toKpi->GetEntriesFast();
5333 nTotD0toKpi += nD0toKpi;
5334 // cout<<"Number of D0->Kpi: "<<nD0toKpi<<endl;
5336 for (Int_t iD0toKpi = 0; iD0toKpi < nD0toKpi; iD0toKpi++) {
5337 if(aodDMC!=0x0)delete aodDMC;
5341 isSideBandD0=kFALSE;
5342 isSideBandD0bar=kFALSE;
5344 isinacceptance=kFALSE;
5348 okd0bartightnopid=0;
5355 AliAODRecoDecayHF2Prong *d = (AliAODRecoDecayHF2Prong*)arrayD0toKpi->UncheckedAt(iD0toKpi);
5356 Bool_t unsetvtx=kFALSE;
5357 if(!d->GetOwnPrimaryVtx()) {
5358 d->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
5363 //############# SIGNALLEVEL DESCRIPTION #####################
5364 // TO BE CONSIDERED WITH GREAT CARE, only =0 and =1 (and MC selection when possible) are reliable
5365 // For the other signallevel numbers the order in which cut are applied is relevant
5366 // signallevel =0,1: is selected as signal,is signal (MC)
5367 // from 2 to 20: MC information
5368 // from 21 to 29: "detector" selection (acceptance, pt, refits)
5369 // 21: acceptance, eta (N.B. before 24 May was signallevel=9)
5370 // 22: isinfiducialacceptance
5371 // 23: single track p
5372 // 25: ITS cluster selection
5375 // 28: no (TOF||TPC) pid information (no kTOFpid,kTOFout,kTIME,kTPCpid,...)
5377 // from 30 to 39: PID selection
5378 // 31: no Kaon compatible tracks found between daughters
5379 // 32: no Kaon identified tracks found (strong sel. at low momenta)
5380 // 33: both mass hypotheses are rejected
5381 // from 40 to 45: standard cut selection
5382 // from 45 to 49: special cut signal kinematic selection
5384 // from 50 to 60: special cut selection
5385 // 51: Nvtx contributors
5386 // 52: angle between tracks
5387 // 53: vtx not reconstructed when excludind daughters
5388 // 54: track not propagated to dca when the vtx is recalculated
5389 // 55: single track normalized impact par.
5390 // 56: normalized d0xd0
5391 // 57: d0xd0 cut with vtx on the fly
5392 // 58,59: cut normalized decay lenght and decay lenght
5393 //####### DATA SELECTION ####################################
5395 // ######## CHECK FOR ACCEPTANCE ##########
5397 ptbin=fCutsTight->PtBin(ptD0);
5398 // Double_t relangle=d->ProngsRelAngle(0,1);
5399 // UPV: HERE TO CHANGE WITH:
5400 // isinacceptance = (TMath::Abs(d->EtaProng(0))<fAcceptanceCuts[0]&&TMath::Abs(d->EtaProng(1))<fAcceptanceCuts[0]); //eta acceptance
5402 //######## INVARIANT MASS SELECTION ###############
5403 CheckInvMassD0(d,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar);
5404 if((isSideBandD0||isSideBandD0bar)){
5405 if(!(isPeakD0||isPeakD0bar))isSideBand=kTRUE; //(isSideBand no more used in the following, can remove it)
5406 else {// AVOID TO CONSIDER IN THE SIDEBAND THOSE CANDIDATES FOR WHICH 1 MASS HYPOTHESIS IS IN THE PEAK REGION
5408 isSideBandD0=kFALSE;
5409 isSideBandD0bar=kFALSE;
5414 // INVESTIGATE SIGNAL TYPE : ACCESS TO MC INFORMATION
5416 aodDMC=GetD0toKPiSignalType(d,arrayMC,signallevel,massmumtrue,vtxTrue);
5419 // ACCOUNT FOR ETA & ITS CLUSTER SELECTION
5420 if(fFastAnalysis<1){ // ALREADY DONE BY AliRDHFCutsD0ToKPi selection
5421 isinacceptance=fCutsTight->AreDaughtersSelected(d);
5422 if(!isinacceptance)signallevel=21;
5424 if(!fCutsTight->IsInFiducialAcceptance(ptD0,d->Y(421))){
5425 isinacceptance=kFALSE;
5429 //###################################################################################
5431 // ################ SPECIAL ADDITIONAL CUTS FOR SIGNAL SEARCH #######################
5432 // UPV: ITS CLUSTER SELECTION ALREADY DONE , COUNT THEM THE SAME
5434 Int_t nlayers=0,nSPD=0,nSSD=0;
5436 if(fFastAnalysis<1){
5437 for(Int_t idg=0;idg<d->GetNDaughters();idg++){
5439 AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(idg);
5440 if(TESTBIT(dgTrack->GetITSClusterMap(),5)){
5444 if(TESTBIT(dgTrack->GetITSClusterMap(),4)){
5448 if(TESTBIT(dgTrack->GetITSClusterMap(),3))nlayers++;
5449 if(TESTBIT(dgTrack->GetITSClusterMap(),2))nlayers++;
5450 if(TESTBIT(dgTrack->GetITSClusterMap(),1)){
5454 if(TESTBIT(dgTrack->GetITSClusterMap(),0)){
5462 // ######## NOW SELECTION ##########
5463 if(dgTrack->Pt()<0.5){
5464 // ########## k-Both selection ##############
5465 if(nlayers<5)signallevel=25;
5466 if(nSPD<2)signallevel=25;
5468 else if(dgTrack->Pt()<1.){
5469 // ########## 4 its clust (1 SSD,1 SPD) && k-Any selection ##############
5470 if(nlayers<4)signallevel=25;
5471 if(nSSD<1)signallevel=25;
5472 if(nSPD<1)signallevel=25;
5475 // ########## 3 its clust (1 SPD, 1 SSD) && k-Any selection ##########
5476 if(nlayers<3)signallevel=25;
5477 if(nSSD<1)signallevel=25;
5478 if(nSPD<1)signallevel=25;
5486 //########### END OF SPECIAL CUTS ######################
5488 //###############################################################
5491 // Check tighter cuts w/o PID:
5493 // Int_t ncont=vtx1->GetNContributors();
5494 if(vtx1->GetNContributors()<1)signallevel=51;
5495 Bool_t defaultNC=SpecialSelD0(d,nVtx);
5497 Bool_t iscutusingpid=fCutsTight->GetIsUsePID();
5498 fCutsTight->SetUsePID(kFALSE);
5499 Int_t isSelectedTightNoPid=fCutsTight->IsSelected(d,AliRDHFCuts::kAll,aod);
5500 switch(isSelectedTightNoPid){
5502 okd0tightnopid=kFALSE;
5503 okd0bartightnopid=kFALSE;
5506 okd0tightnopid=kTRUE;
5507 okd0bartightnopid=kFALSE;
5510 okd0tightnopid=kFALSE;
5511 okd0bartightnopid=kTRUE;
5514 okd0tightnopid=kTRUE;
5515 okd0bartightnopid=kTRUE;
5518 okd0tightnopid=kTRUE;
5519 okd0bartightnopid=kTRUE;
5524 okd0tightnopid=kFALSE;
5525 okd0bartightnopid=kFALSE;
5527 // signallevel=fCutsTight->GetSelectionStep();
5528 fSignalType->Fill(signallevel);
5533 // ######### SPECIAL SELECTION PID ##############
5534 fCutsTight->SetUsePID(iscutusingpid);
5535 Int_t isSelectedPid=fCutsTight->IsSelected(d,AliRDHFCuts::kPID,aod);
5536 Int_t isSelectedTight=fCutsTight->CombineSelectionLevels(3,isSelectedTightNoPid,isSelectedPid);
5537 switch(isSelectedTight){
5540 okd0bartight=kFALSE;
5544 okd0bartight=kFALSE;
5561 fSignalType->Fill(signallevel);
5564 if(((isPeakD0&&okd0tight)||(isPeakD0bar&&okd0bartight))&&isinacceptance)fSignalTypeTghCuts->Fill(signallevel);
5566 if(isEventSelLOOSE){
5567 // CHECK LOOSER CUTS
5568 //ptbin=SetStandardCuts(ptD0,flargeInvMassCut);
5570 // d->SelectD0(fCutsLoose->GetD0toKpiCuts(),okd0loose,okd0barloose);
5571 Int_t isSelectedLoose=fCutsLoose->IsSelected(d,AliRDHFCuts::kAll,aod);
5572 switch(isSelectedLoose){
5575 okd0barloose=kFALSE;
5579 okd0barloose=kFALSE;
5596 okd0barloose=kFALSE;
5602 if(((isPeakD0&&okd0loose)||(isPeakD0bar&&okd0barloose))&&isinacceptance)fSignalTypeLsCuts->Fill(signallevel);
5606 //################### FILL HISTOS ########################
5607 //################################################################
5609 //######## improvement: SPEED HERE CAN BE IMPROVED: CALCULATE ONCE AND FOR ALL
5610 // CANDIDATE VARIABLES
5614 //NO CUTS Case: force okD0 and okD0bar = kTRUE
5615 // special cuts are applied also in the "NO Cuts" case
5618 // SPECIAL modification:
5619 // IMPORTANT!!!!!! ONLY FOR TEMPORARY CONVENIENCE
5620 // IF fusePID is kTRUE, NO CUTS BECOMES NO PID case with tight cuts (fill signal histos when 30<=signallevel<40 )!!!!!!!!!!
5621 if((!fusePID)&&isEventSelTGHT){
5622 okd0tightnopid=defaultNC;
5623 okd0bartightnopid=defaultNC;
5625 // ############ MISALIGN HERE: TEMPORARY SOLUTION ##########
5626 //d->Misalign("full14");
5627 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
5628 else if(signallevel==2)FillHistos(d,flistNoCutsFromDstar,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5629 else if(signallevel==3||signallevel==4)FillHistos(d,flistNoCutsFromB,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5630 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);
5631 else if(signallevel==5||signallevel==6)FillHistos(d,flistNoCutsOther,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5636 if(signallevel==1||signallevel==0)FillHistos(d,flistLsCutsSignal,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5637 else if(signallevel==2)FillHistos(d,flistLsCutsFromDstar,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5638 else if(signallevel==3||signallevel==4)FillHistos(d,flistLsCutsFromB,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5639 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);
5640 else if(signallevel==5||signallevel==6)FillHistos(d,flistLsCutsOther,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5643 if(signallevel==1||signallevel==0)FillHistos(d,flistTghCutsSignal,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5644 else if(signallevel==2)FillHistos(d,flistTghCutsFromDstar,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5645 else if(signallevel==3||signallevel==4)FillHistos(d,flistTghCutsFromB,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5646 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);
5647 else if(signallevel==5||signallevel==6)FillHistos(d,flistTghCutsOther,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5652 // ######## PRINTING INFO FOR D0-like candidate
5654 if(nSPD==2&&ptD0>2.){
5655 if((okd0tight&&TMath::Abs(invMassD0-1.864)<0.01)||(okd0bartight&&TMath::Abs(invMassD0bar-1.864)<0.01)){
5656 //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());
5657 //printf("PrimVtx NContributors: %d \n Prongs Rel Angle: %f \n \n",ncont,relangle);
5665 if(unsetvtx) d->UnsetOwnPrimaryVtx();
5669 // ####################### POST OUTPUT TLIST DATA #########################
5670 // ####### histo for #AOD entries already posted
5671 PostData(1,fNentries);
5672 PostData(2,fSignalType);
5673 PostData(3,fSignalTypeLsCuts);
5674 PostData(4,fSignalTypeTghCuts);
5675 PostData(5,flistMCproperties);
5676 PostData(6,flistNoCutsSignal);
5677 PostData(7,flistNoCutsBack);
5678 PostData(8,flistNoCutsFromB);
5679 PostData(9,flistNoCutsFromDstar);
5680 PostData(10,flistNoCutsOther);
5681 PostData(11,flistLsCutsSignal);
5682 PostData(12,flistLsCutsBack);
5683 PostData(13,flistLsCutsFromB);
5684 PostData(14,flistLsCutsFromDstar);
5685 PostData(15,flistLsCutsOther);
5686 PostData(16,flistTghCutsSignal);
5687 PostData(17,flistTghCutsBack);
5688 PostData(18,flistTghCutsFromB);
5689 PostData(19,flistTghCutsFromDstar);
5690 PostData(20,flistTghCutsOther);
5697 //_________________________________________
5698 Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Float_t *&ptbinlimits){
5700 // creating cuts for D0 -> Kpi
5703 Printf("Using Default Cuts as set in AliAnalysisTaskSECharmFraction \n");
5704 // const Double_t ptmin = 0.1;
5705 const Double_t ptmax = 9999.;
5706 const Int_t nptbins =13;
5707 const Int_t nvars=9;
5711 delete fCutsTight;fCutsTight=NULL;
5714 delete fCutsLoose;fCutsLoose=NULL;
5718 fCutsTight = new AliRDHFCutsD0toKpi();
5719 fCutsTight->SetName("D0toKpiCutsStandard");
5720 fCutsTight->SetTitle("Standard Cuts for D0 analysis");
5722 fCutsLoose = new AliRDHFCutsD0toKpi();
5723 fCutsLoose->SetName("D0toKpiCutsLoose");
5724 fCutsLoose->SetTitle("Loose Cuts for D0 analysis");
5727 fCutsTight->SetMinVtxContr(1);
5728 fCutsLoose->SetMinVtxContr(1);
5730 // TRACKS ON SINGLE TRACKS
5731 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
5732 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
5733 esdTrackCuts->SetRequireTPCRefit(kTRUE);
5734 esdTrackCuts->SetRequireITSRefit(kTRUE);
5735 // esdTrackCuts->SetMinNClustersITS(4);
5736 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
5737 esdTrackCuts->SetMinDCAToVertexXY(0.);
5738 esdTrackCuts->SetEtaRange(-0.8,0.8);
5739 esdTrackCuts->SetPtRange(0.3,1.e10);
5742 fCutsTight->AddTrackCuts(esdTrackCuts);
5743 fCutsLoose->AddTrackCuts(esdTrackCuts);
5747 Float_t ptbins[nptbins+1];
5763 fCutsTight->SetGlobalIndex(nvars,nptbins);
5764 fCutsLoose->SetGlobalIndex(nvars,nptbins);
5765 fCutsTight->SetPtBins(nptbins+1,ptbins);
5766 fCutsLoose->SetPtBins(nptbins+1,ptbins);
5768 /* 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
5769 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
5770 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
5771 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
5772 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
5773 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
5774 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
5777 const Int_t nvary=3;
5778 Float_t varyd0xd0[nptbins][nvary]={{-35000.*1E-8,-40000.*1E-8,-50000.*1E-8},/* pt<0.5*/
5779 {-35000.*1E-8,-40000.*1E-8,-50000.*1E-8},/* 0.5<pt<1*/
5780 {-25000.*1E-8,-32000.*1E-8,-38000.*1E-8},/* 1<pt<2 */
5781 {-22000.*1E-8,-26000.*1E-8,-30000.*1E-8},/* 2<pt<3 */
5782 {-12000.*1E-8,-15000.*1E-8,-20000.*1E-8},/* 3<pt<4 */
5783 {-12000.*1E-8,-15000.*1E-8,-20000.*1E-8},/* 4<pt<5 */
5784 {-5000.*1E-8,-10000.*1E-8,-15000.*1E-8},/* 5<pt<6 */
5785 {-5000.*1E-8,-10000.*1E-8,-15000.*1E-8},/* 6<pt<8 */
5786 {-0.*1E-8,-10000.*1E-8,-12000.*1E-8},/* 8<pt<12 */
5787 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 12<pt<16 */
5788 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 16<pt<20 */
5789 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 20<pt<24 */
5790 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8}};/* pt>24 */
5793 Float_t varyCosPoint[nptbins][nvary]={{0.75,0.80,0.85},/* 0<pt<0.5 */
5794 {0.75,0.80,0.85},/* 0.5<pt<1*/
5795 {0.75,0.80,0.85},/* 1<pt<2 */
5796 {0.92,0.94,0.95},/* 2<pt<3 */
5797 {0.85,0.88,0.91},/* 3<pt<4 */
5798 {0.85,0.88,0.91},/* 4<pt<5 */
5799 {0.88,0.90,0.92},/* 5<pt<6 */
5800 {0.88,0.90,0.92},/* 6<pt<8 */
5801 {0.85,0.90,0.92},/* 8<pt<12 */
5802 {0.85,0.90,0.92},/* 12<pt<16 */
5803 {0.8,0.85,0.9},/* 16<pt<20 */
5804 {0.8,0.85,0.9},/* 20<pt<24 */
5805 {0.75,0.82,0.9}};/* pt>24 */
5809 if(varycuts==-1){//DEFAULT CUTS
5811 varyd0xd0[9][1]=-10000.*1E-8;
5812 varyd0xd0[10][1]=-10000.*1E-8;
5813 varyd0xd0[11][1]=-10000.*1E-8;
5814 varyd0xd0[12][1]=-10000.*1E-8;
5816 Int_t vcd0xd0=varycuts/10;
5817 Int_t vccospoint=varycuts%10;
5818 // ######################## STAND VARY CUTS ###########################################
5819 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*/
5820 {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*/
5821 {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 */
5822 {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 */
5823 {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 */
5824 {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*/
5825 {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 */
5826 {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 */
5827 {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 */
5828 {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*/
5829 {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*/
5830 {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*/
5831 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[12][vcd0xd0],varyCosPoint[12][vccospoint]}
5834 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*/
5835 {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*/
5836 {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 */
5837 {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 */
5838 {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 */
5839 {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 */
5840 {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 */
5841 {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 */
5842 {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 */
5843 {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 */
5844 {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 */
5845 {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 */
5846 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.85}};/* pt>24 */
5849 //CREATE TRANSPOSE MATRIX...REVERSE INDICES as required by AliRDHFCuts
5850 Float_t **cutsMatrixTransposeStand=new Float_t*[nvars];
5851 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=new Float_t[nptbins];
5852 Float_t **cutsMatrixTransposeLoose=new Float_t*[nvars];
5853 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeLoose[iv]=new Float_t[nptbins];
5855 for (Int_t ibin=0;ibin<nptbins;ibin++){
5856 for (Int_t ivar = 0; ivar<nvars; ivar++){
5857 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
5858 cutsMatrixTransposeLoose[ivar][ibin]=cutsMatrixD0toKpiLoose[ibin][ivar];
5859 //printf("cutsMatrixD0toKpi[%d][%d] = %f\n",ibin, ivar,cutsMatrixD0toKpiStand[ibin][ivar]);
5865 fCutsTight->SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
5866 fCutsLoose->SetCuts(nvars,nptbins,cutsMatrixTransposeLoose);
5869 for (Int_t ivar = 0; ivar<nvars; ivar++){
5870 delete [] cutsMatrixTransposeStand[ivar];
5871 delete [] cutsMatrixTransposeLoose[ivar];
5873 delete [] cutsMatrixTransposeStand;
5874 cutsMatrixTransposeStand=NULL;
5875 delete [] cutsMatrixTransposeLoose;
5876 cutsMatrixTransposeLoose=NULL;
5880 fCutsTight->SetUseSpecialCuts(kTRUE);
5881 fCutsLoose->SetUseSpecialCuts(kTRUE);
5882 fCutsTight->SetRemoveDaughtersFromPrim(kTRUE);
5883 fCutsLoose->SetRemoveDaughtersFromPrim(kTRUE);
5885 AliAODPidHF* pidObj=new AliAODPidHF();
5886 //pidObj->SetName("pid4D0");
5888 const Int_t nlims=2;
5889 Double_t plims[nlims]={0.6,0.8}; //TPC limits in momentum [GeV/c]
5890 Bool_t compat=kTRUE; //effective only for this mode
5892 Double_t sigmas[5]={2.,1.,0.,3.,0.}; //to be checked and to be modified with new implementation of setters by Rossella
5893 pidObj->SetAsym(asym);// if you want to use the asymmetric bands in TPC
5894 pidObj->SetMatch(mode);
5895 pidObj->SetPLimit(plims,nlims);
5896 pidObj->SetSigma(sigmas);
5897 pidObj->SetCompat(compat);
5898 pidObj->SetTPC(kTRUE);
5899 pidObj->SetTOF(kTRUE);
5901 fCutsTight->SetPidHF(pidObj);
5902 fCutsLoose->SetPidHF(pidObj);
5903 delete pidObj; pidObj=NULL;
5904 fCutsTight->SetUsePID(kTRUE);
5905 fCutsLoose->SetUsePID(kTRUE);
5907 fCutsTight->SetUseDefaultPID(kFALSE);
5908 fCutsLoose->SetUseDefaultPID(kFALSE);
5910 // PILE UP REJECTION
5911 fCutsTight->SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
5912 fCutsLoose->SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
5915 fCutsTight->PrintAll();
5923 //_________________________________________
5924 Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Double_t pt,Double_t invMassCut){
5925 // UPV: this should set the cut object
5928 // TEMPORARY: to be change in :
5930 // if pt < standardptbin[j+1]
5934 // the way the cuts are set is for further development
5935 // (to be interfaced with AliAnalsysTaskSETuneCuts)
5938 // 0 = inv. mass half width [GeV]
5943 // 5 = d0K [cm] upper limit!
5944 // 6 = d0Pi [cm] upper limit!
5946 // 8 = cosThetaPoint
5951 /*//#######################################################################
5952 //###########################################################################
5953 // STANDARD SETS OF CUTS ("tight"~PPR like; commented loose are more stringent than "tight")
5954 // #########################################################################
5956 if(pt>0. && pt<=1.) {
5958 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
5959 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
5960 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.0002,0.7);
5962 if(pt>1. && pt<=2.) {
5964 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
5965 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5966 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.7);
5967 //printf("I'm in the bin %d\n",ptbin);
5969 if(pt>2. && pt<=3.) {
5971 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
5972 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5973 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.7);
5974 //printf("I'm in the bin %d\n",ptbin);
5976 if(pt>3. && pt<=5.){
5978 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.0001,0.8);
5979 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
5980 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.0001,0.75);
5981 //printf("I'm in the bin %d\n",ptbin);
5985 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00005,0.8);
5986 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
5987 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.00005,0.75);
5990 //############################################################################
5995 /* //#######################################################################
5996 //################# VARY CUTS for d0xd0 STUDY ##########################
5998 if(pt>0. && pt<=1.) {
6000 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
6001 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6002 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.0002,0.7);
6004 if(pt>1. && pt<=2.) {
6006 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,0.2,0.6);
6007 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6008 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.1);
6009 //printf("I'm in the bin %d\n",ptbin);
6011 if(pt>2. && pt<=3.) {
6013 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,0.2,0.6);
6014 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6015 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.1);
6016 //printf("I'm in the bin %d\n",ptbin);
6018 if(pt>3. && pt<=5.){
6020 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,0.2,0.8);
6021 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6022 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.3,0.4,0.4,1.,1.,-0.0001,0.1);
6023 //printf("I'm in the bin %d\n",ptbin);
6027 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,0.2,0.8);
6028 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6029 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.00005,0.1);
6032 // #################################################################
6035 //##########################################################################
6036 //################## CUTS with d0xd0 cut released #########################
6037 //### and TGHC cuts d0K and d0Pi to 0.1 instead of 0.05
6038 //### USED FOR PHDthesis
6039 //##########################################################################
6041 /* if(pt>0. && pt<=1.) {
6043 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.1,0.1,-0.000,0.5);
6044 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6045 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.000,0.7);
6047 if(pt>1. && pt<=2.) {
6049 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.1,0.1,-0.000,0.6);
6050 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6051 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.0000,0.7);
6052 //printf("I'm in the bin %d\n",ptbin);
6054 if(pt>2. && pt<=3.) {
6056 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.1,0.1,-0.000,0.6);
6057 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6058 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.000,0.7);
6059 //printf("I'm in the bin %d\n",ptbin);
6061 if(pt>3. && pt<=5.){
6063 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.000,0.8);
6064 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6065 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.000,0.75);
6066 //printf("I'm in the bin %d\n",ptbin);
6070 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0000,0.8);
6071 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6072 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.0000,0.75);
6080 //########## LOOKING FOR SIGNAL #####################
6082 if(pt>0. && pt<=1.) {
6084 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.03,0.8,0.3,0.3,0.1,0.1,-0.00035,0.7);
6085 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6086 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.04,0.8,0.3,0.3,0.1,0.1,-0.00025,0.7);
6088 if(pt>1. && pt<=2.) {
6090 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.4,0.4,0.1,0.1,-0.00035,0.8);
6091 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6092 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.03,0.8,0.3,0.3,0.1,0.1,-0.0025,0.75);
6093 //printf("I'm in the bin %d\n",ptbin);
6095 if(pt>2. && pt<=3.) {
6097 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00026,0.94);
6098 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6099 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0002,0.92);
6100 //printf("I'm in the bin %d\n",ptbin);
6102 if(pt>3. && pt<=5.){
6104 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00015,0.88);
6105 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6106 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00015,0.9);
6107 //printf("I'm in the bin %d\n",ptbin);
6111 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0001,0.9);
6112 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6113 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0000,0.88);
6117 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0001,0.9);
6118 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6119 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0005,0.88);
6124 printf("AliAnalysisTaskSECharmFraction::Obsolete method! Parameters pt=%f,invmasscut=%f not used \n",pt,invMassCut);
6129 //__________________________________________________________
6130 void AliAnalysisTaskSECharmFraction::CheckInvMassD0(AliAODRecoDecayHF2Prong *d,Double_t &invMassD0,Double_t &invMassD0bar,Bool_t &isPeakD0,Bool_t &isPeakD0bar,Bool_t &isSideBandD0,Bool_t &isSideBandD0bar){
6131 //Check wheter the candidate inv. mass is compatible with signal or sideband inv. mass selection
6133 d->InvMassD0(invMassD0,invMassD0bar);
6135 if(TMath::Abs(invMassD0-fmD0PDG)<fsignalInvMassCut)isPeakD0=kTRUE;
6136 if(TMath::Abs(invMassD0bar-fmD0PDG)<fsignalInvMassCut)isPeakD0bar=kTRUE;
6137 //CHECK if ISSIDEBAND: no constraint is present between signal region definition and side band definition
6138 // ######## TO BE CHANGED the distinction between sidebandD0 and sidebandD0bar is meaningless
6139 // and it is present only for side band region study (see which inv mass has the D0(D0bar)
6140 // in case the D0bar(D0) is in the sideband) #######
6141 if(TMath::Abs(invMassD0-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
6144 if(TMath::Abs(invMassD0bar-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0bar-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
6145 isSideBandD0bar=kTRUE;
6152 //_______________________
6153 AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::GetD0toKPiSignalType(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx){
6154 //THIS METHOD CHECK THE TYPE OF SIGNAL/BACKGROUND THE CANDIDATE IS.
6155 // IF (!AND ONLY IF) THE TWO DAUGHTERS COME FROM A COMMONE MOTHER A FAKE TRUE SECONDARY VERTEX IS CONSTRUCTED (aodDMC)
6157 // THE FOLLOWING SCHEME IS ADOPTED: signaltype is set to
6158 // 1:signal (D0 prompt); 2: signal D0 from Dstar; 3: D0 fromB 4: D0 from Dstar fromB
6159 // then background categories: -1: one or both daughters is a fake track
6160 // 5: both daughters come from a D meson != D0
6161 // 6: both daughters come from a D0->4prongs
6162 // 7: both daughetrs are primaries
6163 // 8: generic background (can include one of the previous if desired)
6164 // 9: daughters out of acceptance
6165 // 10: pathologic cases (not clear)
6166 // 11: end of the method without output
6167 // 12: different result than MatchToMC method
6169 AliAODMCParticle *mum1=0x0;
6170 AliAODMCParticle *b1=0x0,*b2=0x0;
6171 AliAODMCParticle *grandmoth1=0x0;
6174 Int_t pdgmum,dglabels[2],matchtoMC;
6175 Int_t pdgdaughters[2]={211,321};
6176 // get daughter AOD tracks
6177 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
6178 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
6179 AliAODRecoDecayHF *aodDMC=0x0;
6180 if(trk0==0x0||trk1==0x0){
6181 AliDebug(2,"Delete tracks I AM \n");
6187 dglabels[0]=trk0->GetLabel();
6188 dglabels[1]=trk1->GetLabel();
6189 if(dglabels[0]<0||dglabels[1]<0){
6190 AliDebug(2,"HERE I AM \n");
6198 // printf("Before entering the MC checks \n");
6200 b1=(AliAODMCParticle*)arrayMC->At(trk0->GetLabel());
6201 b2=(AliAODMCParticle*)arrayMC->At(trk1->GetLabel());
6203 //Tracks with no mother ??? FAKE DECAY VERTEX
6207 if(b1->GetMother()<0||b2->GetMother()<0){
6208 //Tracks with no mother ??? FAKE DECAY VERTEX
6213 mum1=(AliAODMCParticle*)arrayMC->At(b1->GetMother());
6214 // mum2=(AliAODMCParticle*)arrayMC->At(b2->GetMother());//FOR FURTHER USE
6216 if(b1->GetMother()!=b2->GetMother()){
6217 //Check the label of the mother is the same
6224 massMumTrue=mum1->GetCalcMass();
6226 matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
6227 aodDMC=ConstructFakeTrueSecVtx(b1,b2,mum1,primaryVtx);
6234 // if((mum1->GetPdgCode()!=mum2->GetPdgCode()))continue; //Check the mother is the same particle
6235 // printf("Particle codes: tr1: %d, tr2: %d, mum1: %d, mum 2: %d \n",b1->GetPdgCode(),b2->GetPdgCode(),mum1->GetPdgCode(),mum2->GetPdgCode());
6236 if(!((TMath::Abs(b1->GetPdgCode())==321&&TMath::Abs(b1->GetPdgCode())!=211)||(TMath::Abs(b1->GetPdgCode())==211&&TMath::Abs(b1->GetPdgCode()!=321)))){
6237 // Not a Kaon and a Pion
6243 pdgmum=mum1->GetPdgCode();
6244 if(TMath::Abs(pdgmum)!=421){
6245 if(TMath::Abs(pdgmum)==411||TMath::Abs(pdgmum)==431||TMath::Abs(pdgmum)==443){
6246 // IT IS A SECONDARY VERTEX FROM CHARM BUT NOT A D0
6257 if(mum1->GetDaughter(1)-mum1->GetDaughter(0)+1!=2){
6258 // from D0 but NOT A 2 PRONG DECAY
6264 if(mum1->GetMother()<0){
6265 // A particle coming from nothing
6270 Bool_t isfromDstar=kFALSE;
6271 // matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
6272 grandmoth1=(AliAODMCParticle*)arrayMC->At(mum1->GetMother());
6273 if(TMath::Abs(grandmoth1->GetPdgCode())==413||TMath::Abs(grandmoth1->GetPdgCode())==423)isfromDstar=kTRUE;// D0 COMING FROM A D0*
6276 //CHECK FOR CABIBBO SUPPRESSED DECAY
6277 Int_t isCabibSup=0,pdgKaon;
6279 pdgKaon=b1->GetPdgCode();
6280 if(TMath::Abs(pdgKaon)!=321)pdgKaon=b2->GetPdgCode();
6281 if(pdgmum>0&&pdgKaon>0)isCabibSup=1;
6282 if(pdgmum<0&&pdgKaon<0)isCabibSup=1;
6288 // if(fcheckMCD0){//THIS CHECK IS NEEDED TO AVOID POSSIBLE FAILURE IN THE SECOND WHILE, FOR DEBUGGING
6289 while(TMath::Abs(grandmoth1->GetPdgCode())!=4&&TMath::Abs(grandmoth1->GetPdgCode())!=5){
6290 if(grandmoth1->GetMother()<0){
6291 //### THE FOLLOWING IN CASE OF DEBUGGING ##########Ã
6292 /*printf("mother=-1, pdgcode: %d \n",grandmoth1->GetPdgCode());
6293 Int_t son=grandmoth1->GetDaughter(0);
6294 sonpart=(AliAODMCParticle*)arrayMC->At(son);
6295 while(TMath::Abs(sonpart->GetPdgCode())!=421){
6296 printf("mother=-1, pdgcode: %d \n",sonpart->GetPdgCode());
6298 sonpart=(AliAODMCParticle*)arrayMC->At(son);
6304 grandmoth1=(AliAODMCParticle*)arrayMC->At(grandmoth1->GetMother());
6307 if(TMath::Abs(grandmoth1->GetPdgCode())==4){
6310 if(isfromDstar)signaltype=2;
6320 else if(TMath::Abs(grandmoth1->GetPdgCode())==5){
6322 if(isfromDstar)signaltype=4;
6333 signaltype=11;// JUST FOR SAFETY: SHOULD NEVER REACH THIS POINT
6338 //___________________________________
6339 AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::ConstructFakeTrueSecVtx(const AliAODMCParticle *b1, const AliAODMCParticle *b2, const AliAODMCParticle *mum,Double_t *primaryVtxTrue){
6340 // CONSTRUCT A FAKE TRUE SECONDARY VERTEX (aodDMC)
6341 //!!!NOTE THAT ONLY ONE MOTHER IS CONSIDERED: THE METHOD REQUIRES THE DAUGHTERS COME FROM THE SAME MOTHER !!
6342 if(b1==0x0||b2==0x0)return 0x0;
6343 if(mum==0x0)return 0x0;
6344 Double_t pD[3],xD[3],pXtrTrue[2],pYtrTrue[2],pZtrTrue[2],xtr1[3],xtr2[3];
6345 Int_t charge[2]={0,0};
6346 if(b1->Charge()==-1)charge[0]=1;
6348 if(b2->Charge()==-1){
6349 //printf("Same charges for prongs \n");
6350 if(!fLikeSign)return 0x0;
6355 pXtrTrue[charge[0]]=b1->Px();
6356 pYtrTrue[charge[0]]=b1->Py();
6357 pZtrTrue[charge[0]]=b1->Pz();
6358 if(!b1->XvYvZv(xtr1)){
6362 pXtrTrue[charge[1]]=b2->Px();
6363 pYtrTrue[charge[1]]=b2->Py();
6364 pZtrTrue[charge[1]]=b2->Pz();
6366 if(!mum->PxPyPz(pD)){
6367 //printf("!D from B:Get momentum failed \n");
6370 if(!mum->XvYvZv(xD)){
6371 //printf("!D from B:Get position failed \n");
6374 /* ############ THIS HAPPENS FROM TIME TO TIME: NUMERIC PROBLEM KNOWN #################
6375 if(pXtrTrue[0]+pXtrTrue[1]!=pD[0]){
6379 if(!b2->XvYvZv(xtr2)){
6382 Double_t d0dummy[2]={0.,0.};//TEMPORARY : dummy d0 for AliAODRecoDeay constructor
6383 AliAODRecoDecayHF* aodDMC=new AliAODRecoDecayHF(primaryVtxTrue,xD,2,0,pXtrTrue,pYtrTrue,pZtrTrue,d0dummy);
6385 /* ######## THE FOLLOWINF FOR DEBUGGING ############
6386 Printf("testing the Fake vertex: SecVtxX: %f, Px: %f, Py: %f, Pz:%f \n ",aodDMC->GetSecVtxX(),aodDMC->Px(),aodDMC->Py(),aodDMC->Pz());
6387 Printf("pD: x=%f, y=%f,z=%f\n",pD[0],pD[1],pD[2]);
6388 Printf("Daughters :px1:%f, px2:%f \n",pXtrTrue[0],pXtrTrue[1]);
6389 Printf("Daughters :py1:%f, py2:%f \n",pYtrTrue[0],pYtrTrue[1]);
6390 Printf("Daughters :pz1:%f, pz2:%f \n",pZtrTrue[0],pZtrTrue[1]);
6391 Printf("Mother pdg: %d",mum->GetPdgCode());
6392 Printf("Impact Par Prod: %f\n",aodDMC->ImpParXY());
6398 //________________________________________________________
6399 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
6402 if((!okD0)&&(!okD0bar))return kTRUE;
6403 if(ptbin==-1)return kTRUE;
6404 // flistNoCutsSignal->Add(hptD0NCsign);
6405 // flistNoCutsSignal->Add(hptD0VsMaxPtNCsign);
6406 // flistNoCutsSignal->Add(hptD0PTallsqrtNCsign);
6407 // flistNoCutsSignal->Add(hptD0PTallNCsign);
6409 // %%%%%% TO BE DONE
6410 // flistNoCutsSignal->Add(hptD0vsptBNCsign);
6411 // flistNoCutsSignal->Add(hpD0vspBNCsign);
6412 //flistNoCutsSignal->Add(hptD0vsptcquarkNCsign);
6413 //flistNoCutsSignal->Add(hpD0vspcquarkNCsign);
6414 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%
6415 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6418 //hd0zD0ptLSCsign_pt
6419 //hInvMassD0LSCsign_pt
6422 // %%% TO BE DONE %%
6423 //hCosPDPBLSCsign_pt
6424 //hCosPcPDLSCsign_pt
6426 Double_t pt=d->Pt();
6427 Double_t impparxy=d->ImpParXY()*10000.;
6431 // ######### Get Standard label for hist in tlist ###############
6432 TString namehist=list->GetName(),str;
6433 namehist.ReplaceAll("list","");
6435 // ######### Global properties histos #################
6436 // ####### take care: only for candidates which pass the cuts !! not for side band ########
6437 if(fFastAnalysis<2){
6438 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar)){
6440 str.Append(namehist.Data());
6441 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->CosPointingAngle());
6444 str.Append(namehist.Data());
6445 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxZ());
6448 str.Append(namehist.Data());
6449 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.);
6452 str.Append(namehist.Data());
6453 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxY()*10000.);
6456 str.Append(namehist.Data());
6457 ((TH2F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.,d->GetSecVtxY()*10000.);
6460 str.Append(namehist.Data());
6461 ((TH1F*)list->FindObject(str.Data()))->Fill(TMath::ATan2(d->GetSecVtxY()*10000.,d->GetSecVtxX()*10000.)*TMath::RadToDeg());
6464 str="hd0singlTrack";
6465 str.Append(namehist.Data());
6466 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Getd0Prong(0)*10000.);
6467 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Getd0Prong(1)*10000.);
6470 str.Append(namehist.Data());
6471 ((TH1F*)list->FindObject(str.Data()))->Fill(d->CosPointingAngle());
6474 str.Append(namehist.Data());
6475 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
6477 //%%%%%%%% NEW HISTO %%%%%%%%%%
6479 str.Append(namehist.Data());
6480 ((TH1F*)list->FindObject(str.Data()))->Fill(1e4*d->GetDCA());
6482 str="hcosthetastar";
6483 str.Append(namehist.Data());
6484 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(d->CosThetaStarD0());
6485 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(d->CosThetaStarD0bar());
6488 str.Append(namehist.Data());
6489 ((TH1F*)list->FindObject(str.Data()))->Fill(pt);
6492 str.Append(namehist.Data());
6494 if(d->PtProng(1)>d->PtProng(0))pr=1;
6495 if(d->PtProng(pr)<fptMax[0]) ((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[0]);
6496 else if(d->PtProng(TMath::Abs(pr-1))<fptMax[1])((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[1]);
6497 else ((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[2]);
6500 str="hptD0PTallsqrt";
6501 str.Append(namehist.Data());
6502 Double_t sumsqrpt=fptAllSq-d->PtProng(1)*d->PtProng(1)-d->PtProng(0)*d->PtProng(0);
6503 if(sumsqrpt>0.)((TH1F*)list->FindObject(str.Data()))->Fill(pt,TMath::Sqrt(sumsqrpt));
6506 str.Append(namehist.Data());
6507 ((TH1F*)list->FindObject(str.Data()))->Fill(pt,fptAll-d->PtProng(1)-d->PtProng(0));
6511 str.Append(namehist.Data());
6514 if(d->GetPrimaryVtx()!=0x0)((TH1F*)list->FindObject(str.Data()))->Fill(1e4*(d->Zv()-d->GetPrimaryVtx()->GetZ()));
6517 str.Append(namehist.Data());
6520 //((TH1F*)list->FindObject(str.Data()))->Fill(d->Eta());
6522 // OTHER NEW ADDITIONAL HISTOS
6525 str.Append(namehist.Data());
6528 //printf("Hist name: %s \n",str.Data());
6529 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
6533 str.Append(namehist.Data());
6536 //printf("Hist name: %s \n",str.Data());
6537 ((TH2F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),impparxy);
6540 str="hangletracksVSd0xd0";
6541 str.Append(namehist.Data());
6544 //printf("Hist name: %s \n",str.Data());
6545 ((TH2F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->ProngsRelAngle(0,1));
6547 str="hangletracksVSd0D0";
6548 str.Append(namehist.Data());
6551 // printf("Hist name: %s \n",str.Data());
6552 ((TH2F*)list->FindObject(str.Data()))->Fill(impparxy,d->ProngsRelAngle(0,1));
6553 // ####################################################
6557 // ######### Invariant mass histos #################
6559 str.Append(namehist.Data());
6560 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6561 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6564 if(isPeakD0||isPeakD0bar){
6566 str.Append(namehist.Data());
6568 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6569 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6572 // The Following is a NEW HISTO
6574 str.Append(namehist.Data());
6577 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6578 if((!fsplitMassD0D0bar)&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6579 str="hInvMassD0bar";
6580 str.Append(namehist.Data());
6583 if(fsplitMassD0D0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6586 // FILLING OF THE SPARSE HISTO
6587 if(fFastAnalysis<2){ // ONLY IF NOT VERY FAST ANALYSIS
6589 str.Append(namehist.Data());
6590 Double_t point[5]={invMassD0,invMassD0bar,pt,impparxy,0.};
6591 if(okD0&&okD0bar)point[4]=3.5;
6592 else if(okD0)point[4]=1.5;
6593 else if(okD0bar)point[4]=2.5;
6594 ((THnSparseF*)list->FindObject(str.Data()))->Fill(point);
6597 str.Append(namehist.Data());
6598 if(okD0)((TH2F*)list->FindObject(str.Data()))->Fill(invMassD0,pt);
6599 if(okD0bar)((TH2F*)list->FindObject(str.Data()))->Fill(invMassD0bar,pt);
6602 /* if(isPeakD0||isPeakD0bar){
6604 str.Append(namehist.Data());
6606 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6607 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6608 // The Following is a NEW HISTO
6610 str.Append(namehist.Data());
6613 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6614 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6616 if(isSideBandD0||isSideBandD0bar){
6618 str.Append(namehist.Data());
6620 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6621 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6626 str.Append(namehist.Data());
6627 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6629 if(isPeakD0||isPeakD0bar){
6631 str.Append(namehist.Data());
6633 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6635 if(isSideBandD0||isSideBandD0bar){
6637 str.Append(namehist.Data());
6639 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6643 // ################ D0 Impact Parameter Histos #####################
6644 if(isPeakD0||isPeakD0bar){
6647 str.Append(namehist.Data());
6650 // WE COUNT TWICE A CANDIDATE UNDER THE INV MASS PEAK BOTH AS a D0 and a D0bar (if selected) for DATA ONLY
6651 // THIS BECAUSE WE SUBTRACT a "BACKGROUND" AMOUNT ESTIMATED USING THE INV MASS FIT INFORMATION
6652 // WHICH SHOULD ACCOUNT FOR REFLECTIONS
6654 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6656 if(isPeakD0bar&&okD0bar){
6657 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6661 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar))((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6665 str.Append(namehist.Data());
6666 str.Append("_PkMss_pt");
6669 // WE COUNT TWICE A CANDIDATE UNDER THE INV MASS PEAK BOTH AS a D0 and a D0bar (if selected) for DATA ONLY
6670 // THIS BECAUSE WE SUBTRACT a "BACKGROUND" AMOUNT ESTIMATED USING THE INV MASS FIT INFORMATION
6671 // WHICH SHOULD ACCOUNT FOR REFLECTIONS
6673 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6675 if(isPeakD0bar&&okD0bar){
6676 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6680 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar))((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6684 if(fReadMC&&vtxTrue){
6685 // ONLY AN HISTO FOR QA: WE DO NOT CONSIDER THE IMPACT PARAMETER FOR EACH MASS HYPOTHESIS
6687 str.Append(namehist.Data());
6689 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6691 str="hd0D0VtxTruept";
6692 str.Append(namehist.Data());
6693 str.Append("_PkMss_pt");
6695 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6698 if(fReadMC&&aodDMC!=0x0){
6699 // WE NEED JUST THE SHAPE: AVOID TAKING THE IMPACT PAR FOR EACH MASS HYPO PASSING THE CUTS
6700 // aodDMC->Print("");
6702 // aodDMC->Print("");
6704 str.Append(namehist.Data());
6706 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6709 str.Append(namehist.Data());
6710 str.Append("_PkMss_pt");
6712 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6715 else if(isSideBandD0||isSideBandD0bar){
6716 // WE ASSUME THE IMPACT PARAMETER DISTRIBUION FOR BACKGROUND(SIDEBANDS) CANDIDATES
6717 // IS NOT CORRELATED TO THE INVARIANT MASSES. THEREFORE WE JUST TAKE ONE TIME
6718 // THE IMPACT PARAMETER AND NOT ONE FOR EACH MASS HYPOTHESIS PASSING THE CUTS
6721 str.Append(namehist.Data());
6723 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6726 str.Append(namehist.Data());
6727 str.Append("_SBMss_pt");
6729 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6732 if(fReadMC&&vtxTrue){
6734 str.Append(namehist.Data());
6736 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6738 str="hd0D0VtxTruept";
6739 str.Append(namehist.Data());
6740 str.Append("_SBMss_pt");
6742 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6746 if(fReadMC&&aodDMC!=0x0){
6748 str.Append(namehist.Data());
6750 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6753 str.Append(namehist.Data());
6754 str.Append("_SBMss_pt");
6756 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6765 void AliAnalysisTaskSECharmFraction::FillHistoMCproperties(TClonesArray *arrayMC){
6766 //#############################################################
6767 // HERE LOOK AT global properties of D0 mesons, c quarks and B
6769 //#############################################################
6770 Double_t pxyzMum[3],pxyzDaught[3],cosOpenAngle=-1.1,ptmum,ptdaught;
6771 Int_t ncdaught=0,cquarksMC=0,nD0all=0,nD0FromB=0,nBdaught=0,nD0bquark=0,nD0bMeson=0,nD0bBaryon=0;
6772 for (Int_t iPart=0; iPart<arrayMC->GetEntriesFast(); iPart++) {
6773 AliAODMCParticle* mcPart = dynamic_cast<AliAODMCParticle*>(arrayMC->At(iPart));
6775 AliWarning("Particle not found in tree, skipping");
6778 if (TMath::Abs(mcPart->GetPdgCode()) == 4){
6780 mcPart->PxPyPz(pxyzMum);
6783 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllPt"))->Fill(ptmum);
6784 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllEta"))->Fill(mcPart->Eta());
6785 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllEnergy"))->Fill(mcPart->E());
6786 //NOW LOOK FOR A D0 among cquark daughters
6787 ncdaught=mcPart->GetDaughter(1)-mcPart->GetDaughter(0)+1;
6788 ((TH1F*)flistMCproperties->FindObject("hMCcquarkNdaught"))->Fill(ncdaught);
6790 for(Int_t iDaught=mcPart->GetDaughter(0);iDaught<mcPart->GetDaughter(1);iDaught++){
6791 AliAODMCParticle* mcPartD0 = dynamic_cast<AliAODMCParticle*>(arrayMC->At(iDaught));
6792 if(mcPartD0==0x0)continue;
6793 if(TMath::Abs(mcPartD0->GetPdgCode()) == 421){
6794 // a D0 coming from a c quark
6795 mcPartD0->PxPyPz(pxyzDaught);
6796 ptdaught=mcPartD0->Pt();
6797 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcPt"))->Fill(ptdaught);
6798 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcEta"))->Fill(mcPartD0->Eta());
6799 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcEnergy"))->Fill(mcPartD0->E());
6800 // ##############################################################################################
6801 // Compare D0 momentum and c quarks:
6802 // NB: here ALL D0 are considered, also those not decaying in KPi !!!
6803 // ##############################################################################################
6804 ((TH2F*)flistMCproperties->FindObject("hMCD0VscquarkPt"))->Fill(mcPart->Pt(),mcPartD0->Pt());
6805 ((TH2F*)flistMCproperties->FindObject("hMCD0VscquarkEnergy"))->Fill(mcPart->E(),mcPartD0->E());
6806 ((TH1F*)flistMCproperties->FindObject("hMCD0deltacquarkEnergy"))->Fill(mcPartD0->E()/mcPart->E());
6807 ((TH1F*)flistMCproperties->FindObject("hMCD0EnergyVsAvcquarkDaughtEn"))->Fill((mcPartD0->E()-(mcPart->E()/ncdaught))/mcPart->E());
6808 //calculate open angle
6809 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]));
6810 ((TH1F*)flistMCproperties->FindObject("hMCD0cquarkAngle"))->Fill(cosOpenAngle);
6811 ((TH2F*)flistMCproperties->FindObject("hMCD0cquarkAngleEnergy"))->Fill(mcPart->E(),cosOpenAngle);
6817 // NOW LOOK FOR D0 not coming from cquarks
6818 if (TMath::Abs(mcPart->GetPdgCode()) == 421){
6820 if(mcPart->GetMother()<0)continue;
6821 AliAODMCParticle* mcD0Parent = dynamic_cast<AliAODMCParticle*>(arrayMC->At(mcPart->GetMother()));
6822 if(!mcD0Parent)continue;
6823 Bool_t notfound=kFALSE,bMeson=kFALSE,bBaryon=kFALSE;
6825 while(TMath::Abs(mcD0Parent->GetPdgCode())!=4&&TMath::Abs(mcD0Parent->GetPdgCode())!=5){
6826 if(500<TMath::Abs(mcD0Parent->GetPdgCode())%10000&&TMath::Abs(mcD0Parent->GetPdgCode())<600){
6830 else if (5000<TMath::Abs(mcD0Parent->GetPdgCode())&&TMath::Abs(mcD0Parent->GetPdgCode())<6000){
6834 if(mcD0Parent->GetMother()<0){
6838 mcD0Parent=dynamic_cast<AliAODMCParticle*>(arrayMC->At(mcD0Parent->GetMother()));
6844 if(notfound)continue;
6845 if(TMath::Abs(mcD0Parent->GetPdgCode())==4)continue;//D0 from c quarks already counted
6846 ((TH1F*)flistMCproperties->FindObject("hMCfromBpdgB"))->Fill(TMath::Abs(mcD0Parent->GetPdgCode()));
6847 if(bBaryon)nD0bBaryon++;
6848 else if(bMeson)nD0bMeson++;
6851 mcD0Parent->PxPyPz(pxyzMum);
6852 ptmum=mcD0Parent->Pt();
6853 ((TH1F*)flistMCproperties->FindObject("hMCBhadrPt"))->Fill(ptmum);
6854 ((TH1F*)flistMCproperties->FindObject("hMCBhadrEta"))->Fill(mcD0Parent->Eta());
6855 ((TH1F*)flistMCproperties->FindObject("hMCBhadrEnergy"))->Fill(mcD0Parent->E());
6857 nBdaught=mcD0Parent->GetDaughter(1)-mcD0Parent->GetDaughter(0)+1;
6858 ((TH1F*)flistMCproperties->FindObject("hMCBhadrNdaught"))->Fill(nBdaught);
6861 // Now take properties of this D0 coming from a B
6862 mcPart->PxPyPz(pxyzDaught);
6863 ptdaught=mcPart->Pt();
6864 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBPt"))->Fill(ptdaught);
6865 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBEta"))->Fill(mcPart->Eta());
6866 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBEnergy"))->Fill(mcPart->E());
6867 // ##############################################################################################
6868 // Compare D0 momentum and b hadron:
6869 // NB: here ALL D0 are considered, also those not decaying in KPi !!!
6870 // ##############################################################################################
6871 ((TH2F*)flistMCproperties->FindObject("hMCD0VsBhadrPt"))->Fill(mcD0Parent->Pt(),mcPart->Pt());
6872 ((TH2F*)flistMCproperties->FindObject("hMCD0VsBhadrEnergy"))->Fill(mcD0Parent->E(),mcPart->E());
6873 ((TH1F*)flistMCproperties->FindObject("hMCD0deltaBhadrEnergy"))->Fill(mcPart->E()/mcD0Parent->E());
6874 ((TH1F*)flistMCproperties->FindObject("hMCD0EnergyVsAvBDaughtEn"))->Fill((mcPart->E()-(mcD0Parent->E()/nBdaught))/mcD0Parent->E());
6875 //calculate open angle
6876 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]));
6877 ((TH1F*)flistMCproperties->FindObject("hMCD0BhadrAngle"))->Fill(cosOpenAngle);
6878 ((TH2F*)flistMCproperties->FindObject("hMCD0BhadrAngleEnergy"))->Fill(mcPart->E(),cosOpenAngle);
6881 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(1,cquarksMC);
6882 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(2,nD0all);
6883 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(3,nD0FromB);
6884 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(4,nD0bMeson);
6885 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(5,nD0bBaryon);
6890 void AliAnalysisTaskSECharmFraction::SetPtBins(Int_t nbins,const Float_t *ptbins){
6891 if((fptbins)!=0x0)delete fptbins;
6892 fnbins=nbins;fptbins=new Float_t[fnbins];
6893 memcpy(fptbins,ptbins,fnbins*sizeof(Float_t));
6897 void AliAnalysisTaskSECharmFraction::SetStandardMassSelection(){
6898 //SET THE DEFAULT VALUES FOR INVARIANT MASS SELECTION
6901 SetSignalInvMassCut();
6902 SetLargeInvMassCut();
6903 SetSideBandInvMassCut();
6904 SetSideBandInvMassWindow();
6907 // HERE FOR SEARCH FOR SIGNAL
6908 SetSignalInvMassCut();
6909 SetLargeInvMassCut();
6910 SetSideBandInvMassCut();
6911 SetSideBandInvMassWindow();
6915 Bool_t AliAnalysisTaskSECharmFraction::SpecialSelD0(AliAODRecoDecayHF2Prong *d,Int_t &nusedforVtx){
6917 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
6918 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
6920 if(trk0->GetUsedForPrimVtxFit())nusedforVtx++;
6921 if(trk1->GetUsedForPrimVtxFit())nusedforVtx++;
6922 if(nusedforVtx>fNtrMaxforVtx)return kFALSE;
6924 if(TMath::Abs(d->Getd0Prong(1)) < -99999. ||
6925 TMath::Abs(d->Getd0Prong(0)) < -99999.) return kFALSE;
6932 AliAODVertex* AliAnalysisTaskSECharmFraction::GetPrimaryVtxSkipped(AliAODEvent *aodev,AliAODRecoDecayHF2Prong *d){
6933 //Calculate the primary vertex w/o the daughter tracks of the candidate
6935 AliESDVertex *vertexESD=0x0;
6936 AliAODVertex *vertexAOD=0x0;
6937 AliVertexerTracks *vertexer = new AliVertexerTracks(aodev->GetMagneticField());
6940 Int_t nTrksToSkip=2;
6941 AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(0);
6942 skipped[0]=dgTrack->GetID();
6943 dgTrack = (AliAODTrack*)d->GetDaughter(1);
6944 skipped[1]=dgTrack->GetID();
6948 vertexer->SetSkipTracks(nTrksToSkip,skipped);
6949 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(aodev);
6950 vertexer->SetMinClusters(4);
6951 if(!vertexESD) return vertexAOD;
6952 if(vertexESD->GetNContributors()<=0) {
6953 AliDebug(2,"vertexing failed");
6954 delete vertexESD; vertexESD=NULL;
6958 delete vertexer; vertexer=NULL;
6961 // convert to AliAODVertex
6962 Double_t pos[3],cov[6],chi2perNDF;
6963 vertexESD->GetXYZ(pos); // position
6964 vertexESD->GetCovMatrix(cov); //covariance matrix
6965 chi2perNDF = vertexESD->GetChi2toNDF();
6966 delete vertexESD; vertexESD=NULL;
6968 vertexAOD = new AliAODVertex(pos,cov,chi2perNDF);
6974 void AliAnalysisTaskSECharmFraction::Terminate(const Option_t*){
6975 //TERMINATE METHOD: NOTHING TO DO