1 /**************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 /////////////////////////////////////////////////////////////
18 // Class AliAnalysisTaskSECharmFraction
19 // AliAnalysisTaskSE for the extraction of the fraction of prompt charm
20 // using the charm hadron impact parameter to the primary vertex
22 // Author: Andrea Rossi, andrea.rossi@ts.infn.it
23 /////////////////////////////////////////////////////////////
28 #include <TDatabasePDG.h>
31 #include "AliAODEvent.h"
32 #include "AliAODRecoDecayHF2Prong.h"
33 #include "AliAODRecoDecayHF.h"
34 #include "AliAODRecoDecay.h"
35 #include "AliAnalysisDataSlot.h"
36 #include "AliAnalysisDataContainer.h"
37 #include "AliAODTrack.h"
38 #include "AliAODHandler.h"
39 #include "AliESDtrack.h"
40 #include "AliAODVertex.h"
41 #include "AliESDVertex.h"
42 #include "AliVertexerTracks.h"
43 #include "AliAODMCParticle.h"
44 #include "AliAODPid.h"
45 #include "AliTPCPIDResponse.h"
46 #include "AliAODMCHeader.h"
47 #include "AliAnalysisVertexingHF.h"
48 #include "AliAnalysisTaskSECharmFraction.h"
49 #include "AliRDHFCutsD0toKpi.h"
50 #include "AliAODInputHandler.h"
51 #include "AliAnalysisManager.h"
56 class AliAnalysisTaskSE;
59 ClassImp(AliAnalysisTaskSECharmFraction)
61 //________________________________________________________________________
62 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction()
63 : AliAnalysisTaskSE(),
79 fsidebandInvMassCut(),
80 fsidebandInvMassWindow(),
85 fSignalTypeTghCuts(0),
90 flistNoCutsFromDstar(0),
95 flistLsCutsFromDstar(0),
97 flistTghCutsSignal(0),
100 flistTghCutsFromDstar(0),
104 //Default constructor
106 //________________________________________________________________________
107 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name)
108 : AliAnalysisTaskSE(name),
122 fsignalInvMassCut(-1.),
123 flargeInvMassCut(-1.),
124 fsidebandInvMassCut(-1.),
125 fsidebandInvMassWindow(-1.),
129 fSignalTypeLsCuts(0),
130 fSignalTypeTghCuts(0),
131 flistMCproperties(0),
132 flistNoCutsSignal(0),
135 flistNoCutsFromDstar(0),
137 flistLsCutsSignal(0),
140 flistLsCutsFromDstar(0),
142 flistTghCutsSignal(0),
144 flistTghCutsFromB(0),
145 flistTghCutsFromDstar(0),
151 // Define input and output slots here
152 // Input slot #0 works with a TChain
153 // Output slot #0 writes into a TH1 container
156 fnbins=SetStandardCuts(fptbins);// THIS TO SET NBINS AND BINNING
158 DefineOutput(1, TH1F::Class());
159 DefineOutput(2, TH1F::Class());
160 DefineOutput(3, TH1F::Class());
161 DefineOutput(4, TH1F::Class());
162 for(Int_t j=5;j<21;j++){
163 DefineOutput(j, TList::Class());
166 // Output slot for the Cut Objects
167 DefineOutput(21,AliRDHFCutsD0toKpi::Class()); //My private output
168 DefineOutput(22,AliRDHFCutsD0toKpi::Class()); //My private output
173 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name,AliRDHFCutsD0toKpi *cutsA,AliRDHFCutsD0toKpi *cutsB)
174 : AliAnalysisTaskSE(name),
188 fsignalInvMassCut(-1.),
189 flargeInvMassCut(-1.),
190 fsidebandInvMassCut(-1.),
191 fsidebandInvMassWindow(-1.),
195 fSignalTypeLsCuts(0),
196 fSignalTypeTghCuts(0),
197 flistMCproperties(0),
198 flistNoCutsSignal(0),
201 flistNoCutsFromDstar(0),
203 flistLsCutsSignal(0),
206 flistLsCutsFromDstar(0),
208 flistTghCutsSignal(0),
210 flistTghCutsFromB(0),
211 flistTghCutsFromDstar(0),
215 if(fCutsTight)delete fCutsTight;fCutsTight=NULL;
216 if(fCutsLoose)delete fCutsLoose;fCutsLoose=NULL;
218 //Check consistency between sets of cuts:
219 if(cutsA->GetNPtBins()!=cutsB->GetNPtBins()){
220 printf("Different number of pt bins between the two sets of cuts: SWITCH TO STANDARD CUTS \n");
221 fnbins=SetStandardCuts(fptbins);
224 fCutsTight=new AliRDHFCutsD0toKpi(*cutsA);
225 fCutsLoose=new AliRDHFCutsD0toKpi(*cutsB);
226 for(Int_t j=0;j<cutsA->GetNPtBins();j++){
227 if(TMath::Abs(cutsA->GetPtBinLimits()[j]-cutsB->GetPtBinLimits()[j])>1.e-7){
228 printf("Different pt bin limits in the two set of cuts: use the first as reference \n");
229 fCutsLoose->SetPtBins(cutsA->GetNPtBins(),cutsA->GetPtBinLimits());
233 SetPtBins(fCutsTight->GetNPtBins(),fCutsTight->GetPtBinLimits());
236 // Output slot #0 writes into a TH1 container
237 DefineOutput(1, TH1F::Class());
238 DefineOutput(2, TH1F::Class());
239 DefineOutput(3, TH1F::Class());
240 DefineOutput(4, TH1F::Class());
241 for(Int_t j=5;j<21;j++){
243 DefineOutput(j, TList::Class());
245 // Output slot for the Cut Objects
246 DefineOutput(21,AliRDHFCutsD0toKpi::Class()); //My private output
247 DefineOutput(22,AliRDHFCutsD0toKpi::Class()); //My private output
251 //________________________________________________________________________
252 AliAnalysisTaskSECharmFraction::~AliAnalysisTaskSECharmFraction()
267 /* if(fAcceptanceCuts){
268 delete fAcceptanceCuts;
279 if (fSignalTypeLsCuts) {
280 delete fSignalTypeLsCuts;
281 fSignalTypeLsCuts = 0;
283 if (fSignalTypeTghCuts) {
284 delete fSignalTypeTghCuts;
285 fSignalTypeTghCuts = 0;
287 if(flistMCproperties){
288 delete flistMCproperties;
291 if(flistNoCutsSignal){
292 delete flistNoCutsSignal;
296 delete flistNoCutsBack;
299 if(flistNoCutsFromB){
300 delete flistNoCutsFromB;
303 if(flistNoCutsFromDstar){
304 delete flistNoCutsFromDstar;
305 flistNoCutsFromDstar=0;
307 if(flistNoCutsOther){
308 delete flistNoCutsOther;
312 if(flistLsCutsSignal){
313 delete flistLsCutsSignal;
317 delete flistLsCutsBack;
320 if(flistLsCutsFromB){
321 delete flistLsCutsFromB;
324 if(flistLsCutsFromDstar){
325 delete flistLsCutsFromDstar;
326 flistLsCutsFromDstar=0;
328 if(flistLsCutsOther){
329 delete flistLsCutsOther;
333 if(flistTghCutsSignal){
334 delete flistTghCutsSignal;
335 flistTghCutsSignal=0;
337 if(flistTghCutsBack){
338 delete flistTghCutsBack;
341 if(flistTghCutsFromB){
342 delete flistTghCutsFromB;
345 if(flistTghCutsFromDstar){
346 delete flistTghCutsFromDstar;
347 flistTghCutsFromDstar=0;
349 if(flistTghCutsOther){
350 delete flistTghCutsOther;
358 //________________________________________________________________________
359 void AliAnalysisTaskSECharmFraction::Init()
363 if(fDebug > 1) printf("AnalysisTaskSED0Mass::Init() \n");
364 fmD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
366 // gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/ConfigVertexingHF.C");
367 // gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/D0fromBSetCuts.C");
368 // 2 sets of dedicated cuts: fCutsTight is assumed as the standard cut object
370 // SetAcceptanceCut();
371 if(fNtrMaxforVtx<0)SetNMaxTrForVtx(3); //DEFAULT : NO SELECTION
372 if(fsignalInvMassCut<0.||flargeInvMassCut<0.||fsidebandInvMassCut<0.||fsidebandInvMassWindow<0.){
373 printf("AliAnalysisTaskSECharmFraction: Not All info for mass selection provided: switch to default values \n");
374 SetStandardMassSelection();
377 AliRDHFCutsD0toKpi* copyfCutsTight=new AliRDHFCutsD0toKpi(*fCutsTight);
378 const char* nameoutputTight=GetOutputSlot(21)->GetContainer()->GetName();
379 copyfCutsTight->SetName(nameoutputTight);
380 AliRDHFCutsD0toKpi* copyfCutsLoose=new AliRDHFCutsD0toKpi(*fCutsLoose);
381 const char* nameoutputLoose=GetOutputSlot(22)->GetContainer()->GetName();
382 copyfCutsLoose->SetName(nameoutputLoose);
384 PostData(21,copyfCutsTight);
385 PostData(22,copyfCutsLoose);
390 //________________________________________________________________________
391 void AliAnalysisTaskSECharmFraction::UserCreateOutputObjects()
396 // ################ NAMING SCHEME ###################################
397 // LISTS NAMING SCHEME
398 // "list" + cut selection string + MC selection string
399 // cut strings: "NC" =nocuts, "LSC"= loose cuts, "TGHC"= tight cuts
400 // MC sel. strings: "sign"= D0 from c quark
401 // "fromDstar" = D0 from Dstar from c quark
402 // "fromB"= D0from B decay (->from b quark) + D0from Dstar from B
403 // "back"= backgroun, generic except the cas "other"
404 // "other"= background case for candidates made of a pion and a kaon coming from the same D0 (in 4 prong) or from D+
406 // HISTS NAMING SCHEME
408 // "h" + specific name + cut selection string + MC selection string + (InvMass region string) + (pt string)
410 // cut selection strings = those for lists
411 // MC selection strings = those for lists
412 // inv mass region strings : "PM" or "SB" for global properties and pt integrated histos
413 // "_PkMss" or "_SBMss" for impact par. pt dependent histos
414 // pt string : "_pt" + integer number of ptbin
416 //###################################################################
420 TString strnamept,strtitlept;
421 Printf("INSIDE USER CREATE \n");
422 fNentries=new TH1F("nentriesChFr", "Look at the number of entries! = number of AODs", 2,1.,2.);
423 fSignalType=new TH1F("hsignaltype", "Histo for type of MC signal", 61,-1.,60.);
424 fSignalTypeLsCuts=new TH1F("hsignaltypeLsCuts", "Histo for type of MC signal with loose cuts", 61,-1.,60.);
425 fSignalTypeTghCuts=new TH1F("hsignaltypeTghCuts", "Histo for type of MC signal with tight cuts", 61,-1.,60.);
427 //########## DEFINE THE TLISTS ##################
428 flistMCproperties=new TList();
429 flistMCproperties->SetOwner();
430 flistMCproperties->SetName("listMCproperties");
432 flistNoCutsSignal = new TList();
433 flistNoCutsSignal->SetOwner();
434 flistNoCutsSignal->SetName("listNCsign");
436 flistNoCutsBack = new TList();
437 flistNoCutsBack->SetOwner();
438 flistNoCutsBack->SetName("listNCback");
440 flistNoCutsFromB = new TList();
441 flistNoCutsFromB->SetOwner();
442 flistNoCutsFromB->SetName("listNCfromB");
444 flistNoCutsFromDstar = new TList();
445 flistNoCutsFromDstar->SetOwner();
446 flistNoCutsFromDstar->SetName("listNCfromDstar");
448 flistNoCutsOther = new TList();
449 flistNoCutsOther->SetOwner();
450 flistNoCutsOther->SetName("listNCother");
453 flistLsCutsSignal = new TList();
454 flistLsCutsSignal->SetOwner();
455 flistLsCutsSignal->SetName("listLSCsign");
457 flistLsCutsBack = new TList();
458 flistLsCutsBack->SetOwner();
459 flistLsCutsBack->SetName("listLSCback");
461 flistLsCutsFromB = new TList();
462 flistLsCutsFromB->SetOwner();
463 flistLsCutsFromB->SetName("listLSCfromB");
465 flistLsCutsFromDstar = new TList();
466 flistLsCutsFromDstar->SetOwner();
467 flistLsCutsFromDstar->SetName("listLSCfromDstar");
469 flistLsCutsOther = new TList();
470 flistLsCutsOther->SetOwner();
471 flistLsCutsOther->SetName("listLSCother");
474 flistTghCutsSignal = new TList();
475 flistTghCutsSignal->SetOwner();
476 flistTghCutsSignal->SetName("listTGHCsign");
478 flistTghCutsBack = new TList();
479 flistTghCutsBack->SetOwner();
480 flistTghCutsBack->SetName("listTGHCback");
482 flistTghCutsFromB = new TList();
483 flistTghCutsFromB->SetOwner();
484 flistTghCutsFromB->SetName("listTGHCfromB");
486 flistTghCutsFromDstar = new TList();
487 flistTghCutsFromDstar->SetOwner();
488 flistTghCutsFromDstar->SetName("listTGHCfromDstar");
490 flistTghCutsOther = new TList();
491 flistTghCutsOther->SetOwner();
492 flistTghCutsOther->SetName("listTGHCother");
496 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.};
497 Float_t dumbinning[201];
498 for(Int_t j=0;j<201;j++){
499 dumbinning[j]=(Float_t)j*0.5;
501 //################################################################################################
503 // HISTO FOR MC PROPERTIES OF D0, c quarks and B mesons #
505 //################################################################################################
506 TH1F *hMCcquarkAllPt=new TH1F("hMCcquarkAllPt","c quark Pt (all cquarks produced)",34,ptbinsD0arr);
507 TH1F *hMCcquarkAllEta=new TH1F("hMCcquarkAllEta","c quark Eta (all cquarks produced)",50,-3.,3.);
508 TH1F *hMCcquarkAllEnergy=new TH1F("hMCcquarkAllEnergy","c quark Pt (all cquarks produced)",200,0.,100.);
509 TH1F *hMCcquarkNdaught=new TH1F("hMCcquarkNdaught","N cquark daughters (all cquarks produced)",100,0.,100.);
510 TH1F *hMCD0fromcPt=new TH1F("hMCD0fromcPt","D0 from c Pt",34,ptbinsD0arr);
511 TH1F *hMCD0fromcEta=new TH1F("hMCD0fromcEta","D0 from c Eta",50,-3.,3.);
512 TH1F *hMCD0fromcEnergy=new TH1F("hMCD0fromcEnergy","D0 from c Energy",200,0.,100.);
514 TH2F *hMCD0VscquarkPt=new TH2F("hMCD0VscquarkPt","D0 pt Vs cquark pt",34,ptbinsD0arr,34,ptbinsD0arr);
515 TH2F *hMCD0VscquarkEnergy=new TH2F("hMCD0VscquarkEnergy","D0 Energy Vs cquark Energy",200,0.,50.,200,0.,50.);
516 TH1F *hMCD0deltacquarkEnergy=new TH1F("hMCD0deltacquarkEnergy","Fractional D0 Energy w.r.t. cquark Energy",20,0.,1.);
517 TH1F *hMCD0EnergyVsAvcquarkDaughtEn=new TH1F("hMCD0EnergyVsAvcquarkDaughtEn","#Delta(E^{D^0}-E_{avg})/E_{cquark}",40,-1.,1.);
518 TH1F *hMCD0cquarkAngle=new TH1F("hMCD0cquarkAngle","cosine of the angle between D0 and c quark particle",40,-1.,1.);
519 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.);
521 TH1I *hMCfromBpdgB=new TH1I("hMCfromBpdgB","hMCfromBpdgB",10000,0.,10000);
522 TH1F *hMCBhadrPt=new TH1F("hMCBhadrPt","B hadr Pt",34,ptbinsD0arr);
523 TH1F *hMCBhadrEta=new TH1F("hMCBhadrEta","B hadr Eta",50,-3.,3.);
524 TH1F *hMCBhadrEnergy=new TH1F("hMCBhadrEnergy","B hadr Pt",200,0.,100.);
525 TH1F *hMCBhadrNdaught=new TH1F("hMCBhadrNdaught","N Bhadr daughters",100,0.,100.);
526 TH1F *hMCD0fromBPt=new TH1F("hMCD0fromBPt","D0 from B Pt",34,ptbinsD0arr);
527 TH1F *hMCD0fromBEta=new TH1F("hMCD0fromBEta","D0 from B Eta",50,-3.,3.);
528 TH1F *hMCD0fromBEnergy=new TH1F("hMCD0fromBEnergy","D0 from B Energy",200,0.,100.);
530 TH2F *hMCD0VsBhadrPt=new TH2F("hMCD0VsBhadrPt","D0 pt Vs Bhadr pt",34,ptbinsD0arr,34,ptbinsD0arr);
531 TH2F *hMCD0VsBhadrEnergy=new TH2F("hMCD0VsBhadrEnergy","D0 Energy Vs Bhadr Energy",200,0.,50.,200,0.,50.);
532 TH1F *hMCD0deltaBhadrEnergy=new TH1F("hMCD0deltaBhadrEnergy","Fractional D0 Energy w.r.t. Bhadr Energy",20,0.,1.);
533 TH1F *hMCD0EnergyVsAvBDaughtEn=new TH1F("hMCD0EnergyVsAvBDaughtEn","#Delta(E^{D^0}-E_{avg})/E_{Bahdr}",40,-1.,1.);
534 TH1F *hMCD0BhadrAngle=new TH1F("hMCD0BhadrAngle","cosine of the angle between D0 and Bhadr particle",40,-1.,1.);
535 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.);
537 TH1I *hMCPartFound=new TH1I("hMCPartFound","1=c,2=D0,3=fromBall,4=fromBmeson,5=fromBbaryon",6,0,6);
540 flistMCproperties->Add(hMCcquarkAllPt);
541 flistMCproperties->Add(hMCcquarkAllEta);
542 flistMCproperties->Add(hMCcquarkAllEnergy);
543 flistMCproperties->Add(hMCcquarkNdaught);
544 flistMCproperties->Add(hMCD0fromcPt);
545 flistMCproperties->Add(hMCD0fromcEta);
546 flistMCproperties->Add(hMCD0fromcEnergy);
547 flistMCproperties->Add(hMCD0VscquarkPt);
548 flistMCproperties->Add(hMCD0VscquarkEnergy);
549 flistMCproperties->Add(hMCD0deltacquarkEnergy);
550 flistMCproperties->Add(hMCD0EnergyVsAvcquarkDaughtEn);
551 flistMCproperties->Add(hMCD0cquarkAngle);
552 flistMCproperties->Add(hMCD0cquarkAngleEnergy);
554 flistMCproperties->Add(hMCfromBpdgB);
555 flistMCproperties->Add(hMCBhadrPt);
556 flistMCproperties->Add(hMCBhadrEta);
557 flistMCproperties->Add(hMCBhadrEnergy);
558 flistMCproperties->Add(hMCBhadrNdaught);
559 flistMCproperties->Add(hMCD0fromBPt);
560 flistMCproperties->Add(hMCD0fromBEta);
561 flistMCproperties->Add(hMCD0fromBEnergy);
562 flistMCproperties->Add(hMCD0VsBhadrPt);
563 flistMCproperties->Add(hMCD0VsBhadrEnergy);
564 flistMCproperties->Add(hMCD0deltaBhadrEnergy);
565 flistMCproperties->Add(hMCD0EnergyVsAvBDaughtEn);
566 flistMCproperties->Add(hMCD0BhadrAngle);
567 flistMCproperties->Add(hMCD0BhadrAngleEnergy);
568 flistMCproperties->Add(hMCPartFound);
570 //################################################################################################
572 // HISTOS FOR NO CUTS CASE #
574 //################################################################################################
575 Printf("AFTER MC HISTOS \n");
577 //############ NO CUTS SIGNAL HISTOGRAMS ###############
579 // ####### global properties histo ############
581 TH2F *hCPtaVSd0d0NCsign=new TH2F("hCPtaVSd0d0NCsign","hCPtaVSd0d0_NoCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
582 TH1F *hSecVtxZNCsign=new TH1F("hSecVtxZNCsign","hSecVtxZ_NoCuts_Signal",1000,-8.,8.);
583 TH1F *hSecVtxXNCsign=new TH1F("hSecVtxXNCsign","hSecVtxX_NoCuts_Signal",1000,-3000.,3000.);
584 TH1F *hSecVtxYNCsign=new TH1F("hSecVtxYNCsign","hSecVtxY_NoCuts_Signal",1000,-3000.,3000.);
585 TH2F *hSecVtxXYNCsign=new TH2F("hSecVtxXYNCsign","hSecVtxXY_NoCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
586 TH1F *hSecVtxPhiNCsign=new TH1F("hSecVtxPhiNCsign","hSecVtxPhi_NoCuts_Signal",180,-180.1,180.1);
587 TH1F *hd0singlTrackNCsign=new TH1F("hd0singlTrackNCsign","hd0singlTrackNoCuts_Signal",1000,-5000.,5000.);
588 TH1F *hCPtaNCsign=new TH1F("hCPtaNCsign","hCPta_NoCuts_Signal",100,-1.,1.);
589 TH1F *hd0xd0NCsign=new TH1F("hd0xd0NCsign","hd0xd0_NoCuts_Signal",1000,-100000.,100000.);
590 TH1F *hMassTrueNCsign=new TH1F("hMassTrueNCsign","D^{0} MC inv. Mass No Cuts Signal(All momenta)",600,1.600,2.200);
591 TH1F *hMassNCsign=new TH1F("hMassNCsign","D^{0} inv. Mass No Cuts Signal (All momenta)",600,1.600,2.200);
592 hMassNCsign->Sumw2();
593 TH1F *hMassTrueNCsignPM=new TH1F("hMassTrueNCsignPM","D^{0} MC inv. Mass No Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
594 TH1F *hMassNCsignPM=new TH1F("hMassNCsignPM","D^{0} inv. Mass No Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
595 hMassNCsignPM->Sumw2();
597 TH1F *hMassTrueNCsignSB=new TH1F("hMassTrueNCsignSB","D^{0} MC inv. Mass in Side Bands No Cuts Signal(All momenta)",600,1.600,2.200);
598 TH1F *hMassNCsignSB=new TH1F("hMassNCsignSB","D^{0} inv. Mass in Side Bands No Cuts Signal (All momenta)",600,1.600,2.200);
599 hMassNCsignSB->Sumw2();
601 flistNoCutsSignal->Add(hCPtaVSd0d0NCsign);
602 flistNoCutsSignal->Add(hSecVtxZNCsign);
603 flistNoCutsSignal->Add(hSecVtxYNCsign);
604 flistNoCutsSignal->Add(hSecVtxXNCsign);
605 flistNoCutsSignal->Add(hSecVtxXYNCsign);
606 flistNoCutsSignal->Add(hSecVtxPhiNCsign);
607 flistNoCutsSignal->Add(hd0singlTrackNCsign);
608 flistNoCutsSignal->Add(hCPtaNCsign);
609 flistNoCutsSignal->Add(hd0xd0NCsign);
610 flistNoCutsSignal->Add(hMassTrueNCsign);
611 flistNoCutsSignal->Add(hMassNCsign);
612 flistNoCutsSignal->Add(hMassTrueNCsignPM);
613 flistNoCutsSignal->Add(hMassNCsignPM);
614 flistNoCutsSignal->Add(hMassTrueNCsignSB);
615 flistNoCutsSignal->Add(hMassNCsignSB);
617 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
618 TH1F *hdcaNCsign=new TH1F("hdcaNCsign","hdca_NoCuts_Signal",100,0.,1000.);
619 hdcaNCsign->SetXTitle("dca [#mum]");
620 hdcaNCsign->SetYTitle("Entries");
621 TH1F *hcosthetastarNCsign=new TH1F("hcosthetastarNCsign","hCosThetaStar_NoCuts_Signal",50,-1.,1.);
622 hcosthetastarNCsign->SetXTitle("cos #theta^{*}");
623 hcosthetastarNCsign->SetYTitle("Entries");
624 TH1F *hptD0NCsign=new TH1F("hptD0NCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
625 hptD0NCsign->SetXTitle("p_{t} [GeV/c]");
626 hptD0NCsign->SetYTitle("Entries");
627 TH1F *hptD0VsMaxPtNCsign=new TH1F("hptD0VsMaxPtNCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
628 TH2F *hptD0PTallsqrtNCsign=new TH2F("hptD0PTallsqrtNCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
629 TH2F *hptD0PTallNCsign=new TH2F("hptD0PTallNCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
630 TH2F *hptD0vsptBNCsign=new TH2F("hptD0vsptBNCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
631 TH2F *hpD0vspBNCsign=new TH2F("hpD0vspBNCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
632 TH2F *hptD0vsptcquarkNCsign=new TH2F("hptD0vsptcquarkNCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
633 TH2F *hpD0vspcquarkNCsign=new TH2F("hpD0vspcquarkNCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
634 flistNoCutsSignal->Add(hdcaNCsign);
635 flistNoCutsSignal->Add(hcosthetastarNCsign);
636 flistNoCutsSignal->Add(hptD0NCsign);
637 flistNoCutsSignal->Add(hptD0VsMaxPtNCsign);
638 flistNoCutsSignal->Add(hptD0PTallsqrtNCsign);
639 flistNoCutsSignal->Add(hptD0PTallNCsign);
640 flistNoCutsSignal->Add(hptD0vsptBNCsign);
641 flistNoCutsSignal->Add(hpD0vspBNCsign);
642 flistNoCutsSignal->Add(hptD0vsptcquarkNCsign);
643 flistNoCutsSignal->Add(hpD0vspcquarkNCsign);
645 TH1F *hd0zD0ptNCsign;
646 TH1F *hInvMassNCsign;
647 TH2F *hInvMassPtNCsign=new TH2F("hInvMassPtNCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
648 flistNoCutsSignal->Add(hInvMassPtNCsign);
650 TH1F *hCosPDPBNCsign;
651 TH1F *hCosPcPDNCsign;
653 TH2F *hd0D0VSd0xd0NCsignpt;
654 TH2F *hangletracksVSd0xd0NCsignpt;
655 TH2F *hangletracksVSd0D0NCsignpt;
656 TH1F *hd0xd0NCsignpt;
658 TH2F *hTOFpidNCsign=new TH2F("hTOFpidNCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
659 flistNoCutsSignal->Add(hTOFpidNCsign);
662 for(Int_t i=0;i<fnbins;i++){
663 //Printf("INSIDE HISTOS CREATION LOOP: %d \n",fnbins);
665 namehist="hd0zD0ptNCsign_pt";
667 titlehist="d0(z) No Cuts Signalm ptbin=";
669 hd0zD0ptNCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
670 hd0zD0ptNCsign->SetXTitle("d_{0}(z) [#mum]");
671 hd0zD0ptNCsign->SetYTitle("Entries");
672 flistNoCutsSignal->Add(hd0zD0ptNCsign);
674 namehist="hInvMassNCsign_pt";
676 titlehist="Invariant Mass No Cuts Signal ptbin=";
678 hInvMassNCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
679 hInvMassNCsign->SetXTitle("Invariant Mass [GeV]");
680 hInvMassNCsign->SetYTitle("Entries");
681 flistNoCutsSignal->Add(hInvMassNCsign);
683 namehist="hetaNCsign_pt";
685 titlehist="eta No Cuts Signal ptbin=";
687 hetaNCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
688 hetaNCsign->SetXTitle("Pseudorapidity");
689 hetaNCsign->SetYTitle("Entries");
690 flistNoCutsSignal->Add(hetaNCsign);
692 namehist="hCosPDPBNCsign_pt";
694 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
696 hCosPDPBNCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
697 hCosPDPBNCsign->SetXTitle("Cosine between D0 momentum and B momentum");
698 hCosPDPBNCsign->SetYTitle("Entries");
699 flistNoCutsSignal->Add(hCosPDPBNCsign);
701 namehist="hCosPcPDNCsign_pt";
703 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
705 hCosPcPDNCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
706 hCosPcPDNCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
707 hCosPcPDNCsign->SetYTitle("Entries");
708 flistNoCutsSignal->Add(hCosPcPDNCsign);
711 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
712 namehist="hd0xd0NCsign_pt";
714 titlehist="d0xd0 No Cuts Signal ptbin=";
716 hd0xd0NCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
717 hd0xd0NCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
718 hd0xd0NCsignpt->SetYTitle("Entries");
719 flistNoCutsSignal->Add(hd0xd0NCsignpt);
722 namehist="hd0D0VSd0xd0NCsign_pt";
724 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Signal ptbin=";
726 hd0D0VSd0xd0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
727 hd0D0VSd0xd0NCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
728 hd0D0VSd0xd0NCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
729 flistNoCutsSignal->Add(hd0D0VSd0xd0NCsignpt);
732 namehist="hangletracksVSd0xd0NCsign_pt";
734 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Signal ptbin=";
736 hangletracksVSd0xd0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
737 hangletracksVSd0xd0NCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
738 hangletracksVSd0xd0NCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
739 flistNoCutsSignal->Add(hangletracksVSd0xd0NCsignpt);
742 namehist="hangletracksVSd0D0NCsign_pt";
744 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Signal ptbin=";
746 hangletracksVSd0D0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
747 hangletracksVSd0D0NCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
748 hangletracksVSd0D0NCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
749 flistNoCutsSignal->Add(hangletracksVSd0D0NCsignpt);
752 Printf("AFTER LOOP HISTOS CREATION \n");
753 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
754 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
756 // ####### d0 D0 histos ############
757 TH1F *hd0D0NCsignPM = new TH1F("hd0D0NCsignPM","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
758 hd0D0NCsignPM->SetXTitle("Impact parameter [#mum]");
759 hd0D0NCsignPM->SetYTitle("Entries");
761 TH1F *hd0D0VtxTrueNCsignPM = new TH1F("hd0D0VtxTrueNCsignPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
762 hd0D0VtxTrueNCsignPM->SetXTitle("Impact parameter [#mum]");
763 hd0D0VtxTrueNCsignPM->SetYTitle("Entries");
765 TH1F *hMCd0D0NCsignPM = new TH1F("hMCd0D0NCsignPM","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
766 hMCd0D0NCsignPM->SetXTitle("MC Impact parameter [#mum]");
767 hMCd0D0NCsignPM->SetYTitle("Entries");
769 TH1F *hd0D0NCsignSB = new TH1F("hd0D0NCsignSB","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
770 hd0D0NCsignSB->SetXTitle("Impact parameter [#mum]");
771 hd0D0NCsignSB->SetYTitle("Entries");
773 TH1F *hd0D0VtxTrueNCsignSB = new TH1F("hd0D0VtxTrueNCsignSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
774 hd0D0VtxTrueNCsignSB->SetXTitle("Impact parameter [#mum]");
775 hd0D0VtxTrueNCsignSB->SetYTitle("Entries");
777 TH1F *hMCd0D0NCsignSB = new TH1F("hMCd0D0NCsignSB","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
778 hMCd0D0NCsignSB->SetXTitle("MC Impact parameter [#mum]");
779 hMCd0D0NCsignSB->SetYTitle("Entries");
781 flistNoCutsSignal->Add(hd0D0NCsignPM);
782 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignPM);
783 flistNoCutsSignal->Add(hMCd0D0NCsignPM);
784 flistNoCutsSignal->Add(hd0D0NCsignSB);
785 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignSB);
786 flistNoCutsSignal->Add(hMCd0D0NCsignSB);
788 TH1F *hd0D0ptNCsignPM;
789 TH1F *hMCd0D0ptNCsignPM;
790 TH1F *hd0D0VtxTrueptNCsignPM;
791 TH1F *hd0D0ptNCsignSB;
792 TH1F *hMCd0D0ptNCsignSB;
793 TH1F *hd0D0VtxTrueptNCsignSB;
794 namehist="hd0D0ptNCsign_";
795 titlehist="D^{0} impact par. plot, No Cuts, Signal, ";
796 for(Int_t i=0;i<fnbins;i++){
797 Printf("IN HISTOS CREATION USING PTBINS VALUES for NAMES \n");
799 strnamept.Append("PkMss_pt");
802 strtitlept=titlehist;
803 strtitlept.Append(" Mass Peak, ");
805 strtitlept+=fptbins[i];
806 Printf("IN HISTOS CREATION USING PTBINS VALUES for NAMES %d: %f\n",i,fptbins[i]);
807 strtitlept.Append("<= pt <");
808 strtitlept+=fptbins[i+1];
809 strtitlept.Append(" [GeV/c]");
811 hd0D0ptNCsignPM= new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
812 hd0D0ptNCsignPM->SetXTitle("Impact parameter [#mum] ");
813 hd0D0ptNCsignPM->SetYTitle("Entries");
814 flistNoCutsSignal->Add(hd0D0ptNCsignPM);
816 strnamept.ReplaceAll("hd0D0","hMCd0D0");
817 hMCd0D0ptNCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
818 hMCd0D0ptNCsignPM->SetXTitle("MC Impact parameter [#mum] ");
819 hMCd0D0ptNCsignPM->SetYTitle("Entries");
820 flistNoCutsSignal->Add(hMCd0D0ptNCsignPM);
823 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
824 hd0D0VtxTrueptNCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
825 hd0D0VtxTrueptNCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
826 hd0D0VtxTrueptNCsignPM->SetYTitle("Entries");
827 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignPM);
830 strnamept.Append("SBMss_pt");
833 strtitlept=titlehist;
834 strtitlept.Append(" Side Bands, ");
835 strtitlept+=fptbins[i];
836 strtitlept.Append("<= pt <");
837 strtitlept+=fptbins[i+1];
838 strtitlept.Append(" [GeV/c]");
840 hd0D0ptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
841 hd0D0ptNCsignSB->SetXTitle("Impact parameter [#mum] ");
842 hd0D0ptNCsignSB->SetYTitle("Entries");
843 flistNoCutsSignal->Add(hd0D0ptNCsignSB);
845 strnamept.ReplaceAll("hd0D0","hMCd0D0");
846 hMCd0D0ptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
847 hMCd0D0ptNCsignSB->SetXTitle("MC Impact parameter [#mum] ");
848 hMCd0D0ptNCsignSB->SetYTitle("Entries");
849 flistNoCutsSignal->Add(hMCd0D0ptNCsignSB);
851 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
852 hd0D0VtxTrueptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
853 hd0D0VtxTrueptNCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
854 hd0D0VtxTrueptNCsignSB->SetYTitle("Entries");
855 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignSB);
858 Printf("AFTER SIGNAL HISTOS CREATION for NOCUTS\n");
861 //############ NO CUTS BACKGROUND HISTOGRAMS ###########
863 // ######## global properties histos #######
864 TH2F *hCPtaVSd0d0NCback=new TH2F("hCPtaVSd0d0NCback","hCPtaVSd0d0_NoCuts_Background",1000,-100000.,100000.,100,-1.,1.);
865 TH1F *hSecVtxZNCback=new TH1F("hSecVtxZNCback","hSecVtxZ_NoCuts_Background",1000,-8.,8.);
866 TH1F *hSecVtxXNCback=new TH1F("hSecVtxXNCback","hSecVtxX_NoCuts_Background",1000,-3000.,3000.);
867 TH1F *hSecVtxYNCback=new TH1F("hSecVtxYNCback","hSecVtxY_NoCuts_Background",1000,-3000.,3000.);
868 TH2F *hSecVtxXYNCback=new TH2F("hSecVtxXYNCback","hSecVtxXY_NoCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
869 TH1F *hSecVtxPhiNCback=new TH1F("hSecVtxPhiNCback","hSecVtxPhi_NoCuts_Background",180,-180.1,180.1);
870 TH1F *hd0singlTrackNCback=new TH1F("hd0singlTrackNCback","hd0singlTrackNoCuts_Back",1000,-5000.,5000.);
871 TH1F *hCPtaNCback=new TH1F("hCPtaNCback","hCPta_NoCuts_Background",100,-1.,1.);
872 TH1F *hd0xd0NCback=new TH1F("hd0xd0NCback","hd0xd0_NoCuts_Background",1000,-100000.,100000.);
873 TH1F *hMassTrueNCback=new TH1F("hMassTrueNCback","D^{0} MC inv. Mass No Cuts Background(All momenta)",600,1.600,2.200);
874 TH1F *hMassNCback=new TH1F("hMassNCback","D^{0} inv. Mass No Cuts Background (All momenta)",600,1.600,2.200);
875 hMassNCback->Sumw2();
876 TH1F *hMassTrueNCbackPM=new TH1F("hMassTrueNCbackPM","D^{0} MC inv. Mass No Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
877 TH1F *hMassNCbackPM=new TH1F("hMassNCbackPM","D^{0} inv. Mass No Cuts Background (All momenta), MassPeak",600,1.600,2.200);
878 hMassNCbackPM->Sumw2();
879 TH1F *hMassTrueNCbackSB=new TH1F("hMassTrueNCbackSB","D^{0} MC inv. Mass in Side Bands No Cuts Background(All momenta)",600,1.600,2.200);
880 TH1F *hMassNCbackSB=new TH1F("hMassNCbackSB","D^{0} inv. Mass in Side Bands No Cuts Background (All momenta)",600,1.600,2.200);
881 hMassNCbackSB->Sumw2();
883 flistNoCutsBack->Add(hCPtaVSd0d0NCback);
884 flistNoCutsBack->Add(hSecVtxZNCback);
885 flistNoCutsBack->Add(hSecVtxYNCback);
886 flistNoCutsBack->Add(hSecVtxXNCback);
887 flistNoCutsBack->Add(hSecVtxXYNCback);
888 flistNoCutsBack->Add(hSecVtxPhiNCback);
889 flistNoCutsBack->Add(hd0singlTrackNCback);
890 flistNoCutsBack->Add(hCPtaNCback);
891 flistNoCutsBack->Add(hd0xd0NCback);
892 flistNoCutsBack->Add(hMassTrueNCback);
893 flistNoCutsBack->Add(hMassNCback);
894 flistNoCutsBack->Add(hMassTrueNCbackPM);
895 flistNoCutsBack->Add(hMassNCbackPM);
896 flistNoCutsBack->Add(hMassTrueNCbackSB);
897 flistNoCutsBack->Add(hMassNCbackSB);
900 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
901 TH1F *hdcaNCback=new TH1F("hdcaNCback","hdca_NoCuts_Backgr",100,0.,1000.);
902 hdcaNCback->SetXTitle("dca [#mum]");
903 hdcaNCback->SetYTitle("Entries");
904 TH1F *hcosthetastarNCback=new TH1F("hcosthetastarNCback","hCosThetaStar_NoCuts_Backgr",50,-1.,1.);
905 hcosthetastarNCback->SetXTitle("cos #theta^{*}");
906 hcosthetastarNCback->SetYTitle("Entries");
907 TH1F *hptD0NCback=new TH1F("hptD0NCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
908 hptD0NCback->SetXTitle("p_{t} [GeV/c]");
909 hptD0NCback->SetYTitle("Entries");
910 TH1F *hptD0VsMaxPtNCback=new TH1F("hptD0VsMaxPtNCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
911 TH2F *hptD0PTallsqrtNCback=new TH2F("hptD0PTallsqrtNCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
912 TH2F *hptD0PTallNCback=new TH2F("hptD0PTallNCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
913 TH2F *hptD0vsptBNCback=new TH2F("hptD0vsptBNCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
914 TH2F *hpD0vspBNCback=new TH2F("hpD0vspBNCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
915 TH2F *hptD0vsptcquarkNCback=new TH2F("hptD0vsptcquarkNCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
916 TH2F *hpD0vspcquarkNCback=new TH2F("hpD0vspcquarkNCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
917 flistNoCutsBack->Add(hdcaNCback);
918 flistNoCutsBack->Add(hcosthetastarNCback);
919 flistNoCutsBack->Add(hptD0NCback);
920 flistNoCutsBack->Add(hptD0VsMaxPtNCback);
921 flistNoCutsBack->Add(hptD0PTallsqrtNCback);
922 flistNoCutsBack->Add(hptD0PTallNCback);
923 flistNoCutsBack->Add(hptD0vsptBNCback);
924 flistNoCutsBack->Add(hpD0vspBNCback);
925 flistNoCutsBack->Add(hptD0vsptcquarkNCback);
926 flistNoCutsBack->Add(hpD0vspcquarkNCback);
928 TH1F *hd0zD0ptNCback;
929 TH1F *hInvMassNCback;
930 TH2F *hInvMassPtNCback=new TH2F("hInvMassPtNCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
932 TH1F *hCosPDPBNCback;
933 TH1F *hCosPcPDNCback;
934 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
935 TH2F *hd0D0VSd0xd0NCbackpt;
936 TH2F *hangletracksVSd0xd0NCbackpt;
937 TH2F *hangletracksVSd0D0NCbackpt;
938 TH1F *hd0xd0NCbackpt;
939 flistNoCutsBack->Add(hInvMassPtNCback);
941 TH2F *hTOFpidNCback=new TH2F("hTOFpidNCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
942 flistNoCutsBack->Add(hTOFpidNCback);
944 for(Int_t i=0;i<fnbins;i++){
945 namehist="hd0zD0ptNCback_pt";
947 titlehist="d0(z) No Cuts Backgrm ptbin=";
949 hd0zD0ptNCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
950 hd0zD0ptNCback->SetXTitle("d_{0}(z) [#mum]");
951 hd0zD0ptNCback->SetYTitle("Entries");
952 flistNoCutsBack->Add(hd0zD0ptNCback);
954 namehist="hInvMassNCback_pt";
956 titlehist="Invariant Mass No Cuts Backgr ptbin=";
958 hInvMassNCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
959 hInvMassNCback->SetXTitle("Invariant Mass [GeV]");
960 hInvMassNCback->SetYTitle("Entries");
961 flistNoCutsBack->Add(hInvMassNCback);
963 namehist="hetaNCback_pt";
965 titlehist="eta No Cuts Backgr ptbin=";
967 hetaNCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
968 hetaNCback->SetXTitle("Pseudorapidity");
969 hetaNCback->SetYTitle("Entries");
970 flistNoCutsBack->Add(hetaNCback);
972 namehist="hCosPDPBNCback_pt";
974 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
976 hCosPDPBNCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
977 hCosPDPBNCback->SetXTitle("Cosine between D0 momentum and B momentum");
978 hCosPDPBNCback->SetYTitle("Entries");
979 flistNoCutsBack->Add(hCosPDPBNCback);
981 namehist="hCosPcPDNCback_pt";
983 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
985 hCosPcPDNCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
986 hCosPcPDNCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
987 hCosPcPDNCback->SetYTitle("Entries");
988 flistNoCutsBack->Add(hCosPcPDNCback);
991 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
992 namehist="hd0xd0NCback_pt";
994 titlehist="d0xd0 No Cuts Background ptbin=";
996 hd0xd0NCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
997 hd0xd0NCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
998 hd0xd0NCbackpt->SetYTitle("Entries");
999 flistNoCutsBack->Add(hd0xd0NCbackpt);
1002 namehist="hd0D0VSd0xd0NCback_pt";
1004 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Back ptbin=";
1006 hd0D0VSd0xd0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1007 hd0D0VSd0xd0NCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1008 hd0D0VSd0xd0NCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1009 flistNoCutsBack->Add(hd0D0VSd0xd0NCbackpt);
1012 namehist="hangletracksVSd0xd0NCback_pt";
1014 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Back ptbin=";
1016 hangletracksVSd0xd0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1017 hangletracksVSd0xd0NCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1018 hangletracksVSd0xd0NCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
1019 flistNoCutsBack->Add(hangletracksVSd0xd0NCbackpt);
1022 namehist="hangletracksVSd0D0NCback_pt";
1024 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Back ptbin=";
1026 hangletracksVSd0D0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1027 hangletracksVSd0D0NCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1028 hangletracksVSd0D0NCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
1029 flistNoCutsBack->Add(hangletracksVSd0D0NCbackpt);
1034 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1035 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1039 // ####### d0 D0 histos ############
1041 TH1F *hd0D0NCbackPM = new TH1F("hd0D0NCbackPM","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1042 hd0D0NCbackPM->SetXTitle("Impact parameter [#mum]");
1043 hd0D0NCbackPM->SetYTitle("Entries");
1045 TH1F *hd0D0VtxTrueNCbackPM = new TH1F("hd0D0VtxTrueNCbackPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1046 hd0D0VtxTrueNCbackPM->SetXTitle("Impact parameter [#mum]");
1047 hd0D0VtxTrueNCbackPM->SetYTitle("Entries");
1049 TH1F *hMCd0D0NCbackPM = new TH1F("hMCd0D0NCbackPM","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1050 hMCd0D0NCbackPM->SetXTitle("MC Impact parameter [#mum]");
1051 hMCd0D0NCbackPM->SetYTitle("Entries");
1053 TH1F *hd0D0NCbackSB = new TH1F("hd0D0NCbackSB","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1054 hd0D0NCbackSB->SetXTitle("Impact parameter [#mum]");
1055 hd0D0NCbackSB->SetYTitle("Entries");
1057 TH1F *hd0D0VtxTrueNCbackSB = new TH1F("hd0D0VtxTrueNCbackSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1058 hd0D0VtxTrueNCbackSB->SetXTitle("Impact parameter [#mum]");
1059 hd0D0VtxTrueNCbackSB->SetYTitle("Entries");
1061 TH1F *hMCd0D0NCbackSB = new TH1F("hMCd0D0NCbackSB","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1062 hMCd0D0NCbackSB->SetXTitle("MC Impact parameter [#mum]");
1063 hMCd0D0NCbackSB->SetYTitle("Entries");
1065 flistNoCutsBack->Add(hd0D0NCbackPM);
1066 flistNoCutsBack->Add(hd0D0VtxTrueNCbackPM);
1067 flistNoCutsBack->Add(hMCd0D0NCbackPM);
1068 flistNoCutsBack->Add(hd0D0NCbackSB);
1069 flistNoCutsBack->Add(hd0D0VtxTrueNCbackSB);
1070 flistNoCutsBack->Add(hMCd0D0NCbackSB);
1072 TH1F *hd0D0ptNCbackPM;
1073 TH1F *hMCd0D0ptNCbackPM;
1074 TH1F *hd0D0VtxTrueptNCbackPM;
1075 TH1F *hd0D0ptNCbackSB;
1076 TH1F *hMCd0D0ptNCbackSB;
1077 TH1F *hd0D0VtxTrueptNCbackSB;
1078 namehist="hd0D0ptNCback_";
1079 titlehist="D^{0} impact par. plot, No Cuts, Background, ";
1080 for(Int_t i=0;i<fnbins;i++){
1082 strnamept.Append("PkMss_pt");
1085 strtitlept=titlehist;
1086 strtitlept.Append(" Mass Peak, ");
1087 strtitlept+=fptbins[i];
1088 strtitlept.Append("<= pt <");
1089 strtitlept+=fptbins[i+1];
1090 strtitlept.Append(" [GeV/c]");
1092 hd0D0ptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1093 hd0D0ptNCbackPM->SetXTitle("Impact parameter [#mum] ");
1094 hd0D0ptNCbackPM->SetYTitle("Entries");
1095 flistNoCutsBack->Add(hd0D0ptNCbackPM);
1097 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1098 hMCd0D0ptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1099 hMCd0D0ptNCbackPM->SetXTitle("MC Impact parameter [#mum] ");
1100 hMCd0D0ptNCbackPM->SetYTitle("Entries");
1101 flistNoCutsBack->Add(hMCd0D0ptNCbackPM);
1104 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1105 hd0D0VtxTrueptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1106 hd0D0VtxTrueptNCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1107 hd0D0VtxTrueptNCbackPM->SetYTitle("Entries");
1108 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackPM);
1111 strnamept.Append("SBMss_pt");
1114 strtitlept=titlehist;
1115 strtitlept.Append(" Side Bands, ");
1116 strtitlept+=fptbins[i];
1117 strtitlept.Append("<= pt <");
1118 strtitlept+=fptbins[i+1];
1119 strtitlept.Append(" [GeV/c]");
1121 hd0D0ptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1122 hd0D0ptNCbackSB->SetXTitle("Impact parameter [#mum] ");
1123 hd0D0ptNCbackSB->SetYTitle("Entries");
1124 flistNoCutsBack->Add(hd0D0ptNCbackSB);
1126 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1127 hMCd0D0ptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1128 hMCd0D0ptNCbackSB->SetXTitle("MC Impact parameter [#mum] ");
1129 hMCd0D0ptNCbackSB->SetYTitle("Entries");
1130 flistNoCutsBack->Add(hMCd0D0ptNCbackSB);
1132 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1133 hd0D0VtxTrueptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1134 hd0D0VtxTrueptNCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1135 hd0D0VtxTrueptNCbackSB->SetYTitle("Entries");
1136 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackSB);
1141 //############ NO CUTS FROMB HISTOGRAMS ###########
1143 //####### global properties histos
1145 TH2F *hCPtaVSd0d0NCfromB=new TH2F("hCPtaVSd0d0NCfromB","hCPtaVSd0d0_NoCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
1146 TH1F *hSecVtxZNCfromB=new TH1F("hSecVtxZNCfromB","hSecVtxZ_NoCuts_FromB",1000,-8.,8.);
1147 TH1F *hSecVtxXNCfromB=new TH1F("hSecVtxXNCfromB","hSecVtxX_NoCuts_FromB",1000,-3000.,3000.);
1148 TH1F *hSecVtxYNCfromB=new TH1F("hSecVtxYNCfromB","hSecVtxY_NoCuts_FromB",1000,-3000.,3000.);
1149 TH2F *hSecVtxXYNCfromB=new TH2F("hSecVtxXYNCfromB","hSecVtxXY_NoCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
1150 TH1F *hSecVtxPhiNCfromB=new TH1F("hSecVtxPhiNCfromB","hSecVtxPhi_NoCuts_FromB",180,-180.1,180.1);
1151 TH1F *hd0singlTrackNCfromB=new TH1F("hd0singlTrackNCfromB","hd0singlTrackNoCuts_FromB",1000,-5000.,5000.);
1152 TH1F *hCPtaNCfromB=new TH1F("hCPtaNCfromB","hCPta_NoCuts_FromB",100,-1.,1.);
1153 TH1F *hd0xd0NCfromB=new TH1F("hd0xd0NCfromB","hd0xd0_NoCuts_FromB",1000,-100000.,100000.);
1154 TH1F *hMassTrueNCfromB=new TH1F("hMassTrueNCfromB","D^{0} MC inv. Mass No Cuts FromB(All momenta)",600,1.600,2.200);
1155 TH1F *hMassNCfromB=new TH1F("hMassNCfromB","D^{0} inv. Mass No Cuts FromB (All momenta)",600,1.600,2.200);
1156 hMassNCfromB->Sumw2();
1157 TH1F *hMassTrueNCfromBPM=new TH1F("hMassTrueNCfromBPM","D^{0} MC inv. Mass No Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
1158 TH1F *hMassNCfromBPM=new TH1F("hMassNCfromBPM","D^{0} inv. Mass No Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
1159 hMassNCfromB->Sumw2();
1160 TH1F *hMassTrueNCfromBSB=new TH1F("hMassTrueNCfromBSB","D^{0} MC inv. Mass in Side Bands No Cuts FromB(All momenta)",600,1.600,2.200);
1161 TH1F *hMassNCfromBSB=new TH1F("hMassNCfromBSB","D^{0} inv. Mass in Side Bands No Cuts FromB (All momenta)",600,1.600,2.200);
1162 hMassNCfromBSB->Sumw2();
1164 flistNoCutsFromB->Add(hCPtaVSd0d0NCfromB);
1165 flistNoCutsFromB->Add(hSecVtxZNCfromB);
1166 flistNoCutsFromB->Add(hSecVtxYNCfromB);
1167 flistNoCutsFromB->Add(hSecVtxXNCfromB);
1168 flistNoCutsFromB->Add(hSecVtxXYNCfromB);
1169 flistNoCutsFromB->Add(hSecVtxPhiNCfromB);
1170 flistNoCutsFromB->Add(hd0singlTrackNCfromB);
1171 flistNoCutsFromB->Add(hCPtaNCfromB);
1172 flistNoCutsFromB->Add(hd0xd0NCfromB);
1173 flistNoCutsFromB->Add(hMassTrueNCfromB);
1174 flistNoCutsFromB->Add(hMassNCfromB);
1175 flistNoCutsFromB->Add(hMassTrueNCfromBPM);
1176 flistNoCutsFromB->Add(hMassNCfromBPM);
1177 flistNoCutsFromB->Add(hMassTrueNCfromBSB);
1178 flistNoCutsFromB->Add(hMassNCfromBSB);
1184 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1185 TH1F *hdcaNCfromB=new TH1F("hdcaNCfromB","hdca_NoCuts_FromB",100,0.,1000.);
1186 hdcaNCfromB->SetXTitle("dca [#mum]");
1187 hdcaNCfromB->SetYTitle("Entries");
1188 TH1F *hcosthetastarNCfromB=new TH1F("hcosthetastarNCfromB","hCosThetaStar_NoCuts_FromB",50,-1.,1.);
1189 hcosthetastarNCfromB->SetXTitle("cos #theta^{*}");
1190 hcosthetastarNCfromB->SetYTitle("Entries");
1191 TH1F *hptD0NCfromB=new TH1F("hptD0NCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1192 hptD0NCfromB->SetXTitle("p_{t} [GeV/c]");
1193 hptD0NCfromB->SetYTitle("Entries");
1194 TH1F *hptD0VsMaxPtNCfromB=new TH1F("hptD0VsMaxPtNCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1195 TH2F *hptD0PTallsqrtNCfromB=new TH2F("hptD0PTallsqrtNCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1196 TH2F *hptD0PTallNCfromB=new TH2F("hptD0PTallNCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1197 TH2F *hptD0vsptBNCfromB=new TH2F("hptD0vsptBNCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1198 TH2F *hpD0vspBNCfromB=new TH2F("hpD0vspBNCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1199 TH2F *hptD0vsptcquarkNCfromB=new TH2F("hptD0vsptcquarkNCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1200 TH2F *hpD0vspcquarkNCfromB=new TH2F("hpD0vspcquarkNCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1201 flistNoCutsFromB->Add(hdcaNCfromB);
1202 flistNoCutsFromB->Add(hcosthetastarNCfromB);
1203 flistNoCutsFromB->Add(hptD0NCfromB);
1204 flistNoCutsFromB->Add(hptD0VsMaxPtNCfromB);
1205 flistNoCutsFromB->Add(hptD0PTallsqrtNCfromB);
1206 flistNoCutsFromB->Add(hptD0PTallNCfromB);
1207 flistNoCutsFromB->Add(hptD0vsptBNCfromB);
1208 flistNoCutsFromB->Add(hpD0vspBNCfromB);
1209 flistNoCutsFromB->Add(hptD0vsptcquarkNCfromB);
1210 flistNoCutsFromB->Add(hpD0vspcquarkNCfromB);
1212 TH1F *hd0zD0ptNCfromB;
1213 TH1F *hInvMassNCfromB;
1214 TH2F *hInvMassPtNCfromB=new TH2F("hInvMassPtNCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1216 TH1F *hCosPDPBNCfromB;
1217 TH1F *hCosPcPDNCfromB;
1219 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1220 TH2F *hd0D0VSd0xd0NCfromBpt;
1221 TH2F *hangletracksVSd0xd0NCfromBpt;
1222 TH2F *hangletracksVSd0D0NCfromBpt;
1223 TH1F *hd0xd0NCfromBpt;
1224 flistNoCutsFromB->Add(hInvMassPtNCfromB);
1226 TH2F *hTOFpidNCfromB=new TH2F("hTOFpidNCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1227 flistNoCutsFromB->Add(hTOFpidNCfromB);
1229 for(Int_t i=0;i<fnbins;i++){
1230 namehist="hd0zD0ptNCfromB_pt";
1232 titlehist="d0(z) No Cuts FromB ptbin=";
1234 hd0zD0ptNCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1235 hd0zD0ptNCfromB->SetXTitle("d_{0}(z) [#mum]");
1236 hd0zD0ptNCfromB->SetYTitle("Entries");
1237 flistNoCutsFromB->Add(hd0zD0ptNCfromB);
1239 namehist="hInvMassNCfromB_pt";
1241 titlehist="Invariant Mass No Cuts FromB ptbin=";
1243 hInvMassNCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1244 hInvMassNCfromB->SetXTitle("Invariant Mass [GeV]");
1245 hInvMassNCfromB->SetYTitle("Entries");
1246 flistNoCutsFromB->Add(hInvMassNCfromB);
1248 namehist="hetaNCfromB_pt";
1250 titlehist="eta No Cuts FromB ptbin=";
1252 hetaNCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1253 hetaNCfromB->SetXTitle("Pseudorapidity");
1254 hetaNCfromB->SetYTitle("Entries");
1255 flistNoCutsFromB->Add(hetaNCfromB);
1257 namehist="hCosPDPBNCfromB_pt";
1259 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1261 hCosPDPBNCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1262 hCosPDPBNCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
1263 hCosPDPBNCfromB->SetYTitle("Entries");
1264 flistNoCutsFromB->Add(hCosPDPBNCfromB);
1266 namehist="hCosPcPDNCfromB_pt";
1268 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1270 hCosPcPDNCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1271 hCosPcPDNCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
1272 hCosPcPDNCfromB->SetYTitle("Entries");
1273 flistNoCutsFromB->Add(hCosPcPDNCfromB);
1275 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1276 namehist="hd0xd0NCfromB_pt";
1278 titlehist="d0xd0 No Cuts FromB ptbin=";
1280 hd0xd0NCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1281 hd0xd0NCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1282 hd0xd0NCfromBpt->SetYTitle("Entries");
1283 flistNoCutsFromB->Add(hd0xd0NCfromBpt);
1286 namehist="hd0D0VSd0xd0NCfromB_pt";
1288 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromB ptbin=";
1290 hd0D0VSd0xd0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1291 hd0D0VSd0xd0NCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1292 hd0D0VSd0xd0NCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1293 flistNoCutsFromB->Add(hd0D0VSd0xd0NCfromBpt);
1296 namehist="hangletracksVSd0xd0NCfromB_pt";
1298 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromB ptbin=";
1300 hangletracksVSd0xd0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1301 hangletracksVSd0xd0NCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1302 hangletracksVSd0xd0NCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
1303 flistNoCutsFromB->Add(hangletracksVSd0xd0NCfromBpt);
1306 namehist="hangletracksVSd0D0NCfromB_pt";
1308 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts FromB ptbin=";
1310 hangletracksVSd0D0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1311 hangletracksVSd0D0NCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1312 hangletracksVSd0D0NCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
1313 flistNoCutsFromB->Add(hangletracksVSd0D0NCfromBpt);
1317 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1318 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1322 // ######### d0 D0 histos ##############
1323 TH1F *hd0D0NCfromBPM = new TH1F("hd0D0NCfromBPM","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1324 hd0D0NCfromBPM->SetXTitle("Impact parameter [#mum]");
1325 hd0D0NCfromBPM->SetYTitle("Entries");
1327 TH1F *hd0D0VtxTrueNCfromBPM = new TH1F("hd0D0VtxTrueNCfromBPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1328 hd0D0VtxTrueNCfromBPM->SetXTitle("Impact parameter [#mum]");
1329 hd0D0VtxTrueNCfromBPM->SetYTitle("Entries");
1331 TH1F *hMCd0D0NCfromBPM = new TH1F("hMCd0D0NCfromBPM","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1332 hMCd0D0NCfromBPM->SetXTitle("MC Impact parameter [#mum]");
1333 hMCd0D0NCfromBPM->SetYTitle("Entries");
1335 TH1F *hd0D0NCfromBSB = new TH1F("hd0D0NCfromBSB","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1336 hd0D0NCfromBSB->SetXTitle("Impact parameter [#mum]");
1337 hd0D0NCfromBSB->SetYTitle("Entries");
1339 TH1F *hd0D0VtxTrueNCfromBSB = new TH1F("hd0D0VtxTrueNCfromBSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1340 hd0D0VtxTrueNCfromBSB->SetXTitle("Impact parameter [#mum]");
1341 hd0D0VtxTrueNCfromBSB->SetYTitle("Entries");
1343 TH1F *hMCd0D0NCfromBSB = new TH1F("hMCd0D0NCfromBSB","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1344 hMCd0D0NCfromBSB->SetXTitle("MC Impact parameter [#mum]");
1345 hMCd0D0NCfromBSB->SetYTitle("Entries");
1347 flistNoCutsFromB->Add(hd0D0NCfromBPM);
1348 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBPM);
1349 flistNoCutsFromB->Add(hMCd0D0NCfromBPM);
1350 flistNoCutsFromB->Add(hd0D0NCfromBSB);
1351 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBSB);
1352 flistNoCutsFromB->Add(hMCd0D0NCfromBSB);
1354 TH1F *hd0D0ptNCfromBPM;
1355 TH1F *hMCd0D0ptNCfromBPM;
1356 TH1F *hd0D0VtxTrueptNCfromBPM;
1357 TH1F *hd0D0ptNCfromBSB;
1358 TH1F *hMCd0D0ptNCfromBSB;
1359 TH1F *hd0D0VtxTrueptNCfromBSB;
1360 namehist="hd0D0ptNCfromB_";
1361 titlehist="D^{0} impact par. plot, No Cuts, FromB, ";
1362 for(Int_t i=0;i<fnbins;i++){
1364 strnamept.Append("PkMss_pt");
1367 strtitlept=titlehist;
1368 strtitlept.Append(" Mass Peak, ");
1369 strtitlept+=fptbins[i];
1370 strtitlept.Append("<= pt <");
1371 strtitlept+=fptbins[i+1];
1372 strtitlept.Append(" [GeV/c]");
1374 hd0D0ptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1375 hd0D0ptNCfromBPM->SetXTitle("Impact parameter [#mum] ");
1376 hd0D0ptNCfromBPM->SetYTitle("Entries");
1377 flistNoCutsFromB->Add(hd0D0ptNCfromBPM);
1379 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1380 hMCd0D0ptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1381 hMCd0D0ptNCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
1382 hMCd0D0ptNCfromBPM->SetYTitle("Entries");
1383 flistNoCutsFromB->Add(hMCd0D0ptNCfromBPM);
1386 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1387 hd0D0VtxTrueptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1388 hd0D0VtxTrueptNCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1389 hd0D0VtxTrueptNCfromBPM->SetYTitle("Entries");
1390 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBPM);
1393 strnamept.Append("SBMss_pt");
1396 strtitlept=titlehist;
1397 strtitlept.Append(" Side Bands, ");
1398 strtitlept+=fptbins[i];
1399 strtitlept.Append("<= pt <");
1400 strtitlept+=fptbins[i+1];
1401 strtitlept.Append(" [GeV/c]");
1403 hd0D0ptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1404 hd0D0ptNCfromBSB->SetXTitle("Impact parameter [#mum] ");
1405 hd0D0ptNCfromBSB->SetYTitle("Entries");
1406 flistNoCutsFromB->Add(hd0D0ptNCfromBSB);
1408 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1409 hMCd0D0ptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1410 hMCd0D0ptNCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
1411 hMCd0D0ptNCfromBSB->SetYTitle("Entries");
1412 flistNoCutsFromB->Add(hMCd0D0ptNCfromBSB);
1414 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1415 hd0D0VtxTrueptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1416 hd0D0VtxTrueptNCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1417 hd0D0VtxTrueptNCfromBSB->SetYTitle("Entries");
1418 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBSB);
1423 //############ NO CUTS FROM DSTAR HISTOGRAMS ###########
1425 //############# global properties histos #######
1427 TH2F *hCPtaVSd0d0NCfromDstar=new TH2F("hCPtaVSd0d0NCfromDstar","hCPtaVSd0d0_NoCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
1428 TH1F *hSecVtxZNCfromDstar=new TH1F("hSecVtxZNCfromDstar","hSecVtxZ_NoCuts_FromDStar",1000,-8.,8.);
1429 TH1F *hSecVtxXNCfromDstar=new TH1F("hSecVtxXNCfromDstar","hSecVtxX_NoCuts_FromDStar",1000,-3000.,3000.);
1430 TH1F *hSecVtxYNCfromDstar=new TH1F("hSecVtxYNCfromDstar","hSecVtxY_NoCuts_FromDStar",1000,-3000.,3000.);
1431 TH2F *hSecVtxXYNCfromDstar=new TH2F("hSecVtxXYNCfromDstar","hSecVtxXY_NoCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
1432 TH1F *hSecVtxPhiNCfromDstar=new TH1F("hSecVtxPhiNCfromDstar","hSecVtxPhi_NoCuts_FromDStar",180,-180.1,180.1);
1433 TH1F *hd0singlTrackNCfromDstar=new TH1F("hd0singlTrackNCfromDstar","hd0singlTrackNoCuts_fromDstar",1000,-5000.,5000.);
1434 TH1F *hCPtaNCfromDstar=new TH1F("hCPtaNCfromDstar","hCPta_NoCuts_FromDStar",100,-1.,1.);
1435 TH1F *hd0xd0NCfromDstar=new TH1F("hd0xd0NCfromDstar","hd0xd0_NoCuts_FromDStar",1000,-100000.,100000.);
1436 TH1F *hMassTrueNCfromDstar=new TH1F("hMassTrueNCfromDstar","D^{0} MC inv. Mass No Cuts FromDStar(All momenta)",600,1.600,2.200);
1437 TH1F *hMassNCfromDstar=new TH1F("hMassNCfromDstar","D^{0} inv. Mass No Cuts FromDStar (All momenta)",600,1.600,2.200);
1438 hMassNCfromDstar->Sumw2();
1439 TH1F *hMassTrueNCfromDstarPM=new TH1F("hMassTrueNCfromDstarPM","D^{0} MC inv. Mass No Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
1440 TH1F *hMassNCfromDstarPM=new TH1F("hMassNCfromDstarPM","D^{0} inv. Mass No Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
1441 hMassNCfromDstarPM->Sumw2();
1442 TH1F *hMassTrueNCfromDstarSB=new TH1F("hMassTrueNCfromDstarSB","D^{0} MC inv. Mass in Side Bands No Cuts FromDStar(All momenta)",600,1.600,2.200);
1443 TH1F *hMassNCfromDstarSB=new TH1F("hMassNCfromDstarSB","D^{0} inv. Mass in Side Bands No Cuts FromDStar (All momenta)",600,1.600,2.200);
1444 hMassNCfromDstarSB->Sumw2();
1446 flistNoCutsFromDstar->Add(hCPtaVSd0d0NCfromDstar);
1447 flistNoCutsFromDstar->Add(hSecVtxZNCfromDstar);
1448 flistNoCutsFromDstar->Add(hSecVtxYNCfromDstar);
1449 flistNoCutsFromDstar->Add(hSecVtxXNCfromDstar);
1450 flistNoCutsFromDstar->Add(hSecVtxXYNCfromDstar);
1451 flistNoCutsFromDstar->Add(hSecVtxPhiNCfromDstar);
1452 flistNoCutsFromDstar->Add(hd0singlTrackNCfromDstar);
1453 flistNoCutsFromDstar->Add(hCPtaNCfromDstar);
1454 flistNoCutsFromDstar->Add(hd0xd0NCfromDstar);
1455 flistNoCutsFromDstar->Add(hMassTrueNCfromDstar);
1456 flistNoCutsFromDstar->Add(hMassNCfromDstar);
1457 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarPM);
1458 flistNoCutsFromDstar->Add(hMassNCfromDstarPM);
1459 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarSB);
1460 flistNoCutsFromDstar->Add(hMassNCfromDstarSB);
1465 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1466 TH1F *hdcaNCfromDstar=new TH1F("hdcaNCfromDstar","hdca_NoCuts_FromDstar",100,0.,1000.);
1467 hdcaNCfromDstar->SetXTitle("dca [#mum]");
1468 hdcaNCfromDstar->SetYTitle("Entries");
1469 TH1F *hcosthetastarNCfromDstar=new TH1F("hcosthetastarNCfromDstar","hCosThetaStar_NoCuts_FromDstar",50,-1.,1.);
1470 hcosthetastarNCfromDstar->SetXTitle("cos #theta^{*}");
1471 hcosthetastarNCfromDstar->SetYTitle("Entries");
1472 TH1F *hptD0NCfromDstar=new TH1F("hptD0NCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1473 hptD0NCfromDstar->SetXTitle("p_{t} [GeV/c]");
1474 hptD0NCfromDstar->SetYTitle("Entries");
1475 TH1F *hptD0VsMaxPtNCfromDstar=new TH1F("hptD0VsMaxPtNCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1476 TH2F *hptD0PTallsqrtNCfromDstar=new TH2F("hptD0PTallsqrtNCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1477 TH2F *hptD0PTallNCfromDstar=new TH2F("hptD0PTallNCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1478 TH2F *hptD0vsptBNCfromDstar=new TH2F("hptD0vsptBNCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1479 TH2F *hpD0vspBNCfromDstar=new TH2F("hpD0vspBNCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1480 TH2F *hptD0vsptcquarkNCfromDstar=new TH2F("hptD0vsptcquarkNCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1481 TH2F *hpD0vspcquarkNCfromDstar=new TH2F("hpD0vspcquarkNCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1482 flistNoCutsFromDstar->Add(hdcaNCfromDstar);
1483 flistNoCutsFromDstar->Add(hcosthetastarNCfromDstar);
1484 flistNoCutsFromDstar->Add(hptD0NCfromDstar);
1485 flistNoCutsFromDstar->Add(hptD0VsMaxPtNCfromDstar);
1486 flistNoCutsFromDstar->Add(hptD0PTallsqrtNCfromDstar);
1487 flistNoCutsFromDstar->Add(hptD0PTallNCfromDstar);
1488 flistNoCutsFromDstar->Add(hptD0vsptBNCfromDstar);
1489 flistNoCutsFromDstar->Add(hpD0vspBNCfromDstar);
1490 flistNoCutsFromDstar->Add(hptD0vsptcquarkNCfromDstar);
1491 flistNoCutsFromDstar->Add(hpD0vspcquarkNCfromDstar);
1493 TH1F *hd0zD0ptNCfromDstar;
1494 TH1F *hInvMassNCfromDstar;
1495 TH2F *hInvMassPtNCfromDstar=new TH2F("hInvMassPtNCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1496 TH1F *hetaNCfromDstar;
1497 TH1F *hCosPDPBNCfromDstar;
1498 TH1F *hCosPcPDNCfromDstar;
1499 flistNoCutsFromDstar->Add(hInvMassPtNCfromDstar);
1500 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1501 TH2F *hd0D0VSd0xd0NCfromDstarpt;
1502 TH2F *hangletracksVSd0xd0NCfromDstarpt;
1503 TH2F *hangletracksVSd0D0NCfromDstarpt;
1504 TH1F *hd0xd0NCfromDstarpt;
1506 TH2F *hTOFpidNCfromDstar=new TH2F("hTOFpidNCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1507 flistNoCutsFromDstar->Add(hTOFpidNCfromDstar);
1509 for(Int_t i=0;i<fnbins;i++){
1510 namehist="hd0zD0ptNCfromDstar_pt";
1512 titlehist="d0(z) No Cuts FromDstarm ptbin=";
1514 hd0zD0ptNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1515 hd0zD0ptNCfromDstar->SetXTitle("d_{0}(z) [#mum]");
1516 hd0zD0ptNCfromDstar->SetYTitle("Entries");
1517 flistNoCutsFromDstar->Add(hd0zD0ptNCfromDstar);
1519 namehist="hInvMassNCfromDstar_pt";
1521 titlehist="Invariant Mass No Cuts FromDstar ptbin=";
1523 hInvMassNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1524 hInvMassNCfromDstar->SetXTitle("Invariant Mass [GeV]");
1525 hInvMassNCfromDstar->SetYTitle("Entries");
1526 flistNoCutsFromDstar->Add(hInvMassNCfromDstar);
1528 namehist="hetaNCfromDstar_pt";
1530 titlehist="eta No Cuts FromDstar ptbin=";
1532 hetaNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1533 hetaNCfromDstar->SetXTitle("Pseudorapidity");
1534 hetaNCfromDstar->SetYTitle("Entries");
1535 flistNoCutsFromDstar->Add(hetaNCfromDstar);
1537 namehist="hCosPDPBNCfromDstar_pt";
1539 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1541 hCosPDPBNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1542 hCosPDPBNCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
1543 hCosPDPBNCfromDstar->SetYTitle("Entries");
1544 flistNoCutsFromDstar->Add(hCosPDPBNCfromDstar);
1546 namehist="hCosPcPDNCfromDstar_pt";
1548 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1550 hCosPcPDNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1551 hCosPcPDNCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
1552 hCosPcPDNCfromDstar->SetYTitle("Entries");
1553 flistNoCutsFromDstar->Add(hCosPcPDNCfromDstar);
1555 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1556 namehist="hd0xd0NCfromDstar_pt";
1558 titlehist="d0xd0 No Cuts FromDstar ptbin=";
1560 hd0xd0NCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1561 hd0xd0NCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1562 hd0xd0NCfromDstarpt->SetYTitle("Entries");
1563 flistNoCutsFromDstar->Add(hd0xd0NCfromDstarpt);
1566 namehist="hd0D0VSd0xd0NCfromDstar_pt";
1568 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromDstar ptbin=";
1570 hd0D0VSd0xd0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1571 hd0D0VSd0xd0NCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1572 hd0D0VSd0xd0NCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1573 flistNoCutsFromDstar->Add(hd0D0VSd0xd0NCfromDstarpt);
1576 namehist="hangletracksVSd0xd0NCfromDstar_pt";
1578 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromDstar ptbin=";
1580 hangletracksVSd0xd0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1581 hangletracksVSd0xd0NCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1582 hangletracksVSd0xd0NCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
1583 flistNoCutsFromDstar->Add(hangletracksVSd0xd0NCfromDstarpt);
1586 namehist="hangletracksVSd0D0NCfromDstar_pt";
1588 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts FromDstar ptbin=";
1590 hangletracksVSd0D0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1591 hangletracksVSd0D0NCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1592 hangletracksVSd0D0NCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
1593 flistNoCutsFromDstar->Add(hangletracksVSd0D0NCfromDstarpt);
1596 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1597 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1600 //########## d0 D0 histos #############
1601 TH1F *hd0D0NCfromDstPM = new TH1F("hd0D0NCfromDstarPM","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1602 hd0D0NCfromDstPM->SetXTitle("Impact parameter [#mum]");
1603 hd0D0NCfromDstPM->SetYTitle("Entries");
1605 TH1F *hd0D0VtxTrueNCfromDstPM = new TH1F("hd0D0VtxTrueNCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1606 hd0D0VtxTrueNCfromDstPM->SetXTitle("Impact parameter [#mum]");
1607 hd0D0VtxTrueNCfromDstPM->SetYTitle("Entries");
1609 TH1F *hMCd0D0NCfromDstPM = new TH1F("hMCd0D0NCfromDstarPM","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1610 hMCd0D0NCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
1611 hMCd0D0NCfromDstPM->SetYTitle("Entries");
1613 TH1F *hd0D0NCfromDstSB = new TH1F("hd0D0NCfromDstarSB","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1614 hd0D0NCfromDstSB->SetXTitle("Impact parameter [#mum]");
1615 hd0D0NCfromDstSB->SetYTitle("Entries");
1617 TH1F *hd0D0VtxTrueNCfromDstSB = new TH1F("hd0D0VtxTrueNCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1618 hd0D0VtxTrueNCfromDstSB->SetXTitle("Impact parameter [#mum]");
1619 hd0D0VtxTrueNCfromDstSB->SetYTitle("Entries");
1621 TH1F *hMCd0D0NCfromDstSB = new TH1F("hMCd0D0NCfromDstarSB","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1622 hMCd0D0NCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
1623 hMCd0D0NCfromDstSB->SetYTitle("Entries");
1625 flistNoCutsFromDstar->Add(hd0D0NCfromDstPM);
1626 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstPM);
1627 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstPM);
1628 flistNoCutsFromDstar->Add(hd0D0NCfromDstSB);
1629 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstSB);
1630 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstSB);
1632 TH1F *hd0D0ptNCfromDstPM;
1633 TH1F *hMCd0D0ptNCfromDstPM;
1634 TH1F *hd0D0VtxTrueptNCfromDstPM;
1635 TH1F *hd0D0ptNCfromDstSB;
1636 TH1F *hMCd0D0ptNCfromDstSB;
1637 TH1F *hd0D0VtxTrueptNCfromDstSB;
1638 namehist="hd0D0ptNCfromDstar_";
1639 titlehist="D^{0} impact par. plot, No Cuts, FromDStar, ";
1640 for(Int_t i=0;i<fnbins;i++){
1642 strnamept.Append("PkMss_pt");
1645 strtitlept=titlehist;
1646 strtitlept.Append(" Mass Peak, ");
1647 strtitlept+=fptbins[i];
1648 strtitlept.Append("<= pt <");
1649 strtitlept+=fptbins[i+1];
1650 strtitlept.Append(" [GeV/c]");
1652 hd0D0ptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1653 hd0D0ptNCfromDstPM->SetXTitle("Impact parameter [#mum] ");
1654 hd0D0ptNCfromDstPM->SetYTitle("Entries");
1655 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstPM);
1657 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1658 hMCd0D0ptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1659 hMCd0D0ptNCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
1660 hMCd0D0ptNCfromDstPM->SetYTitle("Entries");
1661 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstPM);
1664 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1665 hd0D0VtxTrueptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1666 hd0D0VtxTrueptNCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1667 hd0D0VtxTrueptNCfromDstPM->SetYTitle("Entries");
1668 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstPM);
1671 strnamept.Append("SBMss_pt");
1674 strtitlept=titlehist;
1675 strtitlept.Append(" Side Bands, ");
1676 strtitlept+=fptbins[i];
1677 strtitlept.Append("<= pt <");
1678 strtitlept+=fptbins[i+1];
1679 strtitlept.Append(" [GeV/c]");
1681 hd0D0ptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1682 hd0D0ptNCfromDstSB->SetXTitle("Impact parameter [#mum] ");
1683 hd0D0ptNCfromDstSB->SetYTitle("Entries");
1684 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstSB);
1686 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1687 hMCd0D0ptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1688 hMCd0D0ptNCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
1689 hMCd0D0ptNCfromDstSB->SetYTitle("Entries");
1690 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstSB);
1692 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1693 hd0D0VtxTrueptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1694 hd0D0VtxTrueptNCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1695 hd0D0VtxTrueptNCfromDstSB->SetYTitle("Entries");
1696 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstSB);
1700 //############ NO CUTS OTHER HISTOGRAMS ###########
1702 //########### global properties histos ###########
1704 TH2F *hCPtaVSd0d0NCother=new TH2F("hCPtaVSd0d0NCother","hCPtaVSd0d0_NoCuts_other",1000,-100000.,100000.,100,-1.,1.);
1705 TH1F *hSecVtxZNCother=new TH1F("hSecVtxZNCother","hSecVtxZ_NoCuts_other",1000,-8.,8.);
1706 TH1F *hSecVtxXNCother=new TH1F("hSecVtxXNCother","hSecVtxX_NoCuts_other",1000,-3000.,3000.);
1707 TH1F *hSecVtxYNCother=new TH1F("hSecVtxYNCother","hSecVtxY_NoCuts_other",1000,-3000.,3000.);
1708 TH2F *hSecVtxXYNCother=new TH2F("hSecVtxXYNCother","hSecVtxXY_NoCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
1709 TH1F *hSecVtxPhiNCother=new TH1F("hSecVtxPhiNCother","hSecVtxPhi_NoCuts_other",180,-180.1,180.1);
1710 TH1F *hd0singlTrackNCother=new TH1F("hd0singlTrackNCother","hd0singlTrackNoCuts_Other",1000,-5000.,5000.);
1711 TH1F *hCPtaNCother=new TH1F("hCPtaNCother","hCPta_NoCuts_other",100,-1.,1.);
1712 TH1F *hd0xd0NCother=new TH1F("hd0xd0NCother","hd0xd0_NoCuts_other",1000,-100000.,100000.);
1713 TH1F *hMassTrueNCother=new TH1F("hMassTrueNCother","D^{0} MC inv. Mass No Cuts other(All momenta)",600,1.600,2.200);
1714 TH1F *hMassNCother=new TH1F("hMassNCother","D^{0} inv. Mass No Cuts other (All momenta)",600,1.600,2.200);
1715 hMassNCother->Sumw2();
1716 TH1F *hMassTrueNCotherPM=new TH1F("hMassTrueNCotherPM","D^{0} MC inv. Mass No Cuts Other, Mass Peak. (All momenta)",600,1.600,2.200);
1717 TH1F *hMassNCotherPM=new TH1F("hMassNCotherPM","D^{0} inv. Mass No Cuts Other (All momenta), MassPeak",600,1.600,2.200);
1718 hMassNCotherPM->Sumw2();
1719 TH1F *hMassTrueNCotherSB=new TH1F("hMassTrueNCotherSB","D^{0} MC inv. Mass in Side Bands No Cuts other(All momenta)",600,1.600,2.200);
1720 TH1F *hMassNCotherSB=new TH1F("hMassNCotherSB","D^{0} inv. Mass in Side Bands No Cuts other (All momenta)",600,1.600,2.200);
1721 hMassNCotherSB->Sumw2();
1723 flistNoCutsOther->Add(hCPtaVSd0d0NCother);
1724 flistNoCutsOther->Add(hSecVtxZNCother);
1725 flistNoCutsOther->Add(hSecVtxYNCother);
1726 flistNoCutsOther->Add(hSecVtxXNCother);
1727 flistNoCutsOther->Add(hSecVtxXYNCother);
1728 flistNoCutsOther->Add(hSecVtxPhiNCother);
1729 flistNoCutsOther->Add(hd0singlTrackNCother);
1730 flistNoCutsOther->Add(hCPtaNCother);
1731 flistNoCutsOther->Add(hd0xd0NCother);
1732 flistNoCutsOther->Add(hMassTrueNCother);
1733 flistNoCutsOther->Add(hMassNCother);
1734 flistNoCutsOther->Add(hMassTrueNCotherPM);
1735 flistNoCutsOther->Add(hMassNCotherPM);
1736 flistNoCutsOther->Add(hMassTrueNCotherSB);
1737 flistNoCutsOther->Add(hMassNCotherSB);
1741 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1742 TH1F *hdcaNCother=new TH1F("hdcaNCother","hdca_NoCuts_Other",100,0.,1000.);
1743 hdcaNCother->SetXTitle("dca [#mum]");
1744 hdcaNCother->SetYTitle("Entries");
1745 TH1F *hcosthetastarNCother=new TH1F("hcosthetastarNCother","hCosThetaStar_NoCuts_Other",50,-1.,1.);
1746 hcosthetastarNCother->SetXTitle("cos #theta^{*}");
1747 hcosthetastarNCother->SetYTitle("Entries");
1748 TH1F *hptD0NCother=new TH1F("hptD0NCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1749 hptD0NCother->SetXTitle("p_{t} [GeV/c]");
1750 hptD0NCother->SetYTitle("Entries");
1751 TH1F *hptD0VsMaxPtNCother=new TH1F("hptD0VsMaxPtNCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1752 TH2F *hptD0PTallsqrtNCother=new TH2F("hptD0PTallsqrtNCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1753 TH2F *hptD0PTallNCother=new TH2F("hptD0PTallNCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1754 TH2F *hptD0vsptBNCother=new TH2F("hptD0vsptBNCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1755 TH2F *hpD0vspBNCother=new TH2F("hpD0vspBNCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1756 TH2F *hptD0vsptcquarkNCother=new TH2F("hptD0vsptcquarkNCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1757 TH2F *hpD0vspcquarkNCother=new TH2F("hpD0vspcquarkNCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1758 flistNoCutsOther->Add(hdcaNCother);
1759 flistNoCutsOther->Add(hcosthetastarNCother);
1760 flistNoCutsOther->Add(hptD0NCother);
1761 flistNoCutsOther->Add(hptD0VsMaxPtNCother);
1762 flistNoCutsOther->Add(hptD0PTallsqrtNCother);
1763 flistNoCutsOther->Add(hptD0PTallNCother);
1764 flistNoCutsOther->Add(hptD0vsptBNCother);
1765 flistNoCutsOther->Add(hpD0vspBNCother);
1766 flistNoCutsOther->Add(hptD0vsptcquarkNCother);
1767 flistNoCutsOther->Add(hpD0vspcquarkNCother);
1769 TH1F *hd0zD0ptNCother;
1770 TH1F *hInvMassNCother;
1771 TH2F *hInvMassPtNCother=new TH2F("hInvMassPtNCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
1773 TH1F *hCosPDPBNCother;
1774 TH1F *hCosPcPDNCother;
1775 flistNoCutsOther->Add(hInvMassPtNCother);
1776 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1777 TH2F *hd0D0VSd0xd0NCotherpt;
1778 TH2F *hangletracksVSd0xd0NCotherpt;
1779 TH2F *hangletracksVSd0D0NCotherpt;
1780 TH1F *hd0xd0NCotherpt;
1782 TH2F *hTOFpidNCother=new TH2F("hTOFpidNCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1783 flistNoCutsOther->Add(hTOFpidNCother);
1785 for(Int_t i=0;i<fnbins;i++){
1786 namehist="hd0zD0ptNCother_pt";
1788 titlehist="d0(z) No Cuts Otherm ptbin=";
1790 hd0zD0ptNCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1791 hd0zD0ptNCother->SetXTitle("d_{0}(z) [#mum]");
1792 hd0zD0ptNCother->SetYTitle("Entries");
1793 flistNoCutsOther->Add(hd0zD0ptNCother);
1795 namehist="hInvMassNCother_pt";
1797 titlehist="Invariant Mass No Cuts Other ptbin=";
1799 hInvMassNCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1800 hInvMassNCother->SetXTitle("Invariant Mass [GeV]");
1801 hInvMassNCother->SetYTitle("Entries");
1802 flistNoCutsOther->Add(hInvMassNCother);
1804 namehist="hetaNCother_pt";
1806 titlehist="eta No Cuts Other ptbin=";
1808 hetaNCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1809 hetaNCother->SetXTitle("Pseudorapidity");
1810 hetaNCother->SetYTitle("Entries");
1811 flistNoCutsOther->Add(hetaNCother);
1813 namehist="hCosPDPBNCother_pt";
1815 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1817 hCosPDPBNCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1818 hCosPDPBNCother->SetXTitle("Cosine between D0 momentum and B momentum");
1819 hCosPDPBNCother->SetYTitle("Entries");
1820 flistNoCutsOther->Add(hCosPDPBNCother);
1822 namehist="hCosPcPDNCother_pt";
1824 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1826 hCosPcPDNCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1827 hCosPcPDNCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
1828 hCosPcPDNCother->SetYTitle("Entries");
1829 flistNoCutsOther->Add(hCosPcPDNCother);
1832 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1833 namehist="hd0xd0NCother_pt";
1835 titlehist="d0xd0 No Cuts Other ptbin=";
1837 hd0xd0NCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1838 hd0xd0NCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1839 hd0xd0NCotherpt->SetYTitle("Entries");
1840 flistNoCutsOther->Add(hd0xd0NCotherpt);
1843 namehist="hd0D0VSd0xd0NCother_pt";
1845 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Other ptbin=";
1847 hd0D0VSd0xd0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1848 hd0D0VSd0xd0NCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1849 hd0D0VSd0xd0NCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1850 flistNoCutsOther->Add(hd0D0VSd0xd0NCotherpt);
1853 namehist="hangletracksVSd0xd0NCother_pt";
1855 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Other ptbin=";
1857 hangletracksVSd0xd0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1858 hangletracksVSd0xd0NCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1859 hangletracksVSd0xd0NCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
1860 flistNoCutsOther->Add(hangletracksVSd0xd0NCotherpt);
1863 namehist="hangletracksVSd0D0NCother_pt";
1865 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Other ptbin=";
1867 hangletracksVSd0D0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1868 hangletracksVSd0D0NCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1869 hangletracksVSd0D0NCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
1870 flistNoCutsOther->Add(hangletracksVSd0D0NCotherpt);
1873 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1874 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1879 //############# d0 D0 histos ###############Ã
1880 TH1F *hd0D0NCotherPM = new TH1F("hd0D0NCotherPM","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1881 hd0D0NCotherPM->SetXTitle("Impact parameter [#mum]");
1882 hd0D0NCotherPM->SetYTitle("Entries");
1884 TH1F *hd0D0VtxTrueNCotherPM = new TH1F("hd0D0VtxTrueNCotherPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1885 hd0D0VtxTrueNCotherPM->SetXTitle("Impact parameter [#mum]");
1886 hd0D0VtxTrueNCotherPM->SetYTitle("Entries");
1888 TH1F *hMCd0D0NCotherPM = new TH1F("hMCd0D0NCotherPM","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1889 hMCd0D0NCotherPM->SetXTitle("MC Impact parameter [#mum]");
1890 hMCd0D0NCotherPM->SetYTitle("Entries");
1892 TH1F *hd0D0NCotherSB = new TH1F("hd0D0NCotherSB","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1893 hd0D0NCotherSB->SetXTitle("Impact parameter [#mum]");
1894 hd0D0NCotherSB->SetYTitle("Entries");
1896 TH1F *hd0D0VtxTrueNCotherSB = new TH1F("hd0D0VtxTrueNCotherSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1897 hd0D0VtxTrueNCotherSB->SetXTitle("Impact parameter [#mum]");
1898 hd0D0VtxTrueNCotherSB->SetYTitle("Entries");
1900 TH1F *hMCd0D0NCotherSB = new TH1F("hMCd0D0NCotherSB","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1901 hMCd0D0NCotherSB->SetXTitle("MC Impact parameter [#mum]");
1902 hMCd0D0NCotherSB->SetYTitle("Entries");
1904 flistNoCutsOther->Add(hd0D0NCotherPM);
1905 flistNoCutsOther->Add(hd0D0VtxTrueNCotherPM);
1906 flistNoCutsOther->Add(hMCd0D0NCotherPM);
1907 flistNoCutsOther->Add(hd0D0NCotherSB);
1908 flistNoCutsOther->Add(hd0D0VtxTrueNCotherSB);
1909 flistNoCutsOther->Add(hMCd0D0NCotherSB);
1911 TH1F *hd0D0ptNCotherPM;
1912 TH1F *hMCd0D0ptNCotherPM;
1913 TH1F *hd0D0VtxTrueptNCotherPM;
1914 TH1F *hd0D0ptNCotherSB;
1915 TH1F *hMCd0D0ptNCotherSB;
1916 TH1F *hd0D0VtxTrueptNCotherSB;
1917 namehist="hd0D0ptNCother_";
1918 titlehist="D^{0} impact par. plot, No Cuts, Other, ";
1919 for(Int_t i=0;i<fnbins;i++){
1921 strnamept.Append("PkMss_pt");
1924 strtitlept=titlehist;
1925 strtitlept.Append(" Mass Peak, ");
1926 strtitlept+=fptbins[i];
1927 strtitlept.Append("<= pt <");
1928 strtitlept+=fptbins[i+1];
1929 strtitlept.Append(" [GeV/c]");
1931 hd0D0ptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1932 hd0D0ptNCotherPM->SetXTitle("Impact parameter [#mum] ");
1933 hd0D0ptNCotherPM->SetYTitle("Entries");
1934 flistNoCutsOther->Add(hd0D0ptNCotherPM);
1936 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1937 hMCd0D0ptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1938 hMCd0D0ptNCotherPM->SetXTitle("MC Impact parameter [#mum] ");
1939 hMCd0D0ptNCotherPM->SetYTitle("Entries");
1940 flistNoCutsOther->Add(hMCd0D0ptNCotherPM);
1943 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1944 hd0D0VtxTrueptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1945 hd0D0VtxTrueptNCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1946 hd0D0VtxTrueptNCotherPM->SetYTitle("Entries");
1947 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherPM);
1950 strnamept.Append("SBMss_pt");
1953 strtitlept=titlehist;
1954 strtitlept.Append(" Side Bands, ");
1955 strtitlept+=fptbins[i];
1956 strtitlept.Append("<= pt <");
1957 strtitlept+=fptbins[i+1];
1958 strtitlept.Append(" [GeV/c]");
1960 hd0D0ptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1961 hd0D0ptNCotherSB->SetXTitle("Impact parameter [#mum] ");
1962 hd0D0ptNCotherSB->SetYTitle("Entries");
1963 flistNoCutsOther->Add(hd0D0ptNCotherSB);
1965 strnamept.ReplaceAll("hd0D0","hMCd0D0");
1966 hMCd0D0ptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1967 hMCd0D0ptNCotherSB->SetXTitle("MC Impact parameter [#mum] ");
1968 hMCd0D0ptNCotherSB->SetYTitle("Entries");
1969 flistNoCutsOther->Add(hMCd0D0ptNCotherSB);
1971 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
1972 hd0D0VtxTrueptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1973 hd0D0VtxTrueptNCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1974 hd0D0VtxTrueptNCotherSB->SetYTitle("Entries");
1975 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherSB);
1979 //################################################################################################
1981 // HISTOS FOR LOOSE CUTS #
1983 //################################################################################################
1985 //############ LOOSE CUTS SIGNAL HISTOGRAMS ###############
1987 // ####### global properties histo ############
1989 TH2F *hCPtaVSd0d0LSCsign=new TH2F("hCPtaVSd0d0LSCsign","hCPtaVSd0d0_LooseCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
1990 TH1F *hSecVtxZLSCsign=new TH1F("hSecVtxZLSCsign","hSecVtxZ_LooseCuts_Signal",1000,-8.,8.);
1991 TH1F *hSecVtxXLSCsign=new TH1F("hSecVtxXLSCsign","hSecVtxX_LooseCuts_Signal",1000,-3000.,3000.);
1992 TH1F *hSecVtxYLSCsign=new TH1F("hSecVtxYLSCsign","hSecVtxY_LooseCuts_Signal",1000,-3000.,3000.);
1993 TH2F *hSecVtxXYLSCsign=new TH2F("hSecVtxXYLSCsign","hSecVtxXY_LooseCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
1994 TH1F *hSecVtxPhiLSCsign=new TH1F("hSecVtxPhiLSCsign","hSecVtxPhi_LooseCuts_Signal",180,-180.1,180.1);
1995 TH1F *hd0singlTrackLSCsign=new TH1F("hd0singlTrackLSCsign","hd0singlTrackLooseCuts_Signal",1000,-5000.,5000.);
1996 TH1F *hCPtaLSCsign=new TH1F("hCPtaLSCsign","hCPta_LooseCuts_Signal",100,-1.,1.);
1997 TH1F *hd0xd0LSCsign=new TH1F("hd0xd0LSCsign","hd0xd0_LooseCuts_Signal",1000,-100000.,100000.);
1998 TH1F *hMassTrueLSCsign=new TH1F("hMassTrueLSCsign","D^{0} MC inv. Mass Loose Cuts Signal(All momenta)",600,1.600,2.200);
1999 TH1F *hMassLSCsign=new TH1F("hMassLSCsign","D^{0} inv. Mass Loose Cuts Signal (All momenta)",600,1.600,2.200);
2000 hMassLSCsign->Sumw2();
2001 TH1F *hMassTrueLSCsignPM=new TH1F("hMassTrueLSCsignPM","D^{0} MC inv. Mass Loose Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
2002 TH1F *hMassLSCsignPM=new TH1F("hMassLSCsignPM","D^{0} inv. Mass Loose Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
2003 hMassLSCsignPM->Sumw2();
2004 TH1F *hMassTrueLSCsignSB=new TH1F("hMassTrueLSCsignSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Signal(All momenta)",600,1.600,2.200);
2005 TH1F *hMassLSCsignSB=new TH1F("hMassLSCsignSB","D^{0} inv. Mass in Side Bands Loose Cuts Signal (All momenta)",600,1.600,2.200);
2006 hMassLSCsignSB->Sumw2();
2008 flistLsCutsSignal->Add(hCPtaVSd0d0LSCsign);
2009 flistLsCutsSignal->Add(hSecVtxZLSCsign);
2010 flistLsCutsSignal->Add(hSecVtxYLSCsign);
2011 flistLsCutsSignal->Add(hSecVtxXLSCsign);
2012 flistLsCutsSignal->Add(hSecVtxXYLSCsign);
2013 flistLsCutsSignal->Add(hSecVtxPhiLSCsign);
2014 flistLsCutsSignal->Add(hd0singlTrackLSCsign);
2015 flistLsCutsSignal->Add(hCPtaLSCsign);
2016 flistLsCutsSignal->Add(hd0xd0LSCsign);
2017 flistLsCutsSignal->Add(hMassTrueLSCsign);
2018 flistLsCutsSignal->Add(hMassLSCsign);
2019 flistLsCutsSignal->Add(hMassTrueLSCsignPM);
2020 flistLsCutsSignal->Add(hMassLSCsignPM);
2021 flistLsCutsSignal->Add(hMassTrueLSCsignSB);
2022 flistLsCutsSignal->Add(hMassLSCsignSB);
2025 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2026 TH1F *hdcaLSCsign=new TH1F("hdcaLSCsign","hdca_LooseCuts_Sign",100,0.,1000.);
2027 hdcaLSCsign->SetXTitle("dca [#mum]");
2028 hdcaLSCsign->SetYTitle("Entries");
2029 TH1F *hcosthetastarLSCsign=new TH1F("hcosthetastarLSCsign","hCosThetaStar_LooseCuts_Sign",50,-1.,1.);
2030 hcosthetastarLSCsign->SetXTitle("cos #theta^{*}");
2031 hcosthetastarLSCsign->SetYTitle("Entries");
2032 TH1F *hptD0LSCsign=new TH1F("hptD0LSCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2033 hptD0LSCsign->SetXTitle("p_{t} [GeV/c]");
2034 hptD0LSCsign->SetYTitle("Entries");
2035 TH1F *hptD0VsMaxPtLSCsign=new TH1F("hptD0VsMaxPtLSCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2036 TH2F *hptD0PTallsqrtLSCsign=new TH2F("hptD0PTallsqrtLSCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2037 TH2F *hptD0PTallLSCsign=new TH2F("hptD0PTallLSCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2038 TH2F *hptD0vsptBLSCsign=new TH2F("hptD0vsptBLSCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2039 TH2F *hpD0vspBLSCsign=new TH2F("hpD0vspBLSCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2040 TH2F *hptD0vsptcquarkLSCsign=new TH2F("hptD0vsptcquarkLSCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2041 TH2F *hpD0vspcquarkLSCsign=new TH2F("hpD0vspcquarkLSCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2042 flistLsCutsSignal->Add(hdcaLSCsign);
2043 flistLsCutsSignal->Add(hcosthetastarLSCsign);
2044 flistLsCutsSignal->Add(hptD0LSCsign);
2045 flistLsCutsSignal->Add(hptD0VsMaxPtLSCsign);
2046 flistLsCutsSignal->Add(hptD0PTallsqrtLSCsign);
2047 flistLsCutsSignal->Add(hptD0PTallLSCsign);
2048 flistLsCutsSignal->Add(hptD0vsptBLSCsign);
2049 flistLsCutsSignal->Add(hpD0vspBLSCsign);
2050 flistLsCutsSignal->Add(hptD0vsptcquarkLSCsign);
2051 flistLsCutsSignal->Add(hpD0vspcquarkLSCsign);
2053 TH1F *hd0zD0ptLSCsign;
2054 TH1F *hInvMassLSCsign;
2055 TH2F *hInvMassPtLSCsign=new TH2F("hInvMassPtLSCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2057 TH1F *hCosPDPBLSCsign;
2058 TH1F *hCosPcPDLSCsign;
2059 flistLsCutsSignal->Add(hInvMassPtLSCsign);
2061 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2062 TH2F *hd0D0VSd0xd0LSCsignpt;
2063 TH2F *hangletracksVSd0xd0LSCsignpt;
2064 TH2F *hangletracksVSd0D0LSCsignpt;
2065 TH1F *hd0xd0LSCsignpt;
2067 TH2F *hTOFpidLSCsign=new TH2F("hTOFpidLSCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2068 flistLsCutsSignal->Add(hTOFpidLSCsign);
2070 for(Int_t i=0;i<fnbins;i++){
2071 namehist="hd0zD0ptLSCsign_pt";
2073 titlehist="d0(z) Loose Cuts Signm ptbin=";
2075 hd0zD0ptLSCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2076 hd0zD0ptLSCsign->SetXTitle("d_{0}(z) [#mum]");
2077 hd0zD0ptLSCsign->SetYTitle("Entries");
2078 flistLsCutsSignal->Add(hd0zD0ptLSCsign);
2080 namehist="hInvMassLSCsign_pt";
2082 titlehist="Invariant Mass Loose Cuts Sign ptbin=";
2084 hInvMassLSCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2085 hInvMassLSCsign->SetXTitle("Invariant Mass [GeV]");
2086 hInvMassLSCsign->SetYTitle("Entries");
2087 flistLsCutsSignal->Add(hInvMassLSCsign);
2089 namehist="hetaLSCsign_pt";
2091 titlehist="eta Loose Cuts Sign ptbin=";
2093 hetaLSCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2094 hetaLSCsign->SetXTitle("Pseudorapidity");
2095 hetaLSCsign->SetYTitle("Entries");
2096 flistLsCutsSignal->Add(hetaLSCsign);
2098 namehist="hCosPDPBLSCsign_pt";
2100 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2102 hCosPDPBLSCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2103 hCosPDPBLSCsign->SetXTitle("Cosine between D0 momentum and B momentum");
2104 hCosPDPBLSCsign->SetYTitle("Entries");
2105 flistLsCutsSignal->Add(hCosPDPBLSCsign);
2107 namehist="hCosPcPDLSCsign_pt";
2109 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2111 hCosPcPDLSCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2112 hCosPcPDLSCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
2113 hCosPcPDLSCsign->SetYTitle("Entries");
2114 flistLsCutsSignal->Add(hCosPcPDLSCsign);
2117 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2118 namehist="hd0xd0LSCsign_pt";
2120 titlehist="d0xd0 Loose Cuts Sign ptbin=";
2122 hd0xd0LSCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2123 hd0xd0LSCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2124 hd0xd0LSCsignpt->SetYTitle("Entries");
2125 flistLsCutsSignal->Add(hd0xd0LSCsignpt);
2128 namehist="hd0D0VSd0xd0LSCsign_pt";
2130 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Sign ptbin=";
2132 hd0D0VSd0xd0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2133 hd0D0VSd0xd0LSCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2134 hd0D0VSd0xd0LSCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2135 flistLsCutsSignal->Add(hd0D0VSd0xd0LSCsignpt);
2138 namehist="hangletracksVSd0xd0LSCsign_pt";
2140 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Sign ptbin=";
2142 hangletracksVSd0xd0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2143 hangletracksVSd0xd0LSCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2144 hangletracksVSd0xd0LSCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
2145 flistLsCutsSignal->Add(hangletracksVSd0xd0LSCsignpt);
2148 namehist="hangletracksVSd0D0LSCsign_pt";
2150 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Sign ptbin=";
2152 hangletracksVSd0D0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2153 hangletracksVSd0D0LSCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2154 hangletracksVSd0D0LSCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
2155 flistLsCutsSignal->Add(hangletracksVSd0D0LSCsignpt);
2159 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2160 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2163 // ####### d0 D0 histos ############
2164 TH1F *hd0D0LSCsignPM = new TH1F("hd0D0LSCsignPM","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2165 hd0D0LSCsignPM->SetXTitle("Impact parameter [#mum]");
2166 hd0D0LSCsignPM->SetYTitle("Entries");
2168 TH1F *hd0D0VtxTrueLSCsignPM = new TH1F("hd0D0VtxTrueLSCsignPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2169 hd0D0VtxTrueLSCsignPM->SetXTitle("Impact parameter [#mum]");
2170 hd0D0VtxTrueLSCsignPM->SetYTitle("Entries");
2172 TH1F *hMCd0D0LSCsignPM = new TH1F("hMCd0D0LSCsignPM","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2173 hMCd0D0LSCsignPM->SetXTitle("MC Impact parameter [#mum]");
2174 hMCd0D0LSCsignPM->SetYTitle("Entries");
2176 TH1F *hd0D0LSCsignSB = new TH1F("hd0D0LSCsignSB","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2177 hd0D0LSCsignSB->SetXTitle("Impact parameter [#mum]");
2178 hd0D0LSCsignSB->SetYTitle("Entries");
2180 TH1F *hd0D0VtxTrueLSCsignSB = new TH1F("hd0D0VtxTrueLSCsignSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2181 hd0D0VtxTrueLSCsignSB->SetXTitle("Impact parameter [#mum]");
2182 hd0D0VtxTrueLSCsignSB->SetYTitle("Entries");
2184 TH1F *hMCd0D0LSCsignSB = new TH1F("hMCd0D0LSCsignSB","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2185 hMCd0D0LSCsignSB->SetXTitle("MC Impact parameter [#mum]");
2186 hMCd0D0LSCsignSB->SetYTitle("Entries");
2188 flistLsCutsSignal->Add(hd0D0LSCsignPM);
2189 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignPM);
2190 flistLsCutsSignal->Add(hMCd0D0LSCsignPM);
2191 flistLsCutsSignal->Add(hd0D0LSCsignSB);
2192 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignSB);
2193 flistLsCutsSignal->Add(hMCd0D0LSCsignSB);
2195 TH1F *hd0D0ptLSCsignPM;
2196 TH1F *hMCd0D0ptLSCsignPM;
2197 TH1F *hd0D0VtxTrueptLSCsignPM;
2198 TH1F *hd0D0ptLSCsignSB;
2199 TH1F *hMCd0D0ptLSCsignSB;
2200 TH1F *hd0D0VtxTrueptLSCsignSB;
2201 namehist="hd0D0ptLSCsign_";
2202 titlehist="D^{0} impact par. plot, Loose Cuts, Signal, ";
2203 for(Int_t i=0;i<fnbins;i++){
2205 strnamept.Append("PkMss_pt");
2208 strtitlept=titlehist;
2209 strtitlept.Append(" Mass Peak, ");
2210 strtitlept+=fptbins[i];
2211 strtitlept.Append("<= pt <");
2212 strtitlept+=fptbins[i+1];
2213 strtitlept.Append(" [GeV/c]");
2215 hd0D0ptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2216 hd0D0ptLSCsignPM->SetXTitle("Impact parameter [#mum] ");
2217 hd0D0ptLSCsignPM->SetYTitle("Entries");
2218 flistLsCutsSignal->Add(hd0D0ptLSCsignPM);
2220 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2221 hMCd0D0ptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2222 hMCd0D0ptLSCsignPM->SetXTitle("MC Impact parameter [#mum] ");
2223 hMCd0D0ptLSCsignPM->SetYTitle("Entries");
2224 flistLsCutsSignal->Add(hMCd0D0ptLSCsignPM);
2227 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2228 hd0D0VtxTrueptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2229 hd0D0VtxTrueptLSCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2230 hd0D0VtxTrueptLSCsignPM->SetYTitle("Entries");
2231 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignPM);
2234 strnamept.Append("SBMss_pt");
2237 strtitlept=titlehist;
2238 strtitlept.Append(" Side Bands, ");
2239 strtitlept+=fptbins[i];
2240 strtitlept.Append("<= pt <");
2241 strtitlept+=fptbins[i+1];
2242 strtitlept.Append(" [GeV/c]");
2244 hd0D0ptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2245 hd0D0ptLSCsignSB->SetXTitle("Impact parameter [#mum] ");
2246 hd0D0ptLSCsignSB->SetYTitle("Entries");
2247 flistLsCutsSignal->Add(hd0D0ptLSCsignSB);
2249 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2250 hMCd0D0ptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2251 hMCd0D0ptLSCsignSB->SetXTitle("MC Impact parameter [#mum] ");
2252 hMCd0D0ptLSCsignSB->SetYTitle("Entries");
2253 flistLsCutsSignal->Add(hMCd0D0ptLSCsignSB);
2255 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2256 hd0D0VtxTrueptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2257 hd0D0VtxTrueptLSCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2258 hd0D0VtxTrueptLSCsignSB->SetYTitle("Entries");
2259 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignSB);
2263 //############ LOOSE CUTS BACKGROUND HISTOGRAMS ###########
2265 // ######## global properties histos #######
2266 TH2F *hCPtaVSd0d0LSCback=new TH2F("hCPtaVSd0d0LSCback","hCPtaVSd0d0_LooseCuts_Background",1000,-100000.,100000.,100,-1.,1.);
2267 TH1F *hSecVtxZLSCback=new TH1F("hSecVtxZLSCback","hSecVtxZ_LooseCuts_Background",1000,-8.,8.);
2268 TH1F *hSecVtxXLSCback=new TH1F("hSecVtxXLSCback","hSecVtxX_LooseCuts_Background",1000,-3000.,3000.);
2269 TH1F *hSecVtxYLSCback=new TH1F("hSecVtxYLSCback","hSecVtxY_LooseCuts_Background",1000,-3000.,3000.);
2270 TH2F *hSecVtxXYLSCback=new TH2F("hSecVtxXYLSCback","hSecVtxXY_LooseCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
2271 TH1F *hSecVtxPhiLSCback=new TH1F("hSecVtxPhiLSCback","hSecVtxPhi_LooseCuts_Background",180,-180.1,180.1);
2272 TH1F *hd0singlTrackLSCback=new TH1F("hd0singlTrackLSCback","hd0singlTrackLooseCuts_Back",1000,-5000.,5000.);
2273 TH1F *hCPtaLSCback=new TH1F("hCPtaLSCback","hCPta_LooseCuts_Background",100,-1.,1.);
2274 TH1F *hd0xd0LSCback=new TH1F("hd0xd0LSCback","hd0xd0_LooseCuts_Background",1000,-100000.,100000.);
2275 TH1F *hMassTrueLSCback=new TH1F("hMassTrueLSCback","D^{0} MC inv. Mass Loose Cuts Background(All momenta)",600,1.600,2.200);
2276 TH1F *hMassLSCback=new TH1F("hMassLSCback","D^{0} inv. Mass Loose Cuts Background (All momenta)",600,1.600,2.200);
2277 hMassLSCback->Sumw2();
2278 TH1F *hMassTrueLSCbackPM=new TH1F("hMassTrueLSCbackPM","D^{0} MC inv. Mass Loose Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
2279 TH1F *hMassLSCbackPM=new TH1F("hMassLSCbackPM","D^{0} inv. Mass Loose Cuts Background (All momenta), MassPeak",600,1.600,2.200);
2280 hMassLSCbackPM->Sumw2();
2281 TH1F *hMassTrueLSCbackSB=new TH1F("hMassTrueLSCbackSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Background(All momenta)",600,1.600,2.200);
2282 TH1F *hMassLSCbackSB=new TH1F("hMassLSCbackSB","D^{0} inv. Mass in Side Bands Loose Cuts Background (All momenta)",600,1.600,2.200);
2283 hMassLSCbackSB->Sumw2();
2285 flistLsCutsBack->Add(hCPtaVSd0d0LSCback);
2286 flistLsCutsBack->Add(hSecVtxZLSCback);
2287 flistLsCutsBack->Add(hSecVtxYLSCback);
2288 flistLsCutsBack->Add(hSecVtxXLSCback);
2289 flistLsCutsBack->Add(hSecVtxXYLSCback);
2290 flistLsCutsBack->Add(hSecVtxPhiLSCback);
2291 flistLsCutsBack->Add(hd0singlTrackLSCback);
2292 flistLsCutsBack->Add(hCPtaLSCback);
2293 flistLsCutsBack->Add(hd0xd0LSCback);
2294 flistLsCutsBack->Add(hMassTrueLSCback);
2295 flistLsCutsBack->Add(hMassLSCback);
2296 flistLsCutsBack->Add(hMassTrueLSCbackPM);
2297 flistLsCutsBack->Add(hMassLSCbackPM);
2298 flistLsCutsBack->Add(hMassTrueLSCbackSB);
2299 flistLsCutsBack->Add(hMassLSCbackSB);
2308 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2309 TH1F *hdcaLSCback=new TH1F("hdcaLSCback","hdca_LooseCuts_Backgr",100,0.,1000.);
2310 hdcaLSCback->SetXTitle("dca [#mum]");
2311 hdcaLSCback->SetYTitle("Entries");
2312 TH1F *hcosthetastarLSCback=new TH1F("hcosthetastarLSCback","hCosThetaStar_LooseCuts_Backgr",50,-1.,1.);
2313 hcosthetastarLSCback->SetXTitle("cos #theta^{*}");
2314 hcosthetastarLSCback->SetYTitle("Entries");
2315 TH1F *hptD0LSCback=new TH1F("hptD0LSCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2316 hptD0LSCback->SetXTitle("p_{t} [GeV/c]");
2317 hptD0LSCback->SetYTitle("Entries");
2318 TH1F *hptD0VsMaxPtLSCback=new TH1F("hptD0VsMaxPtLSCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2319 TH2F *hptD0PTallsqrtLSCback=new TH2F("hptD0PTallsqrtLSCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2320 TH2F *hptD0PTallLSCback=new TH2F("hptD0PTallLSCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2321 TH2F *hptD0vsptBLSCback=new TH2F("hptD0vsptBLSCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2322 TH2F *hpD0vspBLSCback=new TH2F("hpD0vspBLSCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2323 TH2F *hptD0vsptcquarkLSCback=new TH2F("hptD0vsptcquarkLSCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2324 TH2F *hpD0vspcquarkLSCback=new TH2F("hpD0vspcquarkLSCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2325 flistLsCutsBack->Add(hdcaLSCback);
2326 flistLsCutsBack->Add(hcosthetastarLSCback);
2327 flistLsCutsBack->Add(hptD0LSCback);
2328 flistLsCutsBack->Add(hptD0VsMaxPtLSCback);
2329 flistLsCutsBack->Add(hptD0PTallsqrtLSCback);
2330 flistLsCutsBack->Add(hptD0PTallLSCback);
2331 flistLsCutsBack->Add(hptD0vsptBLSCback);
2332 flistLsCutsBack->Add(hpD0vspBLSCback);
2333 flistLsCutsBack->Add(hptD0vsptcquarkLSCback);
2334 flistLsCutsBack->Add(hpD0vspcquarkLSCback);
2336 TH1F *hd0zD0ptLSCback;
2337 TH1F *hInvMassLSCback;
2338 TH2F *hInvMassPtLSCback=new TH2F("hInvMassPtLSCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2340 TH1F *hCosPDPBLSCback;
2341 TH1F *hCosPcPDLSCback;
2342 flistLsCutsBack->Add(hInvMassPtLSCback);
2343 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2344 TH2F *hd0D0VSd0xd0LSCbackpt;
2345 TH2F *hangletracksVSd0xd0LSCbackpt;
2346 TH2F *hangletracksVSd0D0LSCbackpt;
2347 TH1F *hd0xd0LSCbackpt;
2349 TH2F *hTOFpidLSCback=new TH2F("hTOFpidLSCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2350 flistLsCutsBack->Add(hTOFpidLSCback);
2352 for(Int_t i=0;i<fnbins;i++){
2353 namehist="hd0zD0ptLSCback_pt";
2355 titlehist="d0(z) Loose Cuts Backgr ptbin=";
2357 hd0zD0ptLSCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2358 hd0zD0ptLSCback->SetXTitle("d_{0}(z) [#mum]");
2359 hd0zD0ptLSCback->SetYTitle("Entries");
2360 flistLsCutsBack->Add(hd0zD0ptLSCback);
2362 namehist="hInvMassLSCback_pt";
2364 titlehist="Invariant Mass Loose Cuts Backgr ptbin=";
2366 hInvMassLSCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2367 hInvMassLSCback->SetXTitle("Invariant Mass [GeV]");
2368 hInvMassLSCback->SetYTitle("Entries");
2369 flistLsCutsBack->Add(hInvMassLSCback);
2371 namehist="hetaLSCback_pt";
2373 titlehist="eta Loose Cuts Backgr ptbin=";
2375 hetaLSCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2376 hetaLSCback->SetXTitle("Pseudorapidity");
2377 hetaLSCback->SetYTitle("Entries");
2378 flistLsCutsBack->Add(hetaLSCback);
2380 namehist="hCosPDPBLSCback_pt";
2382 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2384 hCosPDPBLSCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2385 hCosPDPBLSCback->SetXTitle("Cosine between D0 momentum and B momentum");
2386 hCosPDPBLSCback->SetYTitle("Entries");
2387 flistLsCutsBack->Add(hCosPDPBLSCback);
2389 namehist="hCosPcPDLSCback_pt";
2391 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2393 hCosPcPDLSCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2394 hCosPcPDLSCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
2395 hCosPcPDLSCback->SetYTitle("Entries");
2396 flistLsCutsBack->Add(hCosPcPDLSCback);
2398 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2399 namehist="hd0xd0LSCback_pt";
2401 titlehist="d0xd0 Loose Cuts Back ptbin=";
2403 hd0xd0LSCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2404 hd0xd0LSCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2405 hd0xd0LSCbackpt->SetYTitle("Entries");
2406 flistLsCutsBack->Add(hd0xd0LSCbackpt);
2409 namehist="hd0D0VSd0xd0LSCback_pt";
2411 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Back ptbin=";
2413 hd0D0VSd0xd0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2414 hd0D0VSd0xd0LSCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2415 hd0D0VSd0xd0LSCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2416 flistLsCutsBack->Add(hd0D0VSd0xd0LSCbackpt);
2419 namehist="hangletracksVSd0xd0LSCback_pt";
2421 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Back ptbin=";
2423 hangletracksVSd0xd0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2424 hangletracksVSd0xd0LSCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2425 hangletracksVSd0xd0LSCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
2426 flistLsCutsBack->Add(hangletracksVSd0xd0LSCbackpt);
2429 namehist="hangletracksVSd0D0LSCback_pt";
2431 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Back ptbin=";
2433 hangletracksVSd0D0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2434 hangletracksVSd0D0LSCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2435 hangletracksVSd0D0LSCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
2436 flistLsCutsBack->Add(hangletracksVSd0D0LSCbackpt);
2439 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2440 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2448 // ####### d0 D0 histos ############
2450 TH1F *hd0D0LSCbackPM = new TH1F("hd0D0LSCbackPM","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2451 hd0D0LSCbackPM->SetXTitle("Impact parameter [#mum]");
2452 hd0D0LSCbackPM->SetYTitle("Entries");
2454 TH1F *hd0D0VtxTrueLSCbackPM = new TH1F("hd0D0VtxTrueLSCbackPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2455 hd0D0VtxTrueLSCbackPM->SetXTitle("Impact parameter [#mum]");
2456 hd0D0VtxTrueLSCbackPM->SetYTitle("Entries");
2458 TH1F *hMCd0D0LSCbackPM = new TH1F("hMCd0D0LSCbackPM","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2459 hMCd0D0LSCbackPM->SetXTitle("MC Impact parameter [#mum]");
2460 hMCd0D0LSCbackPM->SetYTitle("Entries");
2462 TH1F *hd0D0LSCbackSB = new TH1F("hd0D0LSCbackSB","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2463 hd0D0LSCbackSB->SetXTitle("Impact parameter [#mum]");
2464 hd0D0LSCbackSB->SetYTitle("Entries");
2466 TH1F *hd0D0VtxTrueLSCbackSB = new TH1F("hd0D0VtxTrueLSCbackSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2467 hd0D0VtxTrueLSCbackSB->SetXTitle("Impact parameter [#mum]");
2468 hd0D0VtxTrueLSCbackSB->SetYTitle("Entries");
2470 TH1F *hMCd0D0LSCbackSB = new TH1F("hMCd0D0LSCbackSB","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2471 hMCd0D0LSCbackSB->SetXTitle("MC Impact parameter [#mum]");
2472 hMCd0D0LSCbackSB->SetYTitle("Entries");
2474 flistLsCutsBack->Add(hd0D0LSCbackPM);
2475 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackPM);
2476 flistLsCutsBack->Add(hMCd0D0LSCbackPM);
2477 flistLsCutsBack->Add(hd0D0LSCbackSB);
2478 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackSB);
2479 flistLsCutsBack->Add(hMCd0D0LSCbackSB);
2481 TH1F *hd0D0ptLSCbackPM;
2482 TH1F *hMCd0D0ptLSCbackPM;
2483 TH1F *hd0D0VtxTrueptLSCbackPM;
2484 TH1F *hd0D0ptLSCbackSB;
2485 TH1F *hMCd0D0ptLSCbackSB;
2486 TH1F *hd0D0VtxTrueptLSCbackSB;
2487 namehist="hd0D0ptLSCback_";
2488 titlehist="D^{0} impact par. plot, Loose Cuts, Background, ";
2489 for(Int_t i=0;i<fnbins;i++){
2491 strnamept.Append("PkMss_pt");
2494 strtitlept=titlehist;
2495 strtitlept.Append(" Mass Peak, ");
2496 strtitlept+=fptbins[i];
2497 strtitlept.Append("<= pt <");
2498 strtitlept+=fptbins[i+1];
2499 strtitlept.Append(" [GeV/c]");
2501 hd0D0ptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2502 hd0D0ptLSCbackPM->SetXTitle("Impact parameter [#mum] ");
2503 hd0D0ptLSCbackPM->SetYTitle("Entries");
2504 flistLsCutsBack->Add(hd0D0ptLSCbackPM);
2506 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2507 hMCd0D0ptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2508 hMCd0D0ptLSCbackPM->SetXTitle("MC Impact parameter [#mum] ");
2509 hMCd0D0ptLSCbackPM->SetYTitle("Entries");
2510 flistLsCutsBack->Add(hMCd0D0ptLSCbackPM);
2513 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2514 hd0D0VtxTrueptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2515 hd0D0VtxTrueptLSCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2516 hd0D0VtxTrueptLSCbackPM->SetYTitle("Entries");
2517 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackPM);
2520 strnamept.Append("SBMss_pt");
2523 strtitlept=titlehist;
2524 strtitlept.Append(" Side Bands, ");
2525 strtitlept+=fptbins[i];
2526 strtitlept.Append("<= pt <");
2527 strtitlept+=fptbins[i+1];
2528 strtitlept.Append(" [GeV/c]");
2530 hd0D0ptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2531 hd0D0ptLSCbackSB->SetXTitle("Impact parameter [#mum] ");
2532 hd0D0ptLSCbackSB->SetYTitle("Entries");
2533 flistLsCutsBack->Add(hd0D0ptLSCbackSB);
2535 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2536 hMCd0D0ptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2537 hMCd0D0ptLSCbackSB->SetXTitle("MC Impact parameter [#mum] ");
2538 hMCd0D0ptLSCbackSB->SetYTitle("Entries");
2539 flistLsCutsBack->Add(hMCd0D0ptLSCbackSB);
2541 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2542 hd0D0VtxTrueptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2543 hd0D0VtxTrueptLSCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2544 hd0D0VtxTrueptLSCbackSB->SetYTitle("Entries");
2545 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackSB);
2550 //############ LOOSE CUTS FROMB HISTOGRAMS ###########
2552 //####### global properties histos
2554 TH2F *hCPtaVSd0d0LSCfromB=new TH2F("hCPtaVSd0d0LSCfromB","hCPtaVSd0d0_LooseCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
2555 TH1F *hSecVtxZLSCfromB=new TH1F("hSecVtxZLSCfromB","hSecVtxZ_LooseCuts_FromB",1000,-8.,8.);
2556 TH1F *hSecVtxXLSCfromB=new TH1F("hSecVtxXLSCfromB","hSecVtxX_LooseCuts_FromB",1000,-3000.,3000.);
2557 TH1F *hSecVtxYLSCfromB=new TH1F("hSecVtxYLSCfromB","hSecVtxY_LooseCuts_FromB",1000,-3000.,3000.);
2558 TH2F *hSecVtxXYLSCfromB=new TH2F("hSecVtxXYLSCfromB","hSecVtxXY_LooseCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
2559 TH1F *hSecVtxPhiLSCfromB=new TH1F("hSecVtxPhiLSCfromB","hSecVtxPhi_LooseCuts_FromB",180,-180.1,180.1);
2560 TH1F *hd0singlTrackLSCfromB=new TH1F("hd0singlTrackLSCfromB","hd0singlTrackLooseCuts_FromB",1000,-5000.,5000.);
2561 TH1F *hCPtaLSCfromB=new TH1F("hCPtaLSCfromB","hCPta_LooseCuts_FromB",100,-1.,1.);
2562 TH1F *hd0xd0LSCfromB=new TH1F("hd0xd0LSCfromB","hd0xd0_LooseCuts_FromB",1000,-100000.,100000.);
2563 TH1F *hMassTrueLSCfromB=new TH1F("hMassTrueLSCfromB","D^{0} MC inv. Mass Loose Cuts FromB(All momenta)",600,1.600,2.200);
2564 TH1F *hMassLSCfromB=new TH1F("hMassLSCfromB","D^{0} inv. Mass Loose Cuts FromB (All momenta)",600,1.600,2.200);
2565 hMassLSCfromB->Sumw2();
2566 TH1F *hMassTrueLSCfromBPM=new TH1F("hMassTrueLSCfromBPM","D^{0} MC inv. Mass Loose Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
2567 TH1F *hMassLSCfromBPM=new TH1F("hMassLSCfromBPM","D^{0} inv. Mass Loose Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
2568 hMassLSCfromBPM->Sumw2();
2569 TH1F *hMassTrueLSCfromBSB=new TH1F("hMassTrueLSCfromBSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromB(All momenta)",600,1.600,2.200);
2570 TH1F *hMassLSCfromBSB=new TH1F("hMassLSCfromBSB","D^{0} inv. Mass in Side Bands Loose Cuts FromB (All momenta)",600,1.600,2.200);
2571 hMassLSCfromBSB->Sumw2();
2573 flistLsCutsFromB->Add(hCPtaVSd0d0LSCfromB);
2574 flistLsCutsFromB->Add(hSecVtxZLSCfromB);
2575 flistLsCutsFromB->Add(hSecVtxYLSCfromB);
2576 flistLsCutsFromB->Add(hSecVtxXLSCfromB);
2577 flistLsCutsFromB->Add(hSecVtxXYLSCfromB);
2578 flistLsCutsFromB->Add(hSecVtxPhiLSCfromB);
2579 flistLsCutsFromB->Add(hd0singlTrackLSCfromB);
2580 flistLsCutsFromB->Add(hCPtaLSCfromB);
2581 flistLsCutsFromB->Add(hd0xd0LSCfromB);
2582 flistLsCutsFromB->Add(hMassTrueLSCfromB);
2583 flistLsCutsFromB->Add(hMassLSCfromB);
2584 flistLsCutsFromB->Add(hMassTrueLSCfromBPM);
2585 flistLsCutsFromB->Add(hMassLSCfromBPM);
2586 flistLsCutsFromB->Add(hMassTrueLSCfromBSB);
2587 flistLsCutsFromB->Add(hMassLSCfromBSB);
2592 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2593 TH1F *hdcaLSCfromB=new TH1F("hdcaLSCfromB","hdca_LooseCuts_FromB",100,0.,1000.);
2594 hdcaLSCfromB->SetXTitle("dca [#mum]");
2595 hdcaLSCfromB->SetYTitle("Entries");
2596 TH1F *hcosthetastarLSCfromB=new TH1F("hcosthetastarLSCfromB","hCosThetaStar_LooseCuts_FromB",50,-1.,1.);
2597 hcosthetastarLSCfromB->SetXTitle("cos #theta^{*}");
2598 hcosthetastarLSCfromB->SetYTitle("Entries");
2599 TH1F *hptD0LSCfromB=new TH1F("hptD0LSCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2600 hptD0LSCfromB->SetXTitle("p_{t} [GeV/c]");
2601 hptD0LSCfromB->SetYTitle("Entries");
2602 TH1F *hptD0VsMaxPtLSCfromB=new TH1F("hptD0VsMaxPtLSCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2603 TH2F *hptD0PTallsqrtLSCfromB=new TH2F("hptD0PTallsqrtLSCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2604 TH2F *hptD0PTallLSCfromB=new TH2F("hptD0PTallLSCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2605 TH2F *hptD0vsptBLSCfromB=new TH2F("hptD0vsptBLSCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2606 TH2F *hpD0vspBLSCfromB=new TH2F("hpD0vspBLSCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2607 TH2F *hptD0vsptcquarkLSCfromB=new TH2F("hptD0vsptcquarkLSCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2608 TH2F *hpD0vspcquarkLSCfromB=new TH2F("hpD0vspcquarkLSCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2609 flistLsCutsFromB->Add(hdcaLSCfromB);
2610 flistLsCutsFromB->Add(hcosthetastarLSCfromB);
2611 flistLsCutsFromB->Add(hptD0LSCfromB);
2612 flistLsCutsFromB->Add(hptD0VsMaxPtLSCfromB);
2613 flistLsCutsFromB->Add(hptD0PTallsqrtLSCfromB);
2614 flistLsCutsFromB->Add(hptD0PTallLSCfromB);
2615 flistLsCutsFromB->Add(hptD0vsptBLSCfromB);
2616 flistLsCutsFromB->Add(hpD0vspBLSCfromB);
2617 flistLsCutsFromB->Add(hptD0vsptcquarkLSCfromB);
2618 flistLsCutsFromB->Add(hpD0vspcquarkLSCfromB);
2620 TH1F *hd0zD0ptLSCfromB;
2621 TH1F *hInvMassLSCfromB;
2622 TH2F *hInvMassPtLSCfromB=new TH2F("hInvMassPtLSCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2624 TH1F *hCosPDPBLSCfromB;
2625 TH1F *hCosPcPDLSCfromB;
2626 flistLsCutsFromB->Add(hInvMassPtLSCfromB);
2627 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2628 TH2F *hd0D0VSd0xd0LSCfromBpt;
2629 TH2F *hangletracksVSd0xd0LSCfromBpt;
2630 TH2F *hangletracksVSd0D0LSCfromBpt;
2631 TH1F *hd0xd0LSCfromBpt;
2634 TH2F *hTOFpidLSCfromB=new TH2F("hTOFpidLSCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2635 flistLsCutsFromB->Add(hTOFpidLSCfromB);
2637 for(Int_t i=0;i<fnbins;i++){
2638 namehist="hd0zD0ptLSCfromB_pt";
2640 titlehist="d0(z) Loose Cuts FromBm ptbin=";
2642 hd0zD0ptLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2643 hd0zD0ptLSCfromB->SetXTitle("d_{0}(z) [#mum]");
2644 hd0zD0ptLSCfromB->SetYTitle("Entries");
2645 flistLsCutsFromB->Add(hd0zD0ptLSCfromB);
2647 namehist="hInvMassLSCfromB_pt";
2649 titlehist="Invariant Mass Loose Cuts FromB ptbin=";
2651 hInvMassLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2652 hInvMassLSCfromB->SetXTitle("Invariant Mass [GeV]");
2653 hInvMassLSCfromB->SetYTitle("Entries");
2654 flistLsCutsFromB->Add(hInvMassLSCfromB);
2656 namehist="hetaLSCfromB_pt";
2658 titlehist="eta Loose Cuts FromB ptbin=";
2660 hetaLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2661 hetaLSCfromB->SetXTitle("Pseudorapidity");
2662 hetaLSCfromB->SetYTitle("Entries");
2663 flistLsCutsFromB->Add(hetaLSCfromB);
2665 namehist="hCosPDPBLSCfromB_pt";
2667 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2669 hCosPDPBLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2670 hCosPDPBLSCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
2671 hCosPDPBLSCfromB->SetYTitle("Entries");
2672 flistLsCutsFromB->Add(hCosPDPBLSCfromB);
2674 namehist="hCosPcPDLSCfromB_pt";
2676 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2678 hCosPcPDLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2679 hCosPcPDLSCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
2680 hCosPcPDLSCfromB->SetYTitle("Entries");
2681 flistLsCutsFromB->Add(hCosPcPDLSCfromB);
2683 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2684 namehist="hd0xd0LSCfromB_pt";
2686 titlehist="d0xd0 Loose Cuts FromB ptbin=";
2688 hd0xd0LSCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2689 hd0xd0LSCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2690 hd0xd0LSCfromBpt->SetYTitle("Entries");
2691 flistLsCutsFromB->Add(hd0xd0LSCfromBpt);
2694 namehist="hd0D0VSd0xd0LSCfromB_pt";
2696 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromB ptbin=";
2698 hd0D0VSd0xd0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2699 hd0D0VSd0xd0LSCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2700 hd0D0VSd0xd0LSCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2701 flistLsCutsFromB->Add(hd0D0VSd0xd0LSCfromBpt);
2704 namehist="hangletracksVSd0xd0LSCfromB_pt";
2706 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromB ptbin=";
2708 hangletracksVSd0xd0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2709 hangletracksVSd0xd0LSCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2710 hangletracksVSd0xd0LSCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
2711 flistLsCutsFromB->Add(hangletracksVSd0xd0LSCfromBpt);
2714 namehist="hangletracksVSd0D0LSCfromB_pt";
2716 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts FromB ptbin=";
2718 hangletracksVSd0D0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2719 hangletracksVSd0D0LSCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2720 hangletracksVSd0D0LSCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
2721 flistLsCutsFromB->Add(hangletracksVSd0D0LSCfromBpt);
2724 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2725 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2731 // ######### d0 D0 histos ##############
2732 TH1F *hd0D0LSCfromBPM = new TH1F("hd0D0LSCfromBPM","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2733 hd0D0LSCfromBPM->SetXTitle("Impact parameter [#mum]");
2734 hd0D0LSCfromBPM->SetYTitle("Entries");
2736 TH1F *hd0D0VtxTrueLSCfromBPM = new TH1F("hd0D0VtxTrueLSCfromBPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2737 hd0D0VtxTrueLSCfromBPM->SetXTitle("Impact parameter [#mum]");
2738 hd0D0VtxTrueLSCfromBPM->SetYTitle("Entries");
2740 TH1F *hMCd0D0LSCfromBPM = new TH1F("hMCd0D0LSCfromBPM","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2741 hMCd0D0LSCfromBPM->SetXTitle("MC Impact parameter [#mum]");
2742 hMCd0D0LSCfromBPM->SetYTitle("Entries");
2744 TH1F *hd0D0LSCfromBSB = new TH1F("hd0D0LSCfromBSB","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2745 hd0D0LSCfromBSB->SetXTitle("Impact parameter [#mum]");
2746 hd0D0LSCfromBSB->SetYTitle("Entries");
2748 TH1F *hd0D0VtxTrueLSCfromBSB = new TH1F("hd0D0VtxTrueLSCfromBSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2749 hd0D0VtxTrueLSCfromBSB->SetXTitle("Impact parameter [#mum]");
2750 hd0D0VtxTrueLSCfromBSB->SetYTitle("Entries");
2752 TH1F *hMCd0D0LSCfromBSB = new TH1F("hMCd0D0LSCfromBSB","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2753 hMCd0D0LSCfromBSB->SetXTitle("MC Impact parameter [#mum]");
2754 hMCd0D0LSCfromBSB->SetYTitle("Entries");
2756 flistLsCutsFromB->Add(hd0D0LSCfromBPM);
2757 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBPM);
2758 flistLsCutsFromB->Add(hMCd0D0LSCfromBPM);
2759 flistLsCutsFromB->Add(hd0D0LSCfromBSB);
2760 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBSB);
2761 flistLsCutsFromB->Add(hMCd0D0LSCfromBSB);
2763 TH1F *hd0D0ptLSCfromBPM;
2764 TH1F *hMCd0D0ptLSCfromBPM;
2765 TH1F *hd0D0VtxTrueptLSCfromBPM;
2766 TH1F *hd0D0ptLSCfromBSB;
2767 TH1F *hMCd0D0ptLSCfromBSB;
2768 TH1F *hd0D0VtxTrueptLSCfromBSB;
2769 namehist="hd0D0ptLSCfromB_";
2770 titlehist="D^{0} impact par. plot, Loose Cuts, FromB, ";
2771 for(Int_t i=0;i<fnbins;i++){
2773 strnamept.Append("PkMss_pt");
2776 strtitlept=titlehist;
2777 strtitlept.Append(" Mass Peak, ");
2778 strtitlept+=fptbins[i];
2779 strtitlept.Append("<= pt <");
2780 strtitlept+=fptbins[i+1];
2781 strtitlept.Append(" [GeV/c]");
2783 hd0D0ptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2784 hd0D0ptLSCfromBPM->SetXTitle("Impact parameter [#mum] ");
2785 hd0D0ptLSCfromBPM->SetYTitle("Entries");
2786 flistLsCutsFromB->Add(hd0D0ptLSCfromBPM);
2788 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2789 hMCd0D0ptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2790 hMCd0D0ptLSCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
2791 hMCd0D0ptLSCfromBPM->SetYTitle("Entries");
2792 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBPM);
2795 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2796 hd0D0VtxTrueptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2797 hd0D0VtxTrueptLSCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2798 hd0D0VtxTrueptLSCfromBPM->SetYTitle("Entries");
2799 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBPM);
2802 strnamept.Append("SBMss_pt");
2805 strtitlept=titlehist;
2806 strtitlept.Append(" Side Bands, ");
2807 strtitlept+=fptbins[i];
2808 strtitlept.Append("<= pt <");
2809 strtitlept+=fptbins[i+1];
2810 strtitlept.Append(" [GeV/c]");
2812 hd0D0ptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2813 hd0D0ptLSCfromBSB->SetXTitle("Impact parameter [#mum] ");
2814 hd0D0ptLSCfromBSB->SetYTitle("Entries");
2815 flistLsCutsFromB->Add(hd0D0ptLSCfromBSB);
2817 strnamept.ReplaceAll("hd0D0","hMCd0D0");
2818 hMCd0D0ptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2819 hMCd0D0ptLSCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
2820 hMCd0D0ptLSCfromBSB->SetYTitle("Entries");
2821 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBSB);
2823 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
2824 hd0D0VtxTrueptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2825 hd0D0VtxTrueptLSCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2826 hd0D0VtxTrueptLSCfromBSB->SetYTitle("Entries");
2827 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBSB);
2832 //############ LOOSE CUTS FROM DSTAR HISTOGRAMS ###########
2834 //############## global properties histos
2835 TH2F *hCPtaVSd0d0LSCfromDstar=new TH2F("hCPtaVSd0d0LSCfromDstar","hCPtaVSd0d0_LooseCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
2836 TH1F *hSecVtxZLSCfromDstar=new TH1F("hSecVtxZLSCfromDstar","hSecVtxZ_LooseCuts_FromDStar",1000,-8.,8.);
2837 TH1F *hSecVtxXLSCfromDstar=new TH1F("hSecVtxXLSCfromDstar","hSecVtxX_LooseCuts_FromDStar",1000,-3000.,3000.);
2838 TH1F *hSecVtxYLSCfromDstar=new TH1F("hSecVtxYLSCfromDstar","hSecVtxY_LooseCuts_FromDStar",1000,-3000.,3000.);
2839 TH2F *hSecVtxXYLSCfromDstar=new TH2F("hSecVtxXYLSCfromDstar","hSecVtxXY_LooseCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
2840 TH1F *hSecVtxPhiLSCfromDstar=new TH1F("hSecVtxPhiLSCfromDstar","hSecVtxPhi_LooseCuts_FromDStar",180,-180.1,180.1);
2841 TH1F *hd0singlTrackLSCfromDstar=new TH1F("hd0singlTrackLSCfromDstar","hd0singlTrackLooseCuts_FromDstar",1000,-5000.,5000.);
2842 TH1F *hCPtaLSCfromDstar=new TH1F("hCPtaLSCfromDstar","hCPta_LooseCuts_FromDStar",100,-1.,1.);
2843 TH1F *hd0xd0LSCfromDstar=new TH1F("hd0xd0LSCfromDstar","hd0xd0_LooseCuts_FromDStar",1000,-100000.,100000.);
2844 TH1F *hMassTrueLSCfromDstar=new TH1F("hMassTrueLSCfromDstar","D^{0} MC inv. Mass Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
2845 TH1F *hMassLSCfromDstar=new TH1F("hMassLSCfromDstar","D^{0} inv. Mass Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
2846 hMassLSCfromDstar->Sumw2();
2847 TH1F *hMassTrueLSCfromDstarPM=new TH1F("hMassTrueLSCfromDstarPM","D^{0} MC inv. Mass Loose Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
2848 TH1F *hMassLSCfromDstarPM=new TH1F("hMassLSCfromDstarPM","D^{0} inv. Mass Loose Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
2849 hMassLSCfromDstarPM->Sumw2();
2850 TH1F *hMassTrueLSCfromDstarSB=new TH1F("hMassTrueLSCfromDstarSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
2851 TH1F *hMassLSCfromDstarSB=new TH1F("hMassLSCfromDstarSB","D^{0} inv. Mass in Side Bands Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
2852 hMassLSCfromDstarSB->Sumw2();
2854 flistLsCutsFromDstar->Add(hCPtaVSd0d0LSCfromDstar);
2855 flistLsCutsFromDstar->Add(hSecVtxZLSCfromDstar);
2856 flistLsCutsFromDstar->Add(hSecVtxYLSCfromDstar);
2857 flistLsCutsFromDstar->Add(hSecVtxXLSCfromDstar);
2858 flistLsCutsFromDstar->Add(hSecVtxXYLSCfromDstar);
2859 flistLsCutsFromDstar->Add(hSecVtxPhiLSCfromDstar);
2860 flistLsCutsFromDstar->Add(hd0singlTrackLSCfromDstar);
2861 flistLsCutsFromDstar->Add(hCPtaLSCfromDstar);
2862 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstar);
2863 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstar);
2864 flistLsCutsFromDstar->Add(hMassLSCfromDstar);
2865 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarPM);
2866 flistLsCutsFromDstar->Add(hMassLSCfromDstarPM);
2867 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarSB);
2868 flistLsCutsFromDstar->Add(hMassLSCfromDstarSB);
2876 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2877 TH1F *hdcaLSCfromDstar=new TH1F("hdcaLSCfromDstar","hdca_LooseCuts_FromDstar",100,0.,1000.);
2878 hdcaLSCfromDstar->SetXTitle("dca [#mum]");
2879 hdcaLSCfromDstar->SetYTitle("Entries");
2880 TH1F *hcosthetastarLSCfromDstar=new TH1F("hcosthetastarLSCfromDstar","hCosThetaStar_LooseCuts_FromDstar",50,-1.,1.);
2881 hcosthetastarLSCfromDstar->SetXTitle("cos #theta^{*}");
2882 hcosthetastarLSCfromDstar->SetYTitle("Entries");
2883 TH1F *hptD0LSCfromDstar=new TH1F("hptD0LSCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2884 hptD0LSCfromDstar->SetXTitle("p_{t} [GeV/c]");
2885 hptD0LSCfromDstar->SetYTitle("Entries");
2886 TH1F *hptD0VsMaxPtLSCfromDstar=new TH1F("hptD0VsMaxPtLSCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2887 TH2F *hptD0PTallsqrtLSCfromDstar=new TH2F("hptD0PTallsqrtLSCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2888 TH2F *hptD0PTallLSCfromDstar=new TH2F("hptD0PTallLSCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2889 TH2F *hptD0vsptBLSCfromDstar=new TH2F("hptD0vsptBLSCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2890 TH2F *hpD0vspBLSCfromDstar=new TH2F("hpD0vspBLSCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2891 TH2F *hptD0vsptcquarkLSCfromDstar=new TH2F("hptD0vsptcquarkLSCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2892 TH2F *hpD0vspcquarkLSCfromDstar=new TH2F("hpD0vspcquarkLSCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2893 flistLsCutsFromDstar->Add(hdcaLSCfromDstar);
2894 flistLsCutsFromDstar->Add(hcosthetastarLSCfromDstar);
2895 flistLsCutsFromDstar->Add(hptD0LSCfromDstar);
2896 flistLsCutsFromDstar->Add(hptD0VsMaxPtLSCfromDstar);
2897 flistLsCutsFromDstar->Add(hptD0PTallsqrtLSCfromDstar);
2898 flistLsCutsFromDstar->Add(hptD0PTallLSCfromDstar);
2899 flistLsCutsFromDstar->Add(hptD0vsptBLSCfromDstar);
2900 flistLsCutsFromDstar->Add(hpD0vspBLSCfromDstar);
2901 flistLsCutsFromDstar->Add(hptD0vsptcquarkLSCfromDstar);
2902 flistLsCutsFromDstar->Add(hpD0vspcquarkLSCfromDstar);
2904 TH1F *hd0zD0ptLSCfromDstar;
2905 TH1F *hInvMassLSCfromDstar;
2906 TH2F *hInvMassPtLSCfromDstar=new TH2F("hInvMassPtLSCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
2907 TH1F *hetaLSCfromDstar;
2908 TH1F *hCosPDPBLSCfromDstar;
2909 TH1F *hCosPcPDLSCfromDstar;
2910 flistLsCutsFromDstar->Add(hInvMassPtLSCfromDstar);
2911 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2912 TH2F *hd0D0VSd0xd0LSCfromDstarpt;
2913 TH2F *hangletracksVSd0xd0LSCfromDstarpt;
2914 TH2F *hangletracksVSd0D0LSCfromDstarpt;
2915 TH1F *hd0xd0LSCfromDstarpt;
2917 TH2F *hTOFpidLSCfromDstar=new TH2F("hTOFpidLSCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2918 flistLsCutsFromDstar->Add(hTOFpidLSCfromDstar);
2920 for(Int_t i=0;i<fnbins;i++){
2921 namehist="hd0zD0ptLSCfromDstar_pt";
2923 titlehist="d0(z) Loose Cuts FromDstarm ptbin=";
2925 hd0zD0ptLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2926 hd0zD0ptLSCfromDstar->SetXTitle("d_{0}(z) [#mum]");
2927 hd0zD0ptLSCfromDstar->SetYTitle("Entries");
2928 flistLsCutsFromDstar->Add(hd0zD0ptLSCfromDstar);
2930 namehist="hInvMassLSCfromDstar_pt";
2932 titlehist="Invariant Mass Loose Cuts FromDstar ptbin=";
2934 hInvMassLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2935 hInvMassLSCfromDstar->SetXTitle("Invariant Mass [GeV]");
2936 hInvMassLSCfromDstar->SetYTitle("Entries");
2937 flistLsCutsFromDstar->Add(hInvMassLSCfromDstar);
2939 namehist="hetaLSCfromDstar_pt";
2941 titlehist="eta Loose Cuts FromDstar ptbin=";
2943 hetaLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2944 hetaLSCfromDstar->SetXTitle("Pseudorapidity");
2945 hetaLSCfromDstar->SetYTitle("Entries");
2946 flistLsCutsFromDstar->Add(hetaLSCfromDstar);
2948 namehist="hCosPDPBLSCfromDstar_pt";
2950 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2952 hCosPDPBLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2953 hCosPDPBLSCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
2954 hCosPDPBLSCfromDstar->SetYTitle("Entries");
2955 flistLsCutsFromDstar->Add(hCosPDPBLSCfromDstar);
2957 namehist="hCosPcPDLSCfromDstar_pt";
2959 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2961 hCosPcPDLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2962 hCosPcPDLSCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
2963 hCosPcPDLSCfromDstar->SetYTitle("Entries");
2964 flistLsCutsFromDstar->Add(hCosPcPDLSCfromDstar);
2966 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2967 namehist="hd0xd0LSCfromDstar_pt";
2969 titlehist="d0xd0 Loose Cuts FromDstar ptbin=";
2971 hd0xd0LSCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2972 hd0xd0LSCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2973 hd0xd0LSCfromDstarpt->SetYTitle("Entries");
2974 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstarpt);
2977 namehist="hd0D0VSd0xd0LSCfromDstar_pt";
2979 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromDstar ptbin=";
2981 hd0D0VSd0xd0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2982 hd0D0VSd0xd0LSCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2983 hd0D0VSd0xd0LSCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2984 flistLsCutsFromDstar->Add(hd0D0VSd0xd0LSCfromDstarpt);
2987 namehist="hangletracksVSd0xd0LSCfromDstar_pt";
2989 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromDstar ptbin=";
2991 hangletracksVSd0xd0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2992 hangletracksVSd0xd0LSCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2993 hangletracksVSd0xd0LSCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
2994 flistLsCutsFromDstar->Add(hangletracksVSd0xd0LSCfromDstarpt);
2997 namehist="hangletracksVSd0D0LSCfromDstar_pt";
2999 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts FromDstar ptbin=";
3001 hangletracksVSd0D0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3002 hangletracksVSd0D0LSCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3003 hangletracksVSd0D0LSCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
3004 flistLsCutsFromDstar->Add(hangletracksVSd0D0LSCfromDstarpt);
3008 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3009 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3016 //########## d0 D0 histos #############
3017 TH1F *hd0D0LSCfromDstPM = new TH1F("hd0D0LSCfromDstarPM","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3018 hd0D0LSCfromDstPM->SetXTitle("Impact parameter [#mum]");
3019 hd0D0LSCfromDstPM->SetYTitle("Entries");
3021 TH1F *hd0D0VtxTrueLSCfromDstPM = new TH1F("hd0D0VtxTrueLSCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3022 hd0D0VtxTrueLSCfromDstPM->SetXTitle("Impact parameter [#mum]");
3023 hd0D0VtxTrueLSCfromDstPM->SetYTitle("Entries");
3025 TH1F *hMCd0D0LSCfromDstPM = new TH1F("hMCd0D0LSCfromDstarPM","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3026 hMCd0D0LSCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
3027 hMCd0D0LSCfromDstPM->SetYTitle("Entries");
3029 TH1F *hd0D0LSCfromDstSB = new TH1F("hd0D0LSCfromDstarSB","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3030 hd0D0LSCfromDstSB->SetXTitle("Impact parameter [#mum]");
3031 hd0D0LSCfromDstSB->SetYTitle("Entries");
3033 TH1F *hd0D0VtxTrueLSCfromDstSB = new TH1F("hd0D0VtxTrueLSCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3034 hd0D0VtxTrueLSCfromDstSB->SetXTitle("Impact parameter [#mum]");
3035 hd0D0VtxTrueLSCfromDstSB->SetYTitle("Entries");
3037 TH1F *hMCd0D0LSCfromDstSB = new TH1F("hMCd0D0LSCfromDstarSB","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3038 hMCd0D0LSCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
3039 hMCd0D0LSCfromDstSB->SetYTitle("Entries");
3041 flistLsCutsFromDstar->Add(hd0D0LSCfromDstPM);
3042 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstPM);
3043 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstPM);
3044 flistLsCutsFromDstar->Add(hd0D0LSCfromDstSB);
3045 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstSB);
3046 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstSB);
3048 TH1F *hd0D0ptLSCfromDstPM;
3049 TH1F *hMCd0D0ptLSCfromDstPM;
3050 TH1F *hd0D0VtxTrueptLSCfromDstPM;
3051 TH1F *hd0D0ptLSCfromDstSB;
3052 TH1F *hMCd0D0ptLSCfromDstSB;
3053 TH1F *hd0D0VtxTrueptLSCfromDstSB;
3054 namehist="hd0D0ptLSCfromDstar_";
3055 titlehist="D^{0} impact par. plot, Loose Cuts, FromDStar, ";
3056 for(Int_t i=0;i<fnbins;i++){
3058 strnamept.Append("PkMss_pt");
3061 strtitlept=titlehist;
3062 strtitlept.Append(" Mass Peak, ");
3063 strtitlept+=fptbins[i];
3064 strtitlept.Append("<= pt <");
3065 strtitlept+=fptbins[i+1];
3066 strtitlept.Append(" [GeV/c]");
3068 hd0D0ptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3069 hd0D0ptLSCfromDstPM->SetXTitle("Impact parameter [#mum] ");
3070 hd0D0ptLSCfromDstPM->SetYTitle("Entries");
3071 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstPM);
3073 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3074 hMCd0D0ptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3075 hMCd0D0ptLSCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
3076 hMCd0D0ptLSCfromDstPM->SetYTitle("Entries");
3077 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstPM);
3080 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3081 hd0D0VtxTrueptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3082 hd0D0VtxTrueptLSCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3083 hd0D0VtxTrueptLSCfromDstPM->SetYTitle("Entries");
3084 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstPM);
3087 strnamept.Append("SBMss_pt");
3090 strtitlept=titlehist;
3091 strtitlept.Append(" Side Bands, ");
3092 strtitlept+=fptbins[i];
3093 strtitlept.Append("<= pt <");
3094 strtitlept+=fptbins[i+1];
3095 strtitlept.Append(" [GeV/c]");
3097 hd0D0ptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3098 hd0D0ptLSCfromDstSB->SetXTitle("Impact parameter [#mum] ");
3099 hd0D0ptLSCfromDstSB->SetYTitle("Entries");
3100 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstSB);
3102 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3103 hMCd0D0ptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3104 hMCd0D0ptLSCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
3105 hMCd0D0ptLSCfromDstSB->SetYTitle("Entries");
3106 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstSB);
3108 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3109 hd0D0VtxTrueptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3110 hd0D0VtxTrueptLSCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3111 hd0D0VtxTrueptLSCfromDstSB->SetYTitle("Entries");
3112 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstSB);
3116 //############ LOOSE CUTS OTHER HISTOGRAMS ###########
3118 //########### global properties histos ###########
3120 TH2F *hCPtaVSd0d0LSCother=new TH2F("hCPtaVSd0d0LSCother","hCPtaVSd0d0_LooseCuts_other",1000,-100000.,100000.,100,-1.,1.);
3121 TH1F *hSecVtxZLSCother=new TH1F("hSecVtxZLSCother","hSecVtxZ_LooseCuts_other",1000,-8.,8.);
3122 TH1F *hSecVtxXLSCother=new TH1F("hSecVtxXLSCother","hSecVtxX_LooseCuts_other",1000,-3000.,3000.);
3123 TH1F *hSecVtxYLSCother=new TH1F("hSecVtxYLSCother","hSecVtxY_LooseCuts_other",1000,-3000.,3000.);
3124 TH2F *hSecVtxXYLSCother=new TH2F("hSecVtxXYLSCother","hSecVtxXY_LooseCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
3125 TH1F *hSecVtxPhiLSCother=new TH1F("hSecVtxPhiLSCother","hSecVtxPhi_LooseCuts_other",180,-180.1,180.1);
3126 TH1F *hd0singlTrackLSCother=new TH1F("hd0singlTrackLSCother","hd0singlTrackLooseCuts_Other",1000,-5000.,5000.);
3127 TH1F *hCPtaLSCother=new TH1F("hCPtaLSCother","hCPta_LooseCuts_other",100,-1.,1.);
3128 TH1F *hd0xd0LSCother=new TH1F("hd0xd0LSCother","hd0xd0_LooseCuts_other",1000,-100000.,100000.);
3129 TH1F *hMassTrueLSCother=new TH1F("hMassTrueLSCother","D^{0} MC inv. Mass Loose Cuts other(All momenta)",600,1.600,2.200);
3130 TH1F *hMassLSCother=new TH1F("hMassLSCother","D^{0} inv. Mass Loose Cuts other (All momenta)",600,1.600,2.200);
3131 hMassLSCother->Sumw2();
3132 TH1F *hMassTrueLSCotherPM=new TH1F("hMassTrueLSCotherPM","D^{0} MC inv. Mass Loose Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
3133 TH1F *hMassLSCotherPM=new TH1F("hMassLSCotherPM","D^{0} inv. Mass Loose Cuts other (All momenta), MassPeak",600,1.600,2.200);
3134 hMassLSCotherPM->Sumw2();
3135 TH1F *hMassTrueLSCotherSB=new TH1F("hMassTrueLSCotherSB","D^{0} MC inv. Mass in Side Bands Loose Cuts other(All momenta)",600,1.600,2.200);
3136 TH1F *hMassLSCotherSB=new TH1F("hMassLSCotherSB","D^{0} inv. Mass in Side Bands Loose Cuts other (All momenta)",600,1.600,2.200);
3137 hMassLSCotherSB->Sumw2();
3139 flistLsCutsOther->Add(hCPtaVSd0d0LSCother);
3140 flistLsCutsOther->Add(hSecVtxZLSCother);
3141 flistLsCutsOther->Add(hSecVtxYLSCother);
3142 flistLsCutsOther->Add(hSecVtxXLSCother);
3143 flistLsCutsOther->Add(hSecVtxXYLSCother);
3144 flistLsCutsOther->Add(hSecVtxPhiLSCother);
3145 flistLsCutsOther->Add(hd0singlTrackLSCother);
3146 flistLsCutsOther->Add(hCPtaLSCother);
3147 flistLsCutsOther->Add(hd0xd0LSCother);
3148 flistLsCutsOther->Add(hMassTrueLSCother);
3149 flistLsCutsOther->Add(hMassLSCother);
3150 flistLsCutsOther->Add(hMassTrueLSCotherPM);
3151 flistLsCutsOther->Add(hMassLSCotherPM);
3152 flistLsCutsOther->Add(hMassTrueLSCotherSB);
3153 flistLsCutsOther->Add(hMassLSCotherSB);
3158 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3159 TH1F *hdcaLSCother=new TH1F("hdcaLSCother","hdca_LooseCuts_Other",100,0.,1000.);
3160 hdcaLSCother->SetXTitle("dca [#mum]");
3161 hdcaLSCother->SetYTitle("Entries");
3162 TH1F *hcosthetastarLSCother=new TH1F("hcosthetastarLSCother","hCosThetaStar_LooseCuts_Other",50,-1.,1.);
3163 hcosthetastarLSCother->SetXTitle("cos #theta^{*}");
3164 hcosthetastarLSCother->SetYTitle("Entries");
3165 TH1F *hptD0LSCother=new TH1F("hptD0LSCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3166 hptD0LSCother->SetXTitle("p_{t} [GeV/c]");
3167 hptD0LSCother->SetYTitle("Entries");
3168 TH1F *hptD0VsMaxPtLSCother=new TH1F("hptD0VsMaxPtLSCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3169 TH2F *hptD0PTallsqrtLSCother=new TH2F("hptD0PTallsqrtLSCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3170 TH2F *hptD0PTallLSCother=new TH2F("hptD0PTallLSCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3171 TH2F *hptD0vsptBLSCother=new TH2F("hptD0vsptBLSCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3172 TH2F *hpD0vspBLSCother=new TH2F("hpD0vspBLSCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3173 TH2F *hptD0vsptcquarkLSCother=new TH2F("hptD0vsptcquarkLSCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3174 TH2F *hpD0vspcquarkLSCother=new TH2F("hpD0vspcquarkLSCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3175 flistLsCutsOther->Add(hdcaLSCother);
3176 flistLsCutsOther->Add(hcosthetastarLSCother);
3177 flistLsCutsOther->Add(hptD0LSCother);
3178 flistLsCutsOther->Add(hptD0VsMaxPtLSCother);
3179 flistLsCutsOther->Add(hptD0PTallsqrtLSCother);
3180 flistLsCutsOther->Add(hptD0PTallLSCother);
3181 flistLsCutsOther->Add(hptD0vsptBLSCother);
3182 flistLsCutsOther->Add(hpD0vspBLSCother);
3183 flistLsCutsOther->Add(hptD0vsptcquarkLSCother);
3184 flistLsCutsOther->Add(hpD0vspcquarkLSCother);
3186 TH1F *hd0zD0ptLSCother;
3187 TH1F *hInvMassLSCother;
3188 TH2F *hInvMassPtLSCother=new TH2F("hInvMassPtLSCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3190 TH1F *hCosPDPBLSCother;
3191 TH1F *hCosPcPDLSCother;
3192 flistLsCutsOther->Add(hInvMassPtLSCother);
3193 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3194 TH2F *hd0D0VSd0xd0LSCotherpt;
3195 TH2F *hangletracksVSd0xd0LSCotherpt;
3196 TH2F *hangletracksVSd0D0LSCotherpt;
3197 TH1F *hd0xd0LSCotherpt;
3199 TH2F *hTOFpidLSCother=new TH2F("hTOFpidLSCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3200 flistLsCutsOther->Add(hTOFpidLSCother);
3202 for(Int_t i=0;i<fnbins;i++){
3203 namehist="hd0zD0ptLSCother_pt";
3205 titlehist="d0(z) Loose Cuts Otherm ptbin=";
3207 hd0zD0ptLSCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3208 hd0zD0ptLSCother->SetXTitle("d_{0}(z) [#mum]");
3209 hd0zD0ptLSCother->SetYTitle("Entries");
3210 flistLsCutsOther->Add(hd0zD0ptLSCother);
3212 namehist="hInvMassLSCother_pt";
3214 titlehist="Invariant Mass Loose Cuts Other ptbin=";
3216 hInvMassLSCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3217 hInvMassLSCother->SetXTitle("Invariant Mass [GeV]");
3218 hInvMassLSCother->SetYTitle("Entries");
3219 flistLsCutsOther->Add(hInvMassLSCother);
3221 namehist="hetaLSCother_pt";
3223 titlehist="eta Loose Cuts Other ptbin=";
3225 hetaLSCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3226 hetaLSCother->SetXTitle("Pseudorapidity");
3227 hetaLSCother->SetYTitle("Entries");
3228 flistLsCutsOther->Add(hetaLSCother);
3230 namehist="hCosPDPBLSCother_pt";
3232 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3234 hCosPDPBLSCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3235 hCosPDPBLSCother->SetXTitle("Cosine between D0 momentum and B momentum");
3236 hCosPDPBLSCother->SetYTitle("Entries");
3237 flistLsCutsOther->Add(hCosPDPBLSCother);
3239 namehist="hCosPcPDLSCother_pt";
3241 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3243 hCosPcPDLSCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3244 hCosPcPDLSCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
3245 hCosPcPDLSCother->SetYTitle("Entries");
3246 flistLsCutsOther->Add(hCosPcPDLSCother);
3248 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3249 namehist="hd0xd0LSCother_pt";
3251 titlehist="d0xd0 Loose Cuts Other ptbin=";
3253 hd0xd0LSCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3254 hd0xd0LSCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3255 hd0xd0LSCotherpt->SetYTitle("Entries");
3256 flistLsCutsOther->Add(hd0xd0LSCotherpt);
3259 namehist="hd0D0VSd0xd0LSCother_pt";
3261 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Other ptbin=";
3263 hd0D0VSd0xd0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3264 hd0D0VSd0xd0LSCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3265 hd0D0VSd0xd0LSCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3266 flistLsCutsOther->Add(hd0D0VSd0xd0LSCotherpt);
3269 namehist="hangletracksVSd0xd0LSCother_pt";
3271 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Other ptbin=";
3273 hangletracksVSd0xd0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3274 hangletracksVSd0xd0LSCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3275 hangletracksVSd0xd0LSCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
3276 flistLsCutsOther->Add(hangletracksVSd0xd0LSCotherpt);
3279 namehist="hangletracksVSd0D0LSCother_pt";
3281 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Other ptbin=";
3283 hangletracksVSd0D0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3284 hangletracksVSd0D0LSCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3285 hangletracksVSd0D0LSCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
3286 flistLsCutsOther->Add(hangletracksVSd0D0LSCotherpt);
3290 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3291 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3295 //############# d0 D0 histos ###############Ã
3296 TH1F *hd0D0LSCotherPM = new TH1F("hd0D0LSCotherPM","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3297 hd0D0LSCotherPM->SetXTitle("Impact parameter [#mum]");
3298 hd0D0LSCotherPM->SetYTitle("Entries");
3300 TH1F *hd0D0VtxTrueLSCotherPM = new TH1F("hd0D0VtxTrueLSCotherPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3301 hd0D0VtxTrueLSCotherPM->SetXTitle("Impact parameter [#mum]");
3302 hd0D0VtxTrueLSCotherPM->SetYTitle("Entries");
3304 TH1F *hMCd0D0LSCotherPM = new TH1F("hMCd0D0LSCotherPM","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3305 hMCd0D0LSCotherPM->SetXTitle("MC Impact parameter [#mum]");
3306 hMCd0D0LSCotherPM->SetYTitle("Entries");
3308 TH1F *hd0D0LSCotherSB = new TH1F("hd0D0LSCotherSB","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3309 hd0D0LSCotherSB->SetXTitle("Impact parameter [#mum]");
3310 hd0D0LSCotherSB->SetYTitle("Entries");
3312 TH1F *hd0D0VtxTrueLSCotherSB = new TH1F("hd0D0VtxTrueLSCotherSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3313 hd0D0VtxTrueLSCotherSB->SetXTitle("Impact parameter [#mum]");
3314 hd0D0VtxTrueLSCotherSB->SetYTitle("Entries");
3316 TH1F *hMCd0D0LSCotherSB = new TH1F("hMCd0D0LSCotherSB","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3317 hMCd0D0LSCotherSB->SetXTitle("MC Impact parameter [#mum]");
3318 hMCd0D0LSCotherSB->SetYTitle("Entries");
3320 flistLsCutsOther->Add(hd0D0LSCotherPM);
3321 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherPM);
3322 flistLsCutsOther->Add(hMCd0D0LSCotherPM);
3323 flistLsCutsOther->Add(hd0D0LSCotherSB);
3324 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherSB);
3325 flistLsCutsOther->Add(hMCd0D0LSCotherSB);
3327 TH1F *hd0D0ptLSCotherPM;
3328 TH1F *hMCd0D0ptLSCotherPM;
3329 TH1F *hd0D0VtxTrueptLSCotherPM;
3330 TH1F *hd0D0ptLSCotherSB;
3331 TH1F *hMCd0D0ptLSCotherSB;
3332 TH1F *hd0D0VtxTrueptLSCotherSB;
3333 namehist="hd0D0ptLSCother_";
3334 titlehist="D^{0} impact par. plot, Loose Cuts, Other, ";
3335 for(Int_t i=0;i<fnbins;i++){
3337 strnamept.Append("PkMss_pt");
3340 strtitlept=titlehist;
3341 strtitlept.Append(" Mass Peak, ");
3342 strtitlept+=fptbins[i];
3343 strtitlept.Append("<= pt <");
3344 strtitlept+=fptbins[i+1];
3345 strtitlept.Append(" [GeV/c]");
3347 hd0D0ptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3348 hd0D0ptLSCotherPM->SetXTitle("Impact parameter [#mum] ");
3349 hd0D0ptLSCotherPM->SetYTitle("Entries");
3350 flistLsCutsOther->Add(hd0D0ptLSCotherPM);
3352 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3353 hMCd0D0ptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3354 hMCd0D0ptLSCotherPM->SetXTitle("MC Impact parameter [#mum] ");
3355 hMCd0D0ptLSCotherPM->SetYTitle("Entries");
3356 flistLsCutsOther->Add(hMCd0D0ptLSCotherPM);
3359 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3360 hd0D0VtxTrueptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3361 hd0D0VtxTrueptLSCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3362 hd0D0VtxTrueptLSCotherPM->SetYTitle("Entries");
3363 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherPM);
3366 strnamept.Append("SBMss_pt");
3369 strtitlept=titlehist;
3370 strtitlept.Append(" Side Bands, ");
3371 strtitlept+=fptbins[i];
3372 strtitlept.Append("<= pt <");
3373 strtitlept+=fptbins[i+1];
3374 strtitlept.Append(" [GeV/c]");
3376 hd0D0ptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3377 hd0D0ptLSCotherSB->SetXTitle("Impact parameter [#mum] ");
3378 hd0D0ptLSCotherSB->SetYTitle("Entries");
3379 flistLsCutsOther->Add(hd0D0ptLSCotherSB);
3381 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3382 hMCd0D0ptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3383 hMCd0D0ptLSCotherSB->SetXTitle("MC Impact parameter [#mum] ");
3384 hMCd0D0ptLSCotherSB->SetYTitle("Entries");
3385 flistLsCutsOther->Add(hMCd0D0ptLSCotherSB);
3387 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3388 hd0D0VtxTrueptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3389 hd0D0VtxTrueptLSCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3390 hd0D0VtxTrueptLSCotherSB->SetYTitle("Entries");
3391 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherSB);
3394 Printf("END OF NOCUTS HISTOS CREATION \n");
3397 //################################################################################################
3399 // HISTOS FOR TIGHT CUTS #
3401 //################################################################################################
3403 //############ TIGHT CUTS SIGNAL HISTOGRAMS ###############
3405 // ####### global properties histo ############
3407 TH2F *hCPtaVSd0d0TGHCsign=new TH2F("hCPtaVSd0d0TGHCsign","hCPtaVSd0d0_TightCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
3408 TH1F *hSecVtxZTGHCsign=new TH1F("hSecVtxZTGHCsign","hSecVtxZ_TightCuts_Signal",1000,-8.,8.);
3409 TH1F *hSecVtxXTGHCsign=new TH1F("hSecVtxXTGHCsign","hSecVtxX_TightCuts_Signal",1000,-3000.,3000.);
3410 TH1F *hSecVtxYTGHCsign=new TH1F("hSecVtxYTGHCsign","hSecVtxY_TightCuts_Signal",1000,-3000.,3000.);
3411 TH2F *hSecVtxXYTGHCsign=new TH2F("hSecVtxXYTGHCsign","hSecVtxXY_TightCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
3412 TH1F *hSecVtxPhiTGHCsign=new TH1F("hSecVtxPhiTGHCsign","hSecVtxPhi_TightCuts_Signal",180,-180.1,180.1);
3413 TH1F *hd0singlTrackTGHCsign=new TH1F("hd0singlTrackTGHCsign","hd0singlTrackTightCuts_Signal",1000,-5000.,5000.);
3414 TH1F *hCPtaTGHCsign=new TH1F("hCPtaTGHCsign","hCPta_TightCuts_Signal",100,-1.,1.);
3415 TH1F *hd0xd0TGHCsign=new TH1F("hd0xd0TGHCsign","hd0xd0_TightCuts_Signal",1000,-100000.,100000.);
3416 TH1F *hMassTrueTGHCsign=new TH1F("hMassTrueTGHCsign","D^{0} MC inv. Mass Tight Cuts Signal(All momenta)",600,1.600,2.200);
3417 TH1F *hMassTGHCsign=new TH1F("hMassTGHCsign","D^{0} inv. Mass Tight Cuts Signal (All momenta)",600,1.600,2.200);
3418 hMassTGHCsign->Sumw2();
3419 TH1F *hMassTrueTGHCsignPM=new TH1F("hMassTrueTGHCsignPM","D^{0} MC inv. Mass Tight Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
3420 TH1F *hMassTGHCsignPM=new TH1F("hMassTGHCsignPM","D^{0} inv. Mass Tight Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
3421 hMassTGHCsignPM->Sumw2();
3422 TH1F *hMassTrueTGHCsignSB=new TH1F("hMassTrueTGHCsignSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Signal(All momenta)",600,1.600,2.200);
3423 TH1F *hMassTGHCsignSB=new TH1F("hMassTGHCsignSB","D^{0} inv. Mass in Side Bands Tight Cuts Signal (All momenta)",600,1.600,2.200);
3424 hMassTGHCsignSB->Sumw2();
3426 flistTghCutsSignal->Add(hCPtaVSd0d0TGHCsign);
3427 flistTghCutsSignal->Add(hSecVtxZTGHCsign);
3428 flistTghCutsSignal->Add(hSecVtxYTGHCsign);
3429 flistTghCutsSignal->Add(hSecVtxXTGHCsign);
3430 flistTghCutsSignal->Add(hSecVtxXYTGHCsign);
3431 flistTghCutsSignal->Add(hSecVtxPhiTGHCsign);
3432 flistTghCutsSignal->Add(hd0singlTrackTGHCsign);
3433 flistTghCutsSignal->Add(hCPtaTGHCsign);
3434 flistTghCutsSignal->Add(hd0xd0TGHCsign);
3435 flistTghCutsSignal->Add(hMassTrueTGHCsign);
3436 flistTghCutsSignal->Add(hMassTGHCsign);
3437 flistTghCutsSignal->Add(hMassTrueTGHCsignPM);
3438 flistTghCutsSignal->Add(hMassTGHCsignPM);
3439 flistTghCutsSignal->Add(hMassTrueTGHCsignSB);
3440 flistTghCutsSignal->Add(hMassTGHCsignSB);
3447 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3448 TH1F *hdcaTGHCsign=new TH1F("hdcaTGHCsign","hdca_TightCuts_Signal",100,0.,1000.);
3449 hdcaTGHCsign->SetXTitle("dca [#mum]");
3450 hdcaTGHCsign->SetYTitle("Entries");
3451 TH1F *hcosthetastarTGHCsign=new TH1F("hcosthetastarTGHCsign","hCosThetaStar_TightCuts_Signal",50,-1.,1.);
3452 hcosthetastarTGHCsign->SetXTitle("cos #theta^{*}");
3453 hcosthetastarTGHCsign->SetYTitle("Entries");
3454 TH1F *hptD0TGHCsign=new TH1F("hptD0TGHCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3455 hptD0TGHCsign->SetXTitle("p_{t} [GeV/c]");
3456 hptD0TGHCsign->SetYTitle("Entries");
3457 TH1F *hptD0VsMaxPtTGHCsign=new TH1F("hptD0VsMaxPtTGHCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3458 TH2F *hptD0PTallsqrtTGHCsign=new TH2F("hptD0PTallsqrtTGHCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3459 TH2F *hptD0PTallTGHCsign=new TH2F("hptD0PTallTGHCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3460 TH2F *hptD0vsptBTGHCsign=new TH2F("hptD0vsptBTGHCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3461 TH2F *hpD0vspBTGHCsign=new TH2F("hpD0vspBTGHCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3462 TH2F *hptD0vsptcquarkTGHCsign=new TH2F("hptD0vsptcquarkTGHCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3463 TH2F *hpD0vspcquarkTGHCsign=new TH2F("hpD0vspcquarkTGHCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3464 flistTghCutsSignal->Add(hdcaTGHCsign);
3465 flistTghCutsSignal->Add(hcosthetastarTGHCsign);
3466 flistTghCutsSignal->Add(hptD0TGHCsign);
3467 flistTghCutsSignal->Add(hptD0VsMaxPtTGHCsign);
3468 flistTghCutsSignal->Add(hptD0PTallsqrtTGHCsign);
3469 flistTghCutsSignal->Add(hptD0PTallTGHCsign);
3470 flistTghCutsSignal->Add(hptD0vsptBTGHCsign);
3471 flistTghCutsSignal->Add(hpD0vspBTGHCsign);
3472 flistTghCutsSignal->Add(hptD0vsptcquarkTGHCsign);
3473 flistTghCutsSignal->Add(hpD0vspcquarkTGHCsign);
3475 TH1F *hd0zD0ptTGHCsign;
3476 TH1F *hInvMassTGHCsign;
3477 TH2F *hInvMassPtTGHCsign=new TH2F("hInvMassPtTGHCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3479 TH1F *hCosPDPBTGHCsign;
3480 TH1F *hCosPcPDTGHCsign;
3481 flistTghCutsSignal->Add(hInvMassPtTGHCsign);
3482 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3483 TH2F *hd0D0VSd0xd0TGHCsignpt;
3484 TH2F *hangletracksVSd0xd0TGHCsignpt;
3485 TH2F *hangletracksVSd0D0TGHCsignpt;
3486 TH1F *hd0xd0TGHCsignpt;
3488 TH2F *hTOFpidTGHCsign=new TH2F("hTOFpidTGHCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3489 flistTghCutsSignal->Add(hTOFpidTGHCsign);
3491 for(Int_t i=0;i<fnbins;i++){
3492 Printf("INSIDE FIRST LOOP FOR TIGHT CUTS HISTO CREATION %d\n", fnbins);
3493 namehist="hd0zD0ptTGHCsign_pt";
3495 titlehist="d0(z) Tight Cuts Signal ptbin=";
3497 hd0zD0ptTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3498 hd0zD0ptTGHCsign->SetXTitle("d_{0}(z) [#mum]");
3499 hd0zD0ptTGHCsign->SetYTitle("Entries");
3500 flistTghCutsSignal->Add(hd0zD0ptTGHCsign);
3502 namehist="hInvMassTGHCsign_pt";
3504 titlehist="Invariant Mass Tight Cuts Signal ptbin=";
3506 hInvMassTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3507 hInvMassTGHCsign->SetXTitle("Invariant Mass [GeV]");
3508 hInvMassTGHCsign->SetYTitle("Entries");
3509 flistTghCutsSignal->Add(hInvMassTGHCsign);
3511 namehist="hetaTGHCsign_pt";
3513 titlehist="eta Tight Cuts Signal ptbin=";
3515 hetaTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3516 hetaTGHCsign->SetXTitle("Pseudorapidity");
3517 hetaTGHCsign->SetYTitle("Entries");
3518 flistTghCutsSignal->Add(hetaTGHCsign);
3520 namehist="hCosPDPBTGHCsign_pt";
3522 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3524 hCosPDPBTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3525 hCosPDPBTGHCsign->SetXTitle("Cosine between D0 momentum and B momentum");
3526 hCosPDPBTGHCsign->SetYTitle("Entries");
3527 flistTghCutsSignal->Add(hCosPDPBTGHCsign);
3529 namehist="hCosPcPDTGHCsign_pt";
3531 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3533 hCosPcPDTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3534 hCosPcPDTGHCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
3535 hCosPcPDTGHCsign->SetYTitle("Entries");
3536 flistTghCutsSignal->Add(hCosPcPDTGHCsign);
3538 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3539 namehist="hd0xd0TGHCsign_pt";
3541 titlehist="d0xd0 Tight Cuts Signal ptbin=";
3543 hd0xd0TGHCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3544 hd0xd0TGHCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3545 hd0xd0TGHCsignpt->SetYTitle("Entries");
3546 flistTghCutsSignal->Add(hd0xd0TGHCsignpt);
3549 namehist="hd0D0VSd0xd0TGHCsign_pt";
3551 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Signal ptbin=";
3553 hd0D0VSd0xd0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3554 hd0D0VSd0xd0TGHCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3555 hd0D0VSd0xd0TGHCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3556 flistTghCutsSignal->Add(hd0D0VSd0xd0TGHCsignpt);
3559 namehist="hangletracksVSd0xd0TGHCsign_pt";
3561 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Signal ptbin=";
3563 hangletracksVSd0xd0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3564 hangletracksVSd0xd0TGHCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3565 hangletracksVSd0xd0TGHCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
3566 flistTghCutsSignal->Add(hangletracksVSd0xd0TGHCsignpt);
3569 namehist="hangletracksVSd0D0TGHCsign_pt";
3571 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Signal ptbin=";
3573 hangletracksVSd0D0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3574 hangletracksVSd0D0TGHCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3575 hangletracksVSd0D0TGHCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
3576 flistTghCutsSignal->Add(hangletracksVSd0D0TGHCsignpt);
3579 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3580 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3589 // ####### d0 D0 histos ############
3590 TH1F *hd0D0TGHCsignPM = new TH1F("hd0D0TGHCsignPM","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3591 hd0D0TGHCsignPM->SetXTitle("Impact parameter [#mum]");
3592 hd0D0TGHCsignPM->SetYTitle("Entries");
3594 TH1F *hd0D0VtxTrueTGHCsignPM = new TH1F("hd0D0VtxTrueTGHCsignPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3595 hd0D0VtxTrueTGHCsignPM->SetXTitle("Impact parameter [#mum]");
3596 hd0D0VtxTrueTGHCsignPM->SetYTitle("Entries");
3598 TH1F *hMCd0D0TGHCsignPM = new TH1F("hMCd0D0TGHCsignPM","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3599 hMCd0D0TGHCsignPM->SetXTitle("MC Impact parameter [#mum]");
3600 hMCd0D0TGHCsignPM->SetYTitle("Entries");
3602 TH1F *hd0D0TGHCsignSB = new TH1F("hd0D0TGHCsignSB","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3603 hd0D0TGHCsignSB->SetXTitle("Impact parameter [#mum]");
3604 hd0D0TGHCsignSB->SetYTitle("Entries");
3606 TH1F *hd0D0VtxTrueTGHCsignSB = new TH1F("hd0D0VtxTrueTGHCsignSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3607 hd0D0VtxTrueTGHCsignSB->SetXTitle("Impact parameter [#mum]");
3608 hd0D0VtxTrueTGHCsignSB->SetYTitle("Entries");
3610 TH1F *hMCd0D0TGHCsignSB = new TH1F("hMCd0D0TGHCsignSB","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3611 hMCd0D0TGHCsignSB->SetXTitle("MC Impact parameter [#mum]");
3612 hMCd0D0TGHCsignSB->SetYTitle("Entries");
3614 flistTghCutsSignal->Add(hd0D0TGHCsignPM);
3615 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignPM);
3616 flistTghCutsSignal->Add(hMCd0D0TGHCsignPM);
3617 flistTghCutsSignal->Add(hd0D0TGHCsignSB);
3618 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignSB);
3619 flistTghCutsSignal->Add(hMCd0D0TGHCsignSB);
3621 TH1F *hd0D0ptTGHCsignPM;
3622 TH1F *hMCd0D0ptTGHCsignPM;
3623 TH1F *hd0D0VtxTrueptTGHCsignPM;
3624 TH1F *hd0D0ptTGHCsignSB;
3625 TH1F *hMCd0D0ptTGHCsignSB;
3626 TH1F *hd0D0VtxTrueptTGHCsignSB;
3627 namehist="hd0D0ptTGHCsign_";
3628 titlehist="D^{0} impact par. plot, Tight Cuts, Signal, ";
3629 for(Int_t i=0;i<fnbins;i++){
3631 strnamept.Append("PkMss_pt");
3634 strtitlept=titlehist;
3635 strtitlept.Append(" Mass Peak, ");
3636 strtitlept+=fptbins[i];
3637 strtitlept.Append("<= pt <");
3638 strtitlept+=fptbins[i+1];
3639 strtitlept.Append(" [GeV/c]");
3641 hd0D0ptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3642 hd0D0ptTGHCsignPM->SetXTitle("Impact parameter [#mum] ");
3643 hd0D0ptTGHCsignPM->SetYTitle("Entries");
3644 flistTghCutsSignal->Add(hd0D0ptTGHCsignPM);
3646 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3647 hMCd0D0ptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3648 hMCd0D0ptTGHCsignPM->SetXTitle("MC Impact parameter [#mum] ");
3649 hMCd0D0ptTGHCsignPM->SetYTitle("Entries");
3650 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignPM);
3653 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3654 hd0D0VtxTrueptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3655 hd0D0VtxTrueptTGHCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3656 hd0D0VtxTrueptTGHCsignPM->SetYTitle("Entries");
3657 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignPM);
3660 strnamept.Append("SBMss_pt");
3663 strtitlept=titlehist;
3664 strtitlept.Append(" Side Bands, ");
3665 strtitlept+=fptbins[i];
3666 strtitlept.Append("<= pt <");
3667 strtitlept+=fptbins[i+1];
3668 strtitlept.Append(" [GeV/c]");
3670 hd0D0ptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3671 hd0D0ptTGHCsignSB->SetXTitle("Impact parameter [#mum] ");
3672 hd0D0ptTGHCsignSB->SetYTitle("Entries");
3673 flistTghCutsSignal->Add(hd0D0ptTGHCsignSB);
3675 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3676 hMCd0D0ptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3677 hMCd0D0ptTGHCsignSB->SetXTitle("MC Impact parameter [#mum] ");
3678 hMCd0D0ptTGHCsignSB->SetYTitle("Entries");
3679 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignSB);
3681 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3682 hd0D0VtxTrueptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3683 hd0D0VtxTrueptTGHCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3684 hd0D0VtxTrueptTGHCsignSB->SetYTitle("Entries");
3685 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignSB);
3689 //############ TIGHT CUTS BACKGROUND HISTOGRAMS ###########
3691 // ######## global properties histos #######
3692 TH2F *hCPtaVSd0d0TGHCback=new TH2F("hCPtaVSd0d0TGHCback","hCPtaVSd0d0_TightCuts_Background",1000,-100000.,100000.,100,-1.,1.);
3693 TH1F *hSecVtxZTGHCback=new TH1F("hSecVtxZTGHCback","hSecVtxZ_TightCuts_Background",1000,-8.,8.);
3694 TH1F *hSecVtxXTGHCback=new TH1F("hSecVtxXTGHCback","hSecVtxX_TightCuts_Background",1000,-3000.,3000.);
3695 TH1F *hSecVtxYTGHCback=new TH1F("hSecVtxYTGHCback","hSecVtxY_TightCuts_Background",1000,-3000.,3000.);
3696 TH2F *hSecVtxXYTGHCback=new TH2F("hSecVtxXYTGHCback","hSecVtxXY_TightCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
3697 TH1F *hSecVtxPhiTGHCback=new TH1F("hSecVtxPhiTGHCback","hSecVtxPhi_TightCuts_Background",180,-180.1,180.1);
3698 TH1F *hd0singlTrackTGHCback=new TH1F("hd0singlTrackTGHCback","hd0singlTrackTightCuts_Back",1000,-5000.,5000.);
3699 TH1F *hCPtaTGHCback=new TH1F("hCPtaTGHCback","hCPta_TightCuts_Background",100,-1.,1.);
3700 TH1F *hd0xd0TGHCback=new TH1F("hd0xd0TGHCback","hd0xd0_TightCuts_Background",1000,-100000.,100000.);
3701 TH1F *hMassTrueTGHCback=new TH1F("hMassTrueTGHCback","D^{0} MC inv. Mass Tight Cuts Background(All momenta)",600,1.600,2.200);
3702 TH1F *hMassTGHCback=new TH1F("hMassTGHCback","D^{0} inv. Mass Tight Cuts Background (All momenta)",600,1.600,2.200);
3703 hMassTGHCback->Sumw2();
3704 TH1F *hMassTrueTGHCbackPM=new TH1F("hMassTrueTGHCbackPM","D^{0} MC inv. Mass Tight Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
3705 TH1F *hMassTGHCbackPM=new TH1F("hMassTGHCbackPM","D^{0} inv. Mass Tight Cuts Background (All momenta), MassPeak",600,1.600,2.200);
3706 hMassTGHCbackPM->Sumw2();
3707 TH1F *hMassTrueTGHCbackSB=new TH1F("hMassTrueTGHCbackSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Backgrround(All momenta)",600,1.600,2.200);
3708 TH1F *hMassTGHCbackSB=new TH1F("hMassTGHCbackSB","D^{0} inv. Mass in Side Bands Tight Cuts Background (All momenta)",600,1.600,2.200);
3709 hMassTGHCbackSB->Sumw2();
3711 flistTghCutsBack->Add(hCPtaVSd0d0TGHCback);
3712 flistTghCutsBack->Add(hSecVtxZTGHCback);
3713 flistTghCutsBack->Add(hSecVtxYTGHCback);
3714 flistTghCutsBack->Add(hSecVtxXTGHCback);
3715 flistTghCutsBack->Add(hSecVtxXYTGHCback);
3716 flistTghCutsBack->Add(hSecVtxPhiTGHCback);
3717 flistTghCutsBack->Add(hd0singlTrackTGHCback);
3718 flistTghCutsBack->Add(hCPtaTGHCback);
3719 flistTghCutsBack->Add(hd0xd0TGHCback);
3720 flistTghCutsBack->Add(hMassTrueTGHCback);
3721 flistTghCutsBack->Add(hMassTGHCback);
3722 flistTghCutsBack->Add(hMassTrueTGHCbackPM);
3723 flistTghCutsBack->Add(hMassTGHCbackPM);
3724 flistTghCutsBack->Add(hMassTrueTGHCbackSB);
3725 flistTghCutsBack->Add(hMassTGHCbackSB);
3733 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3734 TH1F *hdcaTGHCback=new TH1F("hdcaTGHCback","hdca_TightCuts_Backgr",100,0.,1000.);
3735 hdcaTGHCback->SetXTitle("dca [#mum]");
3736 hdcaTGHCback->SetYTitle("Entries");
3737 TH1F *hcosthetastarTGHCback=new TH1F("hcosthetastarTGHCback","hCosThetaStar_TightCuts_Backgr",50,-1.,1.);
3738 hcosthetastarTGHCback->SetXTitle("cos #theta^{*}");
3739 hcosthetastarTGHCback->SetYTitle("Entries");
3740 TH1F *hptD0TGHCback=new TH1F("hptD0TGHCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3741 hptD0TGHCback->SetXTitle("p_{t} [GeV/c]");
3742 hptD0TGHCback->SetYTitle("Entries");
3743 TH1F *hptD0VsMaxPtTGHCback=new TH1F("hptD0VsMaxPtTGHCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3744 TH2F *hptD0PTallsqrtTGHCback=new TH2F("hptD0PTallsqrtTGHCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3745 TH2F *hptD0PTallTGHCback=new TH2F("hptD0PTallTGHCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3746 TH2F *hptD0vsptBTGHCback=new TH2F("hptD0vsptBTGHCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3747 TH2F *hpD0vspBTGHCback=new TH2F("hpD0vspBTGHCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3748 TH2F *hptD0vsptcquarkTGHCback=new TH2F("hptD0vsptcquarkTGHCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3749 TH2F *hpD0vspcquarkTGHCback=new TH2F("hpD0vspcquarkTGHCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3750 flistTghCutsBack->Add(hdcaTGHCback);
3751 flistTghCutsBack->Add(hcosthetastarTGHCback);
3752 flistTghCutsBack->Add(hptD0TGHCback);
3753 flistTghCutsBack->Add(hptD0VsMaxPtTGHCback);
3754 flistTghCutsBack->Add(hptD0PTallsqrtTGHCback);
3755 flistTghCutsBack->Add(hptD0PTallTGHCback);
3756 flistTghCutsBack->Add(hptD0vsptBTGHCback);
3757 flistTghCutsBack->Add(hpD0vspBTGHCback);
3758 flistTghCutsBack->Add(hptD0vsptcquarkTGHCback);
3759 flistTghCutsBack->Add(hpD0vspcquarkTGHCback);
3761 TH1F *hd0zD0ptTGHCback;
3762 TH1F *hInvMassTGHCback;
3763 TH2F *hInvMassPtTGHCback=new TH2F("hInvMassPtTGHCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
3765 TH1F *hCosPDPBTGHCback;
3766 TH1F *hCosPcPDTGHCback;
3767 flistTghCutsBack->Add(hInvMassPtTGHCback);
3768 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3769 TH2F *hd0D0VSd0xd0TGHCbackpt;
3770 TH2F *hangletracksVSd0xd0TGHCbackpt;
3771 TH2F *hangletracksVSd0D0TGHCbackpt;
3772 TH1F *hd0xd0TGHCbackpt;
3774 TH2F *hTOFpidTGHCback=new TH2F("hTOFpidTGHCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3775 flistTghCutsBack->Add(hTOFpidTGHCback);
3778 for(Int_t i=0;i<fnbins;i++){
3779 namehist="hd0zD0ptTGHCback_pt";
3781 titlehist="d0(z) Tight Cuts Backgrm ptbin=";
3783 hd0zD0ptTGHCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3784 hd0zD0ptTGHCback->SetXTitle("d_{0}(z) [#mum]");
3785 hd0zD0ptTGHCback->SetYTitle("Entries");
3786 flistTghCutsBack->Add(hd0zD0ptTGHCback);
3788 namehist="hInvMassTGHCback_pt";
3790 titlehist="Invariant Mass Tight Cuts Backgr ptbin=";
3792 hInvMassTGHCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3793 hInvMassTGHCback->SetXTitle("Invariant Mass [GeV]");
3794 hInvMassTGHCback->SetYTitle("Entries");
3795 flistTghCutsBack->Add(hInvMassTGHCback);
3797 namehist="hetaTGHCback_pt";
3799 titlehist="eta Tight Cuts Backgr ptbin=";
3801 hetaTGHCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3802 hetaTGHCback->SetXTitle("Pseudorapidity");
3803 hetaTGHCback->SetYTitle("Entries");
3804 flistTghCutsBack->Add(hetaTGHCback);
3806 namehist="hCosPDPBTGHCback_pt";
3808 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3810 hCosPDPBTGHCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3811 hCosPDPBTGHCback->SetXTitle("Cosine between D0 momentum and B momentum");
3812 hCosPDPBTGHCback->SetYTitle("Entries");
3813 flistTghCutsBack->Add(hCosPDPBTGHCback);
3815 namehist="hCosPcPDTGHCback_pt";
3817 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3819 hCosPcPDTGHCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3820 hCosPcPDTGHCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
3821 hCosPcPDTGHCback->SetYTitle("Entries");
3822 flistTghCutsBack->Add(hCosPcPDTGHCback);
3824 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3825 namehist="hd0xd0TGHCback_pt";
3827 titlehist="d0xd0 Tight Cuts Back ptbin=";
3829 hd0xd0TGHCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3830 hd0xd0TGHCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3831 hd0xd0TGHCbackpt->SetYTitle("Entries");
3832 flistTghCutsBack->Add(hd0xd0TGHCbackpt);
3835 namehist="hd0D0VSd0xd0TGHCback_pt";
3837 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Back ptbin=";
3839 hd0D0VSd0xd0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3840 hd0D0VSd0xd0TGHCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3841 hd0D0VSd0xd0TGHCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3842 flistTghCutsBack->Add(hd0D0VSd0xd0TGHCbackpt);
3845 namehist="hangletracksVSd0xd0TGHCback_pt";
3847 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Back ptbin=";
3849 hangletracksVSd0xd0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3850 hangletracksVSd0xd0TGHCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3851 hangletracksVSd0xd0TGHCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
3852 flistTghCutsBack->Add(hangletracksVSd0xd0TGHCbackpt);
3855 namehist="hangletracksVSd0D0TGHCback_pt";
3857 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Back ptbin=";
3859 hangletracksVSd0D0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3860 hangletracksVSd0D0TGHCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3861 hangletracksVSd0D0TGHCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
3862 flistTghCutsBack->Add(hangletracksVSd0D0TGHCbackpt);
3866 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3867 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3872 // ####### d0 D0 histos ############
3874 TH1F *hd0D0TGHCbackPM = new TH1F("hd0D0TGHCbackPM","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
3875 hd0D0TGHCbackPM->SetXTitle("Impact parameter [#mum]");
3876 hd0D0TGHCbackPM->SetYTitle("Entries");
3878 TH1F *hd0D0VtxTrueTGHCbackPM = new TH1F("hd0D0VtxTrueTGHCbackPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
3879 hd0D0VtxTrueTGHCbackPM->SetXTitle("Impact parameter [#mum]");
3880 hd0D0VtxTrueTGHCbackPM->SetYTitle("Entries");
3882 TH1F *hMCd0D0TGHCbackPM = new TH1F("hMCd0D0TGHCbackPM","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
3883 hMCd0D0TGHCbackPM->SetXTitle("MC Impact parameter [#mum]");
3884 hMCd0D0TGHCbackPM->SetYTitle("Entries");
3886 TH1F *hd0D0TGHCbackSB = new TH1F("hd0D0TGHCbackSB","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
3887 hd0D0TGHCbackSB->SetXTitle("Impact parameter [#mum]");
3888 hd0D0TGHCbackSB->SetYTitle("Entries");
3890 TH1F *hd0D0VtxTrueTGHCbackSB = new TH1F("hd0D0VtxTrueTGHCbackSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
3891 hd0D0VtxTrueTGHCbackSB->SetXTitle("Impact parameter [#mum]");
3892 hd0D0VtxTrueTGHCbackSB->SetYTitle("Entries");
3894 TH1F *hMCd0D0TGHCbackSB = new TH1F("hMCd0D0TGHCbackSB","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
3895 hMCd0D0TGHCbackSB->SetXTitle("MC Impact parameter [#mum]");
3896 hMCd0D0TGHCbackSB->SetYTitle("Entries");
3898 flistTghCutsBack->Add(hd0D0TGHCbackPM);
3899 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackPM);
3900 flistTghCutsBack->Add(hMCd0D0TGHCbackPM);
3901 flistTghCutsBack->Add(hd0D0TGHCbackSB);
3902 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackSB);
3903 flistTghCutsBack->Add(hMCd0D0TGHCbackSB);
3905 TH1F *hd0D0ptTGHCbackPM;
3906 TH1F *hMCd0D0ptTGHCbackPM;
3907 TH1F *hd0D0VtxTrueptTGHCbackPM;
3908 TH1F *hd0D0ptTGHCbackSB;
3909 TH1F *hMCd0D0ptTGHCbackSB;
3910 TH1F *hd0D0VtxTrueptTGHCbackSB;
3911 namehist="hd0D0ptTGHCback_";
3912 titlehist="D^{0} impact par. plot, Tight Cuts, Background, ";
3913 for(Int_t i=0;i<fnbins;i++){
3915 strnamept.Append("PkMss_pt");
3918 strtitlept=titlehist;
3919 strtitlept.Append(" Mass Peak, ");
3920 strtitlept+=fptbins[i];
3921 strtitlept.Append("<= pt <");
3922 strtitlept+=fptbins[i+1];
3923 strtitlept.Append(" [GeV/c]");
3925 hd0D0ptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3926 hd0D0ptTGHCbackPM->SetXTitle("Impact parameter [#mum] ");
3927 hd0D0ptTGHCbackPM->SetYTitle("Entries");
3928 flistTghCutsBack->Add(hd0D0ptTGHCbackPM);
3930 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3931 hMCd0D0ptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3932 hMCd0D0ptTGHCbackPM->SetXTitle("MC Impact parameter [#mum] ");
3933 hMCd0D0ptTGHCbackPM->SetYTitle("Entries");
3934 flistTghCutsBack->Add(hMCd0D0ptTGHCbackPM);
3937 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3938 hd0D0VtxTrueptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3939 hd0D0VtxTrueptTGHCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3940 hd0D0VtxTrueptTGHCbackPM->SetYTitle("Entries");
3941 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackPM);
3944 strnamept.Append("SBMss_pt");
3947 strtitlept=titlehist;
3948 strtitlept.Append(" Side Bands, ");
3949 strtitlept+=fptbins[i];
3950 strtitlept.Append("<= pt <");
3951 strtitlept+=fptbins[i+1];
3952 strtitlept.Append(" [GeV/c]");
3954 hd0D0ptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3955 hd0D0ptTGHCbackSB->SetXTitle("Impact parameter [#mum] ");
3956 hd0D0ptTGHCbackSB->SetYTitle("Entries");
3957 flistTghCutsBack->Add(hd0D0ptTGHCbackSB);
3959 strnamept.ReplaceAll("hd0D0","hMCd0D0");
3960 hMCd0D0ptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3961 hMCd0D0ptTGHCbackSB->SetXTitle("MC Impact parameter [#mum] ");
3962 hMCd0D0ptTGHCbackSB->SetYTitle("Entries");
3963 flistTghCutsBack->Add(hMCd0D0ptTGHCbackSB);
3965 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
3966 hd0D0VtxTrueptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3967 hd0D0VtxTrueptTGHCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3968 hd0D0VtxTrueptTGHCbackSB->SetYTitle("Entries");
3969 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackSB);
3974 //############ TIGHT CUTS FROMB HISTOGRAMS ###########
3976 //####### global properties histos
3978 TH2F *hCPtaVSd0d0TGHCfromB=new TH2F("hCPtaVSd0d0TGHCfromB","hCPtaVSd0d0_TightCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
3979 TH1F *hSecVtxZTGHCfromB=new TH1F("hSecVtxZTGHCfromB","hSecVtxZ_TightCuts_FromB",1000,-8.,8.);
3980 TH1F *hSecVtxXTGHCfromB=new TH1F("hSecVtxXTGHCfromB","hSecVtxX_TightCuts_FromB",1000,-3000.,3000.);
3981 TH1F *hSecVtxYTGHCfromB=new TH1F("hSecVtxYTGHCfromB","hSecVtxY_TightCuts_FromB",1000,-3000.,3000.);
3982 TH2F *hSecVtxXYTGHCfromB=new TH2F("hSecVtxXYTGHCfromB","hSecVtxXY_TightCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
3983 TH1F *hSecVtxPhiTGHCfromB=new TH1F("hSecVtxPhiTGHCfromB","hSecVtxPhi_TightCuts_FromB",180,-180.1,180.1);
3984 TH1F *hd0singlTrackTGHCfromB=new TH1F("hd0singlTrackTGHCfromB","hd0singlTrackTightCuts_FromB",1000,-5000.,5000.);
3985 TH1F *hCPtaTGHCfromB=new TH1F("hCPtaTGHCfromB","hCPta_TightCuts_FromB",100,-1.,1.);
3986 TH1F *hd0xd0TGHCfromB=new TH1F("hd0xd0TGHCfromB","hd0xd0_TightCuts_FromB",1000,-100000.,100000.);
3987 TH1F *hMassTrueTGHCfromB=new TH1F("hMassTrueTGHCfromB","D^{0} MC inv. Mass Tight Cuts FromB(All momenta)",600,1.600,2.200);
3988 TH1F *hMassTGHCfromB=new TH1F("hMassTGHCfromB","D^{0} inv. Mass Tight Cuts FromB (All momenta)",600,1.600,2.200);
3989 hMassTGHCfromB->Sumw2();
3990 TH1F *hMassTrueTGHCfromBPM=new TH1F("hMassTrueTGHCfromBPM","D^{0} MC inv. Mass Tight Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
3991 TH1F *hMassTGHCfromBPM=new TH1F("hMassTGHCfromBPM","D^{0} inv. Mass Tight Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
3992 hMassTGHCfromBPM->Sumw2();
3993 TH1F *hMassTrueTGHCfromBSB=new TH1F("hMassTrueTGHCfromBSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromB(All momenta)",600,1.600,2.200);
3994 TH1F *hMassTGHCfromBSB=new TH1F("hMassTGHCfromBSB","D^{0} inv. Mass in Side Bands Tight Cuts FromB (All momenta)",600,1.600,2.200);
3995 hMassTGHCfromBSB->Sumw2();
3997 flistTghCutsFromB->Add(hCPtaVSd0d0TGHCfromB);
3998 flistTghCutsFromB->Add(hSecVtxZTGHCfromB);
3999 flistTghCutsFromB->Add(hSecVtxYTGHCfromB);
4000 flistTghCutsFromB->Add(hSecVtxXTGHCfromB);
4001 flistTghCutsFromB->Add(hSecVtxXYTGHCfromB);
4002 flistTghCutsFromB->Add(hSecVtxPhiTGHCfromB);
4003 flistTghCutsFromB->Add(hd0singlTrackTGHCfromB);
4004 flistTghCutsFromB->Add(hCPtaTGHCfromB);
4005 flistTghCutsFromB->Add(hd0xd0TGHCfromB);
4006 flistTghCutsFromB->Add(hMassTrueTGHCfromB);
4007 flistTghCutsFromB->Add(hMassTGHCfromB);
4008 flistTghCutsFromB->Add(hMassTrueTGHCfromBPM);
4009 flistTghCutsFromB->Add(hMassTGHCfromBPM);
4010 flistTghCutsFromB->Add(hMassTrueTGHCfromBSB);
4011 flistTghCutsFromB->Add(hMassTGHCfromBSB);
4015 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4016 TH1F *hdcaTGHCfromB=new TH1F("hdcaTGHCfromB","hdca_TightCuts_FromB",100,0.,1000.);
4017 hdcaTGHCfromB->SetXTitle("dca [#mum]");
4018 hdcaTGHCfromB->SetYTitle("Entries");
4019 TH1F *hcosthetastarTGHCfromB=new TH1F("hcosthetastarTGHCfromB","hCosThetaStar_TightCuts_FromB",50,-1.,1.);
4020 hcosthetastarTGHCfromB->SetXTitle("cos #theta^{*}");
4021 hcosthetastarTGHCfromB->SetYTitle("Entries");
4022 TH1F *hptD0TGHCfromB=new TH1F("hptD0TGHCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4023 hptD0TGHCfromB->SetXTitle("p_{t} [GeV/c]");
4024 hptD0TGHCfromB->SetYTitle("Entries");
4025 TH1F *hptD0VsMaxPtTGHCfromB=new TH1F("hptD0VsMaxPtTGHCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4026 TH2F *hptD0PTallsqrtTGHCfromB=new TH2F("hptD0PTallsqrtTGHCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4027 TH2F *hptD0PTallTGHCfromB=new TH2F("hptD0PTallTGHCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4028 TH2F *hptD0vsptBTGHCfromB=new TH2F("hptD0vsptBTGHCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4029 TH2F *hpD0vspBTGHCfromB=new TH2F("hpD0vspBTGHCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4030 TH2F *hptD0vsptcquarkTGHCfromB=new TH2F("hptD0vsptcquarkTGHCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4031 TH2F *hpD0vspcquarkTGHCfromB=new TH2F("hpD0vspcquarkTGHCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4032 flistTghCutsFromB->Add(hdcaTGHCfromB);
4033 flistTghCutsFromB->Add(hcosthetastarTGHCfromB);
4034 flistTghCutsFromB->Add(hptD0TGHCfromB);
4035 flistTghCutsFromB->Add(hptD0VsMaxPtTGHCfromB);
4036 flistTghCutsFromB->Add(hptD0PTallsqrtTGHCfromB);
4037 flistTghCutsFromB->Add(hptD0PTallTGHCfromB);
4038 flistTghCutsFromB->Add(hptD0vsptBTGHCfromB);
4039 flistTghCutsFromB->Add(hpD0vspBTGHCfromB);
4040 flistTghCutsFromB->Add(hptD0vsptcquarkTGHCfromB);
4041 flistTghCutsFromB->Add(hpD0vspcquarkTGHCfromB);
4043 TH1F *hd0zD0ptTGHCfromB;
4044 TH1F *hInvMassTGHCfromB;
4045 TH2F *hInvMassPtTGHCfromB=new TH2F("hInvMassPtTGHCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4046 TH1F *hetaTGHCfromB;
4047 TH1F *hCosPDPBTGHCfromB;
4048 TH1F *hCosPcPDTGHCfromB;
4049 flistTghCutsFromB->Add(hInvMassPtTGHCfromB);
4050 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4051 TH2F *hd0D0VSd0xd0TGHCfromBpt;
4052 TH2F *hangletracksVSd0xd0TGHCfromBpt;
4053 TH2F *hangletracksVSd0D0TGHCfromBpt;
4054 TH1F *hd0xd0TGHCfromBpt;
4056 TH2F *hTOFpidTGHCfromB=new TH2F("hTOFpidTGHCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4057 flistTghCutsFromB->Add(hTOFpidTGHCfromB);
4060 for(Int_t i=0;i<fnbins;i++){
4061 namehist="hd0zD0ptTGHCfromB_pt";
4063 titlehist="d0(z) Tight Cuts FromBm ptbin=";
4065 hd0zD0ptTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4066 hd0zD0ptTGHCfromB->SetXTitle("d_{0}(z) [#mum]");
4067 hd0zD0ptTGHCfromB->SetYTitle("Entries");
4068 flistTghCutsFromB->Add(hd0zD0ptTGHCfromB);
4070 namehist="hInvMassTGHCfromB_pt";
4072 titlehist="Invariant Mass Tight Cuts FromB ptbin=";
4074 hInvMassTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4075 hInvMassTGHCfromB->SetXTitle("Invariant Mass [GeV]");
4076 hInvMassTGHCfromB->SetYTitle("Entries");
4077 flistTghCutsFromB->Add(hInvMassTGHCfromB);
4079 namehist="hetaTGHCfromB_pt";
4081 titlehist="eta Tight Cuts FromB ptbin=";
4083 hetaTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4084 hetaTGHCfromB->SetXTitle("Pseudorapidity");
4085 hetaTGHCfromB->SetYTitle("Entries");
4086 flistTghCutsFromB->Add(hetaTGHCfromB);
4088 namehist="hCosPDPBTGHCfromB_pt";
4090 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4092 hCosPDPBTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4093 hCosPDPBTGHCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
4094 hCosPDPBTGHCfromB->SetYTitle("Entries");
4095 flistTghCutsFromB->Add(hCosPDPBTGHCfromB);
4097 namehist="hCosPcPDTGHCfromB_pt";
4099 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4101 hCosPcPDTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4102 hCosPcPDTGHCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
4103 hCosPcPDTGHCfromB->SetYTitle("Entries");
4104 flistTghCutsFromB->Add(hCosPcPDTGHCfromB);
4106 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4107 namehist="hd0xd0TGHCfromB_pt";
4109 titlehist="d0xd0 Tight Cuts FromB ptbin=";
4111 hd0xd0TGHCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4112 hd0xd0TGHCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4113 hd0xd0TGHCfromBpt->SetYTitle("Entries");
4114 flistTghCutsFromB->Add(hd0xd0TGHCfromBpt);
4117 namehist="hd0D0VSd0xd0TGHCfromB_pt";
4119 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromB ptbin=";
4121 hd0D0VSd0xd0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4122 hd0D0VSd0xd0TGHCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4123 hd0D0VSd0xd0TGHCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4124 flistTghCutsFromB->Add(hd0D0VSd0xd0TGHCfromBpt);
4127 namehist="hangletracksVSd0xd0TGHCfromB_pt";
4129 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromB ptbin=";
4131 hangletracksVSd0xd0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4132 hangletracksVSd0xd0TGHCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4133 hangletracksVSd0xd0TGHCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
4134 flistTghCutsFromB->Add(hangletracksVSd0xd0TGHCfromBpt);
4137 namehist="hangletracksVSd0D0TGHCfromB_pt";
4139 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts FromB ptbin=";
4141 hangletracksVSd0D0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4142 hangletracksVSd0D0TGHCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4143 hangletracksVSd0D0TGHCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
4144 flistTghCutsFromB->Add(hangletracksVSd0D0TGHCfromBpt);
4147 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4148 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4154 // ######### d0 D0 histos ##############
4155 TH1F *hd0D0TGHCfromBPM = new TH1F("hd0D0TGHCfromBPM","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4156 hd0D0TGHCfromBPM->SetXTitle("Impact parameter [#mum]");
4157 hd0D0TGHCfromBPM->SetYTitle("Entries");
4159 TH1F *hd0D0VtxTrueTGHCfromBPM = new TH1F("hd0D0VtxTrueTGHCfromBPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4160 hd0D0VtxTrueTGHCfromBPM->SetXTitle("Impact parameter [#mum]");
4161 hd0D0VtxTrueTGHCfromBPM->SetYTitle("Entries");
4163 TH1F *hMCd0D0TGHCfromBPM = new TH1F("hMCd0D0TGHCfromBPM","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4164 hMCd0D0TGHCfromBPM->SetXTitle("MC Impact parameter [#mum]");
4165 hMCd0D0TGHCfromBPM->SetYTitle("Entries");
4167 TH1F *hd0D0TGHCfromBSB = new TH1F("hd0D0TGHCfromBSB","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4168 hd0D0TGHCfromBSB->SetXTitle("Impact parameter [#mum]");
4169 hd0D0TGHCfromBSB->SetYTitle("Entries");
4171 TH1F *hd0D0VtxTrueTGHCfromBSB = new TH1F("hd0D0VtxTrueTGHCfromBSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4172 hd0D0VtxTrueTGHCfromBSB->SetXTitle("Impact parameter [#mum]");
4173 hd0D0VtxTrueTGHCfromBSB->SetYTitle("Entries");
4175 TH1F *hMCd0D0TGHCfromBSB = new TH1F("hMCd0D0TGHCfromBSB","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4176 hMCd0D0TGHCfromBSB->SetXTitle("MC Impact parameter [#mum]");
4177 hMCd0D0TGHCfromBSB->SetYTitle("Entries");
4179 flistTghCutsFromB->Add(hd0D0TGHCfromBPM);
4180 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBPM);
4181 flistTghCutsFromB->Add(hMCd0D0TGHCfromBPM);
4182 flistTghCutsFromB->Add(hd0D0TGHCfromBSB);
4183 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBSB);
4184 flistTghCutsFromB->Add(hMCd0D0TGHCfromBSB);
4186 TH1F *hd0D0ptTGHCfromBPM;
4187 TH1F *hMCd0D0ptTGHCfromBPM;
4188 TH1F *hd0D0VtxTrueptTGHCfromBPM;
4189 TH1F *hd0D0ptTGHCfromBSB;
4190 TH1F *hMCd0D0ptTGHCfromBSB;
4191 TH1F *hd0D0VtxTrueptTGHCfromBSB;
4192 namehist="hd0D0ptTGHCfromB_";
4193 titlehist="D^{0} impact par. plot, Tight Cuts, FromB, ";
4194 for(Int_t i=0;i<fnbins;i++){
4196 strnamept.Append("PkMss_pt");
4199 strtitlept=titlehist;
4200 strtitlept.Append(" Mass Peak, ");
4201 strtitlept+=fptbins[i];
4202 strtitlept.Append("<= pt <");
4203 strtitlept+=fptbins[i+1];
4204 strtitlept.Append(" [GeV/c]");
4206 hd0D0ptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4207 hd0D0ptTGHCfromBPM->SetXTitle("Impact parameter [#mum] ");
4208 hd0D0ptTGHCfromBPM->SetYTitle("Entries");
4209 flistTghCutsFromB->Add(hd0D0ptTGHCfromBPM);
4211 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4212 hMCd0D0ptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4213 hMCd0D0ptTGHCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
4214 hMCd0D0ptTGHCfromBPM->SetYTitle("Entries");
4215 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBPM);
4218 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4219 hd0D0VtxTrueptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4220 hd0D0VtxTrueptTGHCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4221 hd0D0VtxTrueptTGHCfromBPM->SetYTitle("Entries");
4222 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBPM);
4225 strnamept.Append("SBMss_pt");
4228 strtitlept=titlehist;
4229 strtitlept.Append(" Side Bands, ");
4230 strtitlept+=fptbins[i];
4231 strtitlept.Append("<= pt <");
4232 strtitlept+=fptbins[i+1];
4233 strtitlept.Append(" [GeV/c]");
4235 hd0D0ptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4236 hd0D0ptTGHCfromBSB->SetXTitle("Impact parameter [#mum] ");
4237 hd0D0ptTGHCfromBSB->SetYTitle("Entries");
4238 flistTghCutsFromB->Add(hd0D0ptTGHCfromBSB);
4240 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4241 hMCd0D0ptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4242 hMCd0D0ptTGHCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
4243 hMCd0D0ptTGHCfromBSB->SetYTitle("Entries");
4244 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBSB);
4246 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4247 hd0D0VtxTrueptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4248 hd0D0VtxTrueptTGHCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4249 hd0D0VtxTrueptTGHCfromBSB->SetYTitle("Entries");
4250 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBSB);
4255 //############ TIGHT CUTS FROM DSTAR HISTOGRAMS ###########
4257 //############## global properties histos
4258 TH2F *hCPtaVSd0d0TGHCfromDstar=new TH2F("hCPtaVSd0d0TGHCfromDstar","hCPtaVSd0d0_TightCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
4259 TH1F *hSecVtxZTGHCfromDstar=new TH1F("hSecVtxZTGHCfromDstar","hSecVtxZ_TightCuts_FromDStar",1000,-8.,8.);
4260 TH1F *hSecVtxXTGHCfromDstar=new TH1F("hSecVtxXTGHCfromDstar","hSecVtxX_TightCuts_FromDStar",1000,-3000.,3000.);
4261 TH1F *hSecVtxYTGHCfromDstar=new TH1F("hSecVtxYTGHCfromDstar","hSecVtxY_TightCuts_FromDStar",1000,-3000.,3000.);
4262 TH2F *hSecVtxXYTGHCfromDstar=new TH2F("hSecVtxXYTGHCfromDstar","hSecVtxXY_TightCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
4263 TH1F *hSecVtxPhiTGHCfromDstar=new TH1F("hSecVtxPhiTGHCfromDstar","hSecVtxPhi_TightCuts_FromDStar",180,-180.1,180.1);
4264 TH1F *hd0singlTrackTGHCfromDstar=new TH1F("hd0singlTrackTGHCfromDstar","hd0singlTrackTightCuts_FromDstar",1000,-5000.,5000.);
4265 TH1F *hCPtaTGHCfromDstar=new TH1F("hCPtaTGHCfromDstar","hCPta_TightCuts_FromDStar",100,-1.,1.);
4266 TH1F *hd0xd0TGHCfromDstar=new TH1F("hd0xd0TGHCfromDstar","hd0xd0_TightCuts_FromDStar",1000,-100000.,100000.);
4267 TH1F *hMassTrueTGHCfromDstar=new TH1F("hMassTrueTGHCfromDstar","D^{0} MC inv. Mass Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
4268 TH1F *hMassTGHCfromDstar=new TH1F("hMassTGHCfromDstar","D^{0} inv. Mass Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
4269 hMassTGHCfromDstar->Sumw2();
4270 TH1F *hMassTrueTGHCfromDstarPM=new TH1F("hMassTrueTGHCfromDstarPM","D^{0} MC inv. Mass Tight Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
4271 TH1F *hMassTGHCfromDstarPM=new TH1F("hMassTGHCfromDstarPM","D^{0} inv. Mass Tight Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
4272 hMassTGHCfromDstarPM->Sumw2();
4273 TH1F *hMassTrueTGHCfromDstarSB=new TH1F("hMassTrueTGHCfromDstarSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
4274 TH1F *hMassTGHCfromDstarSB=new TH1F("hMassTGHCfromDstarSB","D^{0} inv. Mass in Side Bands Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
4275 hMassTGHCfromDstarSB->Sumw2();
4277 flistTghCutsFromDstar->Add(hCPtaVSd0d0TGHCfromDstar);
4278 flistTghCutsFromDstar->Add(hSecVtxZTGHCfromDstar);
4279 flistTghCutsFromDstar->Add(hSecVtxYTGHCfromDstar);
4280 flistTghCutsFromDstar->Add(hSecVtxXTGHCfromDstar);
4281 flistTghCutsFromDstar->Add(hSecVtxXYTGHCfromDstar);
4282 flistTghCutsFromDstar->Add(hSecVtxPhiTGHCfromDstar);
4283 flistTghCutsFromDstar->Add(hd0singlTrackTGHCfromDstar);
4284 flistTghCutsFromDstar->Add(hCPtaTGHCfromDstar);
4285 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstar);
4286 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstar);
4287 flistTghCutsFromDstar->Add(hMassTGHCfromDstar);
4288 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarPM);
4289 flistTghCutsFromDstar->Add(hMassTGHCfromDstarPM);
4290 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarSB);
4291 flistTghCutsFromDstar->Add(hMassTGHCfromDstarSB);
4297 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4298 TH1F *hdcaTGHCfromDstar=new TH1F("hdcaTGHCfromDstar","hdca_TightCuts_FromDstar",100,0.,1000.);
4299 hdcaTGHCfromDstar->SetXTitle("dca [#mum]");
4300 hdcaTGHCfromDstar->SetYTitle("Entries");
4301 TH1F *hcosthetastarTGHCfromDstar=new TH1F("hcosthetastarTGHCfromDstar","hCosThetaStar_TightCuts_FromDstar",50,-1.,1.);
4302 hcosthetastarTGHCfromDstar->SetXTitle("cos #theta^{*}");
4303 hcosthetastarTGHCfromDstar->SetYTitle("Entries");
4304 TH1F *hptD0TGHCfromDstar=new TH1F("hptD0TGHCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4305 hptD0TGHCfromDstar->SetXTitle("p_{t} [GeV/c]");
4306 hptD0TGHCfromDstar->SetYTitle("Entries");
4307 TH1F *hptD0VsMaxPtTGHCfromDstar=new TH1F("hptD0VsMaxPtTGHCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4308 TH2F *hptD0PTallsqrtTGHCfromDstar=new TH2F("hptD0PTallsqrtTGHCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4309 TH2F *hptD0PTallTGHCfromDstar=new TH2F("hptD0PTallTGHCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4310 TH2F *hptD0vsptBTGHCfromDstar=new TH2F("hptD0vsptBTGHCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4311 TH2F *hpD0vspBTGHCfromDstar=new TH2F("hpD0vspBTGHCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4312 TH2F *hptD0vsptcquarkTGHCfromDstar=new TH2F("hptD0vsptcquarkTGHCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4313 TH2F *hpD0vspcquarkTGHCfromDstar=new TH2F("hpD0vspcquarkTGHCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4314 flistTghCutsFromDstar->Add(hdcaTGHCfromDstar);
4315 flistTghCutsFromDstar->Add(hcosthetastarTGHCfromDstar);
4316 flistTghCutsFromDstar->Add(hptD0TGHCfromDstar);
4317 flistTghCutsFromDstar->Add(hptD0VsMaxPtTGHCfromDstar);
4318 flistTghCutsFromDstar->Add(hptD0PTallsqrtTGHCfromDstar);
4319 flistTghCutsFromDstar->Add(hptD0PTallTGHCfromDstar);
4320 flistTghCutsFromDstar->Add(hptD0vsptBTGHCfromDstar);
4321 flistTghCutsFromDstar->Add(hpD0vspBTGHCfromDstar);
4322 flistTghCutsFromDstar->Add(hptD0vsptcquarkTGHCfromDstar);
4323 flistTghCutsFromDstar->Add(hpD0vspcquarkTGHCfromDstar);
4325 TH1F *hd0zD0ptTGHCfromDstar;
4326 TH1F *hInvMassTGHCfromDstar;
4327 TH1F *hetaTGHCfromDstar;
4328 TH2F *hInvMassPtTGHCfromDstar=new TH2F("hInvMassPtTGHCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4329 TH1F *hCosPDPBTGHCfromDstar;
4330 TH1F *hCosPcPDTGHCfromDstar;
4331 flistTghCutsFromDstar->Add(hInvMassPtTGHCfromDstar);
4332 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4333 TH2F *hd0D0VSd0xd0TGHCfromDstarpt;
4334 TH2F *hangletracksVSd0xd0TGHCfromDstarpt;
4335 TH2F *hangletracksVSd0D0TGHCfromDstarpt;
4336 TH1F *hd0xd0TGHCfromDstarpt;
4338 TH2F *hTOFpidTGHCfromDstar=new TH2F("hTOFpidTGHCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4339 flistTghCutsFromDstar->Add(hTOFpidTGHCfromDstar);
4341 for(Int_t i=0;i<fnbins;i++){
4342 namehist="hd0zD0ptTGHCfromDstar_pt";
4344 titlehist="d0(z) Tight Cuts FromDstarm ptbin=";
4346 hd0zD0ptTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4347 hd0zD0ptTGHCfromDstar->SetXTitle("d_{0}(z) [#mum]");
4348 hd0zD0ptTGHCfromDstar->SetYTitle("Entries");
4349 flistTghCutsFromDstar->Add(hd0zD0ptTGHCfromDstar);
4351 namehist="hInvMassTGHCfromDstar_pt";
4353 titlehist="Invariant Mass Tight Cuts FromDstar ptbin=";
4355 hInvMassTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4356 hInvMassTGHCfromDstar->SetXTitle("Invariant Mass [GeV]");
4357 hInvMassTGHCfromDstar->SetYTitle("Entries");
4358 flistTghCutsFromDstar->Add(hInvMassTGHCfromDstar);
4360 namehist="hetaTGHCfromDstar_pt";
4362 titlehist="eta Tight Cuts FromDstar ptbin=";
4364 hetaTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4365 hetaTGHCfromDstar->SetXTitle("Pseudorapidity");
4366 hetaTGHCfromDstar->SetYTitle("Entries");
4367 flistTghCutsFromDstar->Add(hetaTGHCfromDstar);
4369 namehist="hCosPDPBTGHCfromDstar_pt";
4371 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4373 hCosPDPBTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4374 hCosPDPBTGHCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
4375 hCosPDPBTGHCfromDstar->SetYTitle("Entries");
4376 flistTghCutsFromDstar->Add(hCosPDPBTGHCfromDstar);
4378 namehist="hCosPcPDTGHCfromDstar_pt";
4380 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4382 hCosPcPDTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4383 hCosPcPDTGHCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
4384 hCosPcPDTGHCfromDstar->SetYTitle("Entries");
4385 flistTghCutsFromDstar->Add(hCosPcPDTGHCfromDstar);
4387 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4388 namehist="hd0xd0TGHCfromDstar_pt";
4390 titlehist="d0xd0 Tight Cuts FromDstar ptbin=";
4392 hd0xd0TGHCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4393 hd0xd0TGHCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4394 hd0xd0TGHCfromDstarpt->SetYTitle("Entries");
4395 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstarpt);
4398 namehist="hd0D0VSd0xd0TGHCfromDstar_pt";
4400 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromDstar ptbin=";
4402 hd0D0VSd0xd0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4403 hd0D0VSd0xd0TGHCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4404 hd0D0VSd0xd0TGHCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4405 flistTghCutsFromDstar->Add(hd0D0VSd0xd0TGHCfromDstarpt);
4408 namehist="hangletracksVSd0xd0TGHCfromDstar_pt";
4410 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromDstar ptbin=";
4412 hangletracksVSd0xd0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4413 hangletracksVSd0xd0TGHCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4414 hangletracksVSd0xd0TGHCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
4415 flistTghCutsFromDstar->Add(hangletracksVSd0xd0TGHCfromDstarpt);
4418 namehist="hangletracksVSd0D0TGHCfromDstar_pt";
4420 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts FromDstar ptbin=";
4422 hangletracksVSd0D0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4423 hangletracksVSd0D0TGHCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4424 hangletracksVSd0D0TGHCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
4425 flistTghCutsFromDstar->Add(hangletracksVSd0D0TGHCfromDstarpt);
4429 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4430 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4433 //########## d0 D0 histos #############
4434 TH1F *hd0D0TGHCfromDstPM = new TH1F("hd0D0TGHCfromDstarPM","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4435 hd0D0TGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
4436 hd0D0TGHCfromDstPM->SetYTitle("Entries");
4438 TH1F *hd0D0VtxTrueTGHCfromDstPM = new TH1F("hd0D0VtxTrueTGHCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4439 hd0D0VtxTrueTGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
4440 hd0D0VtxTrueTGHCfromDstPM->SetYTitle("Entries");
4442 TH1F *hMCd0D0TGHCfromDstPM = new TH1F("hMCd0D0TGHCfromDstarPM","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4443 hMCd0D0TGHCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
4444 hMCd0D0TGHCfromDstPM->SetYTitle("Entries");
4446 TH1F *hd0D0TGHCfromDstSB = new TH1F("hd0D0TGHCfromDstarSB","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4447 hd0D0TGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
4448 hd0D0TGHCfromDstSB->SetYTitle("Entries");
4450 TH1F *hd0D0VtxTrueTGHCfromDstSB = new TH1F("hd0D0VtxTrueTGHCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4451 hd0D0VtxTrueTGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
4452 hd0D0VtxTrueTGHCfromDstSB->SetYTitle("Entries");
4454 TH1F *hMCd0D0TGHCfromDstSB = new TH1F("hMCd0D0TGHCfromDstarSB","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4455 hMCd0D0TGHCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
4456 hMCd0D0TGHCfromDstSB->SetYTitle("Entries");
4458 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstPM);
4459 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstPM);
4460 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstPM);
4461 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstSB);
4462 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstSB);
4463 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstSB);
4465 TH1F *hd0D0ptTGHCfromDstPM;
4466 TH1F *hMCd0D0ptTGHCfromDstPM;
4467 TH1F *hd0D0VtxTrueptTGHCfromDstPM;
4468 TH1F *hd0D0ptTGHCfromDstSB;
4469 TH1F *hMCd0D0ptTGHCfromDstSB;
4470 TH1F *hd0D0VtxTrueptTGHCfromDstSB;
4471 namehist="hd0D0ptTGHCfromDstar_";
4472 titlehist="D^{0} impact par. plot, Tight Cuts, FromDStar, ";
4473 for(Int_t i=0;i<fnbins;i++){
4475 strnamept.Append("PkMss_pt");
4478 strtitlept=titlehist;
4479 strtitlept.Append(" Mass Peak, ");
4480 strtitlept+=fptbins[i];
4481 strtitlept.Append("<= pt <");
4482 strtitlept+=fptbins[i+1];
4483 strtitlept.Append(" [GeV/c]");
4485 hd0D0ptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4486 hd0D0ptTGHCfromDstPM->SetXTitle("Impact parameter [#mum] ");
4487 hd0D0ptTGHCfromDstPM->SetYTitle("Entries");
4488 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstPM);
4490 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4491 hMCd0D0ptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4492 hMCd0D0ptTGHCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
4493 hMCd0D0ptTGHCfromDstPM->SetYTitle("Entries");
4494 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstPM);
4497 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4498 hd0D0VtxTrueptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4499 hd0D0VtxTrueptTGHCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4500 hd0D0VtxTrueptTGHCfromDstPM->SetYTitle("Entries");
4501 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstPM);
4504 strnamept.Append("SBMss_pt");
4507 strtitlept=titlehist;
4508 strtitlept.Append(" Side Bands, ");
4509 strtitlept+=fptbins[i];
4510 strtitlept.Append("<= pt <");
4511 strtitlept+=fptbins[i+1];
4512 strtitlept.Append(" [GeV/c]");
4514 hd0D0ptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4515 hd0D0ptTGHCfromDstSB->SetXTitle("Impact parameter [#mum] ");
4516 hd0D0ptTGHCfromDstSB->SetYTitle("Entries");
4517 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstSB);
4519 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4520 hMCd0D0ptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4521 hMCd0D0ptTGHCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
4522 hMCd0D0ptTGHCfromDstSB->SetYTitle("Entries");
4523 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstSB);
4525 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4526 hd0D0VtxTrueptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4527 hd0D0VtxTrueptTGHCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4528 hd0D0VtxTrueptTGHCfromDstSB->SetYTitle("Entries");
4529 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstSB);
4533 //############ TIGHT CUTS OTHER HISTOGRAMS ###########
4535 //########### global properties histos ###########
4537 TH2F *hCPtaVSd0d0TGHCother=new TH2F("hCPtaVSd0d0TGHCother","hCPtaVSd0d0_TightCuts_other",1000,-100000.,100000.,100,-1.,1.);
4538 TH1F *hSecVtxZTGHCother=new TH1F("hSecVtxZTGHCother","hSecVtxZ_TightCuts_other",1000,-8.,8.);
4539 TH1F *hSecVtxXTGHCother=new TH1F("hSecVtxXTGHCother","hSecVtxX_TightCuts_other",1000,-3000.,3000.);
4540 TH1F *hSecVtxYTGHCother=new TH1F("hSecVtxYTGHCother","hSecVtxY_TightCuts_other",1000,-3000.,3000.);
4541 TH2F *hSecVtxXYTGHCother=new TH2F("hSecVtxXYTGHCother","hSecVtxXY_TightCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
4542 TH1F *hSecVtxPhiTGHCother=new TH1F("hSecVtxPhiTGHCother","hSecVtxPhi_TightCuts_other",180,-180.1,180.1);
4543 TH1F *hd0singlTrackTGHCother=new TH1F("hd0singlTrackTGHCother","hd0singlTrackTightCuts_Other",1000,-5000.,5000.);
4544 TH1F *hCPtaTGHCother=new TH1F("hCPtaTGHCother","hCPta_TightCuts_other",100,-1.,1.);
4545 TH1F *hd0xd0TGHCother=new TH1F("hd0xd0TGHCother","hd0xd0_TightCuts_other",1000,-100000.,100000.);
4546 TH1F *hMassTrueTGHCother=new TH1F("hMassTrueTGHCother","D^{0} MC inv. Mass Tight Cuts other(All momenta)",600,1.600,2.200);
4547 TH1F *hMassTGHCother=new TH1F("hMassTGHCother","D^{0} inv. Mass Tight Cuts other (All momenta)",600,1.600,2.200);
4548 hMassTGHCother->Sumw2();
4549 TH1F *hMassTrueTGHCotherPM=new TH1F("hMassTrueTGHCotherPM","D^{0} MC inv. Mass Tight Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
4550 TH1F *hMassTGHCotherPM=new TH1F("hMassTGHCotherPM","D^{0} inv. Mass Tight Cuts other (All momenta), MassPeak",600,1.600,2.200);
4551 hMassTGHCotherPM->Sumw2();
4552 TH1F *hMassTrueTGHCotherSB=new TH1F("hMassTrueTGHCotherSB","D^{0} MC inv. Mass in Side Bands Tight Cuts other(All momenta)",600,1.600,2.200);
4553 TH1F *hMassTGHCotherSB=new TH1F("hMassTGHCotherSB","D^{0} inv. Mass in Side Bands Tight Cuts other (All momenta)",600,1.600,2.200);
4554 hMassTGHCotherSB->Sumw2();
4556 flistTghCutsOther->Add(hCPtaVSd0d0TGHCother);
4557 flistTghCutsOther->Add(hSecVtxZTGHCother);
4558 flistTghCutsOther->Add(hSecVtxYTGHCother);
4559 flistTghCutsOther->Add(hSecVtxXTGHCother);
4560 flistTghCutsOther->Add(hSecVtxXYTGHCother);
4561 flistTghCutsOther->Add(hSecVtxPhiTGHCother);
4562 flistTghCutsOther->Add(hd0singlTrackTGHCother);
4563 flistTghCutsOther->Add(hCPtaTGHCother);
4564 flistTghCutsOther->Add(hd0xd0TGHCother);
4565 flistTghCutsOther->Add(hMassTrueTGHCother);
4566 flistTghCutsOther->Add(hMassTGHCother);
4567 flistTghCutsOther->Add(hMassTrueTGHCotherPM);
4568 flistTghCutsOther->Add(hMassTGHCotherPM);
4569 flistTghCutsOther->Add(hMassTrueTGHCotherSB);
4570 flistTghCutsOther->Add(hMassTGHCotherSB);
4575 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4576 TH1F *hdcaTGHCother=new TH1F("hdcaTGHCother","hdca_TightCuts_Other",100,0.,1000.);
4577 hdcaTGHCother->SetXTitle("dca [#mum]");
4578 hdcaTGHCother->SetYTitle("Entries");
4579 TH1F *hcosthetastarTGHCother=new TH1F("hcosthetastarTGHCother","hCosThetaStar_TightCuts_Other",50,-1.,1.);
4580 hcosthetastarTGHCother->SetXTitle("cos #theta^{*}");
4581 hcosthetastarTGHCother->SetYTitle("Entries");
4582 TH1F *hptD0TGHCother=new TH1F("hptD0TGHCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4583 hptD0TGHCother->SetXTitle("p_{t} [GeV/c]");
4584 hptD0TGHCother->SetYTitle("Entries");
4585 TH1F *hptD0VsMaxPtTGHCother=new TH1F("hptD0VsMaxPtTGHCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4586 TH2F *hptD0PTallsqrtTGHCother=new TH2F("hptD0PTallsqrtTGHCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4587 TH2F *hptD0PTallTGHCother=new TH2F("hptD0PTallTGHCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4588 TH2F *hptD0vsptBTGHCother=new TH2F("hptD0vsptBTGHCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4589 TH2F *hpD0vspBTGHCother=new TH2F("hpD0vspBTGHCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4590 TH2F *hptD0vsptcquarkTGHCother=new TH2F("hptD0vsptcquarkTGHCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4591 TH2F *hpD0vspcquarkTGHCother=new TH2F("hpD0vspcquarkTGHCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4592 flistTghCutsOther->Add(hdcaTGHCother);
4593 flistTghCutsOther->Add(hcosthetastarTGHCother);
4594 flistTghCutsOther->Add(hptD0TGHCother);
4595 flistTghCutsOther->Add(hptD0VsMaxPtTGHCother);
4596 flistTghCutsOther->Add(hptD0PTallsqrtTGHCother);
4597 flistTghCutsOther->Add(hptD0PTallTGHCother);
4598 flistTghCutsOther->Add(hptD0vsptBTGHCother);
4599 flistTghCutsOther->Add(hpD0vspBTGHCother);
4600 flistTghCutsOther->Add(hptD0vsptcquarkTGHCother);
4601 flistTghCutsOther->Add(hpD0vspcquarkTGHCother);
4603 TH1F *hd0zD0ptTGHCother;
4604 TH1F *hInvMassTGHCother;
4605 TH2F *hInvMassPtTGHCother=new TH2F("hInvMassPtTGHCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
4606 TH1F *hetaTGHCother;
4607 TH1F *hCosPDPBTGHCother;
4608 TH1F *hCosPcPDTGHCother;
4609 flistTghCutsOther->Add(hInvMassPtTGHCother);
4610 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4611 TH2F *hd0D0VSd0xd0TGHCotherpt;
4612 TH2F *hangletracksVSd0xd0TGHCotherpt;
4613 TH2F *hangletracksVSd0D0TGHCotherpt;
4614 TH1F *hd0xd0TGHCotherpt;
4616 TH2F *hTOFpidTGHCother=new TH2F("hTOFpidTGHCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4617 flistTghCutsOther->Add(hTOFpidTGHCother);
4619 for(Int_t i=0;i<fnbins;i++){
4620 namehist="hd0zD0ptTGHCother_pt";
4622 titlehist="d0(z) Tight Cuts Otherm ptbin=";
4624 hd0zD0ptTGHCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4625 hd0zD0ptTGHCother->SetXTitle("d_{0}(z) [#mum]");
4626 hd0zD0ptTGHCother->SetYTitle("Entries");
4627 flistTghCutsOther->Add(hd0zD0ptTGHCother);
4629 namehist="hInvMassTGHCother_pt";
4631 titlehist="Invariant Mass Tight Cuts Other ptbin=";
4633 hInvMassTGHCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4634 hInvMassTGHCother->SetXTitle("Invariant Mass [GeV]");
4635 hInvMassTGHCother->SetYTitle("Entries");
4636 flistTghCutsOther->Add(hInvMassTGHCother);
4638 namehist="hetaTGHCother_pt";
4640 titlehist="eta Tight Cuts Other ptbin=";
4642 hetaTGHCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4643 hetaTGHCother->SetXTitle("Pseudorapidity");
4644 hetaTGHCother->SetYTitle("Entries");
4645 flistTghCutsOther->Add(hetaTGHCother);
4647 namehist="hCosPDPBTGHCother_pt";
4649 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4651 hCosPDPBTGHCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4652 hCosPDPBTGHCother->SetXTitle("Cosine between D0 momentum and B momentum");
4653 hCosPDPBTGHCother->SetYTitle("Entries");
4654 flistTghCutsOther->Add(hCosPDPBTGHCother);
4656 namehist="hCosPcPDTGHCother_pt";
4658 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4660 hCosPcPDTGHCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4661 hCosPcPDTGHCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
4662 hCosPcPDTGHCother->SetYTitle("Entries");
4663 flistTghCutsOther->Add(hCosPcPDTGHCother);
4665 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4666 namehist="hd0xd0TGHCother_pt";
4668 titlehist="d0xd0 Tight Cuts Other ptbin=";
4670 hd0xd0TGHCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4671 hd0xd0TGHCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4672 hd0xd0TGHCotherpt->SetYTitle("Entries");
4673 flistTghCutsOther->Add(hd0xd0TGHCotherpt);
4676 namehist="hd0D0VSd0xd0TGHCother_pt";
4678 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Other ptbin=";
4680 hd0D0VSd0xd0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4681 hd0D0VSd0xd0TGHCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4682 hd0D0VSd0xd0TGHCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4683 flistTghCutsOther->Add(hd0D0VSd0xd0TGHCotherpt);
4686 namehist="hangletracksVSd0xd0TGHCother_pt";
4688 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Other ptbin=";
4690 hangletracksVSd0xd0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4691 hangletracksVSd0xd0TGHCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4692 hangletracksVSd0xd0TGHCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
4693 flistTghCutsOther->Add(hangletracksVSd0xd0TGHCotherpt);
4696 namehist="hangletracksVSd0D0TGHCother_pt";
4698 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Other ptbin=";
4700 hangletracksVSd0D0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4701 hangletracksVSd0D0TGHCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4702 hangletracksVSd0D0TGHCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
4703 flistTghCutsOther->Add(hangletracksVSd0D0TGHCotherpt);
4706 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4707 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4713 //############# d0 D0 histos ###############Ã
4714 TH1F *hd0D0TGHCotherPM = new TH1F("hd0D0TGHCotherPM","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
4715 hd0D0TGHCotherPM->SetXTitle("Impact parameter [#mum]");
4716 hd0D0TGHCotherPM->SetYTitle("Entries");
4718 TH1F *hd0D0VtxTrueTGHCotherPM = new TH1F("hd0D0VtxTrueTGHCotherPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
4719 hd0D0VtxTrueTGHCotherPM->SetXTitle("Impact parameter [#mum]");
4720 hd0D0VtxTrueTGHCotherPM->SetYTitle("Entries");
4722 TH1F *hMCd0D0TGHCotherPM = new TH1F("hMCd0D0TGHCotherPM","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
4723 hMCd0D0TGHCotherPM->SetXTitle("MC Impact parameter [#mum]");
4724 hMCd0D0TGHCotherPM->SetYTitle("Entries");
4726 TH1F *hd0D0TGHCotherSB = new TH1F("hd0D0TGHCotherSB","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
4727 hd0D0TGHCotherSB->SetXTitle("Impact parameter [#mum]");
4728 hd0D0TGHCotherSB->SetYTitle("Entries");
4730 TH1F *hd0D0VtxTrueTGHCotherSB = new TH1F("hd0D0VtxTrueTGHCotherSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
4731 hd0D0VtxTrueTGHCotherSB->SetXTitle("Impact parameter [#mum]");
4732 hd0D0VtxTrueTGHCotherSB->SetYTitle("Entries");
4734 TH1F *hMCd0D0TGHCotherSB = new TH1F("hMCd0D0TGHCotherSB","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
4735 hMCd0D0TGHCotherSB->SetXTitle("MC Impact parameter [#mum]");
4736 hMCd0D0TGHCotherSB->SetYTitle("Entries");
4738 flistTghCutsOther->Add(hd0D0TGHCotherPM);
4739 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherPM);
4740 flistTghCutsOther->Add(hMCd0D0TGHCotherPM);
4741 flistTghCutsOther->Add(hd0D0TGHCotherSB);
4742 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherSB);
4743 flistTghCutsOther->Add(hMCd0D0TGHCotherSB);
4745 TH1F *hd0D0ptTGHCotherPM;
4746 TH1F *hMCd0D0ptTGHCotherPM;
4747 TH1F *hd0D0VtxTrueptTGHCotherPM;
4748 TH1F *hd0D0ptTGHCotherSB;
4749 TH1F *hMCd0D0ptTGHCotherSB;
4750 TH1F *hd0D0VtxTrueptTGHCotherSB;
4751 namehist="hd0D0ptTGHCother_";
4752 titlehist="D^{0} impact par. plot, Tight Cuts, Other, ";
4753 for(Int_t i=0;i<fnbins;i++){
4755 strnamept.Append("PkMss_pt");
4758 strtitlept=titlehist;
4759 strtitlept.Append(" Mass Peak, ");
4760 strtitlept+=fptbins[i];
4761 strtitlept.Append("<= pt <");
4762 strtitlept+=fptbins[i+1];
4763 strtitlept.Append(" [GeV/c]");
4765 hd0D0ptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4766 hd0D0ptTGHCotherPM->SetXTitle("Impact parameter [#mum] ");
4767 hd0D0ptTGHCotherPM->SetYTitle("Entries");
4768 flistTghCutsOther->Add(hd0D0ptTGHCotherPM);
4770 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4771 hMCd0D0ptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4772 hMCd0D0ptTGHCotherPM->SetXTitle("MC Impact parameter [#mum] ");
4773 hMCd0D0ptTGHCotherPM->SetYTitle("Entries");
4774 flistTghCutsOther->Add(hMCd0D0ptTGHCotherPM);
4777 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4778 hd0D0VtxTrueptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4779 hd0D0VtxTrueptTGHCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4780 hd0D0VtxTrueptTGHCotherPM->SetYTitle("Entries");
4781 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherPM);
4784 strnamept.Append("SBMss_pt");
4787 strtitlept=titlehist;
4788 strtitlept.Append(" Side Bands, ");
4789 strtitlept+=fptbins[i];
4790 strtitlept.Append("<= pt <");
4791 strtitlept+=fptbins[i+1];
4792 strtitlept.Append(" [GeV/c]");
4794 hd0D0ptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4795 hd0D0ptTGHCotherSB->SetXTitle("Impact parameter [#mum] ");
4796 hd0D0ptTGHCotherSB->SetYTitle("Entries");
4797 flistTghCutsOther->Add(hd0D0ptTGHCotherSB);
4799 strnamept.ReplaceAll("hd0D0","hMCd0D0");
4800 hMCd0D0ptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4801 hMCd0D0ptTGHCotherSB->SetXTitle("MC Impact parameter [#mum] ");
4802 hMCd0D0ptTGHCotherSB->SetYTitle("Entries");
4803 flistTghCutsOther->Add(hMCd0D0ptTGHCotherSB);
4805 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
4806 hd0D0VtxTrueptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4807 hd0D0VtxTrueptTGHCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4808 hd0D0VtxTrueptTGHCotherSB->SetYTitle("Entries");
4809 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherSB);
4811 Printf("AFTER DATA HISTOS CREATION \n");
4814 //________________________________________________________________________
4815 void AliAnalysisTaskSECharmFraction::UserExec(Option_t */*option*/)
4817 // Execute analysis for current event:
4818 // heavy flavor candidates association to MC truth
4820 AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
4822 Printf("ERROR: aod not available");
4825 TClonesArray *arrayD0toKpi;
4826 if(!aod && AODEvent() && IsStandardAOD()) {
4827 // In case there is an AOD handler writing a standard AOD, use the AOD
4828 // event in memory rather than the input (ESD) event.
4829 aod = dynamic_cast<AliAODEvent*> (AODEvent());
4830 // in this case the braches in the deltaAOD (AliAOD.VertexingHF.root)
4831 // have to taken from the AOD event hold by the AliAODExtension
4832 AliAODHandler* aodHandler = (AliAODHandler*)
4833 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
4835 if(aodHandler->GetExtensions()) {
4836 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root");
4837 AliAODEvent* aodFromExt = ext->GetAOD();
4839 // load 2Prong Like Sign
4840 arrayD0toKpi =(TClonesArray*)aodFromExt->GetList()->FindObject("LikeSign2Prong");
4842 Printf("AliAnalysisTaskSECharmFraction::UserExec: LikeSign branch not found!\n");
4847 // load D0->Kpi candidates
4848 arrayD0toKpi = (TClonesArray*)aodFromExt->GetList()->FindObject("D0toKpi");
4850 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
4857 // load 2Prong Like Sign
4858 arrayD0toKpi =(TClonesArray*)aod->GetList()->FindObject("LikeSign2Prong");
4860 Printf("AliAnalysisTaskSECharmFraction::UserExec: LikeSign branch not found!\n");
4865 // load D0->Kpi candidates
4866 arrayD0toKpi = (TClonesArray*)aod->GetList()->FindObject("D0toKpi");
4868 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
4876 printf("AliAnalysisTaskSECharmFraction::UserExec: input branch not found!\n");
4881 // fix for temporary bug in ESDfilter
4882 // the AODs with null vertex pointer didn't pass the PhysSel
4883 if(!aod->GetPrimaryVertex()) return;
4885 // AOD primary vertex
4886 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
4887 TClonesArray *arrayMC=0x0;
4888 AliAODMCHeader *aodmcHeader=0x0;
4889 Double_t vtxTrue[3];
4892 // load MC particles
4894 (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
4896 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC particles branch not found!\n");
4901 (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
4903 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC header branch not found!\n");
4906 // MC primary vertex
4907 aodmcHeader->GetVertex(vtxTrue);
4908 // FILL HISTOS FOR D0 mesons, c quarks and D0 from B properties
4909 FillHistoMCproperties(arrayMC);
4911 //histogram filled with 1 for every AOD
4913 PostData(1,fNentries);
4916 //Printf("There are %d tracks in this event", aod->GetNumberOfTracks());
4917 // Int_t nTotHF=0,nTotDstar=0,nTot3Prong=0;
4918 Int_t nTotD0toKpi=0;
4919 Int_t okd0tight,okd0bartight,okd0loose,okd0barloose,okd0tightnopid,okd0bartightnopid;
4920 Bool_t isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,isSideBand;
4921 Bool_t isinacceptance;
4922 Int_t signallevel=-1;
4924 // const Int_t nptbins=10;
4925 Double_t invMassD0,invMassD0bar,ptD0,massmumtrue;
4928 AliAODRecoDecayHF *aodDMC=0x0;// to be used to create a fake true sec vertex
4929 // make trkIDtoEntry register (temporary)
4930 Int_t trkIDtoEntry[100000];
4936 for(Int_t it=0;it<aod->GetNumberOfTracks();it++) {
4937 AliAODTrack *track = aod->GetTrack(it);
4938 fptAll+=track->Pt();
4939 fptAllSq+=track->Pt()*track->Pt();
4940 if(track->Pt()>fptMax[0]){
4941 fptMax[2]=fptMax[1];
4942 fptMax[1]=fptMax[0];
4943 fptMax[0]=track->Pt();
4945 else if(track->Pt()>fptMax[1]){
4946 fptMax[2]=fptMax[1];
4947 fptMax[1]=track->Pt();
4949 else if(track->Pt()>fptMax[2])fptMax[2]=track->Pt();
4950 if(track->GetID()<0) {
4951 //printf("Track ID <0, id= %d\n",track->GetID());
4954 trkIDtoEntry[track->GetID()]=it;
4958 // loop over D0->Kpi candidates
4959 Int_t nD0toKpi = arrayD0toKpi->GetEntriesFast();
4960 nTotD0toKpi += nD0toKpi;
4961 // cout<<"Number of D0->Kpi: "<<nD0toKpi<<endl;
4963 for (Int_t iD0toKpi = 0; iD0toKpi < nD0toKpi; iD0toKpi++) {
4964 if(aodDMC!=0x0)delete aodDMC;
4968 isSideBandD0=kFALSE;
4969 isSideBandD0bar=kFALSE;
4971 isinacceptance=kFALSE;
4975 okd0bartightnopid=0;
4982 AliAODRecoDecayHF2Prong *d = (AliAODRecoDecayHF2Prong*)arrayD0toKpi->UncheckedAt(iD0toKpi);
4983 Bool_t unsetvtx=kFALSE;
4984 if(!d->GetOwnPrimaryVtx()) {
4985 d->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
4990 //############# SIGNALLEVEL DESCRIPTION #####################
4991 // TO BE CONSIDERED WITH GREAT CARE, only =0 and =1 (and MC selection when possible) are reliable
4992 // For the other signallevel numbers the order in which cut are applied is relevant
4993 // signallevel =0,1: is selected as signal,is signal (MC)
4994 // from 2 to 20: MC information
4995 // from 21 to 29: "detector" selection (acceptance, pt, refits)
4996 // 21: acceptance, eta (N.B. before 24 May was signallevel=9)
4997 // 22: isinfiducialacceptance
4998 // 23: single track p
4999 // 25: ITS cluster selection
5002 // 28: no (TOF||TPC) pid information (no kTOFpid,kTOFout,kTIME,kTPCpid,...)
5004 // from 30 to 39: PID selection
5005 // 31: no Kaon compatible tracks found between daughters
5006 // 32: no Kaon identified tracks found (strong sel. at low momenta)
5007 // 33: both mass hypotheses are rejected
5008 // from 40 to 45: standard cut selection
5009 // from 45 to 49: special cut signal kinematic selection
5011 // from 50 to 60: special cut selection
5012 // 51: Nvtx contributors
5013 // 52: angle between tracks
5014 // 53: vtx not reconstructed when excludind daughters
5015 // 54: track not propagated to dca when the vtx is recalculated
5016 // 55: single track normalized impact par.
5017 // 56: normalized d0xd0
5018 // 57: d0xd0 cut with vtx on the fly
5019 // 58,59: cut normalized decay lenght and decay lenght
5020 //####### DATA SELECTION ####################################
5022 // ######## CHECK FOR ACCEPTANCE ##########
5024 ptbin=fCutsTight->PtBin(ptD0);
5025 Double_t relangle=d->ProngsRelAngle(0,1);
5026 // UPV: HERE TO CHANGE WITH:
5027 // isinacceptance = (TMath::Abs(d->EtaProng(0))<fAcceptanceCuts[0]&&TMath::Abs(d->EtaProng(1))<fAcceptanceCuts[0]); //eta acceptance
5029 //######## INVARIANT MASS SELECTION ###############
5030 CheckInvMassD0(d,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar);
5031 if((isSideBandD0||isSideBandD0bar)&&!(isPeakD0||isPeakD0bar))isSideBand=kTRUE;// TEMPORARY, NOT DONE IN THE METHOD CALLED ABOVE ONLY FOR FURTHER SIDE BAND STUDY
5033 // INVESTIGATE SIGNAL TYPE : ACCESS TO MC INFORMATION
5035 aodDMC=GetD0toKPiSignalType(d,arrayMC,signallevel,massmumtrue,vtxTrue);
5038 // ACCOUNT FOR ETA & ITS CLUSTER SELECTION
5039 isinacceptance=fCutsTight->AreDaughtersSelected(d);
5040 if(!isinacceptance)signallevel=21;
5041 if(!fCutsTight->IsInFiducialAcceptance(ptD0,d->Y(421))){
5042 isinacceptance=kFALSE;
5046 //###################################################################################
5048 // ################ SPECIAL ADDITIONAL CUTS FOR SIGNAL SEARCH #######################
5049 // UPV: ITS CLUSTER SELECTION ALREADY DONE , COUNT THEM THE SAME
5051 Int_t nlayers=0,nSPD=0,nSSD=0;
5054 for(Int_t idg=0;idg<d->GetNDaughters();idg++){
5056 AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(idg);
5057 if(TESTBIT(dgTrack->GetITSClusterMap(),5)){
5061 if(TESTBIT(dgTrack->GetITSClusterMap(),4)){
5065 if(TESTBIT(dgTrack->GetITSClusterMap(),3))nlayers++;
5066 if(TESTBIT(dgTrack->GetITSClusterMap(),2))nlayers++;
5067 if(TESTBIT(dgTrack->GetITSClusterMap(),1)){
5071 if(TESTBIT(dgTrack->GetITSClusterMap(),0)){
5078 // ######## NOW SELECTION ##########
5079 if(dgTrack->Pt()<0.5){
5080 // ########## k-Both selection ##############
5081 if(nlayers<5)signallevel=25;
5082 if(nSPD<2)signallevel=25;
5084 else if(dgTrack->Pt()<1.){
5085 // ########## 4 its clust (1 SSD,1 SPD) && k-Any selection ##############
5086 if(nlayers<4)signallevel=25;
5087 if(nSSD<1)signallevel=25;
5088 if(nSPD<1)signallevel=25;
5091 // ########## 3 its clust (1 SPD, 1 SSD) && k-Any selection ##########
5092 if(nlayers<3)signallevel=25;
5093 if(nSSD<1)signallevel=25;
5094 if(nSPD<1)signallevel=25;
5104 //########### END OF SPECIAL CUTS ######################
5106 //###############################################################
5109 // Check tighter cuts w/o PID:
5111 Int_t ncont=vtx1->GetNContributors();
5112 if(vtx1->GetNContributors()<1)signallevel=51;
5113 Bool_t defaultNC=SpecialSelD0(d,nVtx);
5114 Bool_t iscutusingpid=fCutsTight->GetIsUsePID();
5115 fCutsTight->SetUsePID(kFALSE);
5116 Int_t isSelectedTightNoPid=fCutsTight->IsSelected(d,AliRDHFCuts::kAll,aod);
5117 switch(isSelectedTightNoPid){
5119 okd0tightnopid=kFALSE;
5120 okd0bartightnopid=kFALSE;
5123 okd0tightnopid=kTRUE;
5124 okd0bartightnopid=kFALSE;
5127 okd0tightnopid=kFALSE;
5128 okd0bartightnopid=kTRUE;
5131 okd0tightnopid=kTRUE;
5132 okd0bartightnopid=kTRUE;
5135 okd0tightnopid=kTRUE;
5136 okd0bartightnopid=kTRUE;
5141 okd0tightnopid=kFALSE;
5142 okd0bartightnopid=kFALSE;
5144 // signallevel=fCutsTight->GetSelectionStep();
5145 fSignalType->Fill(signallevel);
5150 // ######### SPECIAL SELECTION PID ##############
5151 fCutsTight->SetUsePID(iscutusingpid);
5152 Int_t isSelectedPid=fCutsTight->IsSelected(d,AliRDHFCuts::kPID,aod);
5153 Int_t isSelectedTight=fCutsTight->CombineSelectionLevels(3,isSelectedTightNoPid,isSelectedPid);
5154 switch(isSelectedTight){
5157 okd0bartight=kFALSE;
5161 okd0bartight=kFALSE;
5181 if(((isPeakD0&&okd0tight)||(isPeakD0bar&&okd0bartight))&&isinacceptance)fSignalTypeTghCuts->Fill(signallevel);
5183 // CHECK LOOSER CUTS
5184 //ptbin=SetStandardCuts(ptD0,flargeInvMassCut);
5186 // d->SelectD0(fCutsLoose->GetD0toKpiCuts(),okd0loose,okd0barloose);
5187 Int_t isSelectedLoose=fCutsLoose->IsSelected(d,AliRDHFCuts::kAll,aod);
5188 switch(isSelectedLoose){
5191 okd0barloose=kFALSE;
5195 okd0barloose=kFALSE;
5212 okd0barloose=kFALSE;
5217 if(((isPeakD0&&okd0loose)||(isPeakD0bar&&okd0barloose))&&isinacceptance)fSignalTypeLsCuts->Fill(signallevel);
5221 //################### FILL HISTOS ########################
5222 //################################################################
5224 //######## improvement: SPEED HERE CAN BE IMPROVED: CALCULATE ONCE AND FOR ALL
5225 // CANDIDATE VARIABLES
5229 //NO CUTS Case: force okD0 and okD0bar = kTRUE
5230 // special cuts are applied also in the "NO Cuts" case
5233 // SPECIAL modification:
5234 // IMPORTANT!!!!!! ONLY FOR TEMPORARY CONVENIENCE
5235 // IF fusePID is kTRUE, NO CUTS BECOMES NO PID case with tight cuts (fill signal histos when 30<=signallevel<40 )!!!!!!!!!!
5237 okd0tightnopid=defaultNC;
5238 okd0bartightnopid=defaultNC;
5240 // ############ MISALIGN HERE: TEMPORARY SOLUTION ##########
5241 //d->Misalign("full14");
5242 if(signallevel==1||signallevel==0)FillHistos(d,flistNoCutsSignal,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue); // else if(fusePID&&signallevel>=30&&signallevel<40)FillHistos(d,flistNoCutsSignal,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);// OLD LINE, COULD BE REMOVED
5243 else if(signallevel==2)FillHistos(d,flistNoCutsFromDstar,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5244 else if(signallevel==3||signallevel==4)FillHistos(d,flistNoCutsFromB,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5245 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10||signallevel==9)FillHistos(d,flistNoCutsBack,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5246 else if(signallevel==5||signallevel==6)FillHistos(d,flistNoCutsOther,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5251 if(signallevel==1||signallevel==0)FillHistos(d,flistLsCutsSignal,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5252 else if(signallevel==2)FillHistos(d,flistLsCutsFromDstar,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5253 else if(signallevel==3||signallevel==4)FillHistos(d,flistLsCutsFromB,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5254 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10)FillHistos(d,flistLsCutsBack,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5255 else if(signallevel==5||signallevel==6)FillHistos(d,flistLsCutsOther,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5258 if(signallevel==1||signallevel==0)FillHistos(d,flistTghCutsSignal,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5259 else if(signallevel==2)FillHistos(d,flistTghCutsFromDstar,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5260 else if(signallevel==3||signallevel==4)FillHistos(d,flistTghCutsFromB,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5261 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10)FillHistos(d,flistTghCutsBack,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5262 else if(signallevel==5||signallevel==6)FillHistos(d,flistTghCutsOther,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
5267 // ######## PRINTING INFO FOR D0-like candidate
5269 if(nSPD==2&&ptD0>2.){
5270 if((okd0tight&&TMath::Abs(invMassD0-1.864)<0.01)||(okd0bartight&&TMath::Abs(invMassD0bar-1.864)<0.01)){
5271 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());
5272 printf("PrimVtx NContributors: %d \n Prongs Rel Angle: %f \n \n",ncont,relangle);
5280 if(unsetvtx) d->UnsetOwnPrimaryVtx();
5284 // ####################### POST OUTPUT TLIST DATA #########################
5285 // ####### histo for #AOD entries already posted
5287 PostData(2,fSignalType);
5288 PostData(3,fSignalTypeLsCuts);
5289 PostData(4,fSignalTypeTghCuts);
5290 PostData(5,flistMCproperties);
5291 PostData(6,flistNoCutsSignal);
5292 PostData(7,flistNoCutsBack);
5293 PostData(8,flistNoCutsFromB);
5294 PostData(9,flistNoCutsFromDstar);
5295 PostData(10,flistNoCutsOther);
5296 PostData(11,flistLsCutsSignal);
5297 PostData(12,flistLsCutsBack);
5298 PostData(13,flistLsCutsFromB);
5299 PostData(14,flistLsCutsFromDstar);
5300 PostData(15,flistLsCutsOther);
5301 PostData(16,flistTghCutsSignal);
5302 PostData(17,flistTghCutsBack);
5303 PostData(18,flistTghCutsFromB);
5304 PostData(19,flistTghCutsFromDstar);
5305 PostData(20,flistTghCutsOther);
5309 //_________________________________________
5310 Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Float_t *&ptbinlimits){// SET CUTS USED BEFORE UP TO JULY 2010; (THEY CHANGED LATER)
5311 // DOES NOT SET NPTBINS AND PT BIN LIMITS IN *this object:
5312 // it returns nptbins and set bin limits in ptbinlimits pointer
5315 delete fCutsTight;fCutsTight=NULL;
5318 delete fCutsLoose;fCutsLoose=NULL;
5321 fCutsTight = new AliRDHFCutsD0toKpi();
5322 fCutsTight->SetName("D0toKpiCutsStandard");
5323 fCutsTight->SetTitle("Standard Cuts for D0 analysis");
5325 fCutsLoose = new AliRDHFCutsD0toKpi();
5326 fCutsLoose->SetName("D0toKpiCutsLoose");
5327 fCutsLoose->SetTitle("Loose Cuts for D0 analysis");
5330 fCutsTight->SetMinVtxContr(4);
5331 fCutsLoose->SetMinVtxContr(4);
5333 // TRACKS ON SINGLE TRACKS
5334 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
5335 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
5336 esdTrackCuts->SetRequireTPCRefit(kTRUE);
5337 esdTrackCuts->SetRequireITSRefit(kTRUE);
5338 esdTrackCuts->SetMinNClustersITS(4);
5339 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
5340 esdTrackCuts->SetMinDCAToVertexXY(0.);
5341 esdTrackCuts->SetEtaRange(-0.8,0.8);
5342 esdTrackCuts->SetPtRange(0.3,1.e10);
5344 fCutsTight->AddTrackCuts(esdTrackCuts);
5347 // const Double_t ptmin = 0.1;
5348 const Double_t ptmax = 9999.;
5349 const Int_t nptbins = 7;
5350 const Int_t nvars=9;
5351 Float_t *ptbins=new Float_t[nptbins+1];
5361 fCutsTight->SetPtBins(nptbins+1,ptbins);
5362 fCutsLoose->SetPtBins(nptbins+1,ptbins);
5364 /* 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
5365 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
5366 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
5367 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
5368 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
5369 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
5370 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
5375 Float_t cutsMatrixD0toKpiStand[nptbins][nvars]={{0.200,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-40000.*1E-8,0.7},/* pt<1*/
5376 {0.200,200.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-32000.*1E-8,0.8},/* 1<pt<2 */
5377 {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 */
5378 {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 */
5379 {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 */
5380 {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 */
5381 {0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.9}
5384 Float_t cutsMatrixD0toKpiLoose[nptbins][nvars]={{0.200,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-35000.*1E-8,0.75},/* pt<1*/
5385 {0.200,200.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-28000.*1E-8,0.75},/* 1<pt<2 */
5386 {0.200,200.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-30000.*1E-8,0.9},/* 2<pt<3 */
5387 {0.200,200.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-12000.*1E-8,0.86},/* 3<pt<5 */
5388 {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 */
5389 {0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.88},/* 8<pt<12 */
5390 {0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.*1E-8,0.85}
5393 /* for (Int_t ibin=0;ibin<=nptbins;ibin++){
5394 for (Int_t ivar = 0; ivar<nvars; ivar++){
5395 printf("cutsMatrixD0toKpi[%d][%d] = %f\n",ivar, ibin,cutsMatrixD0toKpiStand[ivar][ibin]);
5398 //CREATE TRANSPOSE MATRIX...REVERSE INDICES as required by AliRDHFCuts
5399 Float_t **cutsMatrixTransposeStand=new Float_t*[nvars];
5400 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=new Float_t[nptbins];
5401 Float_t **cutsMatrixTransposeLoose=new Float_t*[nvars];
5402 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeLoose[iv]=new Float_t[nptbins];
5404 for (Int_t ibin=0;ibin<nptbins;ibin++){
5405 for (Int_t ivar = 0; ivar<nvars; ivar++){
5406 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
5407 cutsMatrixTransposeLoose[ivar][ibin]=cutsMatrixD0toKpiLoose[ibin][ivar];
5408 //printf("cutsMatrixD0toKpi[%d][%d] = %f\n",ibin, ivar,cutsMatrixD0toKpiStand[ibin][ivar]);
5415 fCutsTight->SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
5416 fCutsLoose->SetCuts(nvars,nptbins,cutsMatrixTransposeLoose);
5417 fCutsTight->SetUseSpecialCuts(kTRUE);
5418 fCutsLoose->SetUseSpecialCuts(kTRUE);
5419 fCutsTight->SetRemoveDaughtersFromPrim(kTRUE);
5420 fCutsLoose->SetRemoveDaughtersFromPrim(kTRUE);
5421 fCutsTight->SetUsePID(kTRUE);
5422 fCutsLoose->SetUsePID(kTRUE);
5424 Printf("STANDARD CUTS OBJECT : \n");
5425 fCutsTight->PrintAll();
5426 Printf("SECOND CUTS OBJECT : \n");
5427 fCutsLoose->PrintAll();
5429 ptbinlimits=ptbins;//new Float_t[nptbins+1]; //ptbins;
5430 /* new Float[nptbins];
5431 for(Int_t ib=0;ib<nptbins;ib++)ptbinlimits[ib]=ptbins[ib];*/
5437 //_________________________________________
5438 Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Double_t pt,Double_t invMassCut){
5439 // UPV: this should set the cut object
5442 // TEMPORARY: to be change in :
5444 // if pt < standardptbin[j+1]
5448 // the way the cuts are set is for further development
5449 // (to be interfaced with AliAnalsysTaskSETuneCuts)
5452 // 0 = inv. mass half width [GeV]
5457 // 5 = d0K [cm] upper limit!
5458 // 6 = d0Pi [cm] upper limit!
5460 // 8 = cosThetaPoint
5465 /*//#######################################################################
5466 //###########################################################################
5467 // STANDARD SETS OF CUTS ("tight"~PPR like; commented loose are more stringent than "tight")
5468 // #########################################################################
5470 if(pt>0. && pt<=1.) {
5472 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
5473 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
5474 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.0002,0.7);
5476 if(pt>1. && pt<=2.) {
5478 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
5479 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5480 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.7);
5481 //printf("I'm in the bin %d\n",ptbin);
5483 if(pt>2. && pt<=3.) {
5485 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
5486 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5487 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.7);
5488 //printf("I'm in the bin %d\n",ptbin);
5490 if(pt>3. && pt<=5.){
5492 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.0001,0.8);
5493 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
5494 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.0001,0.75);
5495 //printf("I'm in the bin %d\n",ptbin);
5499 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00005,0.8);
5500 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
5501 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.00005,0.75);
5504 //############################################################################
5509 /* //#######################################################################
5510 //################# VARY CUTS for d0xd0 STUDY ##########################
5512 if(pt>0. && pt<=1.) {
5514 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
5515 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
5516 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.0002,0.7);
5518 if(pt>1. && pt<=2.) {
5520 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,0.2,0.6);
5521 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5522 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.1);
5523 //printf("I'm in the bin %d\n",ptbin);
5525 if(pt>2. && pt<=3.) {
5527 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,0.2,0.6);
5528 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5529 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.1);
5530 //printf("I'm in the bin %d\n",ptbin);
5532 if(pt>3. && pt<=5.){
5534 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,0.2,0.8);
5535 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
5536 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.3,0.4,0.4,1.,1.,-0.0001,0.1);
5537 //printf("I'm in the bin %d\n",ptbin);
5541 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,0.2,0.8);
5542 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
5543 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.00005,0.1);
5546 // #################################################################
5549 //##########################################################################
5550 //################## CUTS with d0xd0 cut released #########################
5551 //### and TGHC cuts d0K and d0Pi to 0.1 instead of 0.05
5552 //### USED FOR PHDthesis
5553 //##########################################################################
5555 /* if(pt>0. && pt<=1.) {
5557 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.1,0.1,-0.000,0.5);
5558 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
5559 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.000,0.7);
5561 if(pt>1. && pt<=2.) {
5563 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.1,0.1,-0.000,0.6);
5564 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5565 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.0000,0.7);
5566 //printf("I'm in the bin %d\n",ptbin);
5568 if(pt>2. && pt<=3.) {
5570 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.1,0.1,-0.000,0.6);
5571 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5572 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.000,0.7);
5573 //printf("I'm in the bin %d\n",ptbin);
5575 if(pt>3. && pt<=5.){
5577 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.000,0.8);
5578 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
5579 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.000,0.75);
5580 //printf("I'm in the bin %d\n",ptbin);
5584 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0000,0.8);
5585 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
5586 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.0000,0.75);
5594 //########## LOOKING FOR SIGNAL #####################
5596 if(pt>0. && pt<=1.) {
5598 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.03,0.8,0.3,0.3,0.1,0.1,-0.00035,0.7);
5599 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
5600 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.04,0.8,0.3,0.3,0.1,0.1,-0.00025,0.7);
5602 if(pt>1. && pt<=2.) {
5604 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.4,0.4,0.1,0.1,-0.00035,0.8);
5605 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5606 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.03,0.8,0.3,0.3,0.1,0.1,-0.0025,0.75);
5607 //printf("I'm in the bin %d\n",ptbin);
5609 if(pt>2. && pt<=3.) {
5611 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00026,0.94);
5612 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5613 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0002,0.92);
5614 //printf("I'm in the bin %d\n",ptbin);
5616 if(pt>3. && pt<=5.){
5618 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00015,0.88);
5619 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
5620 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00015,0.9);
5621 //printf("I'm in the bin %d\n",ptbin);
5625 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0001,0.9);
5626 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
5627 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0000,0.88);
5631 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0001,0.9);
5632 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
5633 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0005,0.88);
5638 printf("AliAnalysisTaskSECharmFraction::Obsolete method! Parameters pt=%f,invmasscut=%f not used \n",pt,invMassCut);
5643 //__________________________________________________________
5644 void AliAnalysisTaskSECharmFraction::CheckInvMassD0(AliAODRecoDecayHF2Prong *d,Double_t &invMassD0,Double_t &invMassD0bar,Bool_t &isPeakD0,Bool_t &isPeakD0bar,Bool_t &isSideBandD0,Bool_t &isSideBandD0bar){
5645 //Check wheter the candidate inv. mass is compatible with signal or sideband inv. mass selection
5647 d->InvMassD0(invMassD0,invMassD0bar);
5649 if(TMath::Abs(invMassD0-fmD0PDG)<fsignalInvMassCut)isPeakD0=kTRUE;
5650 if(TMath::Abs(invMassD0bar-fmD0PDG)<fsignalInvMassCut)isPeakD0bar=kTRUE;
5651 //CHECK if ISSIDEBAND: no constraint is present between signal region definition and side band definition
5652 // ######## TO BE CHANGED the distinction between sidebandD0 and sidebandD0bar is meaningless
5653 // and it is present only for side band region study (see which inv mass has the D0(D0bar)
5654 // in case the D0bar(D0) is in the sideband) #######
5655 if(TMath::Abs(invMassD0-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
5658 if(TMath::Abs(invMassD0bar-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0bar-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
5659 isSideBandD0bar=kTRUE;
5666 //_______________________
5667 AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::GetD0toKPiSignalType(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx){
5668 //THIS METHOD CHECK THE TYPE OF SIGNAL/BACKGROUND THE CANDIDATE IS.
5669 // IF (!AND ONLY IF) THE TWO DAUGHTERS COME FROM A COMMONE MOTHER A FAKE TRUE SECONDARY VERTEX IS CONSTRUCTED (aodDMC)
5671 // THE FOLLOWING SCHEME IS ADOPTED: signaltype is set to
5672 // 1:signal (D0 prompt); 2: signal D0 from Dstar; 3: D0 fromB 4: D0 from Dstar fromB
5673 // then background categories: -1: one or both daughters is a fake track
5674 // 5: both daughters come from a D meson != D0
5675 // 6: both daughters come from a D0->4prongs
5676 // 7: both daughetrs are primaries
5677 // 8: generic background (can include one of the previous if desired)
5678 // 9: daughters out of acceptance
5679 // 10: pathologic cases (not clear)
5680 // 11: end of the method without output
5681 // 12: different result than MatchToMC method
5683 AliAODMCParticle *mum1=0x0;
5684 AliAODMCParticle *b1=0x0,*b2=0x0;
5685 AliAODMCParticle *grandmoth1=0x0;
5688 Int_t pdgmum,dglabels[2],matchtoMC;
5689 Int_t pdgdaughters[2]={211,321};
5690 // get daughter AOD tracks
5691 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
5692 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
5693 AliAODRecoDecayHF *aodDMC=0x0;
5694 if(trk0==0x0||trk1==0x0){
5695 AliDebug(2,"Delete tracks I AM \n");
5701 dglabels[0]=trk0->GetLabel();
5702 dglabels[1]=trk1->GetLabel();
5703 if(dglabels[0]<0||dglabels[1]<0){
5704 AliDebug(2,"HERE I AM \n");
5712 // printf("Before entering the MC checks \n");
5714 b1=(AliAODMCParticle*)arrayMC->At(trk0->GetLabel());
5715 b2=(AliAODMCParticle*)arrayMC->At(trk1->GetLabel());
5717 //Tracks with no mother ??? FAKE DECAY VERTEX
5721 if(b1->GetMother()<0||b2->GetMother()<0){
5722 //Tracks with no mother ??? FAKE DECAY VERTEX
5727 mum1=(AliAODMCParticle*)arrayMC->At(b1->GetMother());
5728 // mum2=(AliAODMCParticle*)arrayMC->At(b2->GetMother());//FOR FURTHER USE
5730 if(b1->GetMother()!=b2->GetMother()){
5731 //Check the label of the mother is the same
5738 massMumTrue=mum1->GetCalcMass();
5740 matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
5741 aodDMC=ConstructFakeTrueSecVtx(b1,b2,mum1,primaryVtx);
5748 // if((mum1->GetPdgCode()!=mum2->GetPdgCode()))continue; //Check the mother is the same particle
5749 // printf("Particle codes: tr1: %d, tr2: %d, mum1: %d, mum 2: %d \n",b1->GetPdgCode(),b2->GetPdgCode(),mum1->GetPdgCode(),mum2->GetPdgCode());
5750 if(!((TMath::Abs(b1->GetPdgCode())==321&&TMath::Abs(b1->GetPdgCode())!=211)||(TMath::Abs(b1->GetPdgCode())==211&&TMath::Abs(b1->GetPdgCode()!=321)))){
5751 // Not a Kaon and a Pion
5757 pdgmum=mum1->GetPdgCode();
5758 if(TMath::Abs(pdgmum)!=421){
5759 if(TMath::Abs(pdgmum)==411||TMath::Abs(pdgmum)==431||TMath::Abs(pdgmum)==443){
5760 // IT IS A SECONDARY VERTEX FROM CHARM BUT NOT A D0
5771 if(mum1->GetDaughter(1)-mum1->GetDaughter(0)+1!=2){
5772 // from D0 but NOT A 2 PRONG DECAY
5778 if(mum1->GetMother()<0){
5779 // A particle coming from nothing
5784 Bool_t isfromDstar=kFALSE;
5785 // matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
5786 grandmoth1=(AliAODMCParticle*)arrayMC->At(mum1->GetMother());
5787 if(TMath::Abs(grandmoth1->GetPdgCode())==413||TMath::Abs(grandmoth1->GetPdgCode())==423)isfromDstar=kTRUE;// D0 COMING FROM A D0*
5790 //CHECK FOR CABIBBO SUPPRESSED DECAY
5791 Int_t isCabibSup=0,pdgKaon;
5793 pdgKaon=b1->GetPdgCode();
5794 if(TMath::Abs(pdgKaon)!=321)pdgKaon=b2->GetPdgCode();
5795 if(pdgmum>0&&pdgKaon>0)isCabibSup=1;
5796 if(pdgmum<0&&pdgKaon<0)isCabibSup=1;
5802 // if(fcheckMCD0){//THIS CHECK IS NEEDED TO AVOID POSSIBLE FAILURE IN THE SECOND WHILE, FOR DEBUGGING
5803 while(TMath::Abs(grandmoth1->GetPdgCode())!=4&&TMath::Abs(grandmoth1->GetPdgCode())!=5){
5804 if(grandmoth1->GetMother()<0){
5805 //### THE FOLLOWING IN CASE OF DEBUGGING ##########Ã
5806 /*printf("mother=-1, pdgcode: %d \n",grandmoth1->GetPdgCode());
5807 Int_t son=grandmoth1->GetDaughter(0);
5808 sonpart=(AliAODMCParticle*)arrayMC->At(son);
5809 while(TMath::Abs(sonpart->GetPdgCode())!=421){
5810 printf("mother=-1, pdgcode: %d \n",sonpart->GetPdgCode());
5812 sonpart=(AliAODMCParticle*)arrayMC->At(son);
5818 grandmoth1=(AliAODMCParticle*)arrayMC->At(grandmoth1->GetMother());
5821 if(TMath::Abs(grandmoth1->GetPdgCode())==4){
5824 if(isfromDstar)signaltype=2;
5834 else if(TMath::Abs(grandmoth1->GetPdgCode())==5){
5836 if(isfromDstar)signaltype=4;
5847 signaltype=11;// JUST FOR SAFETY: SHOULD NEVER REACH THIS POINT
5852 //___________________________________
5853 AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::ConstructFakeTrueSecVtx(const AliAODMCParticle *b1, const AliAODMCParticle *b2, const AliAODMCParticle *mum,Double_t *primaryVtxTrue){
5854 // CONSTRUCT A FAKE TRUE SECONDARY VERTEX (aodDMC)
5855 //!!!NOTE THAT ONLY ONE MOTHER IS CONSIDERED: THE METHOD REQUIRES THE DAUGHTERS COME FROM THE SAME MOTHER !!
5856 if(b1==0x0||b2==0x0)return 0x0;
5857 if(mum==0x0)return 0x0;
5858 Double_t pD[3],xD[3],pXtrTrue[2],pYtrTrue[2],pZtrTrue[2],xtr1[3],xtr2[3];
5859 Int_t charge[2]={0,0};
5860 if(b1->Charge()==-1)charge[0]=1;
5862 if(b2->Charge()==-1){
5863 //printf("Same charges for prongs \n");
5864 if(!fLikeSign)return 0x0;
5869 pXtrTrue[charge[0]]=b1->Px();
5870 pYtrTrue[charge[0]]=b1->Py();
5871 pZtrTrue[charge[0]]=b1->Pz();
5872 if(!b1->XvYvZv(xtr1)){
5876 pXtrTrue[charge[1]]=b2->Px();
5877 pYtrTrue[charge[1]]=b2->Py();
5878 pZtrTrue[charge[1]]=b2->Pz();
5880 if(!mum->PxPyPz(pD)){
5881 //printf("!D from B:Get momentum failed \n");
5884 if(!mum->XvYvZv(xD)){
5885 //printf("!D from B:Get position failed \n");
5888 /* ############ THIS HAPPENS FROM TIME TO TIME: NUMERIC PROBLEM KNOWN #################
5889 if(pXtrTrue[0]+pXtrTrue[1]!=pD[0]){
5893 if(!b2->XvYvZv(xtr2)){
5896 Double_t d0dummy[2]={0.,0.};//TEMPORARY : dummy d0 for AliAODRecoDeay constructor
5897 AliAODRecoDecayHF* aodDMC=new AliAODRecoDecayHF(primaryVtxTrue,xD,2,0,pXtrTrue,pYtrTrue,pZtrTrue,d0dummy);
5899 /* ######## THE FOLLOWINF FOR DEBUGGING ############
5900 Printf("testing the Fake vertex: SecVtxX: %f, Px: %f, Py: %f, Pz:%f \n ",aodDMC->GetSecVtxX(),aodDMC->Px(),aodDMC->Py(),aodDMC->Pz());
5901 Printf("pD: x=%f, y=%f,z=%f\n",pD[0],pD[1],pD[2]);
5902 Printf("Daughters :px1:%f, px2:%f \n",pXtrTrue[0],pXtrTrue[1]);
5903 Printf("Daughters :py1:%f, py2:%f \n",pYtrTrue[0],pYtrTrue[1]);
5904 Printf("Daughters :pz1:%f, pz2:%f \n",pZtrTrue[0],pZtrTrue[1]);
5905 Printf("Mother pdg: %d",mum->GetPdgCode());
5906 Printf("Impact Par Prod: %f\n",aodDMC->ImpParXY());
5912 //________________________________________________________
5913 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 isSideBand,Double_t massmumtrue,AliAODRecoDecayHF *aodDMC,Double_t *vtxTrue){//FILL THE HISTOGRAMS: TAKE THE HISTOS FROM THE list NAME
5916 if((!okD0)&&(!okD0bar))return kTRUE;
5917 if(ptbin==-1)return kTRUE;
5918 // flistNoCutsSignal->Add(hptD0NCsign);
5919 // flistNoCutsSignal->Add(hptD0VsMaxPtNCsign);
5920 // flistNoCutsSignal->Add(hptD0PTallsqrtNCsign);
5921 // flistNoCutsSignal->Add(hptD0PTallNCsign);
5923 // %%%%%% TO BE DONE
5924 // flistNoCutsSignal->Add(hptD0vsptBNCsign);
5925 // flistNoCutsSignal->Add(hpD0vspBNCsign);
5926 //flistNoCutsSignal->Add(hptD0vsptcquarkNCsign);
5927 //flistNoCutsSignal->Add(hpD0vspcquarkNCsign);
5928 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%
5929 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5932 //hd0zD0ptLSCsign_pt
5933 //hInvMassLSCsign_pt
5936 // %%% TO BE DONE %%
5937 //hCosPDPBLSCsign_pt
5938 //hCosPcPDLSCsign_pt
5944 // ######### Get Standard label for hist in tlist ###############
5945 TString namehist=list->GetName(),str;
5946 namehist.ReplaceAll("list","");
5948 // ######### Global properties histos #################
5949 // ####### take care: only for candidates which pass the cuts !! not for side band ########
5950 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar)){
5952 str.Append(namehist.Data());
5953 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->CosPointingAngle());
5956 str.Append(namehist.Data());
5957 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxZ());
5960 str.Append(namehist.Data());
5961 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.);
5964 str.Append(namehist.Data());
5965 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxY()*10000.);
5968 str.Append(namehist.Data());
5969 ((TH2F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.,d->GetSecVtxY()*10000.);
5972 str.Append(namehist.Data());
5973 ((TH1F*)list->FindObject(str.Data()))->Fill(TMath::ATan2(d->GetSecVtxY()*10000.,d->GetSecVtxX()*10000.)*TMath::RadToDeg());
5976 str="hd0singlTrack";
5977 str.Append(namehist.Data());
5978 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Getd0Prong(0)*10000.);
5979 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Getd0Prong(1)*10000.);
5982 str.Append(namehist.Data());
5983 ((TH1F*)list->FindObject(str.Data()))->Fill(d->CosPointingAngle());
5986 str.Append(namehist.Data());
5987 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
5989 //%%%%%%%% NEW HISTO %%%%%%%%%%
5991 str.Append(namehist.Data());
5992 ((TH1F*)list->FindObject(str.Data()))->Fill(1e4*d->GetDCA());
5994 str="hcosthetastar";
5995 str.Append(namehist.Data());
5996 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(d->CosThetaStarD0());
5997 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(d->CosThetaStarD0bar());
6000 str.Append(namehist.Data());
6001 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Pt());
6004 str.Append(namehist.Data());
6006 if(d->PtProng(1)>d->PtProng(0))pr=1;
6007 if(d->PtProng(pr)<fptMax[0]) ((TH1F*)list->FindObject(str.Data()))->Fill(d->Pt()-fptMax[0]);
6008 else if(d->PtProng(TMath::Abs(pr-1))<fptMax[1])((TH1F*)list->FindObject(str.Data()))->Fill(d->Pt()-fptMax[1]);
6009 else ((TH1F*)list->FindObject(str.Data()))->Fill(d->Pt()-fptMax[2]);
6012 str="hptD0PTallsqrt";
6013 str.Append(namehist.Data());
6014 Double_t sumsqrpt=fptAllSq-d->PtProng(1)*d->PtProng(1)-d->PtProng(0)*d->PtProng(0);
6015 if(sumsqrpt>0.)((TH1F*)list->FindObject(str.Data()))->Fill(d->Pt(),TMath::Sqrt(sumsqrpt));
6018 str.Append(namehist.Data());
6019 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Pt(),fptAll-d->PtProng(1)-d->PtProng(0));
6023 str.Append(namehist.Data());
6026 if(d->GetPrimaryVtx()!=0x0)((TH1F*)list->FindObject(str.Data()))->Fill(1e4*(d->Zv()-d->GetPrimaryVtx()->GetZ()));
6029 str.Append(namehist.Data());
6032 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Eta());
6034 // OTHER NEW ADDITIONAL HISTOS
6037 str.Append(namehist.Data());
6040 //printf("Hist name: %s \n",str.Data());
6041 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
6045 str.Append(namehist.Data());
6048 //printf("Hist name: %s \n",str.Data());
6049 ((TH2F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->ImpParXY()*10000.);
6052 str="hangletracksVSd0xd0";
6053 str.Append(namehist.Data());
6056 //printf("Hist name: %s \n",str.Data());
6057 ((TH2F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->ProngsRelAngle(0,1));
6059 str="hangletracksVSd0D0";
6060 str.Append(namehist.Data());
6063 // printf("Hist name: %s \n",str.Data());
6064 ((TH2F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.,d->ProngsRelAngle(0,1));
6065 // ####################################################
6068 // ######### Invariant mass histos #################
6070 str.Append(namehist.Data());
6071 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6072 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6075 if(isPeakD0||isPeakD0bar){
6077 str.Append(namehist.Data());
6079 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6080 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6082 // The Following is a NEW HISTO
6084 str.Append(namehist.Data());
6087 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6088 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6092 str.Append(namehist.Data());
6093 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0,d->Pt());
6094 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar,d->Pt());
6096 /* if(isPeakD0||isPeakD0bar){
6098 str.Append(namehist.Data());
6100 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6101 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6102 // The Following is a NEW HISTO
6104 str.Append(namehist.Data());
6107 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6108 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6112 str.Append(namehist.Data());
6114 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6115 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6120 str.Append(namehist.Data());
6121 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6123 if(isPeakD0||isPeakD0bar){
6125 str.Append(namehist.Data());
6127 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6131 str.Append(namehist.Data());
6133 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6137 // ################ D0 Impact Parameter Histos #####################
6138 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar)){
6140 str.Append(namehist.Data());
6142 ((TH1F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.);
6145 str.Append(namehist.Data());
6146 str.Append("_PkMss_pt");
6148 ((TH1F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.);
6151 if(fReadMC&&vtxTrue){
6153 str.Append(namehist.Data());
6155 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6157 str="hd0D0VtxTruept";
6158 str.Append(namehist.Data());
6159 str.Append("_PkMss_pt");
6161 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6164 if(fReadMC&&aodDMC!=0x0){
6169 str.Append(namehist.Data());
6171 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6174 str.Append(namehist.Data());
6175 str.Append("_PkMss_pt");
6177 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6181 else if(isSideBand){
6183 str.Append(namehist.Data());
6185 ((TH1F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.);
6188 str.Append(namehist.Data());
6189 str.Append("_SBMss_pt");
6191 ((TH1F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.);
6194 if(fReadMC&&vtxTrue){
6196 str.Append(namehist.Data());
6198 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6200 str="hd0D0VtxTruept";
6201 str.Append(namehist.Data());
6202 str.Append("_SBMss_pt");
6204 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6208 if(fReadMC&&aodDMC!=0x0){
6210 str.Append(namehist.Data());
6212 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6215 str.Append(namehist.Data());
6216 str.Append("_SBMss_pt");
6218 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6227 void AliAnalysisTaskSECharmFraction::FillHistoMCproperties(TClonesArray *arrayMC){
6228 //#############################################################
6229 // HERE LOOK AT global properties of D0 mesons, c quarks and B
6231 //#############################################################
6232 Double_t pxyzMum[3],pxyzDaught[3],cosOpenAngle=-1.1,ptmum,ptdaught;
6233 Int_t ncdaught=0,cquarksMC=0,nD0all=0,nD0FromB=0,nBdaught=0,nD0bquark=0,nD0bMeson=0,nD0bBaryon=0;
6234 for (Int_t iPart=0; iPart<arrayMC->GetEntriesFast(); iPart++) {
6235 AliAODMCParticle* mcPart = dynamic_cast<AliAODMCParticle*>(arrayMC->At(iPart));
6237 AliWarning("Particle not found in tree, skipping");
6240 if (TMath::Abs(mcPart->GetPdgCode()) == 4){
6242 mcPart->PxPyPz(pxyzMum);
6245 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllPt"))->Fill(ptmum);
6246 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllEta"))->Fill(mcPart->Eta());
6247 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllEnergy"))->Fill(mcPart->E());
6248 //NOW LOOK FOR A D0 among cquark daughters
6249 ncdaught=mcPart->GetDaughter(1)-mcPart->GetDaughter(0)+1;
6250 ((TH1F*)flistMCproperties->FindObject("hMCcquarkNdaught"))->Fill(ncdaught);
6252 for(Int_t iDaught=mcPart->GetDaughter(0);iDaught<mcPart->GetDaughter(1);iDaught++){
6253 AliAODMCParticle* mcPartD0 = dynamic_cast<AliAODMCParticle*>(arrayMC->At(iDaught));
6254 if(TMath::Abs(mcPartD0->GetPdgCode()) == 421){
6255 // a D0 coming from a c quark
6256 mcPartD0->PxPyPz(pxyzDaught);
6257 ptdaught=mcPartD0->Pt();
6258 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcPt"))->Fill(ptdaught);
6259 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcEta"))->Fill(mcPartD0->Eta());
6260 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcEnergy"))->Fill(mcPartD0->E());
6261 // ##############################################################################################
6262 // Compare D0 momentum and c quarks:
6263 // NB: here ALL D0 are considered, also those not decaying in KPi !!!
6264 // ##############################################################################################
6265 ((TH2F*)flistMCproperties->FindObject("hMCD0VscquarkPt"))->Fill(mcPart->Pt(),mcPartD0->Pt());
6266 ((TH2F*)flistMCproperties->FindObject("hMCD0VscquarkEnergy"))->Fill(mcPart->E(),mcPartD0->E());
6267 ((TH1F*)flistMCproperties->FindObject("hMCD0deltacquarkEnergy"))->Fill(mcPartD0->E()/mcPart->E());
6268 ((TH1F*)flistMCproperties->FindObject("hMCD0EnergyVsAvcquarkDaughtEn"))->Fill((mcPartD0->E()-(mcPart->E()/ncdaught))/mcPart->E());
6269 //calculate open angle
6270 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]));
6271 ((TH1F*)flistMCproperties->FindObject("hMCD0cquarkAngle"))->Fill(cosOpenAngle);
6272 ((TH2F*)flistMCproperties->FindObject("hMCD0cquarkAngleEnergy"))->Fill(mcPart->E(),cosOpenAngle);
6278 // NOW LOOK FOR D0 not coming from cquarks
6279 if (TMath::Abs(mcPart->GetPdgCode()) == 421){
6281 if(mcPart->GetMother()<0)continue;
6282 AliAODMCParticle* mcD0Parent = dynamic_cast<AliAODMCParticle*>(arrayMC->At(mcPart->GetMother()));
6283 Bool_t notfound=kFALSE,bMeson=kFALSE,bBaryon=kFALSE;
6285 while(TMath::Abs(mcD0Parent->GetPdgCode())!=4&&TMath::Abs(mcD0Parent->GetPdgCode())!=5){
6286 if(500<TMath::Abs(mcD0Parent->GetPdgCode())%10000&&TMath::Abs(mcD0Parent->GetPdgCode())<600){
6290 else if (5000<TMath::Abs(mcD0Parent->GetPdgCode())&&TMath::Abs(mcD0Parent->GetPdgCode())<6000){
6294 if(mcD0Parent->GetMother()<0){
6298 mcD0Parent=dynamic_cast<AliAODMCParticle*>(arrayMC->At(mcD0Parent->GetMother()));
6300 if(notfound)continue;
6301 if(TMath::Abs(mcD0Parent->GetPdgCode())==4)continue;//D0 from c quarks already counted
6302 ((TH1F*)flistMCproperties->FindObject("hMCfromBpdgB"))->Fill(TMath::Abs(mcD0Parent->GetPdgCode()));
6303 if(bBaryon)nD0bBaryon++;
6304 else if(bMeson)nD0bMeson++;
6307 mcD0Parent->PxPyPz(pxyzMum);
6308 ptmum=mcD0Parent->Pt();
6309 ((TH1F*)flistMCproperties->FindObject("hMCBhadrPt"))->Fill(ptmum);
6310 ((TH1F*)flistMCproperties->FindObject("hMCBhadrEta"))->Fill(mcD0Parent->Eta());
6311 ((TH1F*)flistMCproperties->FindObject("hMCBhadrEnergy"))->Fill(mcD0Parent->E());
6313 nBdaught=mcD0Parent->GetDaughter(1)-mcD0Parent->GetDaughter(0)+1;
6314 ((TH1F*)flistMCproperties->FindObject("hMCBhadrNdaught"))->Fill(nBdaught);
6317 // Now take properties of this D0 coming from a B
6318 mcPart->PxPyPz(pxyzDaught);
6319 ptdaught=mcPart->Pt();
6320 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBPt"))->Fill(ptdaught);
6321 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBEta"))->Fill(mcPart->Eta());
6322 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBEnergy"))->Fill(mcPart->E());
6323 // ##############################################################################################
6324 // Compare D0 momentum and b hadron:
6325 // NB: here ALL D0 are considered, also those not decaying in KPi !!!
6326 // ##############################################################################################
6327 ((TH2F*)flistMCproperties->FindObject("hMCD0VsBhadrPt"))->Fill(mcD0Parent->Pt(),mcPart->Pt());
6328 ((TH2F*)flistMCproperties->FindObject("hMCD0VsBhadrEnergy"))->Fill(mcD0Parent->E(),mcPart->E());
6329 ((TH1F*)flistMCproperties->FindObject("hMCD0deltaBhadrEnergy"))->Fill(mcPart->E()/mcD0Parent->E());
6330 ((TH1F*)flistMCproperties->FindObject("hMCD0EnergyVsAvBDaughtEn"))->Fill((mcPart->E()-(mcD0Parent->E()/nBdaught))/mcD0Parent->E());
6331 //calculate open angle
6332 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]));
6333 ((TH1F*)flistMCproperties->FindObject("hMCD0BhadrAngle"))->Fill(cosOpenAngle);
6334 ((TH2F*)flistMCproperties->FindObject("hMCD0BhadrAngleEnergy"))->Fill(mcPart->E(),cosOpenAngle);
6337 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(1,cquarksMC);
6338 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(2,nD0all);
6339 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(3,nD0FromB);
6340 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(4,nD0bMeson);
6341 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(5,nD0bBaryon);
6346 void AliAnalysisTaskSECharmFraction::SetPtBins(Int_t nbins,const Float_t *ptbins){
6347 if((fptbins)!=0x0)delete fptbins;
6348 fnbins=nbins;fptbins=new Float_t[fnbins];
6349 memcpy(fptbins,ptbins,fnbins*sizeof(Float_t));
6353 void AliAnalysisTaskSECharmFraction::SetStandardMassSelection(){
6354 //SET THE DEFAULT VALUES FOR INVARIANT MASS SELECTION
6357 SetSignalInvMassCut();
6358 SetLargeInvMassCut();
6359 SetSideBandInvMassCut();
6360 SetSideBandInvMassWindow();
6363 // HERE FOR SEARCH FOR SIGNAL
6364 SetSignalInvMassCut();
6365 SetLargeInvMassCut();
6366 SetSideBandInvMassCut();
6367 SetSideBandInvMassWindow();
6371 Bool_t AliAnalysisTaskSECharmFraction::SpecialSelD0(AliAODRecoDecayHF2Prong *d,Int_t &nusedforVtx){
6373 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
6374 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
6376 if(trk0->GetUsedForPrimVtxFit())nusedforVtx++;
6377 if(trk1->GetUsedForPrimVtxFit())nusedforVtx++;
6378 if(nusedforVtx>fNtrMaxforVtx)return kFALSE;
6380 if(TMath::Abs(d->Getd0Prong(1)) < -99999. ||
6381 TMath::Abs(d->Getd0Prong(0)) < -99999.) return kFALSE;
6388 AliAODVertex* AliAnalysisTaskSECharmFraction::GetPrimaryVtxSkipped(AliAODEvent *aodev,AliAODRecoDecayHF2Prong *d){
6389 //Calculate the primary vertex w/o the daughter tracks of the candidate
6391 AliESDVertex *vertexESD=0x0;
6392 AliAODVertex *vertexAOD=0x0;
6393 AliVertexerTracks *vertexer = new AliVertexerTracks(aodev->GetMagneticField());
6396 Int_t nTrksToSkip=2;
6397 AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(0);
6398 skipped[0]=dgTrack->GetID();
6399 dgTrack = (AliAODTrack*)d->GetDaughter(1);
6400 skipped[1]=dgTrack->GetID();
6404 vertexer->SetSkipTracks(nTrksToSkip,skipped);
6405 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(aodev);
6406 vertexer->SetMinClusters(4);
6407 if(!vertexESD) return vertexAOD;
6408 if(vertexESD->GetNContributors()<=0) {
6409 AliDebug(2,"vertexing failed");
6410 delete vertexESD; vertexESD=NULL;
6414 delete vertexer; vertexer=NULL;
6417 // convert to AliAODVertex
6418 Double_t pos[3],cov[6],chi2perNDF;
6419 vertexESD->GetXYZ(pos); // position
6420 vertexESD->GetCovMatrix(cov); //covariance matrix
6421 chi2perNDF = vertexESD->GetChi2toNDF();
6422 delete vertexESD; vertexESD=NULL;
6424 vertexAOD = new AliAODVertex(pos,cov,chi2perNDF);
6430 void AliAnalysisTaskSECharmFraction::Terminate(const Option_t*){
6431 //TERMINATE METHOD: NOTHING TO DO