]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/AliAnalysisTaskSECharmFraction.cxx
I have remade the outliers parameterization (very similar as pass1) based on all...
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAnalysisTaskSECharmFraction.cxx
CommitLineData
624c07ab 1/**************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
27de2dfb 16/* $Id$ */
17
624c07ab 18/////////////////////////////////////////////////////////////
19//
20// Class AliAnalysisTaskSECharmFraction
21// AliAnalysisTaskSE for the extraction of the fraction of prompt charm
22// using the charm hadron impact parameter to the primary vertex
23//
d39e8f99 24// Author: Andrea Rossi, andrea.rossi@pd.infn.it
624c07ab 25/////////////////////////////////////////////////////////////
26
ac4c229c 27
624c07ab 28#include <TH1F.h>
29#include <TH2F.h>
d39e8f99 30#include <THnSparse.h>
624c07ab 31#include <TDatabasePDG.h>
32#include <TMath.h>
33#include <TROOT.h>
624c07ab 34#include "AliAODEvent.h"
624c07ab 35#include "AliAODRecoDecayHF2Prong.h"
36#include "AliAODRecoDecayHF.h"
37#include "AliAODRecoDecay.h"
e047b348 38#include "AliAnalysisDataSlot.h"
39#include "AliAnalysisDataContainer.h"
624c07ab 40#include "AliAODTrack.h"
e047b348 41#include "AliAODHandler.h"
42#include "AliESDtrack.h"
624c07ab 43#include "AliAODVertex.h"
e047b348 44#include "AliESDVertex.h"
45#include "AliVertexerTracks.h"
624c07ab 46#include "AliAODMCParticle.h"
e047b348 47#include "AliAODPid.h"
48#include "AliTPCPIDResponse.h"
624c07ab 49#include "AliAODMCHeader.h"
ac4c229c 50#include "AliAnalysisVertexingHF.h"
624c07ab 51#include "AliAnalysisTaskSECharmFraction.h"
e047b348 52#include "AliRDHFCutsD0toKpi.h"
53#include "AliAODInputHandler.h"
54#include "AliAnalysisManager.h"
ac4c229c 55
56class TCanvas;
57class TTree;
58class TChain;
ac4c229c 59class AliAnalysisTaskSE;
60
61
624c07ab 62ClassImp(AliAnalysisTaskSECharmFraction)
63
64//________________________________________________________________________
65 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction()
66 : AliAnalysisTaskSE(),
e047b348 67 fCutsLoose(0),
68 fCutsTight(0),
d39e8f99 69 fFastAnalysis(1),
bf74e6db 70 fReadMC(kFALSE),
cc3209fb 71 fsplitMassD0D0bar(kTRUE),
e047b348 72 fLikeSign(kFALSE),
73 fusePID(kTRUE),
624c07ab 74 fmD0PDG(),
e047b348 75 fnbins(1),
624c07ab 76 fptbins(0),
e047b348 77 fNtrMaxforVtx(-1),
78 fptAll(),
79 fptAllSq(),
80 fptMax(),
c387e585 81 fAcceptanceCuts(),
624c07ab 82 fsignalInvMassCut(),
83 flargeInvMassCut(),
84 fsidebandInvMassCut(),
85 fsidebandInvMassWindow(),
86 fUseMC(kTRUE),
87 fNentries(0),
88 fSignalType(0),
89 fSignalTypeLsCuts(0),
90 fSignalTypeTghCuts(0),
e047b348 91 flistMCproperties(0),
ac4c229c 92 flistNoCutsSignal(0),
93 flistNoCutsBack(0),
94 flistNoCutsFromB(0),
95 flistNoCutsFromDstar(0),
96 flistNoCutsOther(0),
97 flistLsCutsSignal(0),
98 flistLsCutsBack(0),
99 flistLsCutsFromB(0),
100 flistLsCutsFromDstar(0),
101 flistLsCutsOther(0),
102 flistTghCutsSignal(0),
103 flistTghCutsBack(0),
104 flistTghCutsFromB(0),
105 flistTghCutsFromDstar(0),
106 flistTghCutsOther(0)
624c07ab 107
108{
109 //Default constructor
110}
111//________________________________________________________________________
112 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name)
113 : AliAnalysisTaskSE(name),
e047b348 114 fCutsLoose(0x0),
115 fCutsTight(0x0),
d39e8f99 116 fFastAnalysis(1),
bf74e6db 117 fReadMC(kFALSE),
cc3209fb 118 fsplitMassD0D0bar(kTRUE),
e047b348 119 fLikeSign(kFALSE),
120 fusePID(kTRUE),
624c07ab 121 fmD0PDG(),
e047b348 122 fnbins(1),
624c07ab 123 fptbins(0),
e047b348 124 fNtrMaxforVtx(-1),
125 fptAll(),
126 fptAllSq(),
127 fptMax(),
c387e585 128 fAcceptanceCuts(),
e047b348 129 fsignalInvMassCut(-1.),
130 flargeInvMassCut(-1.),
131 fsidebandInvMassCut(-1.),
132 fsidebandInvMassWindow(-1.),
133 fUseMC(kFALSE),
624c07ab 134 fNentries(0),
135 fSignalType(0),
136 fSignalTypeLsCuts(0),
137 fSignalTypeTghCuts(0),
e047b348 138 flistMCproperties(0),
ac4c229c 139 flistNoCutsSignal(0),
140 flistNoCutsBack(0),
141 flistNoCutsFromB(0),
142 flistNoCutsFromDstar(0),
143 flistNoCutsOther(0),
144 flistLsCutsSignal(0),
145 flistLsCutsBack(0),
146 flistLsCutsFromB(0),
147 flistLsCutsFromDstar(0),
148 flistLsCutsOther(0),
149 flistTghCutsSignal(0),
150 flistTghCutsBack(0),
151 flistTghCutsFromB(0),
152 flistTghCutsFromDstar(0),
153 flistTghCutsOther(0)
624c07ab 154
155{
156 // Constructor
157
158 // Define input and output slots here
159 // Input slot #0 works with a TChain
160 // Output slot #0 writes into a TH1 container
161
162 //Standard pt bin
e047b348 163 fnbins=SetStandardCuts(fptbins);// THIS TO SET NBINS AND BINNING
164
624c07ab 165 DefineOutput(1, TH1F::Class());
166 DefineOutput(2, TH1F::Class());
167 DefineOutput(3, TH1F::Class());
168 DefineOutput(4, TH1F::Class());
e047b348 169 for(Int_t j=5;j<21;j++){
624c07ab 170 DefineOutput(j, TList::Class());
171 }
172
e047b348 173 // Output slot for the Cut Objects
174 DefineOutput(21,AliRDHFCutsD0toKpi::Class()); //My private output
175 DefineOutput(22,AliRDHFCutsD0toKpi::Class()); //My private output
624c07ab 176
177}
178
179
e047b348 180AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name,AliRDHFCutsD0toKpi *cutsA,AliRDHFCutsD0toKpi *cutsB)
624c07ab 181 : AliAnalysisTaskSE(name),
e047b348 182 fCutsLoose(0),
183 fCutsTight(0),
d39e8f99 184 fFastAnalysis(1),
bf74e6db 185 fReadMC(kFALSE),
cc3209fb 186 fsplitMassD0D0bar(kTRUE),
e047b348 187 fLikeSign(kFALSE),
188 fusePID(kTRUE),
624c07ab 189 fmD0PDG(),
e047b348 190 fnbins(1),
624c07ab 191 fptbins(0),
e047b348 192 fNtrMaxforVtx(-1),
193 fptAll(),
194 fptAllSq(),
195 fptMax(),
c387e585 196 fAcceptanceCuts(),
e047b348 197 fsignalInvMassCut(-1.),
198 flargeInvMassCut(-1.),
199 fsidebandInvMassCut(-1.),
200 fsidebandInvMassWindow(-1.),
201 fUseMC(kFALSE),
624c07ab 202 fNentries(0),
203 fSignalType(0),
204 fSignalTypeLsCuts(0),
205 fSignalTypeTghCuts(0),
e047b348 206 flistMCproperties(0),
ac4c229c 207 flistNoCutsSignal(0),
208 flistNoCutsBack(0),
209 flistNoCutsFromB(0),
210 flistNoCutsFromDstar(0),
211 flistNoCutsOther(0),
212 flistLsCutsSignal(0),
213 flistLsCutsBack(0),
214 flistLsCutsFromB(0),
215 flistLsCutsFromDstar(0),
216 flistLsCutsOther(0),
217 flistTghCutsSignal(0),
218 flistTghCutsBack(0),
219 flistTghCutsFromB(0),
220 flistTghCutsFromDstar(0),
221 flistTghCutsOther(0)
624c07ab 222{
223 // Constructor
d39e8f99 224 if(fCutsTight){
225 delete fCutsTight;fCutsTight=NULL;
226 }
227 if(fCutsLoose){
228 delete fCutsLoose;fCutsLoose=NULL;
229 }
e047b348 230
231 //Check consistency between sets of cuts:
232 if(cutsA->GetNPtBins()!=cutsB->GetNPtBins()){
233 printf("Different number of pt bins between the two sets of cuts: SWITCH TO STANDARD CUTS \n");
234 fnbins=SetStandardCuts(fptbins);
235 }
236 else{
237 fCutsTight=new AliRDHFCutsD0toKpi(*cutsA);
238 fCutsLoose=new AliRDHFCutsD0toKpi(*cutsB);
239 for(Int_t j=0;j<cutsA->GetNPtBins();j++){
240 if(TMath::Abs(cutsA->GetPtBinLimits()[j]-cutsB->GetPtBinLimits()[j])>1.e-7){
241 printf("Different pt bin limits in the two set of cuts: use the first as reference \n");
242 fCutsLoose->SetPtBins(cutsA->GetNPtBins(),cutsA->GetPtBinLimits());
243 break;
244 }
245 }
246 SetPtBins(fCutsTight->GetNPtBins(),fCutsTight->GetPtBinLimits());
247 }
624c07ab 248
624c07ab 249 // Output slot #0 writes into a TH1 container
250 DefineOutput(1, TH1F::Class());
251 DefineOutput(2, TH1F::Class());
252 DefineOutput(3, TH1F::Class());
253 DefineOutput(4, TH1F::Class());
e047b348 254 for(Int_t j=5;j<21;j++){
624c07ab 255
256 DefineOutput(j, TList::Class());
257 }
e047b348 258 // Output slot for the Cut Objects
259 DefineOutput(21,AliRDHFCutsD0toKpi::Class()); //My private output
260 DefineOutput(22,AliRDHFCutsD0toKpi::Class()); //My private output
624c07ab 261
262}
263
264//________________________________________________________________________
265AliAnalysisTaskSECharmFraction::~AliAnalysisTaskSECharmFraction()
266{ //Destructor
267
d39e8f99 268 if (fCutsTight) {
e047b348 269 delete fCutsTight;
270 fCutsTight = 0;
624c07ab 271 }
d39e8f99 272 if (fCutsLoose) {
e047b348 273 delete fCutsLoose;
274 fCutsLoose = 0;
624c07ab 275 }
ac4c229c 276 if(fptbins){
277 delete fptbins;
278 fptbins =0;
279 }
c387e585 280 /* if(fAcceptanceCuts){
ac4c229c 281 delete fAcceptanceCuts;
282 fAcceptanceCuts=0;
c387e585 283 }*/
624c07ab 284 if (fNentries) {
285 delete fNentries;
286 fNentries = 0;
287 }
288 if (fSignalType) {
289 delete fSignalType;
290 fSignalType = 0;
291 }
292 if (fSignalTypeLsCuts) {
293 delete fSignalTypeLsCuts;
294 fSignalTypeLsCuts = 0;
295 }
296 if (fSignalTypeTghCuts) {
297 delete fSignalTypeTghCuts;
298 fSignalTypeTghCuts = 0;
299 }
e047b348 300 if(flistMCproperties){
d39e8f99 301 flistMCproperties->Delete();
e047b348 302 delete flistMCproperties;
303 flistMCproperties=0;
304 }
ac4c229c 305 if(flistNoCutsSignal){
d39e8f99 306 flistNoCutsSignal->Delete();
ac4c229c 307 delete flistNoCutsSignal;
308 flistNoCutsSignal=0;
624c07ab 309 }
ac4c229c 310 if(flistNoCutsBack){
d39e8f99 311 flistNoCutsBack->Delete();
ac4c229c 312 delete flistNoCutsBack;
313 flistNoCutsBack=0;
624c07ab 314 }
ac4c229c 315 if(flistNoCutsFromB){
d39e8f99 316 flistNoCutsFromB->Delete();
ac4c229c 317 delete flistNoCutsFromB;
318 flistNoCutsFromB=0;
624c07ab 319 }
ac4c229c 320 if(flistNoCutsFromDstar){
d39e8f99 321 flistNoCutsFromDstar->Delete();
ac4c229c 322 delete flistNoCutsFromDstar;
323 flistNoCutsFromDstar=0;
624c07ab 324 }
ac4c229c 325 if(flistNoCutsOther){
d39e8f99 326 flistNoCutsOther->Delete();
ac4c229c 327 delete flistNoCutsOther;
328 flistNoCutsOther=0;
624c07ab 329 }
330
ac4c229c 331 if(flistLsCutsSignal){
d39e8f99 332 flistLsCutsSignal->Delete();
ac4c229c 333 delete flistLsCutsSignal;
334 flistLsCutsSignal=0;
624c07ab 335 }
ac4c229c 336 if(flistLsCutsBack){
d39e8f99 337 flistLsCutsBack->Delete();
ac4c229c 338 delete flistLsCutsBack;
339 flistLsCutsBack=0;
624c07ab 340 }
ac4c229c 341 if(flistLsCutsFromB){
d39e8f99 342 flistLsCutsFromB->Delete();
ac4c229c 343 delete flistLsCutsFromB;
344 flistLsCutsFromB=0;
624c07ab 345 }
ac4c229c 346 if(flistLsCutsFromDstar){
d39e8f99 347 flistLsCutsFromDstar->Delete();
ac4c229c 348 delete flistLsCutsFromDstar;
349 flistLsCutsFromDstar=0;
624c07ab 350 }
ac4c229c 351 if(flistLsCutsOther){
d39e8f99 352 flistLsCutsOther->Delete();
ac4c229c 353 delete flistLsCutsOther;
354 flistLsCutsOther=0;
624c07ab 355 }
356
ac4c229c 357 if(flistTghCutsSignal){
d39e8f99 358 flistTghCutsSignal->Delete();
ac4c229c 359 delete flistTghCutsSignal;
360 flistTghCutsSignal=0;
624c07ab 361 }
ac4c229c 362 if(flistTghCutsBack){
d39e8f99 363 flistTghCutsBack->Delete();
ac4c229c 364 delete flistTghCutsBack;
365 flistTghCutsBack=0;
624c07ab 366 }
ac4c229c 367 if(flistTghCutsFromB){
d39e8f99 368 flistTghCutsFromB->Delete();
ac4c229c 369 delete flistTghCutsFromB;
370 flistTghCutsFromB=0;
624c07ab 371 }
ac4c229c 372 if(flistTghCutsFromDstar){
d39e8f99 373 flistTghCutsFromDstar->Delete();
ac4c229c 374 delete flistTghCutsFromDstar;
375 flistTghCutsFromDstar=0;
624c07ab 376 }
ac4c229c 377 if(flistTghCutsOther){
d39e8f99 378 flistTghCutsOther->Delete();
ac4c229c 379 delete flistTghCutsOther;
380 flistTghCutsOther=0;
624c07ab 381 }
382
383
384}
385
386
387//________________________________________________________________________
388void AliAnalysisTaskSECharmFraction::Init()
389{
390 // Initialization
391
392 if(fDebug > 1) printf("AnalysisTaskSED0Mass::Init() \n");
393 fmD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
394
e047b348 395 // gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/ConfigVertexingHF.C");
396 // gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/D0fromBSetCuts.C");
397 // 2 sets of dedicated cuts: fCutsTight is assumed as the standard cut object
624c07ab 398
e047b348 399 // SetAcceptanceCut();
400 if(fNtrMaxforVtx<0)SetNMaxTrForVtx(3); //DEFAULT : NO SELECTION
401 if(fsignalInvMassCut<0.||flargeInvMassCut<0.||fsidebandInvMassCut<0.||fsidebandInvMassWindow<0.){
402 printf("AliAnalysisTaskSECharmFraction: Not All info for mass selection provided: switch to default values \n");
403 SetStandardMassSelection();
624c07ab 404 }
e047b348 405
406 AliRDHFCutsD0toKpi* copyfCutsTight=new AliRDHFCutsD0toKpi(*fCutsTight);
407 const char* nameoutputTight=GetOutputSlot(21)->GetContainer()->GetName();
408 copyfCutsTight->SetName(nameoutputTight);
409 AliRDHFCutsD0toKpi* copyfCutsLoose=new AliRDHFCutsD0toKpi(*fCutsLoose);
410 const char* nameoutputLoose=GetOutputSlot(22)->GetContainer()->GetName();
411 copyfCutsLoose->SetName(nameoutputLoose);
412 // Post the data
413 PostData(21,copyfCutsTight);
414 PostData(22,copyfCutsLoose);
415
624c07ab 416 return;
417}
418
419//________________________________________________________________________
420void AliAnalysisTaskSECharmFraction::UserCreateOutputObjects()
421{
422 // Create histograms
423 // Called once
c387e585 424
425 // ################ NAMING SCHEME ###################################
426 // LISTS NAMING SCHEME
427 // "list" + cut selection string + MC selection string
428 // cut strings: "NC" =nocuts, "LSC"= loose cuts, "TGHC"= tight cuts
429 // MC sel. strings: "sign"= D0 from c quark
430 // "fromDstar" = D0 from Dstar from c quark
431 // "fromB"= D0from B decay (->from b quark) + D0from Dstar from B
432 // "back"= backgroun, generic except the cas "other"
433 // "other"= background case for candidates made of a pion and a kaon coming from the same D0 (in 4 prong) or from D+
434 //
435 // HISTS NAMING SCHEME
436 //
437 // "h" + specific name + cut selection string + MC selection string + (InvMass region string) + (pt string)
438 //
439 // cut selection strings = those for lists
440 // MC selection strings = those for lists
441 // inv mass region strings : "PM" or "SB" for global properties and pt integrated histos
442 // "_PkMss" or "_SBMss" for impact par. pt dependent histos
443 // pt string : "_pt" + integer number of ptbin
444 //
445 //###################################################################
624c07ab 446
447 TString namehist;
448 TString titlehist;
449 TString strnamept,strtitlept;
e047b348 450 Printf("INSIDE USER CREATE \n");
d39e8f99 451
452 // fNentries=new TH1F("nentriesChFr", "Look at the number of entries! = number of AODs", 2,1.,2.);
453 fNentries=new TH1F("nentriesChFr", "Analyzed sample properties", 15,-0.5,14.5);
454
455 fNentries->GetXaxis()->SetBinLabel(1,"nEventsAnal");
456 fNentries->GetXaxis()->SetBinLabel(2,"nCandSel(Cuts)");
457 fNentries->GetXaxis()->SetBinLabel(3,"nD0Selected");
458 fNentries->GetXaxis()->SetBinLabel(4,"nEventsGoodVtxS");
459 fNentries->GetXaxis()->SetBinLabel(5,"ptbin = -1");
460 fNentries->GetXaxis()->SetBinLabel(6,"no daughter");
461 fNentries->GetXaxis()->SetBinLabel(7,"nCandSel(Tr)");
462 fNentries->GetXaxis()->SetBinLabel(8,"PID=0");
463 fNentries->GetXaxis()->SetBinLabel(9,"PID=1");
464 fNentries->GetXaxis()->SetBinLabel(10,"PID=2");
465 fNentries->GetXaxis()->SetBinLabel(11,"PID=3");
466 fNentries->GetXaxis()->SetBinLabel(12,"K");
467 fNentries->GetXaxis()->SetBinLabel(13,"Lambda");
468 fNentries->GetXaxis()->SetBinLabel(14,"Pile-up Rej");
469 fNentries->GetXaxis()->SetBinLabel(15,"N. of 0SMH");
470 fNentries->GetXaxis()->SetNdivisions(1,kFALSE);
471
e047b348 472 fSignalType=new TH1F("hsignaltype", "Histo for type of MC signal", 61,-1.,60.);
473 fSignalTypeLsCuts=new TH1F("hsignaltypeLsCuts", "Histo for type of MC signal with loose cuts", 61,-1.,60.);
474 fSignalTypeTghCuts=new TH1F("hsignaltypeTghCuts", "Histo for type of MC signal with tight cuts", 61,-1.,60.);
624c07ab 475
476 //########## DEFINE THE TLISTS ##################
e047b348 477 flistMCproperties=new TList();
478 flistMCproperties->SetOwner();
479 flistMCproperties->SetName("listMCproperties");
480
ac4c229c 481 flistNoCutsSignal = new TList();
482 flistNoCutsSignal->SetOwner();
483 flistNoCutsSignal->SetName("listNCsign");
624c07ab 484
ac4c229c 485 flistNoCutsBack = new TList();
486 flistNoCutsBack->SetOwner();
487 flistNoCutsBack->SetName("listNCback");
624c07ab 488
ac4c229c 489 flistNoCutsFromB = new TList();
490 flistNoCutsFromB->SetOwner();
491 flistNoCutsFromB->SetName("listNCfromB");
624c07ab 492
ac4c229c 493 flistNoCutsFromDstar = new TList();
494 flistNoCutsFromDstar->SetOwner();
495 flistNoCutsFromDstar->SetName("listNCfromDstar");
624c07ab 496
ac4c229c 497 flistNoCutsOther = new TList();
498 flistNoCutsOther->SetOwner();
499 flistNoCutsOther->SetName("listNCother");
624c07ab 500
501
ac4c229c 502 flistLsCutsSignal = new TList();
503 flistLsCutsSignal->SetOwner();
504 flistLsCutsSignal->SetName("listLSCsign");
624c07ab 505
ac4c229c 506 flistLsCutsBack = new TList();
507 flistLsCutsBack->SetOwner();
508 flistLsCutsBack->SetName("listLSCback");
624c07ab 509
ac4c229c 510 flistLsCutsFromB = new TList();
511 flistLsCutsFromB->SetOwner();
512 flistLsCutsFromB->SetName("listLSCfromB");
624c07ab 513
ac4c229c 514 flistLsCutsFromDstar = new TList();
515 flistLsCutsFromDstar->SetOwner();
516 flistLsCutsFromDstar->SetName("listLSCfromDstar");
624c07ab 517
ac4c229c 518 flistLsCutsOther = new TList();
519 flistLsCutsOther->SetOwner();
520 flistLsCutsOther->SetName("listLSCother");
624c07ab 521
522
ac4c229c 523 flistTghCutsSignal = new TList();
524 flistTghCutsSignal->SetOwner();
525 flistTghCutsSignal->SetName("listTGHCsign");
624c07ab 526
ac4c229c 527 flistTghCutsBack = new TList();
528 flistTghCutsBack->SetOwner();
529 flistTghCutsBack->SetName("listTGHCback");
624c07ab 530
ac4c229c 531 flistTghCutsFromB = new TList();
532 flistTghCutsFromB->SetOwner();
533 flistTghCutsFromB->SetName("listTGHCfromB");
624c07ab 534
ac4c229c 535 flistTghCutsFromDstar = new TList();
536 flistTghCutsFromDstar->SetOwner();
537 flistTghCutsFromDstar->SetName("listTGHCfromDstar");
624c07ab 538
ac4c229c 539 flistTghCutsOther = new TList();
540 flistTghCutsOther->SetOwner();
541 flistTghCutsOther->SetName("listTGHCother");
624c07ab 542
543
544
e047b348 545 Float_t ptbinsD0arr[35]={0.,0.1,0.2,0.3,0.4,0.5,0.6,0.8,1.,1.25,1.5,1.75,2.,2.3,2.6,3.,3.5,4.,4.5,5.,5.5,6.,7.,8.,9.,10.,12.,14.,16.,20.,25.,30.,40.,50.,100.};
546 Float_t dumbinning[201];
547 for(Int_t j=0;j<201;j++){
548 dumbinning[j]=(Float_t)j*0.5;
549 }
d39e8f99 550
551 // DEFINE EDGES FOR SPARSE HISTOS
552 const Int_t nPtbinsForSparse=91;//nuber of edges, -1 to get number of bins
553 Double_t ptbinsForNsparse[nPtbinsForSparse];//Binning in pt: step: 0.2 GeV/c up to 8 GeV/c, 0.5 Upto 20, 1 GeV/c up to 40, 5 upt to 70-> 8/0.2+12/0.5+20/1.+30./5
554 Double_t pT=0;
555 Double_t massbins[186],impparbins[401];
556 Double_t massHypoBins[4]={1.,2.,3.,4.};
557 Int_t nbinsSparse[5]={185,185,nPtbinsForSparse-1,400,3};
558 for(Int_t nBins=0;nBins<nPtbinsForSparse;nBins++){
559 ptbinsForNsparse[nBins]=pT;
560 if(pT<8.)pT+=0.2;
561 else if(pT<20)pT+=0.5;
562 else if(pT<40)pT+=1;
563 else if(pT<70)pT+=5.;
564 }
565 for(Int_t nBins=0;nBins<186;nBins++){
566 massbins[nBins]=1.680+nBins*(2.050-1.680)/185.;
567 }
568 for(Int_t nBins=0;nBins<401;nBins++){
569 impparbins[nBins]=-1000+nBins*(2000.)/400.;
570 }
571
572
573
e047b348 574 //################################################################################################
575 // #
576 // HISTO FOR MC PROPERTIES OF D0, c quarks and B mesons #
577 // #
578 //################################################################################################
579 TH1F *hMCcquarkAllPt=new TH1F("hMCcquarkAllPt","c quark Pt (all cquarks produced)",34,ptbinsD0arr);
580 TH1F *hMCcquarkAllEta=new TH1F("hMCcquarkAllEta","c quark Eta (all cquarks produced)",50,-3.,3.);
581 TH1F *hMCcquarkAllEnergy=new TH1F("hMCcquarkAllEnergy","c quark Pt (all cquarks produced)",200,0.,100.);
582 TH1F *hMCcquarkNdaught=new TH1F("hMCcquarkNdaught","N cquark daughters (all cquarks produced)",100,0.,100.);
583 TH1F *hMCD0fromcPt=new TH1F("hMCD0fromcPt","D0 from c Pt",34,ptbinsD0arr);
584 TH1F *hMCD0fromcEta=new TH1F("hMCD0fromcEta","D0 from c Eta",50,-3.,3.);
585 TH1F *hMCD0fromcEnergy=new TH1F("hMCD0fromcEnergy","D0 from c Energy",200,0.,100.);
586
587 TH2F *hMCD0VscquarkPt=new TH2F("hMCD0VscquarkPt","D0 pt Vs cquark pt",34,ptbinsD0arr,34,ptbinsD0arr);
588 TH2F *hMCD0VscquarkEnergy=new TH2F("hMCD0VscquarkEnergy","D0 Energy Vs cquark Energy",200,0.,50.,200,0.,50.);
589 TH1F *hMCD0deltacquarkEnergy=new TH1F("hMCD0deltacquarkEnergy","Fractional D0 Energy w.r.t. cquark Energy",20,0.,1.);
590 TH1F *hMCD0EnergyVsAvcquarkDaughtEn=new TH1F("hMCD0EnergyVsAvcquarkDaughtEn","#Delta(E^{D^0}-E_{avg})/E_{cquark}",40,-1.,1.);
591 TH1F *hMCD0cquarkAngle=new TH1F("hMCD0cquarkAngle","cosine of the angle between D0 and c quark particle",40,-1.,1.);
592 TH2F *hMCD0cquarkAngleEnergy=new TH2F("hMCD0cquarkAngleEnergy","cosine of the angle between D0 and c quark particle as a function of Energy",25,0.,50.,40,-1.,1.);
593
594 TH1I *hMCfromBpdgB=new TH1I("hMCfromBpdgB","hMCfromBpdgB",10000,0.,10000);
595 TH1F *hMCBhadrPt=new TH1F("hMCBhadrPt","B hadr Pt",34,ptbinsD0arr);
596 TH1F *hMCBhadrEta=new TH1F("hMCBhadrEta","B hadr Eta",50,-3.,3.);
597 TH1F *hMCBhadrEnergy=new TH1F("hMCBhadrEnergy","B hadr Pt",200,0.,100.);
598 TH1F *hMCBhadrNdaught=new TH1F("hMCBhadrNdaught","N Bhadr daughters",100,0.,100.);
599 TH1F *hMCD0fromBPt=new TH1F("hMCD0fromBPt","D0 from B Pt",34,ptbinsD0arr);
600 TH1F *hMCD0fromBEta=new TH1F("hMCD0fromBEta","D0 from B Eta",50,-3.,3.);
601 TH1F *hMCD0fromBEnergy=new TH1F("hMCD0fromBEnergy","D0 from B Energy",200,0.,100.);
602
603 TH2F *hMCD0VsBhadrPt=new TH2F("hMCD0VsBhadrPt","D0 pt Vs Bhadr pt",34,ptbinsD0arr,34,ptbinsD0arr);
604 TH2F *hMCD0VsBhadrEnergy=new TH2F("hMCD0VsBhadrEnergy","D0 Energy Vs Bhadr Energy",200,0.,50.,200,0.,50.);
605 TH1F *hMCD0deltaBhadrEnergy=new TH1F("hMCD0deltaBhadrEnergy","Fractional D0 Energy w.r.t. Bhadr Energy",20,0.,1.);
606 TH1F *hMCD0EnergyVsAvBDaughtEn=new TH1F("hMCD0EnergyVsAvBDaughtEn","#Delta(E^{D^0}-E_{avg})/E_{Bahdr}",40,-1.,1.);
607 TH1F *hMCD0BhadrAngle=new TH1F("hMCD0BhadrAngle","cosine of the angle between D0 and Bhadr particle",40,-1.,1.);
608 TH2F *hMCD0BhadrAngleEnergy=new TH2F("hMCD0BhadrAngleEnergy","cosine of the angle between D0 and Bhadr particle as a function of Energy",25,0.,50.,40,-1.,1.);
609
610 TH1I *hMCPartFound=new TH1I("hMCPartFound","1=c,2=D0,3=fromBall,4=fromBmeson,5=fromBbaryon",6,0,6);
611
612
613 flistMCproperties->Add(hMCcquarkAllPt);
614 flistMCproperties->Add(hMCcquarkAllEta);
615 flistMCproperties->Add(hMCcquarkAllEnergy);
616 flistMCproperties->Add(hMCcquarkNdaught);
617 flistMCproperties->Add(hMCD0fromcPt);
618 flistMCproperties->Add(hMCD0fromcEta);
619 flistMCproperties->Add(hMCD0fromcEnergy);
620 flistMCproperties->Add(hMCD0VscquarkPt);
621 flistMCproperties->Add(hMCD0VscquarkEnergy);
622 flistMCproperties->Add(hMCD0deltacquarkEnergy);
623 flistMCproperties->Add(hMCD0EnergyVsAvcquarkDaughtEn);
624 flistMCproperties->Add(hMCD0cquarkAngle);
625 flistMCproperties->Add(hMCD0cquarkAngleEnergy);
626
627 flistMCproperties->Add(hMCfromBpdgB);
628 flistMCproperties->Add(hMCBhadrPt);
629 flistMCproperties->Add(hMCBhadrEta);
630 flistMCproperties->Add(hMCBhadrEnergy);
631 flistMCproperties->Add(hMCBhadrNdaught);
632 flistMCproperties->Add(hMCD0fromBPt);
633 flistMCproperties->Add(hMCD0fromBEta);
634 flistMCproperties->Add(hMCD0fromBEnergy);
635 flistMCproperties->Add(hMCD0VsBhadrPt);
636 flistMCproperties->Add(hMCD0VsBhadrEnergy);
637 flistMCproperties->Add(hMCD0deltaBhadrEnergy);
638 flistMCproperties->Add(hMCD0EnergyVsAvBDaughtEn);
639 flistMCproperties->Add(hMCD0BhadrAngle);
640 flistMCproperties->Add(hMCD0BhadrAngleEnergy);
641 flistMCproperties->Add(hMCPartFound);
624c07ab 642
643 //################################################################################################
644 // #
645 // HISTOS FOR NO CUTS CASE #
646 // #
647 //################################################################################################
e047b348 648 Printf("AFTER MC HISTOS \n");
624c07ab 649
650 //############ NO CUTS SIGNAL HISTOGRAMS ###############
651 //
652 // ####### global properties histo ############
653
e047b348 654 TH2F *hCPtaVSd0d0NCsign=new TH2F("hCPtaVSd0d0NCsign","hCPtaVSd0d0_NoCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 655 TH1F *hSecVtxZNCsign=new TH1F("hSecVtxZNCsign","hSecVtxZ_NoCuts_Signal",1000,-8.,8.);
656 TH1F *hSecVtxXNCsign=new TH1F("hSecVtxXNCsign","hSecVtxX_NoCuts_Signal",1000,-3000.,3000.);
657 TH1F *hSecVtxYNCsign=new TH1F("hSecVtxYNCsign","hSecVtxY_NoCuts_Signal",1000,-3000.,3000.);
658 TH2F *hSecVtxXYNCsign=new TH2F("hSecVtxXYNCsign","hSecVtxXY_NoCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
659 TH1F *hSecVtxPhiNCsign=new TH1F("hSecVtxPhiNCsign","hSecVtxPhi_NoCuts_Signal",180,-180.1,180.1);
e047b348 660 TH1F *hd0singlTrackNCsign=new TH1F("hd0singlTrackNCsign","hd0singlTrackNoCuts_Signal",1000,-5000.,5000.);
661 TH1F *hCPtaNCsign=new TH1F("hCPtaNCsign","hCPta_NoCuts_Signal",100,-1.,1.);
ac4c229c 662 TH1F *hd0xd0NCsign=new TH1F("hd0xd0NCsign","hd0xd0_NoCuts_Signal",1000,-100000.,100000.);
663 TH1F *hMassTrueNCsign=new TH1F("hMassTrueNCsign","D^{0} MC inv. Mass No Cuts Signal(All momenta)",600,1.600,2.200);
664 TH1F *hMassNCsign=new TH1F("hMassNCsign","D^{0} inv. Mass No Cuts Signal (All momenta)",600,1.600,2.200);
665 hMassNCsign->Sumw2();
666 TH1F *hMassTrueNCsignPM=new TH1F("hMassTrueNCsignPM","D^{0} MC inv. Mass No Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
667 TH1F *hMassNCsignPM=new TH1F("hMassNCsignPM","D^{0} inv. Mass No Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
668 hMassNCsignPM->Sumw2();
669
670 TH1F *hMassTrueNCsignSB=new TH1F("hMassTrueNCsignSB","D^{0} MC inv. Mass in Side Bands No Cuts Signal(All momenta)",600,1.600,2.200);
671 TH1F *hMassNCsignSB=new TH1F("hMassNCsignSB","D^{0} inv. Mass in Side Bands No Cuts Signal (All momenta)",600,1.600,2.200);
672 hMassNCsignSB->Sumw2();
673
674 flistNoCutsSignal->Add(hCPtaVSd0d0NCsign);
675 flistNoCutsSignal->Add(hSecVtxZNCsign);
676 flistNoCutsSignal->Add(hSecVtxYNCsign);
677 flistNoCutsSignal->Add(hSecVtxXNCsign);
678 flistNoCutsSignal->Add(hSecVtxXYNCsign);
679 flistNoCutsSignal->Add(hSecVtxPhiNCsign);
e047b348 680 flistNoCutsSignal->Add(hd0singlTrackNCsign);
ac4c229c 681 flistNoCutsSignal->Add(hCPtaNCsign);
682 flistNoCutsSignal->Add(hd0xd0NCsign);
683 flistNoCutsSignal->Add(hMassTrueNCsign);
684 flistNoCutsSignal->Add(hMassNCsign);
685 flistNoCutsSignal->Add(hMassTrueNCsignPM);
686 flistNoCutsSignal->Add(hMassNCsignPM);
687 flistNoCutsSignal->Add(hMassTrueNCsignSB);
688 flistNoCutsSignal->Add(hMassNCsignSB);
e047b348 689
690 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
691 TH1F *hdcaNCsign=new TH1F("hdcaNCsign","hdca_NoCuts_Signal",100,0.,1000.);
692 hdcaNCsign->SetXTitle("dca [#mum]");
693 hdcaNCsign->SetYTitle("Entries");
694 TH1F *hcosthetastarNCsign=new TH1F("hcosthetastarNCsign","hCosThetaStar_NoCuts_Signal",50,-1.,1.);
695 hcosthetastarNCsign->SetXTitle("cos #theta^{*}");
696 hcosthetastarNCsign->SetYTitle("Entries");
697 TH1F *hptD0NCsign=new TH1F("hptD0NCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
698 hptD0NCsign->SetXTitle("p_{t} [GeV/c]");
699 hptD0NCsign->SetYTitle("Entries");
700 TH1F *hptD0VsMaxPtNCsign=new TH1F("hptD0VsMaxPtNCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
701 TH2F *hptD0PTallsqrtNCsign=new TH2F("hptD0PTallsqrtNCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
702 TH2F *hptD0PTallNCsign=new TH2F("hptD0PTallNCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
703 TH2F *hptD0vsptBNCsign=new TH2F("hptD0vsptBNCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
704 TH2F *hpD0vspBNCsign=new TH2F("hpD0vspBNCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
705 TH2F *hptD0vsptcquarkNCsign=new TH2F("hptD0vsptcquarkNCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
706 TH2F *hpD0vspcquarkNCsign=new TH2F("hpD0vspcquarkNCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
707 flistNoCutsSignal->Add(hdcaNCsign);
708 flistNoCutsSignal->Add(hcosthetastarNCsign);
709 flistNoCutsSignal->Add(hptD0NCsign);
710 flistNoCutsSignal->Add(hptD0VsMaxPtNCsign);
711 flistNoCutsSignal->Add(hptD0PTallsqrtNCsign);
712 flistNoCutsSignal->Add(hptD0PTallNCsign);
713 flistNoCutsSignal->Add(hptD0vsptBNCsign);
714 flistNoCutsSignal->Add(hpD0vspBNCsign);
715 flistNoCutsSignal->Add(hptD0vsptcquarkNCsign);
716 flistNoCutsSignal->Add(hpD0vspcquarkNCsign);
717
718 TH1F *hd0zD0ptNCsign;
cc3209fb 719 TH1F *hInvMassD0NCsign,*hInvMassD0barNCsign;
e047b348 720 TH2F *hInvMassPtNCsign=new TH2F("hInvMassPtNCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
721 flistNoCutsSignal->Add(hInvMassPtNCsign);
d39e8f99 722 THnSparseF *hSparseNCsign=new THnSparseF("hSparseNCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
723 hSparseNCsign->SetBinEdges(0,massbins);
724 hSparseNCsign->SetBinEdges(1,massbins);
725 hSparseNCsign->SetBinEdges(2,ptbinsForNsparse);
726 hSparseNCsign->SetBinEdges(3,impparbins);
727 hSparseNCsign->SetBinEdges(4,massHypoBins);
728 flistNoCutsSignal->Add(hSparseNCsign);
729
730
e047b348 731 TH1F *hetaNCsign;
732 TH1F *hCosPDPBNCsign;
733 TH1F *hCosPcPDNCsign;
734 // ADDITIONAL HISTOS
735 TH2F *hd0D0VSd0xd0NCsignpt;
736 TH2F *hangletracksVSd0xd0NCsignpt;
737 TH2F *hangletracksVSd0D0NCsignpt;
738 TH1F *hd0xd0NCsignpt;
739
740 TH2F *hTOFpidNCsign=new TH2F("hTOFpidNCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
741 flistNoCutsSignal->Add(hTOFpidNCsign);
742
743 //##################
744 for(Int_t i=0;i<fnbins;i++){
745 //Printf("INSIDE HISTOS CREATION LOOP: %d \n",fnbins);
746
747 namehist="hd0zD0ptNCsign_pt";
748 namehist+=i;
749 titlehist="d0(z) No Cuts Signalm ptbin=";
750 titlehist+=i;
751 hd0zD0ptNCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
752 hd0zD0ptNCsign->SetXTitle("d_{0}(z) [#mum]");
753 hd0zD0ptNCsign->SetYTitle("Entries");
754 flistNoCutsSignal->Add(hd0zD0ptNCsign);
755
cc3209fb 756 namehist="hInvMassD0NCsign_pt";
e047b348 757 namehist+=i;
cc3209fb 758 titlehist="Invariant Mass D0 No Cuts Signal ptbin=";
e047b348 759 titlehist+=i;
cc3209fb 760 hInvMassD0NCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
761 hInvMassD0NCsign->SetXTitle("Invariant Mass [GeV]");
762 hInvMassD0NCsign->SetYTitle("Entries");
763 flistNoCutsSignal->Add(hInvMassD0NCsign);
764
765
766 namehist="hInvMassD0barNCsign_pt";
767 namehist+=i;
768 titlehist="Invariant Mass D0bar No Cuts Signal ptbin=";
769 titlehist+=i;
770 hInvMassD0barNCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
771 hInvMassD0barNCsign->SetXTitle("Invariant Mass [GeV]");
772 hInvMassD0barNCsign->SetYTitle("Entries");
773 flistNoCutsSignal->Add(hInvMassD0barNCsign);
774
e047b348 775
776 namehist="hetaNCsign_pt";
777 namehist+=i;
778 titlehist="eta No Cuts Signal ptbin=";
779 titlehist+=i;
780 hetaNCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
781 hetaNCsign->SetXTitle("Pseudorapidity");
782 hetaNCsign->SetYTitle("Entries");
783 flistNoCutsSignal->Add(hetaNCsign);
784
785 namehist="hCosPDPBNCsign_pt";
786 namehist+=i;
787 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
788 titlehist+=i;
789 hCosPDPBNCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
790 hCosPDPBNCsign->SetXTitle("Cosine between D0 momentum and B momentum");
791 hCosPDPBNCsign->SetYTitle("Entries");
792 flistNoCutsSignal->Add(hCosPDPBNCsign);
793
794 namehist="hCosPcPDNCsign_pt";
795 namehist+=i;
796 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
797 titlehist+=i;
798 hCosPcPDNCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
799 hCosPcPDNCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
800 hCosPcPDNCsign->SetYTitle("Entries");
801 flistNoCutsSignal->Add(hCosPcPDNCsign);
802
803
804 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
805 namehist="hd0xd0NCsign_pt";
806 namehist+=i;
807 titlehist="d0xd0 No Cuts Signal ptbin=";
808 titlehist+=i;
809 hd0xd0NCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
810 hd0xd0NCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
811 hd0xd0NCsignpt->SetYTitle("Entries");
812 flistNoCutsSignal->Add(hd0xd0NCsignpt);
813
814
815 namehist="hd0D0VSd0xd0NCsign_pt";
816 namehist+=i;
817 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Signal ptbin=";
818 titlehist+=i;
819 hd0D0VSd0xd0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
820 hd0D0VSd0xd0NCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
821 hd0D0VSd0xd0NCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
822 flistNoCutsSignal->Add(hd0D0VSd0xd0NCsignpt);
823
824
825 namehist="hangletracksVSd0xd0NCsign_pt";
826 namehist+=i;
827 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Signal ptbin=";
828 titlehist+=i;
829 hangletracksVSd0xd0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
830 hangletracksVSd0xd0NCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
831 hangletracksVSd0xd0NCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
832 flistNoCutsSignal->Add(hangletracksVSd0xd0NCsignpt);
833
834
835 namehist="hangletracksVSd0D0NCsign_pt";
836 namehist+=i;
837 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Signal ptbin=";
838 titlehist+=i;
839 hangletracksVSd0D0NCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
840 hangletracksVSd0D0NCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
841 hangletracksVSd0D0NCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
842 flistNoCutsSignal->Add(hangletracksVSd0D0NCsignpt);
843
844 }
845 Printf("AFTER LOOP HISTOS CREATION \n");
846 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
847 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
624c07ab 848
849 // ####### d0 D0 histos ############
ac4c229c 850 TH1F *hd0D0NCsignPM = new TH1F("hd0D0NCsignPM","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
851 hd0D0NCsignPM->SetXTitle("Impact parameter [#mum]");
852 hd0D0NCsignPM->SetYTitle("Entries");
853
854 TH1F *hd0D0VtxTrueNCsignPM = new TH1F("hd0D0VtxTrueNCsignPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
855 hd0D0VtxTrueNCsignPM->SetXTitle("Impact parameter [#mum]");
856 hd0D0VtxTrueNCsignPM->SetYTitle("Entries");
857
858 TH1F *hMCd0D0NCsignPM = new TH1F("hMCd0D0NCsignPM","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
859 hMCd0D0NCsignPM->SetXTitle("MC Impact parameter [#mum]");
860 hMCd0D0NCsignPM->SetYTitle("Entries");
861
862 TH1F *hd0D0NCsignSB = new TH1F("hd0D0NCsignSB","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
863 hd0D0NCsignSB->SetXTitle("Impact parameter [#mum]");
864 hd0D0NCsignSB->SetYTitle("Entries");
865
866 TH1F *hd0D0VtxTrueNCsignSB = new TH1F("hd0D0VtxTrueNCsignSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
867 hd0D0VtxTrueNCsignSB->SetXTitle("Impact parameter [#mum]");
868 hd0D0VtxTrueNCsignSB->SetYTitle("Entries");
869
870 TH1F *hMCd0D0NCsignSB = new TH1F("hMCd0D0NCsignSB","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
871 hMCd0D0NCsignSB->SetXTitle("MC Impact parameter [#mum]");
872 hMCd0D0NCsignSB->SetYTitle("Entries");
873
874 flistNoCutsSignal->Add(hd0D0NCsignPM);
875 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignPM);
876 flistNoCutsSignal->Add(hMCd0D0NCsignPM);
877 flistNoCutsSignal->Add(hd0D0NCsignSB);
878 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignSB);
879 flistNoCutsSignal->Add(hMCd0D0NCsignSB);
880
e047b348 881 TH1F *hd0D0ptNCsignPM;
882 TH1F *hMCd0D0ptNCsignPM;
883 TH1F *hd0D0VtxTrueptNCsignPM;
884 TH1F *hd0D0ptNCsignSB;
885 TH1F *hMCd0D0ptNCsignSB;
886 TH1F *hd0D0VtxTrueptNCsignSB;
ac4c229c 887 namehist="hd0D0ptNCsign_";
624c07ab 888 titlehist="D^{0} impact par. plot, No Cuts, Signal, ";
889 for(Int_t i=0;i<fnbins;i++){
d39e8f99 890 //Printf("IN HISTOS CREATION USING PTBINS VALUES for NAMES \n");
624c07ab 891 strnamept=namehist;
892 strnamept.Append("PkMss_pt");
893 strnamept+=i;
894
895 strtitlept=titlehist;
896 strtitlept.Append(" Mass Peak, ");
e047b348 897
624c07ab 898 strtitlept+=fptbins[i];
d39e8f99 899 //Printf("IN HISTOS CREATION USING PTBINS VALUES for NAMES %d: %f\n",i,fptbins[i]);
624c07ab 900 strtitlept.Append("<= pt <");
901 strtitlept+=fptbins[i+1];
902 strtitlept.Append(" [GeV/c]");
903
e047b348 904 hd0D0ptNCsignPM= new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
905 hd0D0ptNCsignPM->SetXTitle("Impact parameter [#mum] ");
906 hd0D0ptNCsignPM->SetYTitle("Entries");
907 flistNoCutsSignal->Add(hd0D0ptNCsignPM);
624c07ab 908
909 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 910 hMCd0D0ptNCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
911 hMCd0D0ptNCsignPM->SetXTitle("MC Impact parameter [#mum] ");
912 hMCd0D0ptNCsignPM->SetYTitle("Entries");
913 flistNoCutsSignal->Add(hMCd0D0ptNCsignPM);
624c07ab 914
915
916 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 917 hd0D0VtxTrueptNCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
918 hd0D0VtxTrueptNCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
919 hd0D0VtxTrueptNCsignPM->SetYTitle("Entries");
920 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignPM);
624c07ab 921
922 strnamept=namehist;
923 strnamept.Append("SBMss_pt");
924 strnamept+=i;
925
926 strtitlept=titlehist;
927 strtitlept.Append(" Side Bands, ");
928 strtitlept+=fptbins[i];
929 strtitlept.Append("<= pt <");
930 strtitlept+=fptbins[i+1];
931 strtitlept.Append(" [GeV/c]");
932
e047b348 933 hd0D0ptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
934 hd0D0ptNCsignSB->SetXTitle("Impact parameter [#mum] ");
935 hd0D0ptNCsignSB->SetYTitle("Entries");
936 flistNoCutsSignal->Add(hd0D0ptNCsignSB);
624c07ab 937
938 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 939 hMCd0D0ptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
940 hMCd0D0ptNCsignSB->SetXTitle("MC Impact parameter [#mum] ");
941 hMCd0D0ptNCsignSB->SetYTitle("Entries");
942 flistNoCutsSignal->Add(hMCd0D0ptNCsignSB);
624c07ab 943
944 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 945 hd0D0VtxTrueptNCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
946 hd0D0VtxTrueptNCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
947 hd0D0VtxTrueptNCsignSB->SetYTitle("Entries");
948 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignSB);
624c07ab 949 }
950
d39e8f99 951 //Printf("AFTER SIGNAL HISTOS CREATION for NOCUTS\n");
e047b348 952
624c07ab 953
954 //############ NO CUTS BACKGROUND HISTOGRAMS ###########
955 //
956 // ######## global properties histos #######
e047b348 957 TH2F *hCPtaVSd0d0NCback=new TH2F("hCPtaVSd0d0NCback","hCPtaVSd0d0_NoCuts_Background",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 958 TH1F *hSecVtxZNCback=new TH1F("hSecVtxZNCback","hSecVtxZ_NoCuts_Background",1000,-8.,8.);
959 TH1F *hSecVtxXNCback=new TH1F("hSecVtxXNCback","hSecVtxX_NoCuts_Background",1000,-3000.,3000.);
960 TH1F *hSecVtxYNCback=new TH1F("hSecVtxYNCback","hSecVtxY_NoCuts_Background",1000,-3000.,3000.);
961 TH2F *hSecVtxXYNCback=new TH2F("hSecVtxXYNCback","hSecVtxXY_NoCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
962 TH1F *hSecVtxPhiNCback=new TH1F("hSecVtxPhiNCback","hSecVtxPhi_NoCuts_Background",180,-180.1,180.1);
e047b348 963 TH1F *hd0singlTrackNCback=new TH1F("hd0singlTrackNCback","hd0singlTrackNoCuts_Back",1000,-5000.,5000.);
964 TH1F *hCPtaNCback=new TH1F("hCPtaNCback","hCPta_NoCuts_Background",100,-1.,1.);
ac4c229c 965 TH1F *hd0xd0NCback=new TH1F("hd0xd0NCback","hd0xd0_NoCuts_Background",1000,-100000.,100000.);
966 TH1F *hMassTrueNCback=new TH1F("hMassTrueNCback","D^{0} MC inv. Mass No Cuts Background(All momenta)",600,1.600,2.200);
967 TH1F *hMassNCback=new TH1F("hMassNCback","D^{0} inv. Mass No Cuts Background (All momenta)",600,1.600,2.200);
968 hMassNCback->Sumw2();
969 TH1F *hMassTrueNCbackPM=new TH1F("hMassTrueNCbackPM","D^{0} MC inv. Mass No Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
970 TH1F *hMassNCbackPM=new TH1F("hMassNCbackPM","D^{0} inv. Mass No Cuts Background (All momenta), MassPeak",600,1.600,2.200);
971 hMassNCbackPM->Sumw2();
972 TH1F *hMassTrueNCbackSB=new TH1F("hMassTrueNCbackSB","D^{0} MC inv. Mass in Side Bands No Cuts Background(All momenta)",600,1.600,2.200);
973 TH1F *hMassNCbackSB=new TH1F("hMassNCbackSB","D^{0} inv. Mass in Side Bands No Cuts Background (All momenta)",600,1.600,2.200);
974 hMassNCbackSB->Sumw2();
975
976 flistNoCutsBack->Add(hCPtaVSd0d0NCback);
977 flistNoCutsBack->Add(hSecVtxZNCback);
978 flistNoCutsBack->Add(hSecVtxYNCback);
979 flistNoCutsBack->Add(hSecVtxXNCback);
980 flistNoCutsBack->Add(hSecVtxXYNCback);
981 flistNoCutsBack->Add(hSecVtxPhiNCback);
e047b348 982 flistNoCutsBack->Add(hd0singlTrackNCback);
ac4c229c 983 flistNoCutsBack->Add(hCPtaNCback);
984 flistNoCutsBack->Add(hd0xd0NCback);
985 flistNoCutsBack->Add(hMassTrueNCback);
986 flistNoCutsBack->Add(hMassNCback);
987 flistNoCutsBack->Add(hMassTrueNCbackPM);
988 flistNoCutsBack->Add(hMassNCbackPM);
989 flistNoCutsBack->Add(hMassTrueNCbackSB);
990 flistNoCutsBack->Add(hMassNCbackSB);
624c07ab 991
992
e047b348 993 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
994 TH1F *hdcaNCback=new TH1F("hdcaNCback","hdca_NoCuts_Backgr",100,0.,1000.);
995 hdcaNCback->SetXTitle("dca [#mum]");
996 hdcaNCback->SetYTitle("Entries");
997 TH1F *hcosthetastarNCback=new TH1F("hcosthetastarNCback","hCosThetaStar_NoCuts_Backgr",50,-1.,1.);
998 hcosthetastarNCback->SetXTitle("cos #theta^{*}");
999 hcosthetastarNCback->SetYTitle("Entries");
1000 TH1F *hptD0NCback=new TH1F("hptD0NCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1001 hptD0NCback->SetXTitle("p_{t} [GeV/c]");
1002 hptD0NCback->SetYTitle("Entries");
1003 TH1F *hptD0VsMaxPtNCback=new TH1F("hptD0VsMaxPtNCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1004 TH2F *hptD0PTallsqrtNCback=new TH2F("hptD0PTallsqrtNCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1005 TH2F *hptD0PTallNCback=new TH2F("hptD0PTallNCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1006 TH2F *hptD0vsptBNCback=new TH2F("hptD0vsptBNCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1007 TH2F *hpD0vspBNCback=new TH2F("hpD0vspBNCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1008 TH2F *hptD0vsptcquarkNCback=new TH2F("hptD0vsptcquarkNCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1009 TH2F *hpD0vspcquarkNCback=new TH2F("hpD0vspcquarkNCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1010 flistNoCutsBack->Add(hdcaNCback);
1011 flistNoCutsBack->Add(hcosthetastarNCback);
1012 flistNoCutsBack->Add(hptD0NCback);
1013 flistNoCutsBack->Add(hptD0VsMaxPtNCback);
1014 flistNoCutsBack->Add(hptD0PTallsqrtNCback);
1015 flistNoCutsBack->Add(hptD0PTallNCback);
1016 flistNoCutsBack->Add(hptD0vsptBNCback);
1017 flistNoCutsBack->Add(hpD0vspBNCback);
1018 flistNoCutsBack->Add(hptD0vsptcquarkNCback);
1019 flistNoCutsBack->Add(hpD0vspcquarkNCback);
1020
1021 TH1F *hd0zD0ptNCback;
cc3209fb 1022 TH1F *hInvMassD0NCback,*hInvMassD0barNCback;
e047b348 1023 TH2F *hInvMassPtNCback=new TH2F("hInvMassPtNCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 1024 THnSparseF *hSparseNCback=new THnSparseF("hSparseNCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1025 hSparseNCback->SetBinEdges(0,massbins);
1026 hSparseNCback->SetBinEdges(1,massbins);
1027 hSparseNCback->SetBinEdges(2,ptbinsForNsparse);
1028 hSparseNCback->SetBinEdges(3,impparbins);
1029 hSparseNCback->SetBinEdges(4,massHypoBins);
1030 flistNoCutsBack->Add(hSparseNCback);
1031
e047b348 1032 TH1F *hetaNCback;
1033 TH1F *hCosPDPBNCback;
1034 TH1F *hCosPcPDNCback;
1035 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1036 TH2F *hd0D0VSd0xd0NCbackpt;
1037 TH2F *hangletracksVSd0xd0NCbackpt;
1038 TH2F *hangletracksVSd0D0NCbackpt;
1039 TH1F *hd0xd0NCbackpt;
1040 flistNoCutsBack->Add(hInvMassPtNCback);
1041
1042 TH2F *hTOFpidNCback=new TH2F("hTOFpidNCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1043 flistNoCutsBack->Add(hTOFpidNCback);
1044
1045 for(Int_t i=0;i<fnbins;i++){
1046 namehist="hd0zD0ptNCback_pt";
1047 namehist+=i;
1048 titlehist="d0(z) No Cuts Backgrm ptbin=";
1049 titlehist+=i;
1050 hd0zD0ptNCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1051 hd0zD0ptNCback->SetXTitle("d_{0}(z) [#mum]");
1052 hd0zD0ptNCback->SetYTitle("Entries");
1053 flistNoCutsBack->Add(hd0zD0ptNCback);
1054
cc3209fb 1055 namehist="hInvMassD0NCback_pt";
e047b348 1056 namehist+=i;
1057 titlehist="Invariant Mass No Cuts Backgr ptbin=";
1058 titlehist+=i;
cc3209fb 1059 hInvMassD0NCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1060 hInvMassD0NCback->SetXTitle("Invariant Mass [GeV]");
1061 hInvMassD0NCback->SetYTitle("Entries");
1062 flistNoCutsBack->Add(hInvMassD0NCback);
1063
1064
1065 namehist="hInvMassD0barNCback_pt";
1066 namehist+=i;
1067 titlehist="Invariant Mass D0bar No Cuts Back ptbin=";
1068 titlehist+=i;
1069 hInvMassD0barNCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1070 hInvMassD0barNCback->SetXTitle("Invariant Mass [GeV]");
1071 hInvMassD0barNCback->SetYTitle("Entries");
1072 flistNoCutsBack->Add(hInvMassD0barNCback);
1073
e047b348 1074
1075 namehist="hetaNCback_pt";
1076 namehist+=i;
1077 titlehist="eta No Cuts Backgr ptbin=";
1078 titlehist+=i;
1079 hetaNCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1080 hetaNCback->SetXTitle("Pseudorapidity");
1081 hetaNCback->SetYTitle("Entries");
1082 flistNoCutsBack->Add(hetaNCback);
1083
1084 namehist="hCosPDPBNCback_pt";
1085 namehist+=i;
1086 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1087 titlehist+=i;
1088 hCosPDPBNCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1089 hCosPDPBNCback->SetXTitle("Cosine between D0 momentum and B momentum");
1090 hCosPDPBNCback->SetYTitle("Entries");
1091 flistNoCutsBack->Add(hCosPDPBNCback);
1092
1093 namehist="hCosPcPDNCback_pt";
1094 namehist+=i;
1095 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1096 titlehist+=i;
1097 hCosPcPDNCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1098 hCosPcPDNCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
1099 hCosPcPDNCback->SetYTitle("Entries");
1100 flistNoCutsBack->Add(hCosPcPDNCback);
1101
1102
1103 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1104 namehist="hd0xd0NCback_pt";
1105 namehist+=i;
1106 titlehist="d0xd0 No Cuts Background ptbin=";
1107 titlehist+=i;
1108 hd0xd0NCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1109 hd0xd0NCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1110 hd0xd0NCbackpt->SetYTitle("Entries");
1111 flistNoCutsBack->Add(hd0xd0NCbackpt);
1112
1113
1114 namehist="hd0D0VSd0xd0NCback_pt";
1115 namehist+=i;
1116 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Back ptbin=";
1117 titlehist+=i;
1118 hd0D0VSd0xd0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1119 hd0D0VSd0xd0NCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1120 hd0D0VSd0xd0NCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1121 flistNoCutsBack->Add(hd0D0VSd0xd0NCbackpt);
1122
1123
1124 namehist="hangletracksVSd0xd0NCback_pt";
1125 namehist+=i;
1126 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Back ptbin=";
1127 titlehist+=i;
1128 hangletracksVSd0xd0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1129 hangletracksVSd0xd0NCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1130 hangletracksVSd0xd0NCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
1131 flistNoCutsBack->Add(hangletracksVSd0xd0NCbackpt);
1132
1133
1134 namehist="hangletracksVSd0D0NCback_pt";
1135 namehist+=i;
1136 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Back ptbin=";
1137 titlehist+=i;
1138 hangletracksVSd0D0NCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1139 hangletracksVSd0D0NCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1140 hangletracksVSd0D0NCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
1141 flistNoCutsBack->Add(hangletracksVSd0D0NCbackpt);
1142
1143
1144
1145 }
1146 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1147 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1148
1149
1150
624c07ab 1151 // ####### d0 D0 histos ############
1152
ac4c229c 1153 TH1F *hd0D0NCbackPM = new TH1F("hd0D0NCbackPM","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1154 hd0D0NCbackPM->SetXTitle("Impact parameter [#mum]");
1155 hd0D0NCbackPM->SetYTitle("Entries");
1156
1157 TH1F *hd0D0VtxTrueNCbackPM = new TH1F("hd0D0VtxTrueNCbackPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1158 hd0D0VtxTrueNCbackPM->SetXTitle("Impact parameter [#mum]");
1159 hd0D0VtxTrueNCbackPM->SetYTitle("Entries");
1160
1161 TH1F *hMCd0D0NCbackPM = new TH1F("hMCd0D0NCbackPM","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1162 hMCd0D0NCbackPM->SetXTitle("MC Impact parameter [#mum]");
1163 hMCd0D0NCbackPM->SetYTitle("Entries");
1164
1165 TH1F *hd0D0NCbackSB = new TH1F("hd0D0NCbackSB","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1166 hd0D0NCbackSB->SetXTitle("Impact parameter [#mum]");
1167 hd0D0NCbackSB->SetYTitle("Entries");
1168
1169 TH1F *hd0D0VtxTrueNCbackSB = new TH1F("hd0D0VtxTrueNCbackSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1170 hd0D0VtxTrueNCbackSB->SetXTitle("Impact parameter [#mum]");
1171 hd0D0VtxTrueNCbackSB->SetYTitle("Entries");
1172
1173 TH1F *hMCd0D0NCbackSB = new TH1F("hMCd0D0NCbackSB","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1174 hMCd0D0NCbackSB->SetXTitle("MC Impact parameter [#mum]");
1175 hMCd0D0NCbackSB->SetYTitle("Entries");
1176
1177 flistNoCutsBack->Add(hd0D0NCbackPM);
1178 flistNoCutsBack->Add(hd0D0VtxTrueNCbackPM);
1179 flistNoCutsBack->Add(hMCd0D0NCbackPM);
1180 flistNoCutsBack->Add(hd0D0NCbackSB);
1181 flistNoCutsBack->Add(hd0D0VtxTrueNCbackSB);
1182 flistNoCutsBack->Add(hMCd0D0NCbackSB);
1183
e047b348 1184 TH1F *hd0D0ptNCbackPM;
1185 TH1F *hMCd0D0ptNCbackPM;
1186 TH1F *hd0D0VtxTrueptNCbackPM;
1187 TH1F *hd0D0ptNCbackSB;
1188 TH1F *hMCd0D0ptNCbackSB;
1189 TH1F *hd0D0VtxTrueptNCbackSB;
ac4c229c 1190 namehist="hd0D0ptNCback_";
624c07ab 1191 titlehist="D^{0} impact par. plot, No Cuts, Background, ";
1192 for(Int_t i=0;i<fnbins;i++){
1193 strnamept=namehist;
1194 strnamept.Append("PkMss_pt");
1195 strnamept+=i;
1196
1197 strtitlept=titlehist;
1198 strtitlept.Append(" Mass Peak, ");
1199 strtitlept+=fptbins[i];
1200 strtitlept.Append("<= pt <");
1201 strtitlept+=fptbins[i+1];
1202 strtitlept.Append(" [GeV/c]");
1203
e047b348 1204 hd0D0ptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1205 hd0D0ptNCbackPM->SetXTitle("Impact parameter [#mum] ");
1206 hd0D0ptNCbackPM->SetYTitle("Entries");
1207 flistNoCutsBack->Add(hd0D0ptNCbackPM);
624c07ab 1208
1209 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 1210 hMCd0D0ptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1211 hMCd0D0ptNCbackPM->SetXTitle("MC Impact parameter [#mum] ");
1212 hMCd0D0ptNCbackPM->SetYTitle("Entries");
1213 flistNoCutsBack->Add(hMCd0D0ptNCbackPM);
624c07ab 1214
1215
1216 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 1217 hd0D0VtxTrueptNCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1218 hd0D0VtxTrueptNCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1219 hd0D0VtxTrueptNCbackPM->SetYTitle("Entries");
1220 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackPM);
624c07ab 1221
1222 strnamept=namehist;
1223 strnamept.Append("SBMss_pt");
1224 strnamept+=i;
1225
1226 strtitlept=titlehist;
1227 strtitlept.Append(" Side Bands, ");
1228 strtitlept+=fptbins[i];
1229 strtitlept.Append("<= pt <");
1230 strtitlept+=fptbins[i+1];
1231 strtitlept.Append(" [GeV/c]");
1232
e047b348 1233 hd0D0ptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1234 hd0D0ptNCbackSB->SetXTitle("Impact parameter [#mum] ");
1235 hd0D0ptNCbackSB->SetYTitle("Entries");
1236 flistNoCutsBack->Add(hd0D0ptNCbackSB);
624c07ab 1237
1238 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 1239 hMCd0D0ptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1240 hMCd0D0ptNCbackSB->SetXTitle("MC Impact parameter [#mum] ");
1241 hMCd0D0ptNCbackSB->SetYTitle("Entries");
1242 flistNoCutsBack->Add(hMCd0D0ptNCbackSB);
624c07ab 1243
1244 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 1245 hd0D0VtxTrueptNCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1246 hd0D0VtxTrueptNCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1247 hd0D0VtxTrueptNCbackSB->SetYTitle("Entries");
1248 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackSB);
624c07ab 1249 }
1250
1251
1252
1253 //############ NO CUTS FROMB HISTOGRAMS ###########
1254 //
1255 //####### global properties histos
1256
e047b348 1257 TH2F *hCPtaVSd0d0NCfromB=new TH2F("hCPtaVSd0d0NCfromB","hCPtaVSd0d0_NoCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 1258 TH1F *hSecVtxZNCfromB=new TH1F("hSecVtxZNCfromB","hSecVtxZ_NoCuts_FromB",1000,-8.,8.);
1259 TH1F *hSecVtxXNCfromB=new TH1F("hSecVtxXNCfromB","hSecVtxX_NoCuts_FromB",1000,-3000.,3000.);
1260 TH1F *hSecVtxYNCfromB=new TH1F("hSecVtxYNCfromB","hSecVtxY_NoCuts_FromB",1000,-3000.,3000.);
1261 TH2F *hSecVtxXYNCfromB=new TH2F("hSecVtxXYNCfromB","hSecVtxXY_NoCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
1262 TH1F *hSecVtxPhiNCfromB=new TH1F("hSecVtxPhiNCfromB","hSecVtxPhi_NoCuts_FromB",180,-180.1,180.1);
e047b348 1263 TH1F *hd0singlTrackNCfromB=new TH1F("hd0singlTrackNCfromB","hd0singlTrackNoCuts_FromB",1000,-5000.,5000.);
1264 TH1F *hCPtaNCfromB=new TH1F("hCPtaNCfromB","hCPta_NoCuts_FromB",100,-1.,1.);
ac4c229c 1265 TH1F *hd0xd0NCfromB=new TH1F("hd0xd0NCfromB","hd0xd0_NoCuts_FromB",1000,-100000.,100000.);
1266 TH1F *hMassTrueNCfromB=new TH1F("hMassTrueNCfromB","D^{0} MC inv. Mass No Cuts FromB(All momenta)",600,1.600,2.200);
1267 TH1F *hMassNCfromB=new TH1F("hMassNCfromB","D^{0} inv. Mass No Cuts FromB (All momenta)",600,1.600,2.200);
1268 hMassNCfromB->Sumw2();
1269 TH1F *hMassTrueNCfromBPM=new TH1F("hMassTrueNCfromBPM","D^{0} MC inv. Mass No Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
1270 TH1F *hMassNCfromBPM=new TH1F("hMassNCfromBPM","D^{0} inv. Mass No Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
1271 hMassNCfromB->Sumw2();
1272 TH1F *hMassTrueNCfromBSB=new TH1F("hMassTrueNCfromBSB","D^{0} MC inv. Mass in Side Bands No Cuts FromB(All momenta)",600,1.600,2.200);
1273 TH1F *hMassNCfromBSB=new TH1F("hMassNCfromBSB","D^{0} inv. Mass in Side Bands No Cuts FromB (All momenta)",600,1.600,2.200);
1274 hMassNCfromBSB->Sumw2();
1275
1276 flistNoCutsFromB->Add(hCPtaVSd0d0NCfromB);
1277 flistNoCutsFromB->Add(hSecVtxZNCfromB);
1278 flistNoCutsFromB->Add(hSecVtxYNCfromB);
1279 flistNoCutsFromB->Add(hSecVtxXNCfromB);
1280 flistNoCutsFromB->Add(hSecVtxXYNCfromB);
1281 flistNoCutsFromB->Add(hSecVtxPhiNCfromB);
e047b348 1282 flistNoCutsFromB->Add(hd0singlTrackNCfromB);
ac4c229c 1283 flistNoCutsFromB->Add(hCPtaNCfromB);
1284 flistNoCutsFromB->Add(hd0xd0NCfromB);
1285 flistNoCutsFromB->Add(hMassTrueNCfromB);
1286 flistNoCutsFromB->Add(hMassNCfromB);
1287 flistNoCutsFromB->Add(hMassTrueNCfromBPM);
1288 flistNoCutsFromB->Add(hMassNCfromBPM);
1289 flistNoCutsFromB->Add(hMassTrueNCfromBSB);
1290 flistNoCutsFromB->Add(hMassNCfromBSB);
624c07ab 1291
e047b348 1292
1293
1294
1295
1296 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1297 TH1F *hdcaNCfromB=new TH1F("hdcaNCfromB","hdca_NoCuts_FromB",100,0.,1000.);
1298 hdcaNCfromB->SetXTitle("dca [#mum]");
1299 hdcaNCfromB->SetYTitle("Entries");
1300 TH1F *hcosthetastarNCfromB=new TH1F("hcosthetastarNCfromB","hCosThetaStar_NoCuts_FromB",50,-1.,1.);
1301 hcosthetastarNCfromB->SetXTitle("cos #theta^{*}");
1302 hcosthetastarNCfromB->SetYTitle("Entries");
1303 TH1F *hptD0NCfromB=new TH1F("hptD0NCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1304 hptD0NCfromB->SetXTitle("p_{t} [GeV/c]");
1305 hptD0NCfromB->SetYTitle("Entries");
1306 TH1F *hptD0VsMaxPtNCfromB=new TH1F("hptD0VsMaxPtNCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1307 TH2F *hptD0PTallsqrtNCfromB=new TH2F("hptD0PTallsqrtNCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1308 TH2F *hptD0PTallNCfromB=new TH2F("hptD0PTallNCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1309 TH2F *hptD0vsptBNCfromB=new TH2F("hptD0vsptBNCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1310 TH2F *hpD0vspBNCfromB=new TH2F("hpD0vspBNCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1311 TH2F *hptD0vsptcquarkNCfromB=new TH2F("hptD0vsptcquarkNCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1312 TH2F *hpD0vspcquarkNCfromB=new TH2F("hpD0vspcquarkNCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1313 flistNoCutsFromB->Add(hdcaNCfromB);
1314 flistNoCutsFromB->Add(hcosthetastarNCfromB);
1315 flistNoCutsFromB->Add(hptD0NCfromB);
1316 flistNoCutsFromB->Add(hptD0VsMaxPtNCfromB);
1317 flistNoCutsFromB->Add(hptD0PTallsqrtNCfromB);
1318 flistNoCutsFromB->Add(hptD0PTallNCfromB);
1319 flistNoCutsFromB->Add(hptD0vsptBNCfromB);
1320 flistNoCutsFromB->Add(hpD0vspBNCfromB);
1321 flistNoCutsFromB->Add(hptD0vsptcquarkNCfromB);
1322 flistNoCutsFromB->Add(hpD0vspcquarkNCfromB);
1323
1324 TH1F *hd0zD0ptNCfromB;
cc3209fb 1325 TH1F *hInvMassD0NCfromB,*hInvMassD0barNCfromB;
e047b348 1326 TH2F *hInvMassPtNCfromB=new TH2F("hInvMassPtNCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 1327 THnSparseF *hSparseNCfromB=new THnSparseF("hSparseNCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1328 hSparseNCfromB->SetBinEdges(0,massbins);
1329 hSparseNCfromB->SetBinEdges(1,massbins);
1330 hSparseNCfromB->SetBinEdges(2,ptbinsForNsparse);
1331 hSparseNCfromB->SetBinEdges(3,impparbins);
1332 hSparseNCfromB->SetBinEdges(4,massHypoBins);
1333 flistNoCutsFromB->Add(hSparseNCfromB);
1334
e047b348 1335 TH1F *hetaNCfromB;
1336 TH1F *hCosPDPBNCfromB;
1337 TH1F *hCosPcPDNCfromB;
1338
1339 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1340 TH2F *hd0D0VSd0xd0NCfromBpt;
1341 TH2F *hangletracksVSd0xd0NCfromBpt;
1342 TH2F *hangletracksVSd0D0NCfromBpt;
1343 TH1F *hd0xd0NCfromBpt;
1344 flistNoCutsFromB->Add(hInvMassPtNCfromB);
1345
1346 TH2F *hTOFpidNCfromB=new TH2F("hTOFpidNCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1347 flistNoCutsFromB->Add(hTOFpidNCfromB);
1348
1349 for(Int_t i=0;i<fnbins;i++){
1350 namehist="hd0zD0ptNCfromB_pt";
1351 namehist+=i;
1352 titlehist="d0(z) No Cuts FromB ptbin=";
1353 titlehist+=i;
1354 hd0zD0ptNCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1355 hd0zD0ptNCfromB->SetXTitle("d_{0}(z) [#mum]");
1356 hd0zD0ptNCfromB->SetYTitle("Entries");
1357 flistNoCutsFromB->Add(hd0zD0ptNCfromB);
1358
cc3209fb 1359 namehist="hInvMassD0NCfromB_pt";
e047b348 1360 namehist+=i;
1361 titlehist="Invariant Mass No Cuts FromB ptbin=";
1362 titlehist+=i;
cc3209fb 1363 hInvMassD0NCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1364 hInvMassD0NCfromB->SetXTitle("Invariant Mass [GeV]");
1365 hInvMassD0NCfromB->SetYTitle("Entries");
1366 flistNoCutsFromB->Add(hInvMassD0NCfromB);
1367
1368
1369 namehist="hInvMassD0barNCfromB_pt";
1370 namehist+=i;
1371 titlehist="Invariant Mass D0bar No Cuts FromB ptbin=";
1372 titlehist+=i;
1373 hInvMassD0barNCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1374 hInvMassD0barNCfromB->SetXTitle("Invariant Mass [GeV]");
1375 hInvMassD0barNCfromB->SetYTitle("Entries");
1376 flistNoCutsFromB->Add(hInvMassD0barNCfromB);
1377
1378
e047b348 1379
1380 namehist="hetaNCfromB_pt";
1381 namehist+=i;
1382 titlehist="eta No Cuts FromB ptbin=";
1383 titlehist+=i;
1384 hetaNCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1385 hetaNCfromB->SetXTitle("Pseudorapidity");
1386 hetaNCfromB->SetYTitle("Entries");
1387 flistNoCutsFromB->Add(hetaNCfromB);
1388
1389 namehist="hCosPDPBNCfromB_pt";
1390 namehist+=i;
1391 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1392 titlehist+=i;
1393 hCosPDPBNCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1394 hCosPDPBNCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
1395 hCosPDPBNCfromB->SetYTitle("Entries");
1396 flistNoCutsFromB->Add(hCosPDPBNCfromB);
1397
1398 namehist="hCosPcPDNCfromB_pt";
1399 namehist+=i;
1400 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1401 titlehist+=i;
1402 hCosPcPDNCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1403 hCosPcPDNCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
1404 hCosPcPDNCfromB->SetYTitle("Entries");
1405 flistNoCutsFromB->Add(hCosPcPDNCfromB);
1406
1407// %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1408 namehist="hd0xd0NCfromB_pt";
1409 namehist+=i;
1410 titlehist="d0xd0 No Cuts FromB ptbin=";
1411 titlehist+=i;
1412 hd0xd0NCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1413 hd0xd0NCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1414 hd0xd0NCfromBpt->SetYTitle("Entries");
1415 flistNoCutsFromB->Add(hd0xd0NCfromBpt);
1416
1417
1418 namehist="hd0D0VSd0xd0NCfromB_pt";
1419 namehist+=i;
1420 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromB ptbin=";
1421 titlehist+=i;
1422 hd0D0VSd0xd0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1423 hd0D0VSd0xd0NCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1424 hd0D0VSd0xd0NCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1425 flistNoCutsFromB->Add(hd0D0VSd0xd0NCfromBpt);
1426
1427
1428 namehist="hangletracksVSd0xd0NCfromB_pt";
1429 namehist+=i;
1430 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromB ptbin=";
1431 titlehist+=i;
1432 hangletracksVSd0xd0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1433 hangletracksVSd0xd0NCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1434 hangletracksVSd0xd0NCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
1435 flistNoCutsFromB->Add(hangletracksVSd0xd0NCfromBpt);
1436
1437
1438 namehist="hangletracksVSd0D0NCfromB_pt";
1439 namehist+=i;
1440 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts FromB ptbin=";
1441 titlehist+=i;
1442 hangletracksVSd0D0NCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1443 hangletracksVSd0D0NCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1444 hangletracksVSd0D0NCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
1445 flistNoCutsFromB->Add(hangletracksVSd0D0NCfromBpt);
1446
1447
1448 }
1449 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1450 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1451
1452
1453
624c07ab 1454 // ######### d0 D0 histos ##############
ac4c229c 1455 TH1F *hd0D0NCfromBPM = new TH1F("hd0D0NCfromBPM","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1456 hd0D0NCfromBPM->SetXTitle("Impact parameter [#mum]");
1457 hd0D0NCfromBPM->SetYTitle("Entries");
1458
1459 TH1F *hd0D0VtxTrueNCfromBPM = new TH1F("hd0D0VtxTrueNCfromBPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1460 hd0D0VtxTrueNCfromBPM->SetXTitle("Impact parameter [#mum]");
1461 hd0D0VtxTrueNCfromBPM->SetYTitle("Entries");
1462
1463 TH1F *hMCd0D0NCfromBPM = new TH1F("hMCd0D0NCfromBPM","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1464 hMCd0D0NCfromBPM->SetXTitle("MC Impact parameter [#mum]");
1465 hMCd0D0NCfromBPM->SetYTitle("Entries");
1466
1467 TH1F *hd0D0NCfromBSB = new TH1F("hd0D0NCfromBSB","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1468 hd0D0NCfromBSB->SetXTitle("Impact parameter [#mum]");
1469 hd0D0NCfromBSB->SetYTitle("Entries");
1470
1471 TH1F *hd0D0VtxTrueNCfromBSB = new TH1F("hd0D0VtxTrueNCfromBSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1472 hd0D0VtxTrueNCfromBSB->SetXTitle("Impact parameter [#mum]");
1473 hd0D0VtxTrueNCfromBSB->SetYTitle("Entries");
1474
1475 TH1F *hMCd0D0NCfromBSB = new TH1F("hMCd0D0NCfromBSB","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1476 hMCd0D0NCfromBSB->SetXTitle("MC Impact parameter [#mum]");
1477 hMCd0D0NCfromBSB->SetYTitle("Entries");
1478
1479 flistNoCutsFromB->Add(hd0D0NCfromBPM);
1480 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBPM);
1481 flistNoCutsFromB->Add(hMCd0D0NCfromBPM);
1482 flistNoCutsFromB->Add(hd0D0NCfromBSB);
1483 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBSB);
1484 flistNoCutsFromB->Add(hMCd0D0NCfromBSB);
1485
e047b348 1486 TH1F *hd0D0ptNCfromBPM;
1487 TH1F *hMCd0D0ptNCfromBPM;
1488 TH1F *hd0D0VtxTrueptNCfromBPM;
1489 TH1F *hd0D0ptNCfromBSB;
1490 TH1F *hMCd0D0ptNCfromBSB;
1491 TH1F *hd0D0VtxTrueptNCfromBSB;
ac4c229c 1492 namehist="hd0D0ptNCfromB_";
624c07ab 1493 titlehist="D^{0} impact par. plot, No Cuts, FromB, ";
1494 for(Int_t i=0;i<fnbins;i++){
1495 strnamept=namehist;
1496 strnamept.Append("PkMss_pt");
1497 strnamept+=i;
1498
1499 strtitlept=titlehist;
1500 strtitlept.Append(" Mass Peak, ");
1501 strtitlept+=fptbins[i];
1502 strtitlept.Append("<= pt <");
1503 strtitlept+=fptbins[i+1];
1504 strtitlept.Append(" [GeV/c]");
1505
e047b348 1506 hd0D0ptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1507 hd0D0ptNCfromBPM->SetXTitle("Impact parameter [#mum] ");
1508 hd0D0ptNCfromBPM->SetYTitle("Entries");
1509 flistNoCutsFromB->Add(hd0D0ptNCfromBPM);
624c07ab 1510
1511 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 1512 hMCd0D0ptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1513 hMCd0D0ptNCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
1514 hMCd0D0ptNCfromBPM->SetYTitle("Entries");
1515 flistNoCutsFromB->Add(hMCd0D0ptNCfromBPM);
624c07ab 1516
1517
1518 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 1519 hd0D0VtxTrueptNCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1520 hd0D0VtxTrueptNCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1521 hd0D0VtxTrueptNCfromBPM->SetYTitle("Entries");
1522 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBPM);
624c07ab 1523
1524 strnamept=namehist;
1525 strnamept.Append("SBMss_pt");
1526 strnamept+=i;
1527
1528 strtitlept=titlehist;
1529 strtitlept.Append(" Side Bands, ");
1530 strtitlept+=fptbins[i];
1531 strtitlept.Append("<= pt <");
1532 strtitlept+=fptbins[i+1];
1533 strtitlept.Append(" [GeV/c]");
1534
e047b348 1535 hd0D0ptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1536 hd0D0ptNCfromBSB->SetXTitle("Impact parameter [#mum] ");
1537 hd0D0ptNCfromBSB->SetYTitle("Entries");
1538 flistNoCutsFromB->Add(hd0D0ptNCfromBSB);
624c07ab 1539
1540 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 1541 hMCd0D0ptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1542 hMCd0D0ptNCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
1543 hMCd0D0ptNCfromBSB->SetYTitle("Entries");
1544 flistNoCutsFromB->Add(hMCd0D0ptNCfromBSB);
624c07ab 1545
1546 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 1547 hd0D0VtxTrueptNCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1548 hd0D0VtxTrueptNCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1549 hd0D0VtxTrueptNCfromBSB->SetYTitle("Entries");
1550 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBSB);
624c07ab 1551 }
1552
1553
1554
1555 //############ NO CUTS FROM DSTAR HISTOGRAMS ###########
1556 //
1557 //############# global properties histos #######
1558
e047b348 1559 TH2F *hCPtaVSd0d0NCfromDstar=new TH2F("hCPtaVSd0d0NCfromDstar","hCPtaVSd0d0_NoCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 1560 TH1F *hSecVtxZNCfromDstar=new TH1F("hSecVtxZNCfromDstar","hSecVtxZ_NoCuts_FromDStar",1000,-8.,8.);
1561 TH1F *hSecVtxXNCfromDstar=new TH1F("hSecVtxXNCfromDstar","hSecVtxX_NoCuts_FromDStar",1000,-3000.,3000.);
1562 TH1F *hSecVtxYNCfromDstar=new TH1F("hSecVtxYNCfromDstar","hSecVtxY_NoCuts_FromDStar",1000,-3000.,3000.);
1563 TH2F *hSecVtxXYNCfromDstar=new TH2F("hSecVtxXYNCfromDstar","hSecVtxXY_NoCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
1564 TH1F *hSecVtxPhiNCfromDstar=new TH1F("hSecVtxPhiNCfromDstar","hSecVtxPhi_NoCuts_FromDStar",180,-180.1,180.1);
e047b348 1565 TH1F *hd0singlTrackNCfromDstar=new TH1F("hd0singlTrackNCfromDstar","hd0singlTrackNoCuts_fromDstar",1000,-5000.,5000.);
1566 TH1F *hCPtaNCfromDstar=new TH1F("hCPtaNCfromDstar","hCPta_NoCuts_FromDStar",100,-1.,1.);
ac4c229c 1567 TH1F *hd0xd0NCfromDstar=new TH1F("hd0xd0NCfromDstar","hd0xd0_NoCuts_FromDStar",1000,-100000.,100000.);
1568 TH1F *hMassTrueNCfromDstar=new TH1F("hMassTrueNCfromDstar","D^{0} MC inv. Mass No Cuts FromDStar(All momenta)",600,1.600,2.200);
1569 TH1F *hMassNCfromDstar=new TH1F("hMassNCfromDstar","D^{0} inv. Mass No Cuts FromDStar (All momenta)",600,1.600,2.200);
1570 hMassNCfromDstar->Sumw2();
1571 TH1F *hMassTrueNCfromDstarPM=new TH1F("hMassTrueNCfromDstarPM","D^{0} MC inv. Mass No Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
1572 TH1F *hMassNCfromDstarPM=new TH1F("hMassNCfromDstarPM","D^{0} inv. Mass No Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
1573 hMassNCfromDstarPM->Sumw2();
1574 TH1F *hMassTrueNCfromDstarSB=new TH1F("hMassTrueNCfromDstarSB","D^{0} MC inv. Mass in Side Bands No Cuts FromDStar(All momenta)",600,1.600,2.200);
1575 TH1F *hMassNCfromDstarSB=new TH1F("hMassNCfromDstarSB","D^{0} inv. Mass in Side Bands No Cuts FromDStar (All momenta)",600,1.600,2.200);
1576 hMassNCfromDstarSB->Sumw2();
1577
1578 flistNoCutsFromDstar->Add(hCPtaVSd0d0NCfromDstar);
1579 flistNoCutsFromDstar->Add(hSecVtxZNCfromDstar);
1580 flistNoCutsFromDstar->Add(hSecVtxYNCfromDstar);
1581 flistNoCutsFromDstar->Add(hSecVtxXNCfromDstar);
1582 flistNoCutsFromDstar->Add(hSecVtxXYNCfromDstar);
1583 flistNoCutsFromDstar->Add(hSecVtxPhiNCfromDstar);
e047b348 1584 flistNoCutsFromDstar->Add(hd0singlTrackNCfromDstar);
ac4c229c 1585 flistNoCutsFromDstar->Add(hCPtaNCfromDstar);
1586 flistNoCutsFromDstar->Add(hd0xd0NCfromDstar);
1587 flistNoCutsFromDstar->Add(hMassTrueNCfromDstar);
1588 flistNoCutsFromDstar->Add(hMassNCfromDstar);
1589 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarPM);
1590 flistNoCutsFromDstar->Add(hMassNCfromDstarPM);
1591 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarSB);
1592 flistNoCutsFromDstar->Add(hMassNCfromDstarSB);
624c07ab 1593
e047b348 1594
1595
1596
1597//%%% NEW HISTOS %%%%%%%%%%%%%%%%
1598 TH1F *hdcaNCfromDstar=new TH1F("hdcaNCfromDstar","hdca_NoCuts_FromDstar",100,0.,1000.);
1599 hdcaNCfromDstar->SetXTitle("dca [#mum]");
1600 hdcaNCfromDstar->SetYTitle("Entries");
1601 TH1F *hcosthetastarNCfromDstar=new TH1F("hcosthetastarNCfromDstar","hCosThetaStar_NoCuts_FromDstar",50,-1.,1.);
1602 hcosthetastarNCfromDstar->SetXTitle("cos #theta^{*}");
1603 hcosthetastarNCfromDstar->SetYTitle("Entries");
1604 TH1F *hptD0NCfromDstar=new TH1F("hptD0NCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1605 hptD0NCfromDstar->SetXTitle("p_{t} [GeV/c]");
1606 hptD0NCfromDstar->SetYTitle("Entries");
1607 TH1F *hptD0VsMaxPtNCfromDstar=new TH1F("hptD0VsMaxPtNCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1608 TH2F *hptD0PTallsqrtNCfromDstar=new TH2F("hptD0PTallsqrtNCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1609 TH2F *hptD0PTallNCfromDstar=new TH2F("hptD0PTallNCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1610 TH2F *hptD0vsptBNCfromDstar=new TH2F("hptD0vsptBNCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1611 TH2F *hpD0vspBNCfromDstar=new TH2F("hpD0vspBNCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1612 TH2F *hptD0vsptcquarkNCfromDstar=new TH2F("hptD0vsptcquarkNCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1613 TH2F *hpD0vspcquarkNCfromDstar=new TH2F("hpD0vspcquarkNCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1614 flistNoCutsFromDstar->Add(hdcaNCfromDstar);
1615 flistNoCutsFromDstar->Add(hcosthetastarNCfromDstar);
1616 flistNoCutsFromDstar->Add(hptD0NCfromDstar);
1617 flistNoCutsFromDstar->Add(hptD0VsMaxPtNCfromDstar);
1618 flistNoCutsFromDstar->Add(hptD0PTallsqrtNCfromDstar);
1619 flistNoCutsFromDstar->Add(hptD0PTallNCfromDstar);
1620 flistNoCutsFromDstar->Add(hptD0vsptBNCfromDstar);
1621 flistNoCutsFromDstar->Add(hpD0vspBNCfromDstar);
1622 flistNoCutsFromDstar->Add(hptD0vsptcquarkNCfromDstar);
1623 flistNoCutsFromDstar->Add(hpD0vspcquarkNCfromDstar);
1624
1625 TH1F *hd0zD0ptNCfromDstar;
cc3209fb 1626 TH1F *hInvMassD0NCfromDstar,*hInvMassD0barNCfromDstar;
e047b348 1627 TH2F *hInvMassPtNCfromDstar=new TH2F("hInvMassPtNCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 1628 THnSparseF *hSparseNCfromDstar=new THnSparseF("hSparseNCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1629 hSparseNCfromDstar->SetBinEdges(0,massbins);
1630 hSparseNCfromDstar->SetBinEdges(1,massbins);
1631 hSparseNCfromDstar->SetBinEdges(2,ptbinsForNsparse);
1632 hSparseNCfromDstar->SetBinEdges(3,impparbins);
1633 hSparseNCfromDstar->SetBinEdges(4,massHypoBins);
1634 flistNoCutsFromDstar->Add(hSparseNCfromDstar);
e047b348 1635 TH1F *hetaNCfromDstar;
1636 TH1F *hCosPDPBNCfromDstar;
1637 TH1F *hCosPcPDNCfromDstar;
1638 flistNoCutsFromDstar->Add(hInvMassPtNCfromDstar);
1639 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1640 TH2F *hd0D0VSd0xd0NCfromDstarpt;
1641 TH2F *hangletracksVSd0xd0NCfromDstarpt;
1642 TH2F *hangletracksVSd0D0NCfromDstarpt;
1643 TH1F *hd0xd0NCfromDstarpt;
1644
1645 TH2F *hTOFpidNCfromDstar=new TH2F("hTOFpidNCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1646 flistNoCutsFromDstar->Add(hTOFpidNCfromDstar);
1647
1648 for(Int_t i=0;i<fnbins;i++){
1649 namehist="hd0zD0ptNCfromDstar_pt";
1650 namehist+=i;
1651 titlehist="d0(z) No Cuts FromDstarm ptbin=";
1652 titlehist+=i;
1653 hd0zD0ptNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1654 hd0zD0ptNCfromDstar->SetXTitle("d_{0}(z) [#mum]");
1655 hd0zD0ptNCfromDstar->SetYTitle("Entries");
1656 flistNoCutsFromDstar->Add(hd0zD0ptNCfromDstar);
1657
cc3209fb 1658 namehist="hInvMassD0NCfromDstar_pt";
e047b348 1659 namehist+=i;
1660 titlehist="Invariant Mass No Cuts FromDstar ptbin=";
1661 titlehist+=i;
cc3209fb 1662 hInvMassD0NCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1663 hInvMassD0NCfromDstar->SetXTitle("Invariant Mass [GeV]");
1664 hInvMassD0NCfromDstar->SetYTitle("Entries");
1665 flistNoCutsFromDstar->Add(hInvMassD0NCfromDstar);
1666
1667
1668 namehist="hInvMassD0barNCfromDstar_pt";
1669 namehist+=i;
1670 titlehist="Invariant Mass D0bar No Cuts FromDstar ptbin=";
1671 titlehist+=i;
1672 hInvMassD0barNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1673 hInvMassD0barNCfromDstar->SetXTitle("Invariant Mass [GeV]");
1674 hInvMassD0barNCfromDstar->SetYTitle("Entries");
1675 flistNoCutsFromDstar->Add(hInvMassD0barNCfromDstar);
1676
1677
e047b348 1678
1679 namehist="hetaNCfromDstar_pt";
1680 namehist+=i;
1681 titlehist="eta No Cuts FromDstar ptbin=";
1682 titlehist+=i;
1683 hetaNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1684 hetaNCfromDstar->SetXTitle("Pseudorapidity");
1685 hetaNCfromDstar->SetYTitle("Entries");
1686 flistNoCutsFromDstar->Add(hetaNCfromDstar);
1687
1688 namehist="hCosPDPBNCfromDstar_pt";
1689 namehist+=i;
1690 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1691 titlehist+=i;
1692 hCosPDPBNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1693 hCosPDPBNCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
1694 hCosPDPBNCfromDstar->SetYTitle("Entries");
1695 flistNoCutsFromDstar->Add(hCosPDPBNCfromDstar);
1696
1697 namehist="hCosPcPDNCfromDstar_pt";
1698 namehist+=i;
1699 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1700 titlehist+=i;
1701 hCosPcPDNCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1702 hCosPcPDNCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
1703 hCosPcPDNCfromDstar->SetYTitle("Entries");
1704 flistNoCutsFromDstar->Add(hCosPcPDNCfromDstar);
1705
1706 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1707 namehist="hd0xd0NCfromDstar_pt";
1708 namehist+=i;
1709 titlehist="d0xd0 No Cuts FromDstar ptbin=";
1710 titlehist+=i;
1711 hd0xd0NCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
1712 hd0xd0NCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
1713 hd0xd0NCfromDstarpt->SetYTitle("Entries");
1714 flistNoCutsFromDstar->Add(hd0xd0NCfromDstarpt);
1715
1716
1717 namehist="hd0D0VSd0xd0NCfromDstar_pt";
1718 namehist+=i;
1719 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromDstar ptbin=";
1720 titlehist+=i;
1721 hd0D0VSd0xd0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
1722 hd0D0VSd0xd0NCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1723 hd0D0VSd0xd0NCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
1724 flistNoCutsFromDstar->Add(hd0D0VSd0xd0NCfromDstarpt);
1725
1726
1727 namehist="hangletracksVSd0xd0NCfromDstar_pt";
1728 namehist+=i;
1729 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts FromDstar ptbin=";
1730 titlehist+=i;
1731 hangletracksVSd0xd0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
1732 hangletracksVSd0xd0NCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
1733 hangletracksVSd0xd0NCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
1734 flistNoCutsFromDstar->Add(hangletracksVSd0xd0NCfromDstarpt);
1735
1736
1737 namehist="hangletracksVSd0D0NCfromDstar_pt";
1738 namehist+=i;
1739 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts FromDstar ptbin=";
1740 titlehist+=i;
1741 hangletracksVSd0D0NCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
1742 hangletracksVSd0D0NCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
1743 hangletracksVSd0D0NCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
1744 flistNoCutsFromDstar->Add(hangletracksVSd0D0NCfromDstarpt);
1745
1746 }
1747 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
1748 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1749
1750
624c07ab 1751 //########## d0 D0 histos #############
ac4c229c 1752 TH1F *hd0D0NCfromDstPM = new TH1F("hd0D0NCfromDstarPM","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1753 hd0D0NCfromDstPM->SetXTitle("Impact parameter [#mum]");
1754 hd0D0NCfromDstPM->SetYTitle("Entries");
1755
1756 TH1F *hd0D0VtxTrueNCfromDstPM = new TH1F("hd0D0VtxTrueNCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1757 hd0D0VtxTrueNCfromDstPM->SetXTitle("Impact parameter [#mum]");
1758 hd0D0VtxTrueNCfromDstPM->SetYTitle("Entries");
1759
1760 TH1F *hMCd0D0NCfromDstPM = new TH1F("hMCd0D0NCfromDstarPM","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1761 hMCd0D0NCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
1762 hMCd0D0NCfromDstPM->SetYTitle("Entries");
1763
1764 TH1F *hd0D0NCfromDstSB = new TH1F("hd0D0NCfromDstarSB","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1765 hd0D0NCfromDstSB->SetXTitle("Impact parameter [#mum]");
1766 hd0D0NCfromDstSB->SetYTitle("Entries");
1767
1768 TH1F *hd0D0VtxTrueNCfromDstSB = new TH1F("hd0D0VtxTrueNCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1769 hd0D0VtxTrueNCfromDstSB->SetXTitle("Impact parameter [#mum]");
1770 hd0D0VtxTrueNCfromDstSB->SetYTitle("Entries");
1771
1772 TH1F *hMCd0D0NCfromDstSB = new TH1F("hMCd0D0NCfromDstarSB","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1773 hMCd0D0NCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
1774 hMCd0D0NCfromDstSB->SetYTitle("Entries");
1775
1776 flistNoCutsFromDstar->Add(hd0D0NCfromDstPM);
1777 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstPM);
1778 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstPM);
1779 flistNoCutsFromDstar->Add(hd0D0NCfromDstSB);
1780 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstSB);
1781 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstSB);
1782
e047b348 1783 TH1F *hd0D0ptNCfromDstPM;
1784 TH1F *hMCd0D0ptNCfromDstPM;
1785 TH1F *hd0D0VtxTrueptNCfromDstPM;
1786 TH1F *hd0D0ptNCfromDstSB;
1787 TH1F *hMCd0D0ptNCfromDstSB;
1788 TH1F *hd0D0VtxTrueptNCfromDstSB;
ac4c229c 1789 namehist="hd0D0ptNCfromDstar_";
624c07ab 1790 titlehist="D^{0} impact par. plot, No Cuts, FromDStar, ";
1791 for(Int_t i=0;i<fnbins;i++){
1792 strnamept=namehist;
1793 strnamept.Append("PkMss_pt");
1794 strnamept+=i;
1795
1796 strtitlept=titlehist;
1797 strtitlept.Append(" Mass Peak, ");
1798 strtitlept+=fptbins[i];
1799 strtitlept.Append("<= pt <");
1800 strtitlept+=fptbins[i+1];
1801 strtitlept.Append(" [GeV/c]");
1802
e047b348 1803 hd0D0ptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1804 hd0D0ptNCfromDstPM->SetXTitle("Impact parameter [#mum] ");
1805 hd0D0ptNCfromDstPM->SetYTitle("Entries");
1806 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstPM);
624c07ab 1807
1808 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 1809 hMCd0D0ptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1810 hMCd0D0ptNCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
1811 hMCd0D0ptNCfromDstPM->SetYTitle("Entries");
1812 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstPM);
624c07ab 1813
1814
1815 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 1816 hd0D0VtxTrueptNCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1817 hd0D0VtxTrueptNCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1818 hd0D0VtxTrueptNCfromDstPM->SetYTitle("Entries");
1819 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstPM);
624c07ab 1820
1821 strnamept=namehist;
1822 strnamept.Append("SBMss_pt");
1823 strnamept+=i;
1824
1825 strtitlept=titlehist;
1826 strtitlept.Append(" Side Bands, ");
1827 strtitlept+=fptbins[i];
1828 strtitlept.Append("<= pt <");
1829 strtitlept+=fptbins[i+1];
1830 strtitlept.Append(" [GeV/c]");
1831
e047b348 1832 hd0D0ptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1833 hd0D0ptNCfromDstSB->SetXTitle("Impact parameter [#mum] ");
1834 hd0D0ptNCfromDstSB->SetYTitle("Entries");
1835 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstSB);
624c07ab 1836
1837 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 1838 hMCd0D0ptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1839 hMCd0D0ptNCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
1840 hMCd0D0ptNCfromDstSB->SetYTitle("Entries");
1841 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstSB);
624c07ab 1842
1843 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 1844 hd0D0VtxTrueptNCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1845 hd0D0VtxTrueptNCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1846 hd0D0VtxTrueptNCfromDstSB->SetYTitle("Entries");
1847 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstSB);
624c07ab 1848 }
1849
1850
1851 //############ NO CUTS OTHER HISTOGRAMS ###########
1852 //
1853 //########### global properties histos ###########
1854
e047b348 1855 TH2F *hCPtaVSd0d0NCother=new TH2F("hCPtaVSd0d0NCother","hCPtaVSd0d0_NoCuts_other",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 1856 TH1F *hSecVtxZNCother=new TH1F("hSecVtxZNCother","hSecVtxZ_NoCuts_other",1000,-8.,8.);
1857 TH1F *hSecVtxXNCother=new TH1F("hSecVtxXNCother","hSecVtxX_NoCuts_other",1000,-3000.,3000.);
1858 TH1F *hSecVtxYNCother=new TH1F("hSecVtxYNCother","hSecVtxY_NoCuts_other",1000,-3000.,3000.);
1859 TH2F *hSecVtxXYNCother=new TH2F("hSecVtxXYNCother","hSecVtxXY_NoCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
1860 TH1F *hSecVtxPhiNCother=new TH1F("hSecVtxPhiNCother","hSecVtxPhi_NoCuts_other",180,-180.1,180.1);
e047b348 1861 TH1F *hd0singlTrackNCother=new TH1F("hd0singlTrackNCother","hd0singlTrackNoCuts_Other",1000,-5000.,5000.);
1862 TH1F *hCPtaNCother=new TH1F("hCPtaNCother","hCPta_NoCuts_other",100,-1.,1.);
ac4c229c 1863 TH1F *hd0xd0NCother=new TH1F("hd0xd0NCother","hd0xd0_NoCuts_other",1000,-100000.,100000.);
1864 TH1F *hMassTrueNCother=new TH1F("hMassTrueNCother","D^{0} MC inv. Mass No Cuts other(All momenta)",600,1.600,2.200);
1865 TH1F *hMassNCother=new TH1F("hMassNCother","D^{0} inv. Mass No Cuts other (All momenta)",600,1.600,2.200);
1866 hMassNCother->Sumw2();
1867 TH1F *hMassTrueNCotherPM=new TH1F("hMassTrueNCotherPM","D^{0} MC inv. Mass No Cuts Other, Mass Peak. (All momenta)",600,1.600,2.200);
1868 TH1F *hMassNCotherPM=new TH1F("hMassNCotherPM","D^{0} inv. Mass No Cuts Other (All momenta), MassPeak",600,1.600,2.200);
1869 hMassNCotherPM->Sumw2();
1870 TH1F *hMassTrueNCotherSB=new TH1F("hMassTrueNCotherSB","D^{0} MC inv. Mass in Side Bands No Cuts other(All momenta)",600,1.600,2.200);
1871 TH1F *hMassNCotherSB=new TH1F("hMassNCotherSB","D^{0} inv. Mass in Side Bands No Cuts other (All momenta)",600,1.600,2.200);
1872 hMassNCotherSB->Sumw2();
1873
1874 flistNoCutsOther->Add(hCPtaVSd0d0NCother);
1875 flistNoCutsOther->Add(hSecVtxZNCother);
1876 flistNoCutsOther->Add(hSecVtxYNCother);
1877 flistNoCutsOther->Add(hSecVtxXNCother);
1878 flistNoCutsOther->Add(hSecVtxXYNCother);
1879 flistNoCutsOther->Add(hSecVtxPhiNCother);
e047b348 1880 flistNoCutsOther->Add(hd0singlTrackNCother);
ac4c229c 1881 flistNoCutsOther->Add(hCPtaNCother);
1882 flistNoCutsOther->Add(hd0xd0NCother);
1883 flistNoCutsOther->Add(hMassTrueNCother);
1884 flistNoCutsOther->Add(hMassNCother);
1885 flistNoCutsOther->Add(hMassTrueNCotherPM);
1886 flistNoCutsOther->Add(hMassNCotherPM);
1887 flistNoCutsOther->Add(hMassTrueNCotherSB);
1888 flistNoCutsOther->Add(hMassNCotherSB);
624c07ab 1889
e047b348 1890
1891
1892 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
1893 TH1F *hdcaNCother=new TH1F("hdcaNCother","hdca_NoCuts_Other",100,0.,1000.);
1894 hdcaNCother->SetXTitle("dca [#mum]");
1895 hdcaNCother->SetYTitle("Entries");
1896 TH1F *hcosthetastarNCother=new TH1F("hcosthetastarNCother","hCosThetaStar_NoCuts_Other",50,-1.,1.);
1897 hcosthetastarNCother->SetXTitle("cos #theta^{*}");
1898 hcosthetastarNCother->SetYTitle("Entries");
1899 TH1F *hptD0NCother=new TH1F("hptD0NCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
1900 hptD0NCother->SetXTitle("p_{t} [GeV/c]");
1901 hptD0NCother->SetYTitle("Entries");
1902 TH1F *hptD0VsMaxPtNCother=new TH1F("hptD0VsMaxPtNCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
1903 TH2F *hptD0PTallsqrtNCother=new TH2F("hptD0PTallsqrtNCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
1904 TH2F *hptD0PTallNCother=new TH2F("hptD0PTallNCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
1905 TH2F *hptD0vsptBNCother=new TH2F("hptD0vsptBNCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1906 TH2F *hpD0vspBNCother=new TH2F("hpD0vspBNCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1907 TH2F *hptD0vsptcquarkNCother=new TH2F("hptD0vsptcquarkNCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1908 TH2F *hpD0vspcquarkNCother=new TH2F("hpD0vspcquarkNCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
1909 flistNoCutsOther->Add(hdcaNCother);
1910 flistNoCutsOther->Add(hcosthetastarNCother);
1911 flistNoCutsOther->Add(hptD0NCother);
1912 flistNoCutsOther->Add(hptD0VsMaxPtNCother);
1913 flistNoCutsOther->Add(hptD0PTallsqrtNCother);
1914 flistNoCutsOther->Add(hptD0PTallNCother);
1915 flistNoCutsOther->Add(hptD0vsptBNCother);
1916 flistNoCutsOther->Add(hpD0vspBNCother);
1917 flistNoCutsOther->Add(hptD0vsptcquarkNCother);
1918 flistNoCutsOther->Add(hpD0vspcquarkNCother);
1919
1920 TH1F *hd0zD0ptNCother;
cc3209fb 1921 TH1F *hInvMassD0NCother,*hInvMassD0barNCother;
e047b348 1922 TH2F *hInvMassPtNCother=new TH2F("hInvMassPtNCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 1923 THnSparseF *hSparseNCother=new THnSparseF("hSparseNCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
1924 hSparseNCother->SetBinEdges(0,massbins);
1925 hSparseNCother->SetBinEdges(1,massbins);
1926 hSparseNCother->SetBinEdges(2,ptbinsForNsparse);
1927 hSparseNCother->SetBinEdges(3,impparbins);
1928 hSparseNCother->SetBinEdges(4,massHypoBins);
1929 flistNoCutsOther->Add(hSparseNCother);
e047b348 1930 TH1F *hetaNCother;
1931 TH1F *hCosPDPBNCother;
1932 TH1F *hCosPcPDNCother;
1933 flistNoCutsOther->Add(hInvMassPtNCother);
1934 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
1935 TH2F *hd0D0VSd0xd0NCotherpt;
1936 TH2F *hangletracksVSd0xd0NCotherpt;
1937 TH2F *hangletracksVSd0D0NCotherpt;
1938 TH1F *hd0xd0NCotherpt;
1939
1940 TH2F *hTOFpidNCother=new TH2F("hTOFpidNCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
1941 flistNoCutsOther->Add(hTOFpidNCother);
1942
1943 for(Int_t i=0;i<fnbins;i++){
1944 namehist="hd0zD0ptNCother_pt";
1945 namehist+=i;
1946 titlehist="d0(z) No Cuts Otherm ptbin=";
1947 titlehist+=i;
1948 hd0zD0ptNCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
1949 hd0zD0ptNCother->SetXTitle("d_{0}(z) [#mum]");
1950 hd0zD0ptNCother->SetYTitle("Entries");
1951 flistNoCutsOther->Add(hd0zD0ptNCother);
1952
cc3209fb 1953 namehist="hInvMassD0NCother_pt";
e047b348 1954 namehist+=i;
1955 titlehist="Invariant Mass No Cuts Other ptbin=";
1956 titlehist+=i;
cc3209fb 1957 hInvMassD0NCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1958 hInvMassD0NCother->SetXTitle("Invariant Mass [GeV]");
1959 hInvMassD0NCother->SetYTitle("Entries");
1960 flistNoCutsOther->Add(hInvMassD0NCother);
1961
1962
1963 namehist="hInvMassD0barNCother_pt";
1964 namehist+=i;
1965 titlehist="Invariant Mass D0bar No Cuts Other ptbin=";
1966 titlehist+=i;
1967 hInvMassD0barNCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
1968 hInvMassD0barNCother->SetXTitle("Invariant Mass [GeV]");
1969 hInvMassD0barNCother->SetYTitle("Entries");
1970 flistNoCutsOther->Add(hInvMassD0barNCother);
1971
e047b348 1972
1973 namehist="hetaNCother_pt";
1974 namehist+=i;
1975 titlehist="eta No Cuts Other ptbin=";
1976 titlehist+=i;
1977 hetaNCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
1978 hetaNCother->SetXTitle("Pseudorapidity");
1979 hetaNCother->SetYTitle("Entries");
1980 flistNoCutsOther->Add(hetaNCother);
1981
1982 namehist="hCosPDPBNCother_pt";
1983 namehist+=i;
1984 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
1985 titlehist+=i;
1986 hCosPDPBNCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1987 hCosPDPBNCother->SetXTitle("Cosine between D0 momentum and B momentum");
1988 hCosPDPBNCother->SetYTitle("Entries");
1989 flistNoCutsOther->Add(hCosPDPBNCother);
1990
1991 namehist="hCosPcPDNCother_pt";
1992 namehist+=i;
1993 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
1994 titlehist+=i;
1995 hCosPcPDNCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
1996 hCosPcPDNCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
1997 hCosPcPDNCother->SetYTitle("Entries");
1998 flistNoCutsOther->Add(hCosPcPDNCother);
1999
2000
2001 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2002 namehist="hd0xd0NCother_pt";
2003 namehist+=i;
2004 titlehist="d0xd0 No Cuts Other ptbin=";
2005 titlehist+=i;
2006 hd0xd0NCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2007 hd0xd0NCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2008 hd0xd0NCotherpt->SetYTitle("Entries");
2009 flistNoCutsOther->Add(hd0xd0NCotherpt);
2010
2011
2012 namehist="hd0D0VSd0xd0NCother_pt";
2013 namehist+=i;
2014 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Other ptbin=";
2015 titlehist+=i;
2016 hd0D0VSd0xd0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2017 hd0D0VSd0xd0NCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2018 hd0D0VSd0xd0NCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2019 flistNoCutsOther->Add(hd0D0VSd0xd0NCotherpt);
2020
2021
2022 namehist="hangletracksVSd0xd0NCother_pt";
2023 namehist+=i;
2024 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} No Cuts Other ptbin=";
2025 titlehist+=i;
2026 hangletracksVSd0xd0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2027 hangletracksVSd0xd0NCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2028 hangletracksVSd0xd0NCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
2029 flistNoCutsOther->Add(hangletracksVSd0xd0NCotherpt);
2030
2031
2032 namehist="hangletracksVSd0D0NCother_pt";
2033 namehist+=i;
2034 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} No Cuts Other ptbin=";
2035 titlehist+=i;
2036 hangletracksVSd0D0NCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2037 hangletracksVSd0D0NCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2038 hangletracksVSd0D0NCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
2039 flistNoCutsOther->Add(hangletracksVSd0D0NCotherpt);
2040
2041 }
2042 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2043 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2044
2045
2046
2047
624c07ab 2048 //############# d0 D0 histos ###############à
ac4c229c 2049 TH1F *hd0D0NCotherPM = new TH1F("hd0D0NCotherPM","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2050 hd0D0NCotherPM->SetXTitle("Impact parameter [#mum]");
2051 hd0D0NCotherPM->SetYTitle("Entries");
2052
2053 TH1F *hd0D0VtxTrueNCotherPM = new TH1F("hd0D0VtxTrueNCotherPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2054 hd0D0VtxTrueNCotherPM->SetXTitle("Impact parameter [#mum]");
2055 hd0D0VtxTrueNCotherPM->SetYTitle("Entries");
2056
2057 TH1F *hMCd0D0NCotherPM = new TH1F("hMCd0D0NCotherPM","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2058 hMCd0D0NCotherPM->SetXTitle("MC Impact parameter [#mum]");
2059 hMCd0D0NCotherPM->SetYTitle("Entries");
2060
2061 TH1F *hd0D0NCotherSB = new TH1F("hd0D0NCotherSB","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2062 hd0D0NCotherSB->SetXTitle("Impact parameter [#mum]");
2063 hd0D0NCotherSB->SetYTitle("Entries");
2064
2065 TH1F *hd0D0VtxTrueNCotherSB = new TH1F("hd0D0VtxTrueNCotherSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2066 hd0D0VtxTrueNCotherSB->SetXTitle("Impact parameter [#mum]");
2067 hd0D0VtxTrueNCotherSB->SetYTitle("Entries");
2068
2069 TH1F *hMCd0D0NCotherSB = new TH1F("hMCd0D0NCotherSB","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2070 hMCd0D0NCotherSB->SetXTitle("MC Impact parameter [#mum]");
2071 hMCd0D0NCotherSB->SetYTitle("Entries");
2072
2073 flistNoCutsOther->Add(hd0D0NCotherPM);
2074 flistNoCutsOther->Add(hd0D0VtxTrueNCotherPM);
2075 flistNoCutsOther->Add(hMCd0D0NCotherPM);
2076 flistNoCutsOther->Add(hd0D0NCotherSB);
2077 flistNoCutsOther->Add(hd0D0VtxTrueNCotherSB);
2078 flistNoCutsOther->Add(hMCd0D0NCotherSB);
2079
e047b348 2080 TH1F *hd0D0ptNCotherPM;
2081 TH1F *hMCd0D0ptNCotherPM;
2082 TH1F *hd0D0VtxTrueptNCotherPM;
2083 TH1F *hd0D0ptNCotherSB;
2084 TH1F *hMCd0D0ptNCotherSB;
2085 TH1F *hd0D0VtxTrueptNCotherSB;
ac4c229c 2086 namehist="hd0D0ptNCother_";
624c07ab 2087 titlehist="D^{0} impact par. plot, No Cuts, Other, ";
2088 for(Int_t i=0;i<fnbins;i++){
2089 strnamept=namehist;
2090 strnamept.Append("PkMss_pt");
2091 strnamept+=i;
2092
2093 strtitlept=titlehist;
2094 strtitlept.Append(" Mass Peak, ");
2095 strtitlept+=fptbins[i];
2096 strtitlept.Append("<= pt <");
2097 strtitlept+=fptbins[i+1];
2098 strtitlept.Append(" [GeV/c]");
2099
e047b348 2100 hd0D0ptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2101 hd0D0ptNCotherPM->SetXTitle("Impact parameter [#mum] ");
2102 hd0D0ptNCotherPM->SetYTitle("Entries");
2103 flistNoCutsOther->Add(hd0D0ptNCotherPM);
624c07ab 2104
2105 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 2106 hMCd0D0ptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2107 hMCd0D0ptNCotherPM->SetXTitle("MC Impact parameter [#mum] ");
2108 hMCd0D0ptNCotherPM->SetYTitle("Entries");
2109 flistNoCutsOther->Add(hMCd0D0ptNCotherPM);
624c07ab 2110
2111
2112 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 2113 hd0D0VtxTrueptNCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2114 hd0D0VtxTrueptNCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2115 hd0D0VtxTrueptNCotherPM->SetYTitle("Entries");
2116 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherPM);
624c07ab 2117
2118 strnamept=namehist;
2119 strnamept.Append("SBMss_pt");
2120 strnamept+=i;
2121
2122 strtitlept=titlehist;
2123 strtitlept.Append(" Side Bands, ");
2124 strtitlept+=fptbins[i];
2125 strtitlept.Append("<= pt <");
2126 strtitlept+=fptbins[i+1];
2127 strtitlept.Append(" [GeV/c]");
2128
e047b348 2129 hd0D0ptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2130 hd0D0ptNCotherSB->SetXTitle("Impact parameter [#mum] ");
2131 hd0D0ptNCotherSB->SetYTitle("Entries");
2132 flistNoCutsOther->Add(hd0D0ptNCotherSB);
624c07ab 2133
2134 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 2135 hMCd0D0ptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2136 hMCd0D0ptNCotherSB->SetXTitle("MC Impact parameter [#mum] ");
2137 hMCd0D0ptNCotherSB->SetYTitle("Entries");
2138 flistNoCutsOther->Add(hMCd0D0ptNCotherSB);
624c07ab 2139
2140 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 2141 hd0D0VtxTrueptNCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2142 hd0D0VtxTrueptNCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2143 hd0D0VtxTrueptNCotherSB->SetYTitle("Entries");
2144 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherSB);
624c07ab 2145 }
2146
2147
2148 //################################################################################################
2149 // #
2150 // HISTOS FOR LOOSE CUTS #
2151 // #
2152 //################################################################################################
2153
2154 //############ LOOSE CUTS SIGNAL HISTOGRAMS ###############
2155 //
2156 // ####### global properties histo ############
2157
e047b348 2158 TH2F *hCPtaVSd0d0LSCsign=new TH2F("hCPtaVSd0d0LSCsign","hCPtaVSd0d0_LooseCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 2159 TH1F *hSecVtxZLSCsign=new TH1F("hSecVtxZLSCsign","hSecVtxZ_LooseCuts_Signal",1000,-8.,8.);
2160 TH1F *hSecVtxXLSCsign=new TH1F("hSecVtxXLSCsign","hSecVtxX_LooseCuts_Signal",1000,-3000.,3000.);
2161 TH1F *hSecVtxYLSCsign=new TH1F("hSecVtxYLSCsign","hSecVtxY_LooseCuts_Signal",1000,-3000.,3000.);
2162 TH2F *hSecVtxXYLSCsign=new TH2F("hSecVtxXYLSCsign","hSecVtxXY_LooseCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
2163 TH1F *hSecVtxPhiLSCsign=new TH1F("hSecVtxPhiLSCsign","hSecVtxPhi_LooseCuts_Signal",180,-180.1,180.1);
e047b348 2164 TH1F *hd0singlTrackLSCsign=new TH1F("hd0singlTrackLSCsign","hd0singlTrackLooseCuts_Signal",1000,-5000.,5000.);
2165 TH1F *hCPtaLSCsign=new TH1F("hCPtaLSCsign","hCPta_LooseCuts_Signal",100,-1.,1.);
ac4c229c 2166 TH1F *hd0xd0LSCsign=new TH1F("hd0xd0LSCsign","hd0xd0_LooseCuts_Signal",1000,-100000.,100000.);
2167 TH1F *hMassTrueLSCsign=new TH1F("hMassTrueLSCsign","D^{0} MC inv. Mass Loose Cuts Signal(All momenta)",600,1.600,2.200);
2168 TH1F *hMassLSCsign=new TH1F("hMassLSCsign","D^{0} inv. Mass Loose Cuts Signal (All momenta)",600,1.600,2.200);
2169 hMassLSCsign->Sumw2();
2170 TH1F *hMassTrueLSCsignPM=new TH1F("hMassTrueLSCsignPM","D^{0} MC inv. Mass Loose Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
2171 TH1F *hMassLSCsignPM=new TH1F("hMassLSCsignPM","D^{0} inv. Mass Loose Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
2172 hMassLSCsignPM->Sumw2();
2173 TH1F *hMassTrueLSCsignSB=new TH1F("hMassTrueLSCsignSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Signal(All momenta)",600,1.600,2.200);
2174 TH1F *hMassLSCsignSB=new TH1F("hMassLSCsignSB","D^{0} inv. Mass in Side Bands Loose Cuts Signal (All momenta)",600,1.600,2.200);
2175 hMassLSCsignSB->Sumw2();
2176
2177 flistLsCutsSignal->Add(hCPtaVSd0d0LSCsign);
2178 flistLsCutsSignal->Add(hSecVtxZLSCsign);
2179 flistLsCutsSignal->Add(hSecVtxYLSCsign);
2180 flistLsCutsSignal->Add(hSecVtxXLSCsign);
2181 flistLsCutsSignal->Add(hSecVtxXYLSCsign);
2182 flistLsCutsSignal->Add(hSecVtxPhiLSCsign);
e047b348 2183 flistLsCutsSignal->Add(hd0singlTrackLSCsign);
ac4c229c 2184 flistLsCutsSignal->Add(hCPtaLSCsign);
2185 flistLsCutsSignal->Add(hd0xd0LSCsign);
2186 flistLsCutsSignal->Add(hMassTrueLSCsign);
2187 flistLsCutsSignal->Add(hMassLSCsign);
2188 flistLsCutsSignal->Add(hMassTrueLSCsignPM);
2189 flistLsCutsSignal->Add(hMassLSCsignPM);
2190 flistLsCutsSignal->Add(hMassTrueLSCsignSB);
2191 flistLsCutsSignal->Add(hMassLSCsignSB);
624c07ab 2192
e047b348 2193
2194 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2195 TH1F *hdcaLSCsign=new TH1F("hdcaLSCsign","hdca_LooseCuts_Sign",100,0.,1000.);
2196 hdcaLSCsign->SetXTitle("dca [#mum]");
2197 hdcaLSCsign->SetYTitle("Entries");
2198 TH1F *hcosthetastarLSCsign=new TH1F("hcosthetastarLSCsign","hCosThetaStar_LooseCuts_Sign",50,-1.,1.);
2199 hcosthetastarLSCsign->SetXTitle("cos #theta^{*}");
2200 hcosthetastarLSCsign->SetYTitle("Entries");
2201 TH1F *hptD0LSCsign=new TH1F("hptD0LSCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2202 hptD0LSCsign->SetXTitle("p_{t} [GeV/c]");
2203 hptD0LSCsign->SetYTitle("Entries");
2204 TH1F *hptD0VsMaxPtLSCsign=new TH1F("hptD0VsMaxPtLSCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2205 TH2F *hptD0PTallsqrtLSCsign=new TH2F("hptD0PTallsqrtLSCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2206 TH2F *hptD0PTallLSCsign=new TH2F("hptD0PTallLSCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2207 TH2F *hptD0vsptBLSCsign=new TH2F("hptD0vsptBLSCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2208 TH2F *hpD0vspBLSCsign=new TH2F("hpD0vspBLSCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2209 TH2F *hptD0vsptcquarkLSCsign=new TH2F("hptD0vsptcquarkLSCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2210 TH2F *hpD0vspcquarkLSCsign=new TH2F("hpD0vspcquarkLSCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2211 flistLsCutsSignal->Add(hdcaLSCsign);
2212 flistLsCutsSignal->Add(hcosthetastarLSCsign);
2213 flistLsCutsSignal->Add(hptD0LSCsign);
2214 flistLsCutsSignal->Add(hptD0VsMaxPtLSCsign);
2215 flistLsCutsSignal->Add(hptD0PTallsqrtLSCsign);
2216 flistLsCutsSignal->Add(hptD0PTallLSCsign);
2217 flistLsCutsSignal->Add(hptD0vsptBLSCsign);
2218 flistLsCutsSignal->Add(hpD0vspBLSCsign);
2219 flistLsCutsSignal->Add(hptD0vsptcquarkLSCsign);
2220 flistLsCutsSignal->Add(hpD0vspcquarkLSCsign);
2221
2222 TH1F *hd0zD0ptLSCsign;
cc3209fb 2223 TH1F *hInvMassD0LSCsign,*hInvMassD0barLSCsign;
e047b348 2224 TH2F *hInvMassPtLSCsign=new TH2F("hInvMassPtLSCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 2225 THnSparseF *hSparseLSCsign=new THnSparseF("hSparseLSCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2226 hSparseLSCsign->SetBinEdges(0,massbins);
2227 hSparseLSCsign->SetBinEdges(1,massbins);
2228 hSparseLSCsign->SetBinEdges(2,ptbinsForNsparse);
2229 hSparseLSCsign->SetBinEdges(3,impparbins);
2230 hSparseLSCsign->SetBinEdges(4,massHypoBins);
2231 flistLsCutsSignal->Add(hSparseLSCsign);
e047b348 2232 TH1F *hetaLSCsign;
2233 TH1F *hCosPDPBLSCsign;
2234 TH1F *hCosPcPDLSCsign;
2235 flistLsCutsSignal->Add(hInvMassPtLSCsign);
2236
2237 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2238 TH2F *hd0D0VSd0xd0LSCsignpt;
2239 TH2F *hangletracksVSd0xd0LSCsignpt;
2240 TH2F *hangletracksVSd0D0LSCsignpt;
2241 TH1F *hd0xd0LSCsignpt;
2242
2243 TH2F *hTOFpidLSCsign=new TH2F("hTOFpidLSCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2244 flistLsCutsSignal->Add(hTOFpidLSCsign);
2245
2246 for(Int_t i=0;i<fnbins;i++){
2247 namehist="hd0zD0ptLSCsign_pt";
2248 namehist+=i;
2249 titlehist="d0(z) Loose Cuts Signm ptbin=";
2250 titlehist+=i;
2251 hd0zD0ptLSCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2252 hd0zD0ptLSCsign->SetXTitle("d_{0}(z) [#mum]");
2253 hd0zD0ptLSCsign->SetYTitle("Entries");
2254 flistLsCutsSignal->Add(hd0zD0ptLSCsign);
2255
cc3209fb 2256 namehist="hInvMassD0LSCsign_pt";
e047b348 2257 namehist+=i;
2258 titlehist="Invariant Mass Loose Cuts Sign ptbin=";
2259 titlehist+=i;
cc3209fb 2260 hInvMassD0LSCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2261 hInvMassD0LSCsign->SetXTitle("Invariant Mass [GeV]");
2262 hInvMassD0LSCsign->SetYTitle("Entries");
2263 flistLsCutsSignal->Add(hInvMassD0LSCsign);
2264
2265
2266 namehist="hInvMassD0barLSCsign_pt";
2267 namehist+=i;
d39e8f99 2268 titlehist="Invariant Mass D0bar Loose Cuts Signal ptbin=";
cc3209fb 2269 titlehist+=i;
2270 hInvMassD0barLSCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2271 hInvMassD0barLSCsign->SetXTitle("Invariant Mass [GeV]");
2272 hInvMassD0barLSCsign->SetYTitle("Entries");
2273 flistLsCutsSignal->Add(hInvMassD0barLSCsign);
e047b348 2274
2275 namehist="hetaLSCsign_pt";
2276 namehist+=i;
2277 titlehist="eta Loose Cuts Sign ptbin=";
2278 titlehist+=i;
2279 hetaLSCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2280 hetaLSCsign->SetXTitle("Pseudorapidity");
2281 hetaLSCsign->SetYTitle("Entries");
2282 flistLsCutsSignal->Add(hetaLSCsign);
2283
2284 namehist="hCosPDPBLSCsign_pt";
2285 namehist+=i;
2286 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2287 titlehist+=i;
2288 hCosPDPBLSCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2289 hCosPDPBLSCsign->SetXTitle("Cosine between D0 momentum and B momentum");
2290 hCosPDPBLSCsign->SetYTitle("Entries");
2291 flistLsCutsSignal->Add(hCosPDPBLSCsign);
2292
2293 namehist="hCosPcPDLSCsign_pt";
2294 namehist+=i;
2295 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2296 titlehist+=i;
2297 hCosPcPDLSCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2298 hCosPcPDLSCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
2299 hCosPcPDLSCsign->SetYTitle("Entries");
2300 flistLsCutsSignal->Add(hCosPcPDLSCsign);
2301
2302
2303 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2304 namehist="hd0xd0LSCsign_pt";
2305 namehist+=i;
2306 titlehist="d0xd0 Loose Cuts Sign ptbin=";
2307 titlehist+=i;
2308 hd0xd0LSCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2309 hd0xd0LSCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2310 hd0xd0LSCsignpt->SetYTitle("Entries");
2311 flistLsCutsSignal->Add(hd0xd0LSCsignpt);
2312
2313
2314 namehist="hd0D0VSd0xd0LSCsign_pt";
2315 namehist+=i;
2316 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Sign ptbin=";
2317 titlehist+=i;
2318 hd0D0VSd0xd0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2319 hd0D0VSd0xd0LSCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2320 hd0D0VSd0xd0LSCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2321 flistLsCutsSignal->Add(hd0D0VSd0xd0LSCsignpt);
2322
2323
2324 namehist="hangletracksVSd0xd0LSCsign_pt";
2325 namehist+=i;
2326 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Sign ptbin=";
2327 titlehist+=i;
2328 hangletracksVSd0xd0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2329 hangletracksVSd0xd0LSCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2330 hangletracksVSd0xd0LSCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
2331 flistLsCutsSignal->Add(hangletracksVSd0xd0LSCsignpt);
2332
2333
2334 namehist="hangletracksVSd0D0LSCsign_pt";
2335 namehist+=i;
2336 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Sign ptbin=";
2337 titlehist+=i;
2338 hangletracksVSd0D0LSCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2339 hangletracksVSd0D0LSCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2340 hangletracksVSd0D0LSCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
2341 flistLsCutsSignal->Add(hangletracksVSd0D0LSCsignpt);
2342
2343
2344 }
2345 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2346 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2347
2348
624c07ab 2349 // ####### d0 D0 histos ############
ac4c229c 2350 TH1F *hd0D0LSCsignPM = new TH1F("hd0D0LSCsignPM","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2351 hd0D0LSCsignPM->SetXTitle("Impact parameter [#mum]");
2352 hd0D0LSCsignPM->SetYTitle("Entries");
2353
2354 TH1F *hd0D0VtxTrueLSCsignPM = new TH1F("hd0D0VtxTrueLSCsignPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2355 hd0D0VtxTrueLSCsignPM->SetXTitle("Impact parameter [#mum]");
2356 hd0D0VtxTrueLSCsignPM->SetYTitle("Entries");
2357
2358 TH1F *hMCd0D0LSCsignPM = new TH1F("hMCd0D0LSCsignPM","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2359 hMCd0D0LSCsignPM->SetXTitle("MC Impact parameter [#mum]");
2360 hMCd0D0LSCsignPM->SetYTitle("Entries");
2361
2362 TH1F *hd0D0LSCsignSB = new TH1F("hd0D0LSCsignSB","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2363 hd0D0LSCsignSB->SetXTitle("Impact parameter [#mum]");
2364 hd0D0LSCsignSB->SetYTitle("Entries");
2365
2366 TH1F *hd0D0VtxTrueLSCsignSB = new TH1F("hd0D0VtxTrueLSCsignSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2367 hd0D0VtxTrueLSCsignSB->SetXTitle("Impact parameter [#mum]");
2368 hd0D0VtxTrueLSCsignSB->SetYTitle("Entries");
2369
2370 TH1F *hMCd0D0LSCsignSB = new TH1F("hMCd0D0LSCsignSB","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
2371 hMCd0D0LSCsignSB->SetXTitle("MC Impact parameter [#mum]");
2372 hMCd0D0LSCsignSB->SetYTitle("Entries");
2373
2374 flistLsCutsSignal->Add(hd0D0LSCsignPM);
2375 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignPM);
2376 flistLsCutsSignal->Add(hMCd0D0LSCsignPM);
2377 flistLsCutsSignal->Add(hd0D0LSCsignSB);
2378 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignSB);
2379 flistLsCutsSignal->Add(hMCd0D0LSCsignSB);
2380
e047b348 2381 TH1F *hd0D0ptLSCsignPM;
2382 TH1F *hMCd0D0ptLSCsignPM;
2383 TH1F *hd0D0VtxTrueptLSCsignPM;
2384 TH1F *hd0D0ptLSCsignSB;
2385 TH1F *hMCd0D0ptLSCsignSB;
2386 TH1F *hd0D0VtxTrueptLSCsignSB;
ac4c229c 2387 namehist="hd0D0ptLSCsign_";
624c07ab 2388 titlehist="D^{0} impact par. plot, Loose Cuts, Signal, ";
2389 for(Int_t i=0;i<fnbins;i++){
2390 strnamept=namehist;
2391 strnamept.Append("PkMss_pt");
2392 strnamept+=i;
2393
2394 strtitlept=titlehist;
2395 strtitlept.Append(" Mass Peak, ");
2396 strtitlept+=fptbins[i];
2397 strtitlept.Append("<= pt <");
2398 strtitlept+=fptbins[i+1];
2399 strtitlept.Append(" [GeV/c]");
2400
e047b348 2401 hd0D0ptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2402 hd0D0ptLSCsignPM->SetXTitle("Impact parameter [#mum] ");
2403 hd0D0ptLSCsignPM->SetYTitle("Entries");
2404 flistLsCutsSignal->Add(hd0D0ptLSCsignPM);
624c07ab 2405
2406 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 2407 hMCd0D0ptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2408 hMCd0D0ptLSCsignPM->SetXTitle("MC Impact parameter [#mum] ");
2409 hMCd0D0ptLSCsignPM->SetYTitle("Entries");
2410 flistLsCutsSignal->Add(hMCd0D0ptLSCsignPM);
624c07ab 2411
2412
2413 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 2414 hd0D0VtxTrueptLSCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2415 hd0D0VtxTrueptLSCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2416 hd0D0VtxTrueptLSCsignPM->SetYTitle("Entries");
2417 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignPM);
624c07ab 2418
2419 strnamept=namehist;
2420 strnamept.Append("SBMss_pt");
2421 strnamept+=i;
2422
2423 strtitlept=titlehist;
2424 strtitlept.Append(" Side Bands, ");
2425 strtitlept+=fptbins[i];
2426 strtitlept.Append("<= pt <");
2427 strtitlept+=fptbins[i+1];
2428 strtitlept.Append(" [GeV/c]");
2429
e047b348 2430 hd0D0ptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2431 hd0D0ptLSCsignSB->SetXTitle("Impact parameter [#mum] ");
2432 hd0D0ptLSCsignSB->SetYTitle("Entries");
2433 flistLsCutsSignal->Add(hd0D0ptLSCsignSB);
624c07ab 2434
2435 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 2436 hMCd0D0ptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2437 hMCd0D0ptLSCsignSB->SetXTitle("MC Impact parameter [#mum] ");
2438 hMCd0D0ptLSCsignSB->SetYTitle("Entries");
2439 flistLsCutsSignal->Add(hMCd0D0ptLSCsignSB);
624c07ab 2440
2441 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 2442 hd0D0VtxTrueptLSCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2443 hd0D0VtxTrueptLSCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2444 hd0D0VtxTrueptLSCsignSB->SetYTitle("Entries");
2445 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignSB);
624c07ab 2446 }
2447
2448
2449 //############ LOOSE CUTS BACKGROUND HISTOGRAMS ###########
2450 //
2451 // ######## global properties histos #######
e047b348 2452 TH2F *hCPtaVSd0d0LSCback=new TH2F("hCPtaVSd0d0LSCback","hCPtaVSd0d0_LooseCuts_Background",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 2453 TH1F *hSecVtxZLSCback=new TH1F("hSecVtxZLSCback","hSecVtxZ_LooseCuts_Background",1000,-8.,8.);
2454 TH1F *hSecVtxXLSCback=new TH1F("hSecVtxXLSCback","hSecVtxX_LooseCuts_Background",1000,-3000.,3000.);
2455 TH1F *hSecVtxYLSCback=new TH1F("hSecVtxYLSCback","hSecVtxY_LooseCuts_Background",1000,-3000.,3000.);
2456 TH2F *hSecVtxXYLSCback=new TH2F("hSecVtxXYLSCback","hSecVtxXY_LooseCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
2457 TH1F *hSecVtxPhiLSCback=new TH1F("hSecVtxPhiLSCback","hSecVtxPhi_LooseCuts_Background",180,-180.1,180.1);
e047b348 2458 TH1F *hd0singlTrackLSCback=new TH1F("hd0singlTrackLSCback","hd0singlTrackLooseCuts_Back",1000,-5000.,5000.);
2459 TH1F *hCPtaLSCback=new TH1F("hCPtaLSCback","hCPta_LooseCuts_Background",100,-1.,1.);
ac4c229c 2460 TH1F *hd0xd0LSCback=new TH1F("hd0xd0LSCback","hd0xd0_LooseCuts_Background",1000,-100000.,100000.);
2461 TH1F *hMassTrueLSCback=new TH1F("hMassTrueLSCback","D^{0} MC inv. Mass Loose Cuts Background(All momenta)",600,1.600,2.200);
2462 TH1F *hMassLSCback=new TH1F("hMassLSCback","D^{0} inv. Mass Loose Cuts Background (All momenta)",600,1.600,2.200);
2463 hMassLSCback->Sumw2();
2464 TH1F *hMassTrueLSCbackPM=new TH1F("hMassTrueLSCbackPM","D^{0} MC inv. Mass Loose Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
2465 TH1F *hMassLSCbackPM=new TH1F("hMassLSCbackPM","D^{0} inv. Mass Loose Cuts Background (All momenta), MassPeak",600,1.600,2.200);
2466 hMassLSCbackPM->Sumw2();
2467 TH1F *hMassTrueLSCbackSB=new TH1F("hMassTrueLSCbackSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Background(All momenta)",600,1.600,2.200);
2468 TH1F *hMassLSCbackSB=new TH1F("hMassLSCbackSB","D^{0} inv. Mass in Side Bands Loose Cuts Background (All momenta)",600,1.600,2.200);
2469 hMassLSCbackSB->Sumw2();
2470
2471 flistLsCutsBack->Add(hCPtaVSd0d0LSCback);
2472 flistLsCutsBack->Add(hSecVtxZLSCback);
2473 flistLsCutsBack->Add(hSecVtxYLSCback);
2474 flistLsCutsBack->Add(hSecVtxXLSCback);
2475 flistLsCutsBack->Add(hSecVtxXYLSCback);
2476 flistLsCutsBack->Add(hSecVtxPhiLSCback);
e047b348 2477 flistLsCutsBack->Add(hd0singlTrackLSCback);
ac4c229c 2478 flistLsCutsBack->Add(hCPtaLSCback);
2479 flistLsCutsBack->Add(hd0xd0LSCback);
2480 flistLsCutsBack->Add(hMassTrueLSCback);
2481 flistLsCutsBack->Add(hMassLSCback);
2482 flistLsCutsBack->Add(hMassTrueLSCbackPM);
2483 flistLsCutsBack->Add(hMassLSCbackPM);
2484 flistLsCutsBack->Add(hMassTrueLSCbackSB);
2485 flistLsCutsBack->Add(hMassLSCbackSB);
624c07ab 2486
2487
e047b348 2488
2489
2490
2491
2492
2493
2494 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2495 TH1F *hdcaLSCback=new TH1F("hdcaLSCback","hdca_LooseCuts_Backgr",100,0.,1000.);
2496 hdcaLSCback->SetXTitle("dca [#mum]");
2497 hdcaLSCback->SetYTitle("Entries");
2498 TH1F *hcosthetastarLSCback=new TH1F("hcosthetastarLSCback","hCosThetaStar_LooseCuts_Backgr",50,-1.,1.);
2499 hcosthetastarLSCback->SetXTitle("cos #theta^{*}");
2500 hcosthetastarLSCback->SetYTitle("Entries");
2501 TH1F *hptD0LSCback=new TH1F("hptD0LSCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2502 hptD0LSCback->SetXTitle("p_{t} [GeV/c]");
2503 hptD0LSCback->SetYTitle("Entries");
2504 TH1F *hptD0VsMaxPtLSCback=new TH1F("hptD0VsMaxPtLSCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2505 TH2F *hptD0PTallsqrtLSCback=new TH2F("hptD0PTallsqrtLSCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2506 TH2F *hptD0PTallLSCback=new TH2F("hptD0PTallLSCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2507 TH2F *hptD0vsptBLSCback=new TH2F("hptD0vsptBLSCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2508 TH2F *hpD0vspBLSCback=new TH2F("hpD0vspBLSCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2509 TH2F *hptD0vsptcquarkLSCback=new TH2F("hptD0vsptcquarkLSCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2510 TH2F *hpD0vspcquarkLSCback=new TH2F("hpD0vspcquarkLSCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2511 flistLsCutsBack->Add(hdcaLSCback);
2512 flistLsCutsBack->Add(hcosthetastarLSCback);
2513 flistLsCutsBack->Add(hptD0LSCback);
2514 flistLsCutsBack->Add(hptD0VsMaxPtLSCback);
2515 flistLsCutsBack->Add(hptD0PTallsqrtLSCback);
2516 flistLsCutsBack->Add(hptD0PTallLSCback);
2517 flistLsCutsBack->Add(hptD0vsptBLSCback);
2518 flistLsCutsBack->Add(hpD0vspBLSCback);
2519 flistLsCutsBack->Add(hptD0vsptcquarkLSCback);
2520 flistLsCutsBack->Add(hpD0vspcquarkLSCback);
2521
2522 TH1F *hd0zD0ptLSCback;
cc3209fb 2523 TH1F *hInvMassD0LSCback,*hInvMassD0barLSCback;
e047b348 2524 TH2F *hInvMassPtLSCback=new TH2F("hInvMassPtLSCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 2525 THnSparseF *hSparseLSCback=new THnSparseF("hSparseLSCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2526 hSparseLSCback->SetBinEdges(0,massbins);
2527 hSparseLSCback->SetBinEdges(1,massbins);
2528 hSparseLSCback->SetBinEdges(2,ptbinsForNsparse);
2529 hSparseLSCback->SetBinEdges(3,impparbins);
2530 hSparseLSCback->SetBinEdges(4,massHypoBins);
2531 flistLsCutsBack->Add(hSparseLSCback);
e047b348 2532 TH1F *hetaLSCback;
2533 TH1F *hCosPDPBLSCback;
2534 TH1F *hCosPcPDLSCback;
2535 flistLsCutsBack->Add(hInvMassPtLSCback);
2536 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2537 TH2F *hd0D0VSd0xd0LSCbackpt;
2538 TH2F *hangletracksVSd0xd0LSCbackpt;
2539 TH2F *hangletracksVSd0D0LSCbackpt;
2540 TH1F *hd0xd0LSCbackpt;
2541
2542 TH2F *hTOFpidLSCback=new TH2F("hTOFpidLSCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2543 flistLsCutsBack->Add(hTOFpidLSCback);
2544
2545 for(Int_t i=0;i<fnbins;i++){
2546 namehist="hd0zD0ptLSCback_pt";
2547 namehist+=i;
2548 titlehist="d0(z) Loose Cuts Backgr ptbin=";
2549 titlehist+=i;
2550 hd0zD0ptLSCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2551 hd0zD0ptLSCback->SetXTitle("d_{0}(z) [#mum]");
2552 hd0zD0ptLSCback->SetYTitle("Entries");
2553 flistLsCutsBack->Add(hd0zD0ptLSCback);
2554
cc3209fb 2555 namehist="hInvMassD0LSCback_pt";
e047b348 2556 namehist+=i;
2557 titlehist="Invariant Mass Loose Cuts Backgr ptbin=";
2558 titlehist+=i;
cc3209fb 2559 hInvMassD0LSCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2560 hInvMassD0LSCback->SetXTitle("Invariant Mass [GeV]");
2561 hInvMassD0LSCback->SetYTitle("Entries");
2562 flistLsCutsBack->Add(hInvMassD0LSCback);
2563
2564 namehist="hInvMassD0barLSCback_pt";
2565 namehist+=i;
d39e8f99 2566 titlehist="Invariant Mass D0bar Loose Cuts Back ptbin=";
cc3209fb 2567 titlehist+=i;
2568 hInvMassD0barLSCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2569 hInvMassD0barLSCback->SetXTitle("Invariant Mass [GeV]");
2570 hInvMassD0barLSCback->SetYTitle("Entries");
2571 flistLsCutsBack->Add(hInvMassD0barLSCback);
2572
e047b348 2573
2574 namehist="hetaLSCback_pt";
2575 namehist+=i;
2576 titlehist="eta Loose Cuts Backgr ptbin=";
2577 titlehist+=i;
2578 hetaLSCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2579 hetaLSCback->SetXTitle("Pseudorapidity");
2580 hetaLSCback->SetYTitle("Entries");
2581 flistLsCutsBack->Add(hetaLSCback);
2582
2583 namehist="hCosPDPBLSCback_pt";
2584 namehist+=i;
2585 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2586 titlehist+=i;
2587 hCosPDPBLSCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2588 hCosPDPBLSCback->SetXTitle("Cosine between D0 momentum and B momentum");
2589 hCosPDPBLSCback->SetYTitle("Entries");
2590 flistLsCutsBack->Add(hCosPDPBLSCback);
2591
2592 namehist="hCosPcPDLSCback_pt";
2593 namehist+=i;
2594 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2595 titlehist+=i;
2596 hCosPcPDLSCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2597 hCosPcPDLSCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
2598 hCosPcPDLSCback->SetYTitle("Entries");
2599 flistLsCutsBack->Add(hCosPcPDLSCback);
2600
2601 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2602 namehist="hd0xd0LSCback_pt";
2603 namehist+=i;
2604 titlehist="d0xd0 Loose Cuts Back ptbin=";
2605 titlehist+=i;
2606 hd0xd0LSCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2607 hd0xd0LSCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2608 hd0xd0LSCbackpt->SetYTitle("Entries");
2609 flistLsCutsBack->Add(hd0xd0LSCbackpt);
2610
2611
2612 namehist="hd0D0VSd0xd0LSCback_pt";
2613 namehist+=i;
2614 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Back ptbin=";
2615 titlehist+=i;
2616 hd0D0VSd0xd0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2617 hd0D0VSd0xd0LSCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2618 hd0D0VSd0xd0LSCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2619 flistLsCutsBack->Add(hd0D0VSd0xd0LSCbackpt);
2620
2621
2622 namehist="hangletracksVSd0xd0LSCback_pt";
2623 namehist+=i;
2624 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Back ptbin=";
2625 titlehist+=i;
2626 hangletracksVSd0xd0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2627 hangletracksVSd0xd0LSCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2628 hangletracksVSd0xd0LSCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
2629 flistLsCutsBack->Add(hangletracksVSd0xd0LSCbackpt);
2630
2631
2632 namehist="hangletracksVSd0D0LSCback_pt";
2633 namehist+=i;
2634 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Back ptbin=";
2635 titlehist+=i;
2636 hangletracksVSd0D0LSCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2637 hangletracksVSd0D0LSCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2638 hangletracksVSd0D0LSCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
2639 flistLsCutsBack->Add(hangletracksVSd0D0LSCbackpt);
2640
2641 }
2642 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2643 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2644
2645
2646
2647
2648
2649
2650
624c07ab 2651 // ####### d0 D0 histos ############
2652
ac4c229c 2653 TH1F *hd0D0LSCbackPM = new TH1F("hd0D0LSCbackPM","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2654 hd0D0LSCbackPM->SetXTitle("Impact parameter [#mum]");
2655 hd0D0LSCbackPM->SetYTitle("Entries");
2656
2657 TH1F *hd0D0VtxTrueLSCbackPM = new TH1F("hd0D0VtxTrueLSCbackPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2658 hd0D0VtxTrueLSCbackPM->SetXTitle("Impact parameter [#mum]");
2659 hd0D0VtxTrueLSCbackPM->SetYTitle("Entries");
2660
2661 TH1F *hMCd0D0LSCbackPM = new TH1F("hMCd0D0LSCbackPM","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2662 hMCd0D0LSCbackPM->SetXTitle("MC Impact parameter [#mum]");
2663 hMCd0D0LSCbackPM->SetYTitle("Entries");
2664
2665 TH1F *hd0D0LSCbackSB = new TH1F("hd0D0LSCbackSB","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2666 hd0D0LSCbackSB->SetXTitle("Impact parameter [#mum]");
2667 hd0D0LSCbackSB->SetYTitle("Entries");
2668
2669 TH1F *hd0D0VtxTrueLSCbackSB = new TH1F("hd0D0VtxTrueLSCbackSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2670 hd0D0VtxTrueLSCbackSB->SetXTitle("Impact parameter [#mum]");
2671 hd0D0VtxTrueLSCbackSB->SetYTitle("Entries");
2672
2673 TH1F *hMCd0D0LSCbackSB = new TH1F("hMCd0D0LSCbackSB","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2674 hMCd0D0LSCbackSB->SetXTitle("MC Impact parameter [#mum]");
2675 hMCd0D0LSCbackSB->SetYTitle("Entries");
2676
2677 flistLsCutsBack->Add(hd0D0LSCbackPM);
2678 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackPM);
2679 flistLsCutsBack->Add(hMCd0D0LSCbackPM);
2680 flistLsCutsBack->Add(hd0D0LSCbackSB);
2681 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackSB);
2682 flistLsCutsBack->Add(hMCd0D0LSCbackSB);
2683
e047b348 2684 TH1F *hd0D0ptLSCbackPM;
2685 TH1F *hMCd0D0ptLSCbackPM;
2686 TH1F *hd0D0VtxTrueptLSCbackPM;
2687 TH1F *hd0D0ptLSCbackSB;
2688 TH1F *hMCd0D0ptLSCbackSB;
2689 TH1F *hd0D0VtxTrueptLSCbackSB;
ac4c229c 2690 namehist="hd0D0ptLSCback_";
624c07ab 2691 titlehist="D^{0} impact par. plot, Loose Cuts, Background, ";
2692 for(Int_t i=0;i<fnbins;i++){
2693 strnamept=namehist;
2694 strnamept.Append("PkMss_pt");
2695 strnamept+=i;
2696
2697 strtitlept=titlehist;
2698 strtitlept.Append(" Mass Peak, ");
2699 strtitlept+=fptbins[i];
2700 strtitlept.Append("<= pt <");
2701 strtitlept+=fptbins[i+1];
2702 strtitlept.Append(" [GeV/c]");
2703
e047b348 2704 hd0D0ptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2705 hd0D0ptLSCbackPM->SetXTitle("Impact parameter [#mum] ");
2706 hd0D0ptLSCbackPM->SetYTitle("Entries");
2707 flistLsCutsBack->Add(hd0D0ptLSCbackPM);
624c07ab 2708
2709 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 2710 hMCd0D0ptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2711 hMCd0D0ptLSCbackPM->SetXTitle("MC Impact parameter [#mum] ");
2712 hMCd0D0ptLSCbackPM->SetYTitle("Entries");
2713 flistLsCutsBack->Add(hMCd0D0ptLSCbackPM);
624c07ab 2714
2715
2716 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 2717 hd0D0VtxTrueptLSCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2718 hd0D0VtxTrueptLSCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2719 hd0D0VtxTrueptLSCbackPM->SetYTitle("Entries");
2720 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackPM);
624c07ab 2721
2722 strnamept=namehist;
2723 strnamept.Append("SBMss_pt");
2724 strnamept+=i;
2725
2726 strtitlept=titlehist;
2727 strtitlept.Append(" Side Bands, ");
2728 strtitlept+=fptbins[i];
2729 strtitlept.Append("<= pt <");
2730 strtitlept+=fptbins[i+1];
2731 strtitlept.Append(" [GeV/c]");
2732
e047b348 2733 hd0D0ptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2734 hd0D0ptLSCbackSB->SetXTitle("Impact parameter [#mum] ");
2735 hd0D0ptLSCbackSB->SetYTitle("Entries");
2736 flistLsCutsBack->Add(hd0D0ptLSCbackSB);
624c07ab 2737
2738 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 2739 hMCd0D0ptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2740 hMCd0D0ptLSCbackSB->SetXTitle("MC Impact parameter [#mum] ");
2741 hMCd0D0ptLSCbackSB->SetYTitle("Entries");
2742 flistLsCutsBack->Add(hMCd0D0ptLSCbackSB);
624c07ab 2743
2744 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 2745 hd0D0VtxTrueptLSCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2746 hd0D0VtxTrueptLSCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2747 hd0D0VtxTrueptLSCbackSB->SetYTitle("Entries");
2748 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackSB);
624c07ab 2749 }
2750
2751
2752
2753 //############ LOOSE CUTS FROMB HISTOGRAMS ###########
2754 //
2755 //####### global properties histos
2756
e047b348 2757 TH2F *hCPtaVSd0d0LSCfromB=new TH2F("hCPtaVSd0d0LSCfromB","hCPtaVSd0d0_LooseCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 2758 TH1F *hSecVtxZLSCfromB=new TH1F("hSecVtxZLSCfromB","hSecVtxZ_LooseCuts_FromB",1000,-8.,8.);
2759 TH1F *hSecVtxXLSCfromB=new TH1F("hSecVtxXLSCfromB","hSecVtxX_LooseCuts_FromB",1000,-3000.,3000.);
2760 TH1F *hSecVtxYLSCfromB=new TH1F("hSecVtxYLSCfromB","hSecVtxY_LooseCuts_FromB",1000,-3000.,3000.);
2761 TH2F *hSecVtxXYLSCfromB=new TH2F("hSecVtxXYLSCfromB","hSecVtxXY_LooseCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
2762 TH1F *hSecVtxPhiLSCfromB=new TH1F("hSecVtxPhiLSCfromB","hSecVtxPhi_LooseCuts_FromB",180,-180.1,180.1);
e047b348 2763 TH1F *hd0singlTrackLSCfromB=new TH1F("hd0singlTrackLSCfromB","hd0singlTrackLooseCuts_FromB",1000,-5000.,5000.);
2764 TH1F *hCPtaLSCfromB=new TH1F("hCPtaLSCfromB","hCPta_LooseCuts_FromB",100,-1.,1.);
ac4c229c 2765 TH1F *hd0xd0LSCfromB=new TH1F("hd0xd0LSCfromB","hd0xd0_LooseCuts_FromB",1000,-100000.,100000.);
2766 TH1F *hMassTrueLSCfromB=new TH1F("hMassTrueLSCfromB","D^{0} MC inv. Mass Loose Cuts FromB(All momenta)",600,1.600,2.200);
2767 TH1F *hMassLSCfromB=new TH1F("hMassLSCfromB","D^{0} inv. Mass Loose Cuts FromB (All momenta)",600,1.600,2.200);
2768 hMassLSCfromB->Sumw2();
2769 TH1F *hMassTrueLSCfromBPM=new TH1F("hMassTrueLSCfromBPM","D^{0} MC inv. Mass Loose Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
2770 TH1F *hMassLSCfromBPM=new TH1F("hMassLSCfromBPM","D^{0} inv. Mass Loose Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
2771 hMassLSCfromBPM->Sumw2();
2772 TH1F *hMassTrueLSCfromBSB=new TH1F("hMassTrueLSCfromBSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromB(All momenta)",600,1.600,2.200);
2773 TH1F *hMassLSCfromBSB=new TH1F("hMassLSCfromBSB","D^{0} inv. Mass in Side Bands Loose Cuts FromB (All momenta)",600,1.600,2.200);
2774 hMassLSCfromBSB->Sumw2();
2775
2776 flistLsCutsFromB->Add(hCPtaVSd0d0LSCfromB);
2777 flistLsCutsFromB->Add(hSecVtxZLSCfromB);
2778 flistLsCutsFromB->Add(hSecVtxYLSCfromB);
2779 flistLsCutsFromB->Add(hSecVtxXLSCfromB);
2780 flistLsCutsFromB->Add(hSecVtxXYLSCfromB);
2781 flistLsCutsFromB->Add(hSecVtxPhiLSCfromB);
e047b348 2782 flistLsCutsFromB->Add(hd0singlTrackLSCfromB);
ac4c229c 2783 flistLsCutsFromB->Add(hCPtaLSCfromB);
2784 flistLsCutsFromB->Add(hd0xd0LSCfromB);
2785 flistLsCutsFromB->Add(hMassTrueLSCfromB);
2786 flistLsCutsFromB->Add(hMassLSCfromB);
2787 flistLsCutsFromB->Add(hMassTrueLSCfromBPM);
2788 flistLsCutsFromB->Add(hMassLSCfromBPM);
2789 flistLsCutsFromB->Add(hMassTrueLSCfromBSB);
2790 flistLsCutsFromB->Add(hMassLSCfromBSB);
624c07ab 2791
e047b348 2792
2793
2794
2795 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
2796 TH1F *hdcaLSCfromB=new TH1F("hdcaLSCfromB","hdca_LooseCuts_FromB",100,0.,1000.);
2797 hdcaLSCfromB->SetXTitle("dca [#mum]");
2798 hdcaLSCfromB->SetYTitle("Entries");
2799 TH1F *hcosthetastarLSCfromB=new TH1F("hcosthetastarLSCfromB","hCosThetaStar_LooseCuts_FromB",50,-1.,1.);
2800 hcosthetastarLSCfromB->SetXTitle("cos #theta^{*}");
2801 hcosthetastarLSCfromB->SetYTitle("Entries");
2802 TH1F *hptD0LSCfromB=new TH1F("hptD0LSCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
2803 hptD0LSCfromB->SetXTitle("p_{t} [GeV/c]");
2804 hptD0LSCfromB->SetYTitle("Entries");
2805 TH1F *hptD0VsMaxPtLSCfromB=new TH1F("hptD0VsMaxPtLSCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
2806 TH2F *hptD0PTallsqrtLSCfromB=new TH2F("hptD0PTallsqrtLSCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
2807 TH2F *hptD0PTallLSCfromB=new TH2F("hptD0PTallLSCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
2808 TH2F *hptD0vsptBLSCfromB=new TH2F("hptD0vsptBLSCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2809 TH2F *hpD0vspBLSCfromB=new TH2F("hpD0vspBLSCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2810 TH2F *hptD0vsptcquarkLSCfromB=new TH2F("hptD0vsptcquarkLSCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2811 TH2F *hpD0vspcquarkLSCfromB=new TH2F("hpD0vspcquarkLSCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
2812 flistLsCutsFromB->Add(hdcaLSCfromB);
2813 flistLsCutsFromB->Add(hcosthetastarLSCfromB);
2814 flistLsCutsFromB->Add(hptD0LSCfromB);
2815 flistLsCutsFromB->Add(hptD0VsMaxPtLSCfromB);
2816 flistLsCutsFromB->Add(hptD0PTallsqrtLSCfromB);
2817 flistLsCutsFromB->Add(hptD0PTallLSCfromB);
2818 flistLsCutsFromB->Add(hptD0vsptBLSCfromB);
2819 flistLsCutsFromB->Add(hpD0vspBLSCfromB);
2820 flistLsCutsFromB->Add(hptD0vsptcquarkLSCfromB);
2821 flistLsCutsFromB->Add(hpD0vspcquarkLSCfromB);
2822
2823 TH1F *hd0zD0ptLSCfromB;
cc3209fb 2824 TH1F *hInvMassD0LSCfromB,*hInvMassD0barLSCfromB;
e047b348 2825 TH2F *hInvMassPtLSCfromB=new TH2F("hInvMassPtLSCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 2826 THnSparseF *hSparseLSCfromB=new THnSparseF("hSparseLSCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
2827 hSparseLSCfromB->SetBinEdges(0,massbins);
2828 hSparseLSCfromB->SetBinEdges(1,massbins);
2829 hSparseLSCfromB->SetBinEdges(2,ptbinsForNsparse);
2830 hSparseLSCfromB->SetBinEdges(3,impparbins);
2831 hSparseLSCfromB->SetBinEdges(4,massHypoBins);
2832 flistLsCutsFromB->Add(hSparseLSCfromB);
e047b348 2833 TH1F *hetaLSCfromB;
2834 TH1F *hCosPDPBLSCfromB;
2835 TH1F *hCosPcPDLSCfromB;
2836 flistLsCutsFromB->Add(hInvMassPtLSCfromB);
2837 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2838 TH2F *hd0D0VSd0xd0LSCfromBpt;
2839 TH2F *hangletracksVSd0xd0LSCfromBpt;
2840 TH2F *hangletracksVSd0D0LSCfromBpt;
2841 TH1F *hd0xd0LSCfromBpt;
2842
2843
2844 TH2F *hTOFpidLSCfromB=new TH2F("hTOFpidLSCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
2845 flistLsCutsFromB->Add(hTOFpidLSCfromB);
2846
2847 for(Int_t i=0;i<fnbins;i++){
2848 namehist="hd0zD0ptLSCfromB_pt";
2849 namehist+=i;
2850 titlehist="d0(z) Loose Cuts FromBm ptbin=";
2851 titlehist+=i;
2852 hd0zD0ptLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
2853 hd0zD0ptLSCfromB->SetXTitle("d_{0}(z) [#mum]");
2854 hd0zD0ptLSCfromB->SetYTitle("Entries");
2855 flistLsCutsFromB->Add(hd0zD0ptLSCfromB);
2856
cc3209fb 2857 namehist="hInvMassD0LSCfromB_pt";
e047b348 2858 namehist+=i;
2859 titlehist="Invariant Mass Loose Cuts FromB ptbin=";
2860 titlehist+=i;
cc3209fb 2861 hInvMassD0LSCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2862 hInvMassD0LSCfromB->SetXTitle("Invariant Mass [GeV]");
2863 hInvMassD0LSCfromB->SetYTitle("Entries");
2864 flistLsCutsFromB->Add(hInvMassD0LSCfromB);
2865
2866 namehist="hInvMassD0barLSCfromB_pt";
2867 namehist+=i;
d39e8f99 2868 titlehist="Invariant Mass D0bar Loose Cuts FromB ptbin=";
cc3209fb 2869 titlehist+=i;
2870 hInvMassD0barLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
2871 hInvMassD0barLSCfromB->SetXTitle("Invariant Mass [GeV]");
2872 hInvMassD0barLSCfromB->SetYTitle("Entries");
2873 flistLsCutsFromB->Add(hInvMassD0barLSCfromB);
e047b348 2874
2875 namehist="hetaLSCfromB_pt";
2876 namehist+=i;
2877 titlehist="eta Loose Cuts FromB ptbin=";
2878 titlehist+=i;
2879 hetaLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
2880 hetaLSCfromB->SetXTitle("Pseudorapidity");
2881 hetaLSCfromB->SetYTitle("Entries");
2882 flistLsCutsFromB->Add(hetaLSCfromB);
2883
2884 namehist="hCosPDPBLSCfromB_pt";
2885 namehist+=i;
2886 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
2887 titlehist+=i;
2888 hCosPDPBLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2889 hCosPDPBLSCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
2890 hCosPDPBLSCfromB->SetYTitle("Entries");
2891 flistLsCutsFromB->Add(hCosPDPBLSCfromB);
2892
2893 namehist="hCosPcPDLSCfromB_pt";
2894 namehist+=i;
2895 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
2896 titlehist+=i;
2897 hCosPcPDLSCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
2898 hCosPcPDLSCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
2899 hCosPcPDLSCfromB->SetYTitle("Entries");
2900 flistLsCutsFromB->Add(hCosPcPDLSCfromB);
2901
2902 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
2903 namehist="hd0xd0LSCfromB_pt";
2904 namehist+=i;
2905 titlehist="d0xd0 Loose Cuts FromB ptbin=";
2906 titlehist+=i;
2907 hd0xd0LSCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
2908 hd0xd0LSCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
2909 hd0xd0LSCfromBpt->SetYTitle("Entries");
2910 flistLsCutsFromB->Add(hd0xd0LSCfromBpt);
2911
2912
2913 namehist="hd0D0VSd0xd0LSCfromB_pt";
2914 namehist+=i;
2915 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromB ptbin=";
2916 titlehist+=i;
2917 hd0D0VSd0xd0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
2918 hd0D0VSd0xd0LSCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2919 hd0D0VSd0xd0LSCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
2920 flistLsCutsFromB->Add(hd0D0VSd0xd0LSCfromBpt);
2921
2922
2923 namehist="hangletracksVSd0xd0LSCfromB_pt";
2924 namehist+=i;
2925 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromB ptbin=";
2926 titlehist+=i;
2927 hangletracksVSd0xd0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
2928 hangletracksVSd0xd0LSCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
2929 hangletracksVSd0xd0LSCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
2930 flistLsCutsFromB->Add(hangletracksVSd0xd0LSCfromBpt);
2931
2932
2933 namehist="hangletracksVSd0D0LSCfromB_pt";
2934 namehist+=i;
2935 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts FromB ptbin=";
2936 titlehist+=i;
2937 hangletracksVSd0D0LSCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
2938 hangletracksVSd0D0LSCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
2939 hangletracksVSd0D0LSCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
2940 flistLsCutsFromB->Add(hangletracksVSd0D0LSCfromBpt);
2941
2942 }
2943 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
2944 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2945
2946
2947
2948
2949
624c07ab 2950 // ######### d0 D0 histos ##############
ac4c229c 2951 TH1F *hd0D0LSCfromBPM = new TH1F("hd0D0LSCfromBPM","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2952 hd0D0LSCfromBPM->SetXTitle("Impact parameter [#mum]");
2953 hd0D0LSCfromBPM->SetYTitle("Entries");
2954
2955 TH1F *hd0D0VtxTrueLSCfromBPM = new TH1F("hd0D0VtxTrueLSCfromBPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2956 hd0D0VtxTrueLSCfromBPM->SetXTitle("Impact parameter [#mum]");
2957 hd0D0VtxTrueLSCfromBPM->SetYTitle("Entries");
2958
2959 TH1F *hMCd0D0LSCfromBPM = new TH1F("hMCd0D0LSCfromBPM","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2960 hMCd0D0LSCfromBPM->SetXTitle("MC Impact parameter [#mum]");
2961 hMCd0D0LSCfromBPM->SetYTitle("Entries");
2962
2963 TH1F *hd0D0LSCfromBSB = new TH1F("hd0D0LSCfromBSB","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2964 hd0D0LSCfromBSB->SetXTitle("Impact parameter [#mum]");
2965 hd0D0LSCfromBSB->SetYTitle("Entries");
2966
2967 TH1F *hd0D0VtxTrueLSCfromBSB = new TH1F("hd0D0VtxTrueLSCfromBSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2968 hd0D0VtxTrueLSCfromBSB->SetXTitle("Impact parameter [#mum]");
2969 hd0D0VtxTrueLSCfromBSB->SetYTitle("Entries");
2970
2971 TH1F *hMCd0D0LSCfromBSB = new TH1F("hMCd0D0LSCfromBSB","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2972 hMCd0D0LSCfromBSB->SetXTitle("MC Impact parameter [#mum]");
2973 hMCd0D0LSCfromBSB->SetYTitle("Entries");
2974
2975 flistLsCutsFromB->Add(hd0D0LSCfromBPM);
2976 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBPM);
2977 flistLsCutsFromB->Add(hMCd0D0LSCfromBPM);
2978 flistLsCutsFromB->Add(hd0D0LSCfromBSB);
2979 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBSB);
2980 flistLsCutsFromB->Add(hMCd0D0LSCfromBSB);
2981
e047b348 2982 TH1F *hd0D0ptLSCfromBPM;
2983 TH1F *hMCd0D0ptLSCfromBPM;
2984 TH1F *hd0D0VtxTrueptLSCfromBPM;
2985 TH1F *hd0D0ptLSCfromBSB;
2986 TH1F *hMCd0D0ptLSCfromBSB;
2987 TH1F *hd0D0VtxTrueptLSCfromBSB;
ac4c229c 2988 namehist="hd0D0ptLSCfromB_";
624c07ab 2989 titlehist="D^{0} impact par. plot, Loose Cuts, FromB, ";
2990 for(Int_t i=0;i<fnbins;i++){
2991 strnamept=namehist;
2992 strnamept.Append("PkMss_pt");
2993 strnamept+=i;
2994
2995 strtitlept=titlehist;
2996 strtitlept.Append(" Mass Peak, ");
2997 strtitlept+=fptbins[i];
2998 strtitlept.Append("<= pt <");
2999 strtitlept+=fptbins[i+1];
3000 strtitlept.Append(" [GeV/c]");
3001
e047b348 3002 hd0D0ptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3003 hd0D0ptLSCfromBPM->SetXTitle("Impact parameter [#mum] ");
3004 hd0D0ptLSCfromBPM->SetYTitle("Entries");
3005 flistLsCutsFromB->Add(hd0D0ptLSCfromBPM);
624c07ab 3006
3007 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 3008 hMCd0D0ptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3009 hMCd0D0ptLSCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
3010 hMCd0D0ptLSCfromBPM->SetYTitle("Entries");
3011 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBPM);
624c07ab 3012
3013
3014 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 3015 hd0D0VtxTrueptLSCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3016 hd0D0VtxTrueptLSCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3017 hd0D0VtxTrueptLSCfromBPM->SetYTitle("Entries");
3018 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBPM);
624c07ab 3019
3020 strnamept=namehist;
3021 strnamept.Append("SBMss_pt");
3022 strnamept+=i;
3023
3024 strtitlept=titlehist;
3025 strtitlept.Append(" Side Bands, ");
3026 strtitlept+=fptbins[i];
3027 strtitlept.Append("<= pt <");
3028 strtitlept+=fptbins[i+1];
3029 strtitlept.Append(" [GeV/c]");
3030
e047b348 3031 hd0D0ptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3032 hd0D0ptLSCfromBSB->SetXTitle("Impact parameter [#mum] ");
3033 hd0D0ptLSCfromBSB->SetYTitle("Entries");
3034 flistLsCutsFromB->Add(hd0D0ptLSCfromBSB);
624c07ab 3035
3036 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 3037 hMCd0D0ptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3038 hMCd0D0ptLSCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
3039 hMCd0D0ptLSCfromBSB->SetYTitle("Entries");
3040 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBSB);
624c07ab 3041
3042 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 3043 hd0D0VtxTrueptLSCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3044 hd0D0VtxTrueptLSCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3045 hd0D0VtxTrueptLSCfromBSB->SetYTitle("Entries");
3046 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBSB);
624c07ab 3047 }
3048
3049
3050
3051 //############ LOOSE CUTS FROM DSTAR HISTOGRAMS ###########
3052 //
3053 //############## global properties histos
e047b348 3054 TH2F *hCPtaVSd0d0LSCfromDstar=new TH2F("hCPtaVSd0d0LSCfromDstar","hCPtaVSd0d0_LooseCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 3055 TH1F *hSecVtxZLSCfromDstar=new TH1F("hSecVtxZLSCfromDstar","hSecVtxZ_LooseCuts_FromDStar",1000,-8.,8.);
3056 TH1F *hSecVtxXLSCfromDstar=new TH1F("hSecVtxXLSCfromDstar","hSecVtxX_LooseCuts_FromDStar",1000,-3000.,3000.);
3057 TH1F *hSecVtxYLSCfromDstar=new TH1F("hSecVtxYLSCfromDstar","hSecVtxY_LooseCuts_FromDStar",1000,-3000.,3000.);
3058 TH2F *hSecVtxXYLSCfromDstar=new TH2F("hSecVtxXYLSCfromDstar","hSecVtxXY_LooseCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
3059 TH1F *hSecVtxPhiLSCfromDstar=new TH1F("hSecVtxPhiLSCfromDstar","hSecVtxPhi_LooseCuts_FromDStar",180,-180.1,180.1);
e047b348 3060 TH1F *hd0singlTrackLSCfromDstar=new TH1F("hd0singlTrackLSCfromDstar","hd0singlTrackLooseCuts_FromDstar",1000,-5000.,5000.);
3061 TH1F *hCPtaLSCfromDstar=new TH1F("hCPtaLSCfromDstar","hCPta_LooseCuts_FromDStar",100,-1.,1.);
ac4c229c 3062 TH1F *hd0xd0LSCfromDstar=new TH1F("hd0xd0LSCfromDstar","hd0xd0_LooseCuts_FromDStar",1000,-100000.,100000.);
3063 TH1F *hMassTrueLSCfromDstar=new TH1F("hMassTrueLSCfromDstar","D^{0} MC inv. Mass Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
3064 TH1F *hMassLSCfromDstar=new TH1F("hMassLSCfromDstar","D^{0} inv. Mass Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
3065 hMassLSCfromDstar->Sumw2();
3066 TH1F *hMassTrueLSCfromDstarPM=new TH1F("hMassTrueLSCfromDstarPM","D^{0} MC inv. Mass Loose Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
3067 TH1F *hMassLSCfromDstarPM=new TH1F("hMassLSCfromDstarPM","D^{0} inv. Mass Loose Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
3068 hMassLSCfromDstarPM->Sumw2();
3069 TH1F *hMassTrueLSCfromDstarSB=new TH1F("hMassTrueLSCfromDstarSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
3070 TH1F *hMassLSCfromDstarSB=new TH1F("hMassLSCfromDstarSB","D^{0} inv. Mass in Side Bands Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
3071 hMassLSCfromDstarSB->Sumw2();
3072
3073 flistLsCutsFromDstar->Add(hCPtaVSd0d0LSCfromDstar);
3074 flistLsCutsFromDstar->Add(hSecVtxZLSCfromDstar);
3075 flistLsCutsFromDstar->Add(hSecVtxYLSCfromDstar);
3076 flistLsCutsFromDstar->Add(hSecVtxXLSCfromDstar);
3077 flistLsCutsFromDstar->Add(hSecVtxXYLSCfromDstar);
3078 flistLsCutsFromDstar->Add(hSecVtxPhiLSCfromDstar);
e047b348 3079 flistLsCutsFromDstar->Add(hd0singlTrackLSCfromDstar);
ac4c229c 3080 flistLsCutsFromDstar->Add(hCPtaLSCfromDstar);
3081 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstar);
3082 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstar);
3083 flistLsCutsFromDstar->Add(hMassLSCfromDstar);
e047b348 3084 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarPM);
ac4c229c 3085 flistLsCutsFromDstar->Add(hMassLSCfromDstarPM);
3086 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarSB);
3087 flistLsCutsFromDstar->Add(hMassLSCfromDstarSB);
624c07ab 3088
e047b348 3089
3090
3091
3092
3093
3094
3095 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3096 TH1F *hdcaLSCfromDstar=new TH1F("hdcaLSCfromDstar","hdca_LooseCuts_FromDstar",100,0.,1000.);
3097 hdcaLSCfromDstar->SetXTitle("dca [#mum]");
3098 hdcaLSCfromDstar->SetYTitle("Entries");
3099 TH1F *hcosthetastarLSCfromDstar=new TH1F("hcosthetastarLSCfromDstar","hCosThetaStar_LooseCuts_FromDstar",50,-1.,1.);
3100 hcosthetastarLSCfromDstar->SetXTitle("cos #theta^{*}");
3101 hcosthetastarLSCfromDstar->SetYTitle("Entries");
3102 TH1F *hptD0LSCfromDstar=new TH1F("hptD0LSCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3103 hptD0LSCfromDstar->SetXTitle("p_{t} [GeV/c]");
3104 hptD0LSCfromDstar->SetYTitle("Entries");
3105 TH1F *hptD0VsMaxPtLSCfromDstar=new TH1F("hptD0VsMaxPtLSCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3106 TH2F *hptD0PTallsqrtLSCfromDstar=new TH2F("hptD0PTallsqrtLSCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3107 TH2F *hptD0PTallLSCfromDstar=new TH2F("hptD0PTallLSCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3108 TH2F *hptD0vsptBLSCfromDstar=new TH2F("hptD0vsptBLSCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3109 TH2F *hpD0vspBLSCfromDstar=new TH2F("hpD0vspBLSCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3110 TH2F *hptD0vsptcquarkLSCfromDstar=new TH2F("hptD0vsptcquarkLSCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3111 TH2F *hpD0vspcquarkLSCfromDstar=new TH2F("hpD0vspcquarkLSCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3112 flistLsCutsFromDstar->Add(hdcaLSCfromDstar);
3113 flistLsCutsFromDstar->Add(hcosthetastarLSCfromDstar);
3114 flistLsCutsFromDstar->Add(hptD0LSCfromDstar);
3115 flistLsCutsFromDstar->Add(hptD0VsMaxPtLSCfromDstar);
3116 flistLsCutsFromDstar->Add(hptD0PTallsqrtLSCfromDstar);
3117 flistLsCutsFromDstar->Add(hptD0PTallLSCfromDstar);
3118 flistLsCutsFromDstar->Add(hptD0vsptBLSCfromDstar);
3119 flistLsCutsFromDstar->Add(hpD0vspBLSCfromDstar);
3120 flistLsCutsFromDstar->Add(hptD0vsptcquarkLSCfromDstar);
3121 flistLsCutsFromDstar->Add(hpD0vspcquarkLSCfromDstar);
3122
3123 TH1F *hd0zD0ptLSCfromDstar;
cc3209fb 3124 TH1F *hInvMassD0LSCfromDstar,*hInvMassD0barLSCfromDstar;
e047b348 3125 TH2F *hInvMassPtLSCfromDstar=new TH2F("hInvMassPtLSCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 3126 THnSparseF *hSparseLSCfromDstar=new THnSparseF("hSparseLSCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3127 hSparseLSCfromDstar->SetBinEdges(0,massbins);
3128 hSparseLSCfromDstar->SetBinEdges(1,massbins);
3129 hSparseLSCfromDstar->SetBinEdges(2,ptbinsForNsparse);
3130 hSparseLSCfromDstar->SetBinEdges(3,impparbins);
3131 hSparseLSCfromDstar->SetBinEdges(4,massHypoBins);
3132 flistLsCutsFromDstar->Add(hSparseLSCfromDstar);
e047b348 3133 TH1F *hetaLSCfromDstar;
3134 TH1F *hCosPDPBLSCfromDstar;
3135 TH1F *hCosPcPDLSCfromDstar;
3136 flistLsCutsFromDstar->Add(hInvMassPtLSCfromDstar);
3137 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3138 TH2F *hd0D0VSd0xd0LSCfromDstarpt;
3139 TH2F *hangletracksVSd0xd0LSCfromDstarpt;
3140 TH2F *hangletracksVSd0D0LSCfromDstarpt;
3141 TH1F *hd0xd0LSCfromDstarpt;
3142
3143 TH2F *hTOFpidLSCfromDstar=new TH2F("hTOFpidLSCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3144 flistLsCutsFromDstar->Add(hTOFpidLSCfromDstar);
3145
3146 for(Int_t i=0;i<fnbins;i++){
3147 namehist="hd0zD0ptLSCfromDstar_pt";
3148 namehist+=i;
3149 titlehist="d0(z) Loose Cuts FromDstarm ptbin=";
3150 titlehist+=i;
3151 hd0zD0ptLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3152 hd0zD0ptLSCfromDstar->SetXTitle("d_{0}(z) [#mum]");
3153 hd0zD0ptLSCfromDstar->SetYTitle("Entries");
3154 flistLsCutsFromDstar->Add(hd0zD0ptLSCfromDstar);
3155
cc3209fb 3156 namehist="hInvMassD0LSCfromDstar_pt";
e047b348 3157 namehist+=i;
3158 titlehist="Invariant Mass Loose Cuts FromDstar ptbin=";
3159 titlehist+=i;
cc3209fb 3160 hInvMassD0LSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3161 hInvMassD0LSCfromDstar->SetXTitle("Invariant Mass [GeV]");
3162 hInvMassD0LSCfromDstar->SetYTitle("Entries");
3163 flistLsCutsFromDstar->Add(hInvMassD0LSCfromDstar);
3164
3165 namehist="hInvMassD0barLSCfromDstar_pt";
3166 namehist+=i;
d39e8f99 3167 titlehist="Invariant Mass D0bar Loose Cuts FromDstar ptbin=";
cc3209fb 3168 titlehist+=i;
3169 hInvMassD0barLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3170 hInvMassD0barLSCfromDstar->SetXTitle("Invariant Mass [GeV]");
3171 hInvMassD0barLSCfromDstar->SetYTitle("Entries");
3172 flistLsCutsFromDstar->Add(hInvMassD0barLSCfromDstar);
e047b348 3173
3174 namehist="hetaLSCfromDstar_pt";
3175 namehist+=i;
3176 titlehist="eta Loose Cuts FromDstar ptbin=";
3177 titlehist+=i;
3178 hetaLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3179 hetaLSCfromDstar->SetXTitle("Pseudorapidity");
3180 hetaLSCfromDstar->SetYTitle("Entries");
3181 flistLsCutsFromDstar->Add(hetaLSCfromDstar);
3182
3183 namehist="hCosPDPBLSCfromDstar_pt";
3184 namehist+=i;
3185 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3186 titlehist+=i;
3187 hCosPDPBLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3188 hCosPDPBLSCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
3189 hCosPDPBLSCfromDstar->SetYTitle("Entries");
3190 flistLsCutsFromDstar->Add(hCosPDPBLSCfromDstar);
3191
3192 namehist="hCosPcPDLSCfromDstar_pt";
3193 namehist+=i;
3194 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3195 titlehist+=i;
3196 hCosPcPDLSCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3197 hCosPcPDLSCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
3198 hCosPcPDLSCfromDstar->SetYTitle("Entries");
3199 flistLsCutsFromDstar->Add(hCosPcPDLSCfromDstar);
3200
3201 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3202 namehist="hd0xd0LSCfromDstar_pt";
3203 namehist+=i;
3204 titlehist="d0xd0 Loose Cuts FromDstar ptbin=";
3205 titlehist+=i;
3206 hd0xd0LSCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3207 hd0xd0LSCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3208 hd0xd0LSCfromDstarpt->SetYTitle("Entries");
3209 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstarpt);
3210
3211
3212 namehist="hd0D0VSd0xd0LSCfromDstar_pt";
3213 namehist+=i;
3214 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromDstar ptbin=";
3215 titlehist+=i;
3216 hd0D0VSd0xd0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3217 hd0D0VSd0xd0LSCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3218 hd0D0VSd0xd0LSCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3219 flistLsCutsFromDstar->Add(hd0D0VSd0xd0LSCfromDstarpt);
3220
3221
3222 namehist="hangletracksVSd0xd0LSCfromDstar_pt";
3223 namehist+=i;
3224 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts FromDstar ptbin=";
3225 titlehist+=i;
3226 hangletracksVSd0xd0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3227 hangletracksVSd0xd0LSCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3228 hangletracksVSd0xd0LSCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
3229 flistLsCutsFromDstar->Add(hangletracksVSd0xd0LSCfromDstarpt);
3230
3231
3232 namehist="hangletracksVSd0D0LSCfromDstar_pt";
3233 namehist+=i;
3234 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts FromDstar ptbin=";
3235 titlehist+=i;
3236 hangletracksVSd0D0LSCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3237 hangletracksVSd0D0LSCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3238 hangletracksVSd0D0LSCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
3239 flistLsCutsFromDstar->Add(hangletracksVSd0D0LSCfromDstarpt);
3240
3241
3242 }
3243 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3244 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3245
3246
3247
3248
3249
3250
624c07ab 3251 //########## d0 D0 histos #############
ac4c229c 3252 TH1F *hd0D0LSCfromDstPM = new TH1F("hd0D0LSCfromDstarPM","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3253 hd0D0LSCfromDstPM->SetXTitle("Impact parameter [#mum]");
3254 hd0D0LSCfromDstPM->SetYTitle("Entries");
3255
3256 TH1F *hd0D0VtxTrueLSCfromDstPM = new TH1F("hd0D0VtxTrueLSCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3257 hd0D0VtxTrueLSCfromDstPM->SetXTitle("Impact parameter [#mum]");
3258 hd0D0VtxTrueLSCfromDstPM->SetYTitle("Entries");
3259
3260 TH1F *hMCd0D0LSCfromDstPM = new TH1F("hMCd0D0LSCfromDstarPM","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3261 hMCd0D0LSCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
3262 hMCd0D0LSCfromDstPM->SetYTitle("Entries");
3263
3264 TH1F *hd0D0LSCfromDstSB = new TH1F("hd0D0LSCfromDstarSB","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3265 hd0D0LSCfromDstSB->SetXTitle("Impact parameter [#mum]");
3266 hd0D0LSCfromDstSB->SetYTitle("Entries");
3267
3268 TH1F *hd0D0VtxTrueLSCfromDstSB = new TH1F("hd0D0VtxTrueLSCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3269 hd0D0VtxTrueLSCfromDstSB->SetXTitle("Impact parameter [#mum]");
3270 hd0D0VtxTrueLSCfromDstSB->SetYTitle("Entries");
3271
3272 TH1F *hMCd0D0LSCfromDstSB = new TH1F("hMCd0D0LSCfromDstarSB","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
3273 hMCd0D0LSCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
3274 hMCd0D0LSCfromDstSB->SetYTitle("Entries");
3275
3276 flistLsCutsFromDstar->Add(hd0D0LSCfromDstPM);
3277 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstPM);
3278 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstPM);
3279 flistLsCutsFromDstar->Add(hd0D0LSCfromDstSB);
3280 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstSB);
3281 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstSB);
3282
e047b348 3283 TH1F *hd0D0ptLSCfromDstPM;
3284 TH1F *hMCd0D0ptLSCfromDstPM;
3285 TH1F *hd0D0VtxTrueptLSCfromDstPM;
3286 TH1F *hd0D0ptLSCfromDstSB;
3287 TH1F *hMCd0D0ptLSCfromDstSB;
3288 TH1F *hd0D0VtxTrueptLSCfromDstSB;
ac4c229c 3289 namehist="hd0D0ptLSCfromDstar_";
624c07ab 3290 titlehist="D^{0} impact par. plot, Loose Cuts, FromDStar, ";
3291 for(Int_t i=0;i<fnbins;i++){
3292 strnamept=namehist;
3293 strnamept.Append("PkMss_pt");
3294 strnamept+=i;
3295
3296 strtitlept=titlehist;
3297 strtitlept.Append(" Mass Peak, ");
3298 strtitlept+=fptbins[i];
3299 strtitlept.Append("<= pt <");
3300 strtitlept+=fptbins[i+1];
3301 strtitlept.Append(" [GeV/c]");
3302
e047b348 3303 hd0D0ptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3304 hd0D0ptLSCfromDstPM->SetXTitle("Impact parameter [#mum] ");
3305 hd0D0ptLSCfromDstPM->SetYTitle("Entries");
3306 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstPM);
624c07ab 3307
3308 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 3309 hMCd0D0ptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3310 hMCd0D0ptLSCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
3311 hMCd0D0ptLSCfromDstPM->SetYTitle("Entries");
3312 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstPM);
624c07ab 3313
3314
3315 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 3316 hd0D0VtxTrueptLSCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3317 hd0D0VtxTrueptLSCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3318 hd0D0VtxTrueptLSCfromDstPM->SetYTitle("Entries");
3319 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstPM);
624c07ab 3320
3321 strnamept=namehist;
3322 strnamept.Append("SBMss_pt");
3323 strnamept+=i;
3324
3325 strtitlept=titlehist;
3326 strtitlept.Append(" Side Bands, ");
3327 strtitlept+=fptbins[i];
3328 strtitlept.Append("<= pt <");
3329 strtitlept+=fptbins[i+1];
3330 strtitlept.Append(" [GeV/c]");
3331
e047b348 3332 hd0D0ptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3333 hd0D0ptLSCfromDstSB->SetXTitle("Impact parameter [#mum] ");
3334 hd0D0ptLSCfromDstSB->SetYTitle("Entries");
3335 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstSB);
624c07ab 3336
3337 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 3338 hMCd0D0ptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3339 hMCd0D0ptLSCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
3340 hMCd0D0ptLSCfromDstSB->SetYTitle("Entries");
3341 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstSB);
624c07ab 3342
3343 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 3344 hd0D0VtxTrueptLSCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3345 hd0D0VtxTrueptLSCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3346 hd0D0VtxTrueptLSCfromDstSB->SetYTitle("Entries");
3347 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstSB);
624c07ab 3348 }
3349
3350
3351 //############ LOOSE CUTS OTHER HISTOGRAMS ###########
3352 //
3353 //########### global properties histos ###########
3354
e047b348 3355 TH2F *hCPtaVSd0d0LSCother=new TH2F("hCPtaVSd0d0LSCother","hCPtaVSd0d0_LooseCuts_other",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 3356 TH1F *hSecVtxZLSCother=new TH1F("hSecVtxZLSCother","hSecVtxZ_LooseCuts_other",1000,-8.,8.);
3357 TH1F *hSecVtxXLSCother=new TH1F("hSecVtxXLSCother","hSecVtxX_LooseCuts_other",1000,-3000.,3000.);
3358 TH1F *hSecVtxYLSCother=new TH1F("hSecVtxYLSCother","hSecVtxY_LooseCuts_other",1000,-3000.,3000.);
3359 TH2F *hSecVtxXYLSCother=new TH2F("hSecVtxXYLSCother","hSecVtxXY_LooseCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
3360 TH1F *hSecVtxPhiLSCother=new TH1F("hSecVtxPhiLSCother","hSecVtxPhi_LooseCuts_other",180,-180.1,180.1);
e047b348 3361 TH1F *hd0singlTrackLSCother=new TH1F("hd0singlTrackLSCother","hd0singlTrackLooseCuts_Other",1000,-5000.,5000.);
3362 TH1F *hCPtaLSCother=new TH1F("hCPtaLSCother","hCPta_LooseCuts_other",100,-1.,1.);
ac4c229c 3363 TH1F *hd0xd0LSCother=new TH1F("hd0xd0LSCother","hd0xd0_LooseCuts_other",1000,-100000.,100000.);
3364 TH1F *hMassTrueLSCother=new TH1F("hMassTrueLSCother","D^{0} MC inv. Mass Loose Cuts other(All momenta)",600,1.600,2.200);
3365 TH1F *hMassLSCother=new TH1F("hMassLSCother","D^{0} inv. Mass Loose Cuts other (All momenta)",600,1.600,2.200);
3366 hMassLSCother->Sumw2();
3367 TH1F *hMassTrueLSCotherPM=new TH1F("hMassTrueLSCotherPM","D^{0} MC inv. Mass Loose Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
3368 TH1F *hMassLSCotherPM=new TH1F("hMassLSCotherPM","D^{0} inv. Mass Loose Cuts other (All momenta), MassPeak",600,1.600,2.200);
3369 hMassLSCotherPM->Sumw2();
3370 TH1F *hMassTrueLSCotherSB=new TH1F("hMassTrueLSCotherSB","D^{0} MC inv. Mass in Side Bands Loose Cuts other(All momenta)",600,1.600,2.200);
3371 TH1F *hMassLSCotherSB=new TH1F("hMassLSCotherSB","D^{0} inv. Mass in Side Bands Loose Cuts other (All momenta)",600,1.600,2.200);
3372 hMassLSCotherSB->Sumw2();
3373
3374 flistLsCutsOther->Add(hCPtaVSd0d0LSCother);
3375 flistLsCutsOther->Add(hSecVtxZLSCother);
3376 flistLsCutsOther->Add(hSecVtxYLSCother);
3377 flistLsCutsOther->Add(hSecVtxXLSCother);
3378 flistLsCutsOther->Add(hSecVtxXYLSCother);
3379 flistLsCutsOther->Add(hSecVtxPhiLSCother);
e047b348 3380 flistLsCutsOther->Add(hd0singlTrackLSCother);
ac4c229c 3381 flistLsCutsOther->Add(hCPtaLSCother);
3382 flistLsCutsOther->Add(hd0xd0LSCother);
3383 flistLsCutsOther->Add(hMassTrueLSCother);
3384 flistLsCutsOther->Add(hMassLSCother);
3385 flistLsCutsOther->Add(hMassTrueLSCotherPM);
3386 flistLsCutsOther->Add(hMassLSCotherPM);
3387 flistLsCutsOther->Add(hMassTrueLSCotherSB);
3388 flistLsCutsOther->Add(hMassLSCotherSB);
624c07ab 3389
e047b348 3390
3391
3392
3393 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3394 TH1F *hdcaLSCother=new TH1F("hdcaLSCother","hdca_LooseCuts_Other",100,0.,1000.);
3395 hdcaLSCother->SetXTitle("dca [#mum]");
3396 hdcaLSCother->SetYTitle("Entries");
3397 TH1F *hcosthetastarLSCother=new TH1F("hcosthetastarLSCother","hCosThetaStar_LooseCuts_Other",50,-1.,1.);
3398 hcosthetastarLSCother->SetXTitle("cos #theta^{*}");
3399 hcosthetastarLSCother->SetYTitle("Entries");
3400 TH1F *hptD0LSCother=new TH1F("hptD0LSCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3401 hptD0LSCother->SetXTitle("p_{t} [GeV/c]");
3402 hptD0LSCother->SetYTitle("Entries");
3403 TH1F *hptD0VsMaxPtLSCother=new TH1F("hptD0VsMaxPtLSCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3404 TH2F *hptD0PTallsqrtLSCother=new TH2F("hptD0PTallsqrtLSCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3405 TH2F *hptD0PTallLSCother=new TH2F("hptD0PTallLSCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3406 TH2F *hptD0vsptBLSCother=new TH2F("hptD0vsptBLSCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3407 TH2F *hpD0vspBLSCother=new TH2F("hpD0vspBLSCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3408 TH2F *hptD0vsptcquarkLSCother=new TH2F("hptD0vsptcquarkLSCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3409 TH2F *hpD0vspcquarkLSCother=new TH2F("hpD0vspcquarkLSCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3410 flistLsCutsOther->Add(hdcaLSCother);
3411 flistLsCutsOther->Add(hcosthetastarLSCother);
3412 flistLsCutsOther->Add(hptD0LSCother);
3413 flistLsCutsOther->Add(hptD0VsMaxPtLSCother);
3414 flistLsCutsOther->Add(hptD0PTallsqrtLSCother);
3415 flistLsCutsOther->Add(hptD0PTallLSCother);
3416 flistLsCutsOther->Add(hptD0vsptBLSCother);
3417 flistLsCutsOther->Add(hpD0vspBLSCother);
3418 flistLsCutsOther->Add(hptD0vsptcquarkLSCother);
3419 flistLsCutsOther->Add(hpD0vspcquarkLSCother);
3420
3421 TH1F *hd0zD0ptLSCother;
cc3209fb 3422 TH1F *hInvMassD0LSCother,*hInvMassD0barLSCother;
e047b348 3423 TH2F *hInvMassPtLSCother=new TH2F("hInvMassPtLSCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 3424 THnSparseF *hSparseLSCother=new THnSparseF("hSparseLSCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3425 hSparseLSCother->SetBinEdges(0,massbins);
3426 hSparseLSCother->SetBinEdges(1,massbins);
3427 hSparseLSCother->SetBinEdges(2,ptbinsForNsparse);
3428 hSparseLSCother->SetBinEdges(3,impparbins);
3429 hSparseLSCother->SetBinEdges(4,massHypoBins);
3430 flistLsCutsOther->Add(hSparseLSCother);
e047b348 3431 TH1F *hetaLSCother;
3432 TH1F *hCosPDPBLSCother;
3433 TH1F *hCosPcPDLSCother;
3434 flistLsCutsOther->Add(hInvMassPtLSCother);
3435 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3436 TH2F *hd0D0VSd0xd0LSCotherpt;
3437 TH2F *hangletracksVSd0xd0LSCotherpt;
3438 TH2F *hangletracksVSd0D0LSCotherpt;
3439 TH1F *hd0xd0LSCotherpt;
3440
3441 TH2F *hTOFpidLSCother=new TH2F("hTOFpidLSCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3442 flistLsCutsOther->Add(hTOFpidLSCother);
3443
3444 for(Int_t i=0;i<fnbins;i++){
3445 namehist="hd0zD0ptLSCother_pt";
3446 namehist+=i;
3447 titlehist="d0(z) Loose Cuts Otherm ptbin=";
3448 titlehist+=i;
3449 hd0zD0ptLSCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3450 hd0zD0ptLSCother->SetXTitle("d_{0}(z) [#mum]");
3451 hd0zD0ptLSCother->SetYTitle("Entries");
3452 flistLsCutsOther->Add(hd0zD0ptLSCother);
3453
cc3209fb 3454 namehist="hInvMassD0LSCother_pt";
e047b348 3455 namehist+=i;
3456 titlehist="Invariant Mass Loose Cuts Other ptbin=";
3457 titlehist+=i;
cc3209fb 3458 hInvMassD0LSCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3459 hInvMassD0LSCother->SetXTitle("Invariant Mass [GeV]");
3460 hInvMassD0LSCother->SetYTitle("Entries");
3461 flistLsCutsOther->Add(hInvMassD0LSCother);
3462
3463 namehist="hInvMassD0barLSCother_pt";
3464 namehist+=i;
d39e8f99 3465 titlehist="Invariant Mass D0bar Loose Cuts Other ptbin=";
cc3209fb 3466 titlehist+=i;
3467 hInvMassD0barLSCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3468 hInvMassD0barLSCother->SetXTitle("Invariant Mass [GeV]");
3469 hInvMassD0barLSCother->SetYTitle("Entries");
3470 flistLsCutsOther->Add(hInvMassD0barLSCother);
e047b348 3471
3472 namehist="hetaLSCother_pt";
3473 namehist+=i;
3474 titlehist="eta Loose Cuts Other ptbin=";
3475 titlehist+=i;
3476 hetaLSCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3477 hetaLSCother->SetXTitle("Pseudorapidity");
3478 hetaLSCother->SetYTitle("Entries");
3479 flistLsCutsOther->Add(hetaLSCother);
3480
3481 namehist="hCosPDPBLSCother_pt";
3482 namehist+=i;
3483 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3484 titlehist+=i;
3485 hCosPDPBLSCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3486 hCosPDPBLSCother->SetXTitle("Cosine between D0 momentum and B momentum");
3487 hCosPDPBLSCother->SetYTitle("Entries");
3488 flistLsCutsOther->Add(hCosPDPBLSCother);
3489
3490 namehist="hCosPcPDLSCother_pt";
3491 namehist+=i;
3492 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3493 titlehist+=i;
3494 hCosPcPDLSCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3495 hCosPcPDLSCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
3496 hCosPcPDLSCother->SetYTitle("Entries");
3497 flistLsCutsOther->Add(hCosPcPDLSCother);
3498
3499 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3500 namehist="hd0xd0LSCother_pt";
3501 namehist+=i;
3502 titlehist="d0xd0 Loose Cuts Other ptbin=";
3503 titlehist+=i;
3504 hd0xd0LSCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3505 hd0xd0LSCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3506 hd0xd0LSCotherpt->SetYTitle("Entries");
3507 flistLsCutsOther->Add(hd0xd0LSCotherpt);
3508
3509
3510 namehist="hd0D0VSd0xd0LSCother_pt";
3511 namehist+=i;
3512 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Other ptbin=";
3513 titlehist+=i;
3514 hd0D0VSd0xd0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3515 hd0D0VSd0xd0LSCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3516 hd0D0VSd0xd0LSCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3517 flistLsCutsOther->Add(hd0D0VSd0xd0LSCotherpt);
3518
3519
3520 namehist="hangletracksVSd0xd0LSCother_pt";
3521 namehist+=i;
3522 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Loose Cuts Other ptbin=";
3523 titlehist+=i;
3524 hangletracksVSd0xd0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3525 hangletracksVSd0xd0LSCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3526 hangletracksVSd0xd0LSCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
3527 flistLsCutsOther->Add(hangletracksVSd0xd0LSCotherpt);
3528
3529
3530 namehist="hangletracksVSd0D0LSCother_pt";
3531 namehist+=i;
3532 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Loose Cuts Other ptbin=";
3533 titlehist+=i;
3534 hangletracksVSd0D0LSCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3535 hangletracksVSd0D0LSCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3536 hangletracksVSd0D0LSCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
3537 flistLsCutsOther->Add(hangletracksVSd0D0LSCotherpt);
3538
3539
3540 }
3541 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3542 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3543
3544
3545
624c07ab 3546 //############# d0 D0 histos ###############à
ac4c229c 3547 TH1F *hd0D0LSCotherPM = new TH1F("hd0D0LSCotherPM","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3548 hd0D0LSCotherPM->SetXTitle("Impact parameter [#mum]");
3549 hd0D0LSCotherPM->SetYTitle("Entries");
3550
3551 TH1F *hd0D0VtxTrueLSCotherPM = new TH1F("hd0D0VtxTrueLSCotherPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3552 hd0D0VtxTrueLSCotherPM->SetXTitle("Impact parameter [#mum]");
3553 hd0D0VtxTrueLSCotherPM->SetYTitle("Entries");
3554
3555 TH1F *hMCd0D0LSCotherPM = new TH1F("hMCd0D0LSCotherPM","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3556 hMCd0D0LSCotherPM->SetXTitle("MC Impact parameter [#mum]");
3557 hMCd0D0LSCotherPM->SetYTitle("Entries");
3558
3559 TH1F *hd0D0LSCotherSB = new TH1F("hd0D0LSCotherSB","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3560 hd0D0LSCotherSB->SetXTitle("Impact parameter [#mum]");
3561 hd0D0LSCotherSB->SetYTitle("Entries");
3562
3563 TH1F *hd0D0VtxTrueLSCotherSB = new TH1F("hd0D0VtxTrueLSCotherSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3564 hd0D0VtxTrueLSCotherSB->SetXTitle("Impact parameter [#mum]");
3565 hd0D0VtxTrueLSCotherSB->SetYTitle("Entries");
3566
3567 TH1F *hMCd0D0LSCotherSB = new TH1F("hMCd0D0LSCotherSB","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
3568 hMCd0D0LSCotherSB->SetXTitle("MC Impact parameter [#mum]");
3569 hMCd0D0LSCotherSB->SetYTitle("Entries");
3570
3571 flistLsCutsOther->Add(hd0D0LSCotherPM);
3572 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherPM);
3573 flistLsCutsOther->Add(hMCd0D0LSCotherPM);
3574 flistLsCutsOther->Add(hd0D0LSCotherSB);
3575 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherSB);
3576 flistLsCutsOther->Add(hMCd0D0LSCotherSB);
3577
e047b348 3578 TH1F *hd0D0ptLSCotherPM;
3579 TH1F *hMCd0D0ptLSCotherPM;
3580 TH1F *hd0D0VtxTrueptLSCotherPM;
3581 TH1F *hd0D0ptLSCotherSB;
3582 TH1F *hMCd0D0ptLSCotherSB;
3583 TH1F *hd0D0VtxTrueptLSCotherSB;
ac4c229c 3584 namehist="hd0D0ptLSCother_";
624c07ab 3585 titlehist="D^{0} impact par. plot, Loose Cuts, Other, ";
3586 for(Int_t i=0;i<fnbins;i++){
3587 strnamept=namehist;
3588 strnamept.Append("PkMss_pt");
3589 strnamept+=i;
3590
3591 strtitlept=titlehist;
3592 strtitlept.Append(" Mass Peak, ");
3593 strtitlept+=fptbins[i];
3594 strtitlept.Append("<= pt <");
3595 strtitlept+=fptbins[i+1];
3596 strtitlept.Append(" [GeV/c]");
3597
e047b348 3598 hd0D0ptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3599 hd0D0ptLSCotherPM->SetXTitle("Impact parameter [#mum] ");
3600 hd0D0ptLSCotherPM->SetYTitle("Entries");
3601 flistLsCutsOther->Add(hd0D0ptLSCotherPM);
624c07ab 3602
3603 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 3604 hMCd0D0ptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3605 hMCd0D0ptLSCotherPM->SetXTitle("MC Impact parameter [#mum] ");
3606 hMCd0D0ptLSCotherPM->SetYTitle("Entries");
3607 flistLsCutsOther->Add(hMCd0D0ptLSCotherPM);
624c07ab 3608
3609
3610 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 3611 hd0D0VtxTrueptLSCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3612 hd0D0VtxTrueptLSCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3613 hd0D0VtxTrueptLSCotherPM->SetYTitle("Entries");
3614 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherPM);
624c07ab 3615
3616 strnamept=namehist;
3617 strnamept.Append("SBMss_pt");
3618 strnamept+=i;
3619
3620 strtitlept=titlehist;
3621 strtitlept.Append(" Side Bands, ");
3622 strtitlept+=fptbins[i];
3623 strtitlept.Append("<= pt <");
3624 strtitlept+=fptbins[i+1];
3625 strtitlept.Append(" [GeV/c]");
3626
e047b348 3627 hd0D0ptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3628 hd0D0ptLSCotherSB->SetXTitle("Impact parameter [#mum] ");
3629 hd0D0ptLSCotherSB->SetYTitle("Entries");
3630 flistLsCutsOther->Add(hd0D0ptLSCotherSB);
624c07ab 3631
3632 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 3633 hMCd0D0ptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3634 hMCd0D0ptLSCotherSB->SetXTitle("MC Impact parameter [#mum] ");
3635 hMCd0D0ptLSCotherSB->SetYTitle("Entries");
3636 flistLsCutsOther->Add(hMCd0D0ptLSCotherSB);
624c07ab 3637
3638 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 3639 hd0D0VtxTrueptLSCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3640 hd0D0VtxTrueptLSCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3641 hd0D0VtxTrueptLSCotherSB->SetYTitle("Entries");
3642 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherSB);
624c07ab 3643 }
3644
d39e8f99 3645 //Printf("END OF LSCUTS HISTOS CREATION \n");
624c07ab 3646
3647
3648 //################################################################################################
3649 // #
3650 // HISTOS FOR TIGHT CUTS #
3651 // #
3652 //################################################################################################
3653
3654 //############ TIGHT CUTS SIGNAL HISTOGRAMS ###############
3655 //
3656 // ####### global properties histo ############
3657
e047b348 3658 TH2F *hCPtaVSd0d0TGHCsign=new TH2F("hCPtaVSd0d0TGHCsign","hCPtaVSd0d0_TightCuts_Signal",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 3659 TH1F *hSecVtxZTGHCsign=new TH1F("hSecVtxZTGHCsign","hSecVtxZ_TightCuts_Signal",1000,-8.,8.);
3660 TH1F *hSecVtxXTGHCsign=new TH1F("hSecVtxXTGHCsign","hSecVtxX_TightCuts_Signal",1000,-3000.,3000.);
3661 TH1F *hSecVtxYTGHCsign=new TH1F("hSecVtxYTGHCsign","hSecVtxY_TightCuts_Signal",1000,-3000.,3000.);
3662 TH2F *hSecVtxXYTGHCsign=new TH2F("hSecVtxXYTGHCsign","hSecVtxXY_TightCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
3663 TH1F *hSecVtxPhiTGHCsign=new TH1F("hSecVtxPhiTGHCsign","hSecVtxPhi_TightCuts_Signal",180,-180.1,180.1);
e047b348 3664 TH1F *hd0singlTrackTGHCsign=new TH1F("hd0singlTrackTGHCsign","hd0singlTrackTightCuts_Signal",1000,-5000.,5000.);
3665 TH1F *hCPtaTGHCsign=new TH1F("hCPtaTGHCsign","hCPta_TightCuts_Signal",100,-1.,1.);
ac4c229c 3666 TH1F *hd0xd0TGHCsign=new TH1F("hd0xd0TGHCsign","hd0xd0_TightCuts_Signal",1000,-100000.,100000.);
3667 TH1F *hMassTrueTGHCsign=new TH1F("hMassTrueTGHCsign","D^{0} MC inv. Mass Tight Cuts Signal(All momenta)",600,1.600,2.200);
3668 TH1F *hMassTGHCsign=new TH1F("hMassTGHCsign","D^{0} inv. Mass Tight Cuts Signal (All momenta)",600,1.600,2.200);
3669 hMassTGHCsign->Sumw2();
3670 TH1F *hMassTrueTGHCsignPM=new TH1F("hMassTrueTGHCsignPM","D^{0} MC inv. Mass Tight Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
3671 TH1F *hMassTGHCsignPM=new TH1F("hMassTGHCsignPM","D^{0} inv. Mass Tight Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
3672 hMassTGHCsignPM->Sumw2();
3673 TH1F *hMassTrueTGHCsignSB=new TH1F("hMassTrueTGHCsignSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Signal(All momenta)",600,1.600,2.200);
3674 TH1F *hMassTGHCsignSB=new TH1F("hMassTGHCsignSB","D^{0} inv. Mass in Side Bands Tight Cuts Signal (All momenta)",600,1.600,2.200);
3675 hMassTGHCsignSB->Sumw2();
3676
3677 flistTghCutsSignal->Add(hCPtaVSd0d0TGHCsign);
3678 flistTghCutsSignal->Add(hSecVtxZTGHCsign);
3679 flistTghCutsSignal->Add(hSecVtxYTGHCsign);
3680 flistTghCutsSignal->Add(hSecVtxXTGHCsign);
3681 flistTghCutsSignal->Add(hSecVtxXYTGHCsign);
3682 flistTghCutsSignal->Add(hSecVtxPhiTGHCsign);
e047b348 3683 flistTghCutsSignal->Add(hd0singlTrackTGHCsign);
ac4c229c 3684 flistTghCutsSignal->Add(hCPtaTGHCsign);
3685 flistTghCutsSignal->Add(hd0xd0TGHCsign);
3686 flistTghCutsSignal->Add(hMassTrueTGHCsign);
3687 flistTghCutsSignal->Add(hMassTGHCsign);
3688 flistTghCutsSignal->Add(hMassTrueTGHCsignPM);
3689 flistTghCutsSignal->Add(hMassTGHCsignPM);
3690 flistTghCutsSignal->Add(hMassTrueTGHCsignSB);
3691 flistTghCutsSignal->Add(hMassTGHCsignSB);
624c07ab 3692
e047b348 3693
3694
3695
3696
3697
3698 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
3699 TH1F *hdcaTGHCsign=new TH1F("hdcaTGHCsign","hdca_TightCuts_Signal",100,0.,1000.);
3700 hdcaTGHCsign->SetXTitle("dca [#mum]");
3701 hdcaTGHCsign->SetYTitle("Entries");
3702 TH1F *hcosthetastarTGHCsign=new TH1F("hcosthetastarTGHCsign","hCosThetaStar_TightCuts_Signal",50,-1.,1.);
3703 hcosthetastarTGHCsign->SetXTitle("cos #theta^{*}");
3704 hcosthetastarTGHCsign->SetYTitle("Entries");
3705 TH1F *hptD0TGHCsign=new TH1F("hptD0TGHCsign","D^{0} transverse momentum distribution",34,ptbinsD0arr);
3706 hptD0TGHCsign->SetXTitle("p_{t} [GeV/c]");
3707 hptD0TGHCsign->SetYTitle("Entries");
3708 TH1F *hptD0VsMaxPtTGHCsign=new TH1F("hptD0VsMaxPtTGHCsign","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
3709 TH2F *hptD0PTallsqrtTGHCsign=new TH2F("hptD0PTallsqrtTGHCsign","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
3710 TH2F *hptD0PTallTGHCsign=new TH2F("hptD0PTallTGHCsign","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
3711 TH2F *hptD0vsptBTGHCsign=new TH2F("hptD0vsptBTGHCsign","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3712 TH2F *hpD0vspBTGHCsign=new TH2F("hpD0vspBTGHCsign","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3713 TH2F *hptD0vsptcquarkTGHCsign=new TH2F("hptD0vsptcquarkTGHCsign","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3714 TH2F *hpD0vspcquarkTGHCsign=new TH2F("hpD0vspcquarkTGHCsign","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
3715 flistTghCutsSignal->Add(hdcaTGHCsign);
3716 flistTghCutsSignal->Add(hcosthetastarTGHCsign);
3717 flistTghCutsSignal->Add(hptD0TGHCsign);
3718 flistTghCutsSignal->Add(hptD0VsMaxPtTGHCsign);
3719 flistTghCutsSignal->Add(hptD0PTallsqrtTGHCsign);
3720 flistTghCutsSignal->Add(hptD0PTallTGHCsign);
3721 flistTghCutsSignal->Add(hptD0vsptBTGHCsign);
3722 flistTghCutsSignal->Add(hpD0vspBTGHCsign);
3723 flistTghCutsSignal->Add(hptD0vsptcquarkTGHCsign);
3724 flistTghCutsSignal->Add(hpD0vspcquarkTGHCsign);
3725
3726 TH1F *hd0zD0ptTGHCsign;
cc3209fb 3727 TH1F *hInvMassD0TGHCsign,*hInvMassD0barTGHCsign;
e047b348 3728 TH2F *hInvMassPtTGHCsign=new TH2F("hInvMassPtTGHCsign","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 3729 THnSparseF *hSparseTGHCsign=new THnSparseF("hSparseTGHCsign","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
3730 hSparseTGHCsign->SetBinEdges(0,massbins);
3731 hSparseTGHCsign->SetBinEdges(1,massbins);
3732 hSparseTGHCsign->SetBinEdges(2,ptbinsForNsparse);
3733 hSparseTGHCsign->SetBinEdges(3,impparbins);
3734 hSparseTGHCsign->SetBinEdges(4,massHypoBins);
3735 flistTghCutsSignal->Add(hSparseTGHCsign);
e047b348 3736 TH1F *hetaTGHCsign;
3737 TH1F *hCosPDPBTGHCsign;
3738 TH1F *hCosPcPDTGHCsign;
3739 flistTghCutsSignal->Add(hInvMassPtTGHCsign);
3740// %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3741 TH2F *hd0D0VSd0xd0TGHCsignpt;
3742 TH2F *hangletracksVSd0xd0TGHCsignpt;
3743 TH2F *hangletracksVSd0D0TGHCsignpt;
3744 TH1F *hd0xd0TGHCsignpt;
3745
3746 TH2F *hTOFpidTGHCsign=new TH2F("hTOFpidTGHCsign","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
3747 flistTghCutsSignal->Add(hTOFpidTGHCsign);
3748
3749 for(Int_t i=0;i<fnbins;i++){
d39e8f99 3750 // Printf("INSIDE FIRST LOOP FOR TIGHT CUTS HISTO CREATION %d\n", fnbins);
e047b348 3751 namehist="hd0zD0ptTGHCsign_pt";
3752 namehist+=i;
3753 titlehist="d0(z) Tight Cuts Signal ptbin=";
3754 titlehist+=i;
3755 hd0zD0ptTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
3756 hd0zD0ptTGHCsign->SetXTitle("d_{0}(z) [#mum]");
3757 hd0zD0ptTGHCsign->SetYTitle("Entries");
3758 flistTghCutsSignal->Add(hd0zD0ptTGHCsign);
3759
cc3209fb 3760 namehist="hInvMassD0TGHCsign_pt";
e047b348 3761 namehist+=i;
3762 titlehist="Invariant Mass Tight Cuts Signal ptbin=";
3763 titlehist+=i;
cc3209fb 3764 hInvMassD0TGHCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3765 hInvMassD0TGHCsign->SetXTitle("Invariant Mass [GeV]");
3766 hInvMassD0TGHCsign->SetYTitle("Entries");
3767 flistTghCutsSignal->Add(hInvMassD0TGHCsign);
3768
3769 namehist="hInvMassD0barTGHCsign_pt";
3770 namehist+=i;
d39e8f99 3771 titlehist="Invariant Mass D0bar Tight Cuts Signal ptbin=";
cc3209fb 3772 titlehist+=i;
3773 hInvMassD0barTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
3774 hInvMassD0barTGHCsign->SetXTitle("Invariant Mass [GeV]");
3775 hInvMassD0barTGHCsign->SetYTitle("Entries");
3776 flistTghCutsSignal->Add(hInvMassD0barTGHCsign);
3777
e047b348 3778
3779 namehist="hetaTGHCsign_pt";
3780 namehist+=i;
3781 titlehist="eta Tight Cuts Signal ptbin=";
3782 titlehist+=i;
3783 hetaTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
3784 hetaTGHCsign->SetXTitle("Pseudorapidity");
3785 hetaTGHCsign->SetYTitle("Entries");
3786 flistTghCutsSignal->Add(hetaTGHCsign);
3787
3788 namehist="hCosPDPBTGHCsign_pt";
3789 namehist+=i;
3790 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
3791 titlehist+=i;
3792 hCosPDPBTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3793 hCosPDPBTGHCsign->SetXTitle("Cosine between D0 momentum and B momentum");
3794 hCosPDPBTGHCsign->SetYTitle("Entries");
3795 flistTghCutsSignal->Add(hCosPDPBTGHCsign);
3796
3797 namehist="hCosPcPDTGHCsign_pt";
3798 namehist+=i;
3799 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
3800 titlehist+=i;
3801 hCosPcPDTGHCsign=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
3802 hCosPcPDTGHCsign->SetXTitle("Cosine between c quark momentum and D0 momentum");
3803 hCosPcPDTGHCsign->SetYTitle("Entries");
3804 flistTghCutsSignal->Add(hCosPcPDTGHCsign);
3805
3806 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
3807 namehist="hd0xd0TGHCsign_pt";
3808 namehist+=i;
3809 titlehist="d0xd0 Tight Cuts Signal ptbin=";
3810 titlehist+=i;
3811 hd0xd0TGHCsignpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
3812 hd0xd0TGHCsignpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
3813 hd0xd0TGHCsignpt->SetYTitle("Entries");
3814 flistTghCutsSignal->Add(hd0xd0TGHCsignpt);
3815
3816
3817 namehist="hd0D0VSd0xd0TGHCsign_pt";
3818 namehist+=i;
3819 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Signal ptbin=";
3820 titlehist+=i;
3821 hd0D0VSd0xd0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
3822 hd0D0VSd0xd0TGHCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3823 hd0D0VSd0xd0TGHCsignpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
3824 flistTghCutsSignal->Add(hd0D0VSd0xd0TGHCsignpt);
3825
3826
3827 namehist="hangletracksVSd0xd0TGHCsign_pt";
3828 namehist+=i;
3829 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Signal ptbin=";
3830 titlehist+=i;
3831 hangletracksVSd0xd0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
3832 hangletracksVSd0xd0TGHCsignpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
3833 hangletracksVSd0xd0TGHCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
3834 flistTghCutsSignal->Add(hangletracksVSd0xd0TGHCsignpt);
3835
3836
3837 namehist="hangletracksVSd0D0TGHCsign_pt";
3838 namehist+=i;
3839 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Signal ptbin=";
3840 titlehist+=i;
3841 hangletracksVSd0D0TGHCsignpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
3842 hangletracksVSd0D0TGHCsignpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
3843 hangletracksVSd0D0TGHCsignpt->SetYTitle(" angle between K and #p tracks [rad]");
3844 flistTghCutsSignal->Add(hangletracksVSd0D0TGHCsignpt);
3845
3846 }
3847 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
3848 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3849
3850
3851
3852
3853
3854
3855
3856
624c07ab 3857 // ####### d0 D0 histos ############
ac4c229c 3858 TH1F *hd0D0TGHCsignPM = new TH1F("hd0D0TGHCsignPM","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3859 hd0D0TGHCsignPM->SetXTitle("Impact parameter [#mum]");
3860 hd0D0TGHCsignPM->SetYTitle("Entries");
3861
3862 TH1F *hd0D0VtxTrueTGHCsignPM = new TH1F("hd0D0VtxTrueTGHCsignPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3863 hd0D0VtxTrueTGHCsignPM->SetXTitle("Impact parameter [#mum]");
3864 hd0D0VtxTrueTGHCsignPM->SetYTitle("Entries");
3865
3866 TH1F *hMCd0D0TGHCsignPM = new TH1F("hMCd0D0TGHCsignPM","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3867 hMCd0D0TGHCsignPM->SetXTitle("MC Impact parameter [#mum]");
3868 hMCd0D0TGHCsignPM->SetYTitle("Entries");
3869
3870 TH1F *hd0D0TGHCsignSB = new TH1F("hd0D0TGHCsignSB","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3871 hd0D0TGHCsignSB->SetXTitle("Impact parameter [#mum]");
3872 hd0D0TGHCsignSB->SetYTitle("Entries");
3873
3874 TH1F *hd0D0VtxTrueTGHCsignSB = new TH1F("hd0D0VtxTrueTGHCsignSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3875 hd0D0VtxTrueTGHCsignSB->SetXTitle("Impact parameter [#mum]");
3876 hd0D0VtxTrueTGHCsignSB->SetYTitle("Entries");
3877
3878 TH1F *hMCd0D0TGHCsignSB = new TH1F("hMCd0D0TGHCsignSB","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
3879 hMCd0D0TGHCsignSB->SetXTitle("MC Impact parameter [#mum]");
3880 hMCd0D0TGHCsignSB->SetYTitle("Entries");
3881
3882 flistTghCutsSignal->Add(hd0D0TGHCsignPM);
3883 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignPM);
3884 flistTghCutsSignal->Add(hMCd0D0TGHCsignPM);
3885 flistTghCutsSignal->Add(hd0D0TGHCsignSB);
3886 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignSB);
3887 flistTghCutsSignal->Add(hMCd0D0TGHCsignSB);
3888
e047b348 3889 TH1F *hd0D0ptTGHCsignPM;
3890 TH1F *hMCd0D0ptTGHCsignPM;
3891 TH1F *hd0D0VtxTrueptTGHCsignPM;
3892 TH1F *hd0D0ptTGHCsignSB;
3893 TH1F *hMCd0D0ptTGHCsignSB;
3894 TH1F *hd0D0VtxTrueptTGHCsignSB;
ac4c229c 3895 namehist="hd0D0ptTGHCsign_";
624c07ab 3896 titlehist="D^{0} impact par. plot, Tight Cuts, Signal, ";
3897 for(Int_t i=0;i<fnbins;i++){
3898 strnamept=namehist;
3899 strnamept.Append("PkMss_pt");
3900 strnamept+=i;
3901
3902 strtitlept=titlehist;
3903 strtitlept.Append(" Mass Peak, ");
3904 strtitlept+=fptbins[i];
3905 strtitlept.Append("<= pt <");
3906 strtitlept+=fptbins[i+1];
3907 strtitlept.Append(" [GeV/c]");
3908
e047b348 3909 hd0D0ptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3910 hd0D0ptTGHCsignPM->SetXTitle("Impact parameter [#mum] ");
3911 hd0D0ptTGHCsignPM->SetYTitle("Entries");
3912 flistTghCutsSignal->Add(hd0D0ptTGHCsignPM);
624c07ab 3913
3914 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 3915 hMCd0D0ptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3916 hMCd0D0ptTGHCsignPM->SetXTitle("MC Impact parameter [#mum] ");
3917 hMCd0D0ptTGHCsignPM->SetYTitle("Entries");
3918 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignPM);
624c07ab 3919
3920
3921 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 3922 hd0D0VtxTrueptTGHCsignPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3923 hd0D0VtxTrueptTGHCsignPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3924 hd0D0VtxTrueptTGHCsignPM->SetYTitle("Entries");
3925 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignPM);
624c07ab 3926
3927 strnamept=namehist;
3928 strnamept.Append("SBMss_pt");
3929 strnamept+=i;
3930
3931 strtitlept=titlehist;
3932 strtitlept.Append(" Side Bands, ");
3933 strtitlept+=fptbins[i];
3934 strtitlept.Append("<= pt <");
3935 strtitlept+=fptbins[i+1];
3936 strtitlept.Append(" [GeV/c]");
3937
e047b348 3938 hd0D0ptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3939 hd0D0ptTGHCsignSB->SetXTitle("Impact parameter [#mum] ");
3940 hd0D0ptTGHCsignSB->SetYTitle("Entries");
3941 flistTghCutsSignal->Add(hd0D0ptTGHCsignSB);
624c07ab 3942
3943 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 3944 hMCd0D0ptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3945 hMCd0D0ptTGHCsignSB->SetXTitle("MC Impact parameter [#mum] ");
3946 hMCd0D0ptTGHCsignSB->SetYTitle("Entries");
3947 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignSB);
624c07ab 3948
3949 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 3950 hd0D0VtxTrueptTGHCsignSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
3951 hd0D0VtxTrueptTGHCsignSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
3952 hd0D0VtxTrueptTGHCsignSB->SetYTitle("Entries");
3953 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignSB);
624c07ab 3954 }
3955
3956
3957 //############ TIGHT CUTS BACKGROUND HISTOGRAMS ###########
3958 //
3959 // ######## global properties histos #######
e047b348 3960 TH2F *hCPtaVSd0d0TGHCback=new TH2F("hCPtaVSd0d0TGHCback","hCPtaVSd0d0_TightCuts_Background",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 3961 TH1F *hSecVtxZTGHCback=new TH1F("hSecVtxZTGHCback","hSecVtxZ_TightCuts_Background",1000,-8.,8.);
3962 TH1F *hSecVtxXTGHCback=new TH1F("hSecVtxXTGHCback","hSecVtxX_TightCuts_Background",1000,-3000.,3000.);
3963 TH1F *hSecVtxYTGHCback=new TH1F("hSecVtxYTGHCback","hSecVtxY_TightCuts_Background",1000,-3000.,3000.);
3964 TH2F *hSecVtxXYTGHCback=new TH2F("hSecVtxXYTGHCback","hSecVtxXY_TightCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
3965 TH1F *hSecVtxPhiTGHCback=new TH1F("hSecVtxPhiTGHCback","hSecVtxPhi_TightCuts_Background",180,-180.1,180.1);
e047b348 3966 TH1F *hd0singlTrackTGHCback=new TH1F("hd0singlTrackTGHCback","hd0singlTrackTightCuts_Back",1000,-5000.,5000.);
3967 TH1F *hCPtaTGHCback=new TH1F("hCPtaTGHCback","hCPta_TightCuts_Background",100,-1.,1.);
ac4c229c 3968 TH1F *hd0xd0TGHCback=new TH1F("hd0xd0TGHCback","hd0xd0_TightCuts_Background",1000,-100000.,100000.);
3969 TH1F *hMassTrueTGHCback=new TH1F("hMassTrueTGHCback","D^{0} MC inv. Mass Tight Cuts Background(All momenta)",600,1.600,2.200);
3970 TH1F *hMassTGHCback=new TH1F("hMassTGHCback","D^{0} inv. Mass Tight Cuts Background (All momenta)",600,1.600,2.200);
3971 hMassTGHCback->Sumw2();
3972 TH1F *hMassTrueTGHCbackPM=new TH1F("hMassTrueTGHCbackPM","D^{0} MC inv. Mass Tight Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
3973 TH1F *hMassTGHCbackPM=new TH1F("hMassTGHCbackPM","D^{0} inv. Mass Tight Cuts Background (All momenta), MassPeak",600,1.600,2.200);
3974 hMassTGHCbackPM->Sumw2();
3975 TH1F *hMassTrueTGHCbackSB=new TH1F("hMassTrueTGHCbackSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Backgrround(All momenta)",600,1.600,2.200);
3976 TH1F *hMassTGHCbackSB=new TH1F("hMassTGHCbackSB","D^{0} inv. Mass in Side Bands Tight Cuts Background (All momenta)",600,1.600,2.200);
3977 hMassTGHCbackSB->Sumw2();
3978
3979 flistTghCutsBack->Add(hCPtaVSd0d0TGHCback);
3980 flistTghCutsBack->Add(hSecVtxZTGHCback);
3981 flistTghCutsBack->Add(hSecVtxYTGHCback);
3982 flistTghCutsBack->Add(hSecVtxXTGHCback);
3983 flistTghCutsBack->Add(hSecVtxXYTGHCback);
3984 flistTghCutsBack->Add(hSecVtxPhiTGHCback);
e047b348 3985 flistTghCutsBack->Add(hd0singlTrackTGHCback);
ac4c229c 3986 flistTghCutsBack->Add(hCPtaTGHCback);
3987 flistTghCutsBack->Add(hd0xd0TGHCback);
3988 flistTghCutsBack->Add(hMassTrueTGHCback);
3989 flistTghCutsBack->Add(hMassTGHCback);
3990 flistTghCutsBack->Add(hMassTrueTGHCbackPM);
3991 flistTghCutsBack->Add(hMassTGHCbackPM);
3992 flistTghCutsBack->Add(hMassTrueTGHCbackSB);
3993 flistTghCutsBack->Add(hMassTGHCbackSB);
624c07ab 3994
3995
e047b348 3996
3997
3998
3999
4000
4001 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4002 TH1F *hdcaTGHCback=new TH1F("hdcaTGHCback","hdca_TightCuts_Backgr",100,0.,1000.);
4003 hdcaTGHCback->SetXTitle("dca [#mum]");
4004 hdcaTGHCback->SetYTitle("Entries");
4005 TH1F *hcosthetastarTGHCback=new TH1F("hcosthetastarTGHCback","hCosThetaStar_TightCuts_Backgr",50,-1.,1.);
4006 hcosthetastarTGHCback->SetXTitle("cos #theta^{*}");
4007 hcosthetastarTGHCback->SetYTitle("Entries");
4008 TH1F *hptD0TGHCback=new TH1F("hptD0TGHCback","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4009 hptD0TGHCback->SetXTitle("p_{t} [GeV/c]");
4010 hptD0TGHCback->SetYTitle("Entries");
4011 TH1F *hptD0VsMaxPtTGHCback=new TH1F("hptD0VsMaxPtTGHCback","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4012 TH2F *hptD0PTallsqrtTGHCback=new TH2F("hptD0PTallsqrtTGHCback","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4013 TH2F *hptD0PTallTGHCback=new TH2F("hptD0PTallTGHCback","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4014 TH2F *hptD0vsptBTGHCback=new TH2F("hptD0vsptBTGHCback","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4015 TH2F *hpD0vspBTGHCback=new TH2F("hpD0vspBTGHCback","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4016 TH2F *hptD0vsptcquarkTGHCback=new TH2F("hptD0vsptcquarkTGHCback","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4017 TH2F *hpD0vspcquarkTGHCback=new TH2F("hpD0vspcquarkTGHCback","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4018 flistTghCutsBack->Add(hdcaTGHCback);
4019 flistTghCutsBack->Add(hcosthetastarTGHCback);
4020 flistTghCutsBack->Add(hptD0TGHCback);
4021 flistTghCutsBack->Add(hptD0VsMaxPtTGHCback);
4022 flistTghCutsBack->Add(hptD0PTallsqrtTGHCback);
4023 flistTghCutsBack->Add(hptD0PTallTGHCback);
4024 flistTghCutsBack->Add(hptD0vsptBTGHCback);
4025 flistTghCutsBack->Add(hpD0vspBTGHCback);
4026 flistTghCutsBack->Add(hptD0vsptcquarkTGHCback);
4027 flistTghCutsBack->Add(hpD0vspcquarkTGHCback);
4028
4029 TH1F *hd0zD0ptTGHCback;
cc3209fb 4030 TH1F *hInvMassD0TGHCback,*hInvMassD0barTGHCback;
e047b348 4031 TH2F *hInvMassPtTGHCback=new TH2F("hInvMassPtTGHCback","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 4032 THnSparseF *hSparseTGHCback=new THnSparseF("hSparseTGHCback","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4033 hSparseTGHCback->SetBinEdges(0,massbins);
4034 hSparseTGHCback->SetBinEdges(1,massbins);
4035 hSparseTGHCback->SetBinEdges(2,ptbinsForNsparse);
4036 hSparseTGHCback->SetBinEdges(3,impparbins);
4037 hSparseTGHCback->SetBinEdges(4,massHypoBins);
4038 flistTghCutsBack->Add(hSparseTGHCback);
e047b348 4039 TH1F *hetaTGHCback;
4040 TH1F *hCosPDPBTGHCback;
4041 TH1F *hCosPcPDTGHCback;
4042 flistTghCutsBack->Add(hInvMassPtTGHCback);
4043// %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4044 TH2F *hd0D0VSd0xd0TGHCbackpt;
4045 TH2F *hangletracksVSd0xd0TGHCbackpt;
4046 TH2F *hangletracksVSd0D0TGHCbackpt;
4047 TH1F *hd0xd0TGHCbackpt;
4048
4049 TH2F *hTOFpidTGHCback=new TH2F("hTOFpidTGHCback","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4050 flistTghCutsBack->Add(hTOFpidTGHCback);
4051
4052
4053 for(Int_t i=0;i<fnbins;i++){
4054 namehist="hd0zD0ptTGHCback_pt";
4055 namehist+=i;
4056 titlehist="d0(z) Tight Cuts Backgrm ptbin=";
4057 titlehist+=i;
4058 hd0zD0ptTGHCback=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4059 hd0zD0ptTGHCback->SetXTitle("d_{0}(z) [#mum]");
4060 hd0zD0ptTGHCback->SetYTitle("Entries");
4061 flistTghCutsBack->Add(hd0zD0ptTGHCback);
4062
cc3209fb 4063 namehist="hInvMassD0TGHCback_pt";
e047b348 4064 namehist+=i;
4065 titlehist="Invariant Mass Tight Cuts Backgr ptbin=";
4066 titlehist+=i;
cc3209fb 4067 hInvMassD0TGHCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4068 hInvMassD0TGHCback->SetXTitle("Invariant Mass [GeV]");
4069 hInvMassD0TGHCback->SetYTitle("Entries");
4070 flistTghCutsBack->Add(hInvMassD0TGHCback);
4071
4072 namehist="hInvMassD0barTGHCback_pt";
4073 namehist+=i;
d39e8f99 4074 titlehist="Invariant Mass D0bar Tight Cuts Back ptbin=";
cc3209fb 4075 titlehist+=i;
4076 hInvMassD0barTGHCback=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4077 hInvMassD0barTGHCback->SetXTitle("Invariant Mass [GeV]");
4078 hInvMassD0barTGHCback->SetYTitle("Entries");
4079 flistTghCutsBack->Add(hInvMassD0barTGHCback);
e047b348 4080
4081 namehist="hetaTGHCback_pt";
4082 namehist+=i;
4083 titlehist="eta Tight Cuts Backgr ptbin=";
4084 titlehist+=i;
4085 hetaTGHCback=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4086 hetaTGHCback->SetXTitle("Pseudorapidity");
4087 hetaTGHCback->SetYTitle("Entries");
4088 flistTghCutsBack->Add(hetaTGHCback);
4089
4090 namehist="hCosPDPBTGHCback_pt";
4091 namehist+=i;
4092 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4093 titlehist+=i;
4094 hCosPDPBTGHCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4095 hCosPDPBTGHCback->SetXTitle("Cosine between D0 momentum and B momentum");
4096 hCosPDPBTGHCback->SetYTitle("Entries");
4097 flistTghCutsBack->Add(hCosPDPBTGHCback);
4098
4099 namehist="hCosPcPDTGHCback_pt";
4100 namehist+=i;
4101 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4102 titlehist+=i;
4103 hCosPcPDTGHCback=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4104 hCosPcPDTGHCback->SetXTitle("Cosine between c quark momentum and D0 momentum");
4105 hCosPcPDTGHCback->SetYTitle("Entries");
4106 flistTghCutsBack->Add(hCosPcPDTGHCback);
4107
4108 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4109 namehist="hd0xd0TGHCback_pt";
4110 namehist+=i;
4111 titlehist="d0xd0 Tight Cuts Back ptbin=";
4112 titlehist+=i;
4113 hd0xd0TGHCbackpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4114 hd0xd0TGHCbackpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4115 hd0xd0TGHCbackpt->SetYTitle("Entries");
4116 flistTghCutsBack->Add(hd0xd0TGHCbackpt);
4117
4118
4119 namehist="hd0D0VSd0xd0TGHCback_pt";
4120 namehist+=i;
4121 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Back ptbin=";
4122 titlehist+=i;
4123 hd0D0VSd0xd0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4124 hd0D0VSd0xd0TGHCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4125 hd0D0VSd0xd0TGHCbackpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4126 flistTghCutsBack->Add(hd0D0VSd0xd0TGHCbackpt);
4127
4128
4129 namehist="hangletracksVSd0xd0TGHCback_pt";
4130 namehist+=i;
4131 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Back ptbin=";
4132 titlehist+=i;
4133 hangletracksVSd0xd0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4134 hangletracksVSd0xd0TGHCbackpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4135 hangletracksVSd0xd0TGHCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
4136 flistTghCutsBack->Add(hangletracksVSd0xd0TGHCbackpt);
4137
4138
4139 namehist="hangletracksVSd0D0TGHCback_pt";
4140 namehist+=i;
4141 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Back ptbin=";
4142 titlehist+=i;
4143 hangletracksVSd0D0TGHCbackpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4144 hangletracksVSd0D0TGHCbackpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4145 hangletracksVSd0D0TGHCbackpt->SetYTitle(" angle between K and #p tracks [rad]");
4146 flistTghCutsBack->Add(hangletracksVSd0D0TGHCbackpt);
4147
4148
4149 }
4150 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4151 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4152
4153
4154
4155
624c07ab 4156 // ####### d0 D0 histos ############
4157
ac4c229c 4158 TH1F *hd0D0TGHCbackPM = new TH1F("hd0D0TGHCbackPM","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4159 hd0D0TGHCbackPM->SetXTitle("Impact parameter [#mum]");
4160 hd0D0TGHCbackPM->SetYTitle("Entries");
4161
4162 TH1F *hd0D0VtxTrueTGHCbackPM = new TH1F("hd0D0VtxTrueTGHCbackPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4163 hd0D0VtxTrueTGHCbackPM->SetXTitle("Impact parameter [#mum]");
4164 hd0D0VtxTrueTGHCbackPM->SetYTitle("Entries");
4165
4166 TH1F *hMCd0D0TGHCbackPM = new TH1F("hMCd0D0TGHCbackPM","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4167 hMCd0D0TGHCbackPM->SetXTitle("MC Impact parameter [#mum]");
4168 hMCd0D0TGHCbackPM->SetYTitle("Entries");
4169
4170 TH1F *hd0D0TGHCbackSB = new TH1F("hd0D0TGHCbackSB","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4171 hd0D0TGHCbackSB->SetXTitle("Impact parameter [#mum]");
4172 hd0D0TGHCbackSB->SetYTitle("Entries");
4173
4174 TH1F *hd0D0VtxTrueTGHCbackSB = new TH1F("hd0D0VtxTrueTGHCbackSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4175 hd0D0VtxTrueTGHCbackSB->SetXTitle("Impact parameter [#mum]");
4176 hd0D0VtxTrueTGHCbackSB->SetYTitle("Entries");
4177
4178 TH1F *hMCd0D0TGHCbackSB = new TH1F("hMCd0D0TGHCbackSB","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
4179 hMCd0D0TGHCbackSB->SetXTitle("MC Impact parameter [#mum]");
4180 hMCd0D0TGHCbackSB->SetYTitle("Entries");
4181
4182 flistTghCutsBack->Add(hd0D0TGHCbackPM);
4183 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackPM);
4184 flistTghCutsBack->Add(hMCd0D0TGHCbackPM);
4185 flistTghCutsBack->Add(hd0D0TGHCbackSB);
4186 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackSB);
4187 flistTghCutsBack->Add(hMCd0D0TGHCbackSB);
4188
e047b348 4189 TH1F *hd0D0ptTGHCbackPM;
4190 TH1F *hMCd0D0ptTGHCbackPM;
4191 TH1F *hd0D0VtxTrueptTGHCbackPM;
4192 TH1F *hd0D0ptTGHCbackSB;
4193 TH1F *hMCd0D0ptTGHCbackSB;
4194 TH1F *hd0D0VtxTrueptTGHCbackSB;
ac4c229c 4195 namehist="hd0D0ptTGHCback_";
624c07ab 4196 titlehist="D^{0} impact par. plot, Tight Cuts, Background, ";
4197 for(Int_t i=0;i<fnbins;i++){
4198 strnamept=namehist;
4199 strnamept.Append("PkMss_pt");
4200 strnamept+=i;
4201
4202 strtitlept=titlehist;
4203 strtitlept.Append(" Mass Peak, ");
4204 strtitlept+=fptbins[i];
4205 strtitlept.Append("<= pt <");
4206 strtitlept+=fptbins[i+1];
4207 strtitlept.Append(" [GeV/c]");
4208
e047b348 4209 hd0D0ptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4210 hd0D0ptTGHCbackPM->SetXTitle("Impact parameter [#mum] ");
4211 hd0D0ptTGHCbackPM->SetYTitle("Entries");
4212 flistTghCutsBack->Add(hd0D0ptTGHCbackPM);
624c07ab 4213
4214 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 4215 hMCd0D0ptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4216 hMCd0D0ptTGHCbackPM->SetXTitle("MC Impact parameter [#mum] ");
4217 hMCd0D0ptTGHCbackPM->SetYTitle("Entries");
4218 flistTghCutsBack->Add(hMCd0D0ptTGHCbackPM);
624c07ab 4219
4220
4221 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 4222 hd0D0VtxTrueptTGHCbackPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4223 hd0D0VtxTrueptTGHCbackPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4224 hd0D0VtxTrueptTGHCbackPM->SetYTitle("Entries");
4225 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackPM);
624c07ab 4226
4227 strnamept=namehist;
4228 strnamept.Append("SBMss_pt");
4229 strnamept+=i;
4230
4231 strtitlept=titlehist;
4232 strtitlept.Append(" Side Bands, ");
4233 strtitlept+=fptbins[i];
4234 strtitlept.Append("<= pt <");
4235 strtitlept+=fptbins[i+1];
4236 strtitlept.Append(" [GeV/c]");
4237
e047b348 4238 hd0D0ptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4239 hd0D0ptTGHCbackSB->SetXTitle("Impact parameter [#mum] ");
4240 hd0D0ptTGHCbackSB->SetYTitle("Entries");
4241 flistTghCutsBack->Add(hd0D0ptTGHCbackSB);
624c07ab 4242
4243 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 4244 hMCd0D0ptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4245 hMCd0D0ptTGHCbackSB->SetXTitle("MC Impact parameter [#mum] ");
4246 hMCd0D0ptTGHCbackSB->SetYTitle("Entries");
4247 flistTghCutsBack->Add(hMCd0D0ptTGHCbackSB);
624c07ab 4248
4249 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 4250 hd0D0VtxTrueptTGHCbackSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4251 hd0D0VtxTrueptTGHCbackSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4252 hd0D0VtxTrueptTGHCbackSB->SetYTitle("Entries");
4253 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackSB);
624c07ab 4254 }
4255
4256
4257
4258 //############ TIGHT CUTS FROMB HISTOGRAMS ###########
4259 //
4260 //####### global properties histos
4261
e047b348 4262 TH2F *hCPtaVSd0d0TGHCfromB=new TH2F("hCPtaVSd0d0TGHCfromB","hCPtaVSd0d0_TightCuts_FromB",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 4263 TH1F *hSecVtxZTGHCfromB=new TH1F("hSecVtxZTGHCfromB","hSecVtxZ_TightCuts_FromB",1000,-8.,8.);
4264 TH1F *hSecVtxXTGHCfromB=new TH1F("hSecVtxXTGHCfromB","hSecVtxX_TightCuts_FromB",1000,-3000.,3000.);
4265 TH1F *hSecVtxYTGHCfromB=new TH1F("hSecVtxYTGHCfromB","hSecVtxY_TightCuts_FromB",1000,-3000.,3000.);
4266 TH2F *hSecVtxXYTGHCfromB=new TH2F("hSecVtxXYTGHCfromB","hSecVtxXY_TightCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
4267 TH1F *hSecVtxPhiTGHCfromB=new TH1F("hSecVtxPhiTGHCfromB","hSecVtxPhi_TightCuts_FromB",180,-180.1,180.1);
e047b348 4268 TH1F *hd0singlTrackTGHCfromB=new TH1F("hd0singlTrackTGHCfromB","hd0singlTrackTightCuts_FromB",1000,-5000.,5000.);
4269 TH1F *hCPtaTGHCfromB=new TH1F("hCPtaTGHCfromB","hCPta_TightCuts_FromB",100,-1.,1.);
ac4c229c 4270 TH1F *hd0xd0TGHCfromB=new TH1F("hd0xd0TGHCfromB","hd0xd0_TightCuts_FromB",1000,-100000.,100000.);
4271 TH1F *hMassTrueTGHCfromB=new TH1F("hMassTrueTGHCfromB","D^{0} MC inv. Mass Tight Cuts FromB(All momenta)",600,1.600,2.200);
4272 TH1F *hMassTGHCfromB=new TH1F("hMassTGHCfromB","D^{0} inv. Mass Tight Cuts FromB (All momenta)",600,1.600,2.200);
4273 hMassTGHCfromB->Sumw2();
4274 TH1F *hMassTrueTGHCfromBPM=new TH1F("hMassTrueTGHCfromBPM","D^{0} MC inv. Mass Tight Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
4275 TH1F *hMassTGHCfromBPM=new TH1F("hMassTGHCfromBPM","D^{0} inv. Mass Tight Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
4276 hMassTGHCfromBPM->Sumw2();
4277 TH1F *hMassTrueTGHCfromBSB=new TH1F("hMassTrueTGHCfromBSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromB(All momenta)",600,1.600,2.200);
4278 TH1F *hMassTGHCfromBSB=new TH1F("hMassTGHCfromBSB","D^{0} inv. Mass in Side Bands Tight Cuts FromB (All momenta)",600,1.600,2.200);
4279 hMassTGHCfromBSB->Sumw2();
4280
4281 flistTghCutsFromB->Add(hCPtaVSd0d0TGHCfromB);
4282 flistTghCutsFromB->Add(hSecVtxZTGHCfromB);
4283 flistTghCutsFromB->Add(hSecVtxYTGHCfromB);
4284 flistTghCutsFromB->Add(hSecVtxXTGHCfromB);
4285 flistTghCutsFromB->Add(hSecVtxXYTGHCfromB);
4286 flistTghCutsFromB->Add(hSecVtxPhiTGHCfromB);
e047b348 4287 flistTghCutsFromB->Add(hd0singlTrackTGHCfromB);
ac4c229c 4288 flistTghCutsFromB->Add(hCPtaTGHCfromB);
4289 flistTghCutsFromB->Add(hd0xd0TGHCfromB);
4290 flistTghCutsFromB->Add(hMassTrueTGHCfromB);
4291 flistTghCutsFromB->Add(hMassTGHCfromB);
4292 flistTghCutsFromB->Add(hMassTrueTGHCfromBPM);
4293 flistTghCutsFromB->Add(hMassTGHCfromBPM);
4294 flistTghCutsFromB->Add(hMassTrueTGHCfromBSB);
4295 flistTghCutsFromB->Add(hMassTGHCfromBSB);
624c07ab 4296
ac4c229c 4297
ac4c229c 4298
e047b348 4299 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4300 TH1F *hdcaTGHCfromB=new TH1F("hdcaTGHCfromB","hdca_TightCuts_FromB",100,0.,1000.);
4301 hdcaTGHCfromB->SetXTitle("dca [#mum]");
4302 hdcaTGHCfromB->SetYTitle("Entries");
4303 TH1F *hcosthetastarTGHCfromB=new TH1F("hcosthetastarTGHCfromB","hCosThetaStar_TightCuts_FromB",50,-1.,1.);
4304 hcosthetastarTGHCfromB->SetXTitle("cos #theta^{*}");
4305 hcosthetastarTGHCfromB->SetYTitle("Entries");
4306 TH1F *hptD0TGHCfromB=new TH1F("hptD0TGHCfromB","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4307 hptD0TGHCfromB->SetXTitle("p_{t} [GeV/c]");
4308 hptD0TGHCfromB->SetYTitle("Entries");
4309 TH1F *hptD0VsMaxPtTGHCfromB=new TH1F("hptD0VsMaxPtTGHCfromB","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4310 TH2F *hptD0PTallsqrtTGHCfromB=new TH2F("hptD0PTallsqrtTGHCfromB","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4311 TH2F *hptD0PTallTGHCfromB=new TH2F("hptD0PTallTGHCfromB","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4312 TH2F *hptD0vsptBTGHCfromB=new TH2F("hptD0vsptBTGHCfromB","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4313 TH2F *hpD0vspBTGHCfromB=new TH2F("hpD0vspBTGHCfromB","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4314 TH2F *hptD0vsptcquarkTGHCfromB=new TH2F("hptD0vsptcquarkTGHCfromB","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4315 TH2F *hpD0vspcquarkTGHCfromB=new TH2F("hpD0vspcquarkTGHCfromB","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4316 flistTghCutsFromB->Add(hdcaTGHCfromB);
4317 flistTghCutsFromB->Add(hcosthetastarTGHCfromB);
4318 flistTghCutsFromB->Add(hptD0TGHCfromB);
4319 flistTghCutsFromB->Add(hptD0VsMaxPtTGHCfromB);
4320 flistTghCutsFromB->Add(hptD0PTallsqrtTGHCfromB);
4321 flistTghCutsFromB->Add(hptD0PTallTGHCfromB);
4322 flistTghCutsFromB->Add(hptD0vsptBTGHCfromB);
4323 flistTghCutsFromB->Add(hpD0vspBTGHCfromB);
4324 flistTghCutsFromB->Add(hptD0vsptcquarkTGHCfromB);
4325 flistTghCutsFromB->Add(hpD0vspcquarkTGHCfromB);
4326
4327 TH1F *hd0zD0ptTGHCfromB;
cc3209fb 4328 TH1F *hInvMassD0TGHCfromB,*hInvMassD0barTGHCfromB;
e047b348 4329 TH2F *hInvMassPtTGHCfromB=new TH2F("hInvMassPtTGHCfromB","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 4330 THnSparseF *hSparseTGHCfromB=new THnSparseF("hSparseTGHCfromB","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4331 hSparseTGHCfromB->SetBinEdges(0,massbins);
4332 hSparseTGHCfromB->SetBinEdges(1,massbins);
4333 hSparseTGHCfromB->SetBinEdges(2,ptbinsForNsparse);
4334 hSparseTGHCfromB->SetBinEdges(3,impparbins);
4335 hSparseTGHCfromB->SetBinEdges(4,massHypoBins);
4336 flistTghCutsFromB->Add(hSparseTGHCfromB);
e047b348 4337 TH1F *hetaTGHCfromB;
4338 TH1F *hCosPDPBTGHCfromB;
4339 TH1F *hCosPcPDTGHCfromB;
4340 flistTghCutsFromB->Add(hInvMassPtTGHCfromB);
4341// %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4342 TH2F *hd0D0VSd0xd0TGHCfromBpt;
4343 TH2F *hangletracksVSd0xd0TGHCfromBpt;
4344 TH2F *hangletracksVSd0D0TGHCfromBpt;
4345 TH1F *hd0xd0TGHCfromBpt;
4346
4347 TH2F *hTOFpidTGHCfromB=new TH2F("hTOFpidTGHCfromB","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4348 flistTghCutsFromB->Add(hTOFpidTGHCfromB);
ac4c229c 4349
e047b348 4350
4351 for(Int_t i=0;i<fnbins;i++){
4352 namehist="hd0zD0ptTGHCfromB_pt";
4353 namehist+=i;
4354 titlehist="d0(z) Tight Cuts FromBm ptbin=";
4355 titlehist+=i;
4356 hd0zD0ptTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4357 hd0zD0ptTGHCfromB->SetXTitle("d_{0}(z) [#mum]");
4358 hd0zD0ptTGHCfromB->SetYTitle("Entries");
4359 flistTghCutsFromB->Add(hd0zD0ptTGHCfromB);
4360
cc3209fb 4361 namehist="hInvMassD0TGHCfromB_pt";
e047b348 4362 namehist+=i;
4363 titlehist="Invariant Mass Tight Cuts FromB ptbin=";
4364 titlehist+=i;
cc3209fb 4365 hInvMassD0TGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4366 hInvMassD0TGHCfromB->SetXTitle("Invariant Mass [GeV]");
4367 hInvMassD0TGHCfromB->SetYTitle("Entries");
4368 flistTghCutsFromB->Add(hInvMassD0TGHCfromB);
4369
4370 namehist="hInvMassD0barTGHCfromB_pt";
4371 namehist+=i;
d39e8f99 4372 titlehist="Invariant Mass D0bar Tight Cuts FromB ptbin=";
cc3209fb 4373 titlehist+=i;
4374 hInvMassD0barTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4375 hInvMassD0barTGHCfromB->SetXTitle("Invariant Mass [GeV]");
4376 hInvMassD0barTGHCfromB->SetYTitle("Entries");
4377 flistTghCutsFromB->Add(hInvMassD0barTGHCfromB);
e047b348 4378
4379 namehist="hetaTGHCfromB_pt";
4380 namehist+=i;
4381 titlehist="eta Tight Cuts FromB ptbin=";
4382 titlehist+=i;
4383 hetaTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4384 hetaTGHCfromB->SetXTitle("Pseudorapidity");
4385 hetaTGHCfromB->SetYTitle("Entries");
4386 flistTghCutsFromB->Add(hetaTGHCfromB);
4387
4388 namehist="hCosPDPBTGHCfromB_pt";
4389 namehist+=i;
4390 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4391 titlehist+=i;
4392 hCosPDPBTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4393 hCosPDPBTGHCfromB->SetXTitle("Cosine between D0 momentum and B momentum");
4394 hCosPDPBTGHCfromB->SetYTitle("Entries");
4395 flistTghCutsFromB->Add(hCosPDPBTGHCfromB);
4396
4397 namehist="hCosPcPDTGHCfromB_pt";
4398 namehist+=i;
4399 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4400 titlehist+=i;
4401 hCosPcPDTGHCfromB=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4402 hCosPcPDTGHCfromB->SetXTitle("Cosine between c quark momentum and D0 momentum");
4403 hCosPcPDTGHCfromB->SetYTitle("Entries");
4404 flistTghCutsFromB->Add(hCosPcPDTGHCfromB);
4405
4406// %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4407 namehist="hd0xd0TGHCfromB_pt";
4408 namehist+=i;
4409 titlehist="d0xd0 Tight Cuts FromB ptbin=";
4410 titlehist+=i;
4411 hd0xd0TGHCfromBpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4412 hd0xd0TGHCfromBpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4413 hd0xd0TGHCfromBpt->SetYTitle("Entries");
4414 flistTghCutsFromB->Add(hd0xd0TGHCfromBpt);
4415
4416
4417 namehist="hd0D0VSd0xd0TGHCfromB_pt";
4418 namehist+=i;
4419 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromB ptbin=";
4420 titlehist+=i;
4421 hd0D0VSd0xd0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4422 hd0D0VSd0xd0TGHCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4423 hd0D0VSd0xd0TGHCfromBpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4424 flistTghCutsFromB->Add(hd0D0VSd0xd0TGHCfromBpt);
4425
4426
4427 namehist="hangletracksVSd0xd0TGHCfromB_pt";
4428 namehist+=i;
4429 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromB ptbin=";
4430 titlehist+=i;
4431 hangletracksVSd0xd0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4432 hangletracksVSd0xd0TGHCfromBpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4433 hangletracksVSd0xd0TGHCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
4434 flistTghCutsFromB->Add(hangletracksVSd0xd0TGHCfromBpt);
4435
4436
4437 namehist="hangletracksVSd0D0TGHCfromB_pt";
4438 namehist+=i;
4439 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts FromB ptbin=";
4440 titlehist+=i;
4441 hangletracksVSd0D0TGHCfromBpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4442 hangletracksVSd0D0TGHCfromBpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4443 hangletracksVSd0D0TGHCfromBpt->SetYTitle(" angle between K and #p tracks [rad]");
4444 flistTghCutsFromB->Add(hangletracksVSd0D0TGHCfromBpt);
4445
4446 }
4447 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4448 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4449
4450
4451
4452
4453
4454 // ######### d0 D0 histos ##############
4455 TH1F *hd0D0TGHCfromBPM = new TH1F("hd0D0TGHCfromBPM","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4456 hd0D0TGHCfromBPM->SetXTitle("Impact parameter [#mum]");
4457 hd0D0TGHCfromBPM->SetYTitle("Entries");
4458
4459 TH1F *hd0D0VtxTrueTGHCfromBPM = new TH1F("hd0D0VtxTrueTGHCfromBPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4460 hd0D0VtxTrueTGHCfromBPM->SetXTitle("Impact parameter [#mum]");
4461 hd0D0VtxTrueTGHCfromBPM->SetYTitle("Entries");
4462
4463 TH1F *hMCd0D0TGHCfromBPM = new TH1F("hMCd0D0TGHCfromBPM","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4464 hMCd0D0TGHCfromBPM->SetXTitle("MC Impact parameter [#mum]");
4465 hMCd0D0TGHCfromBPM->SetYTitle("Entries");
4466
4467 TH1F *hd0D0TGHCfromBSB = new TH1F("hd0D0TGHCfromBSB","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
ac4c229c 4468 hd0D0TGHCfromBSB->SetXTitle("Impact parameter [#mum]");
4469 hd0D0TGHCfromBSB->SetYTitle("Entries");
4470
4471 TH1F *hd0D0VtxTrueTGHCfromBSB = new TH1F("hd0D0VtxTrueTGHCfromBSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4472 hd0D0VtxTrueTGHCfromBSB->SetXTitle("Impact parameter [#mum]");
4473 hd0D0VtxTrueTGHCfromBSB->SetYTitle("Entries");
4474
4475 TH1F *hMCd0D0TGHCfromBSB = new TH1F("hMCd0D0TGHCfromBSB","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
4476 hMCd0D0TGHCfromBSB->SetXTitle("MC Impact parameter [#mum]");
4477 hMCd0D0TGHCfromBSB->SetYTitle("Entries");
4478
4479 flistTghCutsFromB->Add(hd0D0TGHCfromBPM);
4480 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBPM);
4481 flistTghCutsFromB->Add(hMCd0D0TGHCfromBPM);
4482 flistTghCutsFromB->Add(hd0D0TGHCfromBSB);
4483 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBSB);
4484 flistTghCutsFromB->Add(hMCd0D0TGHCfromBSB);
4485
e047b348 4486 TH1F *hd0D0ptTGHCfromBPM;
4487 TH1F *hMCd0D0ptTGHCfromBPM;
4488 TH1F *hd0D0VtxTrueptTGHCfromBPM;
4489 TH1F *hd0D0ptTGHCfromBSB;
4490 TH1F *hMCd0D0ptTGHCfromBSB;
4491 TH1F *hd0D0VtxTrueptTGHCfromBSB;
ac4c229c 4492 namehist="hd0D0ptTGHCfromB_";
624c07ab 4493 titlehist="D^{0} impact par. plot, Tight Cuts, FromB, ";
4494 for(Int_t i=0;i<fnbins;i++){
4495 strnamept=namehist;
4496 strnamept.Append("PkMss_pt");
4497 strnamept+=i;
4498
4499 strtitlept=titlehist;
4500 strtitlept.Append(" Mass Peak, ");
4501 strtitlept+=fptbins[i];
4502 strtitlept.Append("<= pt <");
4503 strtitlept+=fptbins[i+1];
4504 strtitlept.Append(" [GeV/c]");
4505
e047b348 4506 hd0D0ptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4507 hd0D0ptTGHCfromBPM->SetXTitle("Impact parameter [#mum] ");
4508 hd0D0ptTGHCfromBPM->SetYTitle("Entries");
4509 flistTghCutsFromB->Add(hd0D0ptTGHCfromBPM);
624c07ab 4510
4511 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 4512 hMCd0D0ptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4513 hMCd0D0ptTGHCfromBPM->SetXTitle("MC Impact parameter [#mum] ");
4514 hMCd0D0ptTGHCfromBPM->SetYTitle("Entries");
4515 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBPM);
624c07ab 4516
4517
4518 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 4519 hd0D0VtxTrueptTGHCfromBPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4520 hd0D0VtxTrueptTGHCfromBPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4521 hd0D0VtxTrueptTGHCfromBPM->SetYTitle("Entries");
4522 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBPM);
624c07ab 4523
4524 strnamept=namehist;
4525 strnamept.Append("SBMss_pt");
4526 strnamept+=i;
4527
4528 strtitlept=titlehist;
4529 strtitlept.Append(" Side Bands, ");
4530 strtitlept+=fptbins[i];
4531 strtitlept.Append("<= pt <");
4532 strtitlept+=fptbins[i+1];
4533 strtitlept.Append(" [GeV/c]");
4534
e047b348 4535 hd0D0ptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4536 hd0D0ptTGHCfromBSB->SetXTitle("Impact parameter [#mum] ");
4537 hd0D0ptTGHCfromBSB->SetYTitle("Entries");
4538 flistTghCutsFromB->Add(hd0D0ptTGHCfromBSB);
624c07ab 4539
4540 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 4541 hMCd0D0ptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4542 hMCd0D0ptTGHCfromBSB->SetXTitle("MC Impact parameter [#mum] ");
4543 hMCd0D0ptTGHCfromBSB->SetYTitle("Entries");
4544 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBSB);
624c07ab 4545
4546 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 4547 hd0D0VtxTrueptTGHCfromBSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4548 hd0D0VtxTrueptTGHCfromBSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4549 hd0D0VtxTrueptTGHCfromBSB->SetYTitle("Entries");
4550 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBSB);
624c07ab 4551 }
4552
4553
4554
4555 //############ TIGHT CUTS FROM DSTAR HISTOGRAMS ###########
4556 //
4557 //############## global properties histos
e047b348 4558 TH2F *hCPtaVSd0d0TGHCfromDstar=new TH2F("hCPtaVSd0d0TGHCfromDstar","hCPtaVSd0d0_TightCuts_FromDStar",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 4559 TH1F *hSecVtxZTGHCfromDstar=new TH1F("hSecVtxZTGHCfromDstar","hSecVtxZ_TightCuts_FromDStar",1000,-8.,8.);
4560 TH1F *hSecVtxXTGHCfromDstar=new TH1F("hSecVtxXTGHCfromDstar","hSecVtxX_TightCuts_FromDStar",1000,-3000.,3000.);
4561 TH1F *hSecVtxYTGHCfromDstar=new TH1F("hSecVtxYTGHCfromDstar","hSecVtxY_TightCuts_FromDStar",1000,-3000.,3000.);
4562 TH2F *hSecVtxXYTGHCfromDstar=new TH2F("hSecVtxXYTGHCfromDstar","hSecVtxXY_TightCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
4563 TH1F *hSecVtxPhiTGHCfromDstar=new TH1F("hSecVtxPhiTGHCfromDstar","hSecVtxPhi_TightCuts_FromDStar",180,-180.1,180.1);
e047b348 4564 TH1F *hd0singlTrackTGHCfromDstar=new TH1F("hd0singlTrackTGHCfromDstar","hd0singlTrackTightCuts_FromDstar",1000,-5000.,5000.);
4565 TH1F *hCPtaTGHCfromDstar=new TH1F("hCPtaTGHCfromDstar","hCPta_TightCuts_FromDStar",100,-1.,1.);
ac4c229c 4566 TH1F *hd0xd0TGHCfromDstar=new TH1F("hd0xd0TGHCfromDstar","hd0xd0_TightCuts_FromDStar",1000,-100000.,100000.);
4567 TH1F *hMassTrueTGHCfromDstar=new TH1F("hMassTrueTGHCfromDstar","D^{0} MC inv. Mass Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
4568 TH1F *hMassTGHCfromDstar=new TH1F("hMassTGHCfromDstar","D^{0} inv. Mass Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
4569 hMassTGHCfromDstar->Sumw2();
4570 TH1F *hMassTrueTGHCfromDstarPM=new TH1F("hMassTrueTGHCfromDstarPM","D^{0} MC inv. Mass Tight Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
4571 TH1F *hMassTGHCfromDstarPM=new TH1F("hMassTGHCfromDstarPM","D^{0} inv. Mass Tight Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
4572 hMassTGHCfromDstarPM->Sumw2();
4573 TH1F *hMassTrueTGHCfromDstarSB=new TH1F("hMassTrueTGHCfromDstarSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
4574 TH1F *hMassTGHCfromDstarSB=new TH1F("hMassTGHCfromDstarSB","D^{0} inv. Mass in Side Bands Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
4575 hMassTGHCfromDstarSB->Sumw2();
4576
4577 flistTghCutsFromDstar->Add(hCPtaVSd0d0TGHCfromDstar);
4578 flistTghCutsFromDstar->Add(hSecVtxZTGHCfromDstar);
4579 flistTghCutsFromDstar->Add(hSecVtxYTGHCfromDstar);
4580 flistTghCutsFromDstar->Add(hSecVtxXTGHCfromDstar);
4581 flistTghCutsFromDstar->Add(hSecVtxXYTGHCfromDstar);
4582 flistTghCutsFromDstar->Add(hSecVtxPhiTGHCfromDstar);
e047b348 4583 flistTghCutsFromDstar->Add(hd0singlTrackTGHCfromDstar);
ac4c229c 4584 flistTghCutsFromDstar->Add(hCPtaTGHCfromDstar);
4585 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstar);
4586 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstar);
4587 flistTghCutsFromDstar->Add(hMassTGHCfromDstar);
4588 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarPM);
4589 flistTghCutsFromDstar->Add(hMassTGHCfromDstarPM);
4590 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarSB);
4591 flistTghCutsFromDstar->Add(hMassTGHCfromDstarSB);
624c07ab 4592
e047b348 4593
4594
4595
4596
4597 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4598 TH1F *hdcaTGHCfromDstar=new TH1F("hdcaTGHCfromDstar","hdca_TightCuts_FromDstar",100,0.,1000.);
4599 hdcaTGHCfromDstar->SetXTitle("dca [#mum]");
4600 hdcaTGHCfromDstar->SetYTitle("Entries");
4601 TH1F *hcosthetastarTGHCfromDstar=new TH1F("hcosthetastarTGHCfromDstar","hCosThetaStar_TightCuts_FromDstar",50,-1.,1.);
4602 hcosthetastarTGHCfromDstar->SetXTitle("cos #theta^{*}");
4603 hcosthetastarTGHCfromDstar->SetYTitle("Entries");
4604 TH1F *hptD0TGHCfromDstar=new TH1F("hptD0TGHCfromDstar","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4605 hptD0TGHCfromDstar->SetXTitle("p_{t} [GeV/c]");
4606 hptD0TGHCfromDstar->SetYTitle("Entries");
4607 TH1F *hptD0VsMaxPtTGHCfromDstar=new TH1F("hptD0VsMaxPtTGHCfromDstar","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4608 TH2F *hptD0PTallsqrtTGHCfromDstar=new TH2F("hptD0PTallsqrtTGHCfromDstar","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4609 TH2F *hptD0PTallTGHCfromDstar=new TH2F("hptD0PTallTGHCfromDstar","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4610 TH2F *hptD0vsptBTGHCfromDstar=new TH2F("hptD0vsptBTGHCfromDstar","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4611 TH2F *hpD0vspBTGHCfromDstar=new TH2F("hpD0vspBTGHCfromDstar","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4612 TH2F *hptD0vsptcquarkTGHCfromDstar=new TH2F("hptD0vsptcquarkTGHCfromDstar","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4613 TH2F *hpD0vspcquarkTGHCfromDstar=new TH2F("hpD0vspcquarkTGHCfromDstar","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4614 flistTghCutsFromDstar->Add(hdcaTGHCfromDstar);
4615 flistTghCutsFromDstar->Add(hcosthetastarTGHCfromDstar);
4616 flistTghCutsFromDstar->Add(hptD0TGHCfromDstar);
4617 flistTghCutsFromDstar->Add(hptD0VsMaxPtTGHCfromDstar);
4618 flistTghCutsFromDstar->Add(hptD0PTallsqrtTGHCfromDstar);
4619 flistTghCutsFromDstar->Add(hptD0PTallTGHCfromDstar);
4620 flistTghCutsFromDstar->Add(hptD0vsptBTGHCfromDstar);
4621 flistTghCutsFromDstar->Add(hpD0vspBTGHCfromDstar);
4622 flistTghCutsFromDstar->Add(hptD0vsptcquarkTGHCfromDstar);
4623 flistTghCutsFromDstar->Add(hpD0vspcquarkTGHCfromDstar);
4624
4625 TH1F *hd0zD0ptTGHCfromDstar;
cc3209fb 4626 TH1F *hInvMassD0TGHCfromDstar,*hInvMassD0barTGHCfromDstar;
e047b348 4627 TH1F *hetaTGHCfromDstar;
4628 TH2F *hInvMassPtTGHCfromDstar=new TH2F("hInvMassPtTGHCfromDstar","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 4629 THnSparseF *hSparseTGHCfromDstar=new THnSparseF("hSparseTGHCfromDstar","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4630 hSparseTGHCfromDstar->SetBinEdges(0,massbins);
4631 hSparseTGHCfromDstar->SetBinEdges(1,massbins);
4632 hSparseTGHCfromDstar->SetBinEdges(2,ptbinsForNsparse);
4633 hSparseTGHCfromDstar->SetBinEdges(3,impparbins);
4634 hSparseTGHCfromDstar->SetBinEdges(4,massHypoBins);
4635 flistTghCutsFromDstar->Add(hSparseTGHCfromDstar);
e047b348 4636 TH1F *hCosPDPBTGHCfromDstar;
4637 TH1F *hCosPcPDTGHCfromDstar;
4638 flistTghCutsFromDstar->Add(hInvMassPtTGHCfromDstar);
4639// %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4640 TH2F *hd0D0VSd0xd0TGHCfromDstarpt;
4641 TH2F *hangletracksVSd0xd0TGHCfromDstarpt;
4642 TH2F *hangletracksVSd0D0TGHCfromDstarpt;
4643 TH1F *hd0xd0TGHCfromDstarpt;
4644
4645 TH2F *hTOFpidTGHCfromDstar=new TH2F("hTOFpidTGHCfromDstar","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4646 flistTghCutsFromDstar->Add(hTOFpidTGHCfromDstar);
4647
4648 for(Int_t i=0;i<fnbins;i++){
4649 namehist="hd0zD0ptTGHCfromDstar_pt";
4650 namehist+=i;
4651 titlehist="d0(z) Tight Cuts FromDstarm ptbin=";
4652 titlehist+=i;
4653 hd0zD0ptTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4654 hd0zD0ptTGHCfromDstar->SetXTitle("d_{0}(z) [#mum]");
4655 hd0zD0ptTGHCfromDstar->SetYTitle("Entries");
4656 flistTghCutsFromDstar->Add(hd0zD0ptTGHCfromDstar);
4657
cc3209fb 4658 namehist="hInvMassD0TGHCfromDstar_pt";
e047b348 4659 namehist+=i;
4660 titlehist="Invariant Mass Tight Cuts FromDstar ptbin=";
4661 titlehist+=i;
cc3209fb 4662 hInvMassD0TGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4663 hInvMassD0TGHCfromDstar->SetXTitle("Invariant Mass [GeV]");
4664 hInvMassD0TGHCfromDstar->SetYTitle("Entries");
4665 flistTghCutsFromDstar->Add(hInvMassD0TGHCfromDstar);
4666
4667 namehist="hInvMassD0barTGHCfromDstar_pt";
4668 namehist+=i;
d39e8f99 4669 titlehist="Invariant Mass D0bar Tight Cuts FromDstar ptbin=";
cc3209fb 4670 titlehist+=i;
4671 hInvMassD0barTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4672 hInvMassD0barTGHCfromDstar->SetXTitle("Invariant Mass [GeV]");
4673 hInvMassD0barTGHCfromDstar->SetYTitle("Entries");
4674 flistTghCutsFromDstar->Add(hInvMassD0barTGHCfromDstar);
e047b348 4675
4676 namehist="hetaTGHCfromDstar_pt";
4677 namehist+=i;
4678 titlehist="eta Tight Cuts FromDstar ptbin=";
4679 titlehist+=i;
4680 hetaTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4681 hetaTGHCfromDstar->SetXTitle("Pseudorapidity");
4682 hetaTGHCfromDstar->SetYTitle("Entries");
4683 flistTghCutsFromDstar->Add(hetaTGHCfromDstar);
4684
4685 namehist="hCosPDPBTGHCfromDstar_pt";
4686 namehist+=i;
4687 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4688 titlehist+=i;
4689 hCosPDPBTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4690 hCosPDPBTGHCfromDstar->SetXTitle("Cosine between D0 momentum and B momentum");
4691 hCosPDPBTGHCfromDstar->SetYTitle("Entries");
4692 flistTghCutsFromDstar->Add(hCosPDPBTGHCfromDstar);
4693
4694 namehist="hCosPcPDTGHCfromDstar_pt";
4695 namehist+=i;
4696 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4697 titlehist+=i;
4698 hCosPcPDTGHCfromDstar=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4699 hCosPcPDTGHCfromDstar->SetXTitle("Cosine between c quark momentum and D0 momentum");
4700 hCosPcPDTGHCfromDstar->SetYTitle("Entries");
4701 flistTghCutsFromDstar->Add(hCosPcPDTGHCfromDstar);
4702
4703 // %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4704 namehist="hd0xd0TGHCfromDstar_pt";
4705 namehist+=i;
4706 titlehist="d0xd0 Tight Cuts FromDstar ptbin=";
4707 titlehist+=i;
4708 hd0xd0TGHCfromDstarpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
4709 hd0xd0TGHCfromDstarpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
4710 hd0xd0TGHCfromDstarpt->SetYTitle("Entries");
4711 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstarpt);
4712
4713
4714 namehist="hd0D0VSd0xd0TGHCfromDstar_pt";
4715 namehist+=i;
4716 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromDstar ptbin=";
4717 titlehist+=i;
4718 hd0D0VSd0xd0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
4719 hd0D0VSd0xd0TGHCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4720 hd0D0VSd0xd0TGHCfromDstarpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
4721 flistTghCutsFromDstar->Add(hd0D0VSd0xd0TGHCfromDstarpt);
4722
4723
4724 namehist="hangletracksVSd0xd0TGHCfromDstar_pt";
4725 namehist+=i;
4726 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts FromDstar ptbin=";
4727 titlehist+=i;
4728 hangletracksVSd0xd0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
4729 hangletracksVSd0xd0TGHCfromDstarpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
4730 hangletracksVSd0xd0TGHCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
4731 flistTghCutsFromDstar->Add(hangletracksVSd0xd0TGHCfromDstarpt);
4732
4733
4734 namehist="hangletracksVSd0D0TGHCfromDstar_pt";
4735 namehist+=i;
4736 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts FromDstar ptbin=";
4737 titlehist+=i;
4738 hangletracksVSd0D0TGHCfromDstarpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
4739 hangletracksVSd0D0TGHCfromDstarpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
4740 hangletracksVSd0D0TGHCfromDstarpt->SetYTitle(" angle between K and #p tracks [rad]");
4741 flistTghCutsFromDstar->Add(hangletracksVSd0D0TGHCfromDstarpt);
4742
4743
4744 }
4745 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
4746 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4747
4748
624c07ab 4749 //########## d0 D0 histos #############
ac4c229c 4750 TH1F *hd0D0TGHCfromDstPM = new TH1F("hd0D0TGHCfromDstarPM","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4751 hd0D0TGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
4752 hd0D0TGHCfromDstPM->SetYTitle("Entries");
4753
4754 TH1F *hd0D0VtxTrueTGHCfromDstPM = new TH1F("hd0D0VtxTrueTGHCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4755 hd0D0VtxTrueTGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
4756 hd0D0VtxTrueTGHCfromDstPM->SetYTitle("Entries");
4757
4758 TH1F *hMCd0D0TGHCfromDstPM = new TH1F("hMCd0D0TGHCfromDstarPM","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4759 hMCd0D0TGHCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
4760 hMCd0D0TGHCfromDstPM->SetYTitle("Entries");
4761
4762 TH1F *hd0D0TGHCfromDstSB = new TH1F("hd0D0TGHCfromDstarSB","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4763 hd0D0TGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
4764 hd0D0TGHCfromDstSB->SetYTitle("Entries");
4765
4766 TH1F *hd0D0VtxTrueTGHCfromDstSB = new TH1F("hd0D0VtxTrueTGHCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4767 hd0D0VtxTrueTGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
4768 hd0D0VtxTrueTGHCfromDstSB->SetYTitle("Entries");
4769
4770 TH1F *hMCd0D0TGHCfromDstSB = new TH1F("hMCd0D0TGHCfromDstarSB","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
4771 hMCd0D0TGHCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
4772 hMCd0D0TGHCfromDstSB->SetYTitle("Entries");
4773
4774 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstPM);
4775 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstPM);
4776 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstPM);
4777 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstSB);
4778 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstSB);
4779 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstSB);
4780
e047b348 4781 TH1F *hd0D0ptTGHCfromDstPM;
4782 TH1F *hMCd0D0ptTGHCfromDstPM;
4783 TH1F *hd0D0VtxTrueptTGHCfromDstPM;
4784 TH1F *hd0D0ptTGHCfromDstSB;
4785 TH1F *hMCd0D0ptTGHCfromDstSB;
4786 TH1F *hd0D0VtxTrueptTGHCfromDstSB;
ac4c229c 4787 namehist="hd0D0ptTGHCfromDstar_";
624c07ab 4788 titlehist="D^{0} impact par. plot, Tight Cuts, FromDStar, ";
4789 for(Int_t i=0;i<fnbins;i++){
4790 strnamept=namehist;
4791 strnamept.Append("PkMss_pt");
4792 strnamept+=i;
4793
4794 strtitlept=titlehist;
4795 strtitlept.Append(" Mass Peak, ");
4796 strtitlept+=fptbins[i];
4797 strtitlept.Append("<= pt <");
4798 strtitlept+=fptbins[i+1];
4799 strtitlept.Append(" [GeV/c]");
4800
e047b348 4801 hd0D0ptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4802 hd0D0ptTGHCfromDstPM->SetXTitle("Impact parameter [#mum] ");
4803 hd0D0ptTGHCfromDstPM->SetYTitle("Entries");
4804 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstPM);
624c07ab 4805
4806 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 4807 hMCd0D0ptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4808 hMCd0D0ptTGHCfromDstPM->SetXTitle("MC Impact parameter [#mum] ");
4809 hMCd0D0ptTGHCfromDstPM->SetYTitle("Entries");
4810 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstPM);
624c07ab 4811
4812
4813 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 4814 hd0D0VtxTrueptTGHCfromDstPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4815 hd0D0VtxTrueptTGHCfromDstPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4816 hd0D0VtxTrueptTGHCfromDstPM->SetYTitle("Entries");
4817 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstPM);
624c07ab 4818
4819 strnamept=namehist;
4820 strnamept.Append("SBMss_pt");
4821 strnamept+=i;
4822
4823 strtitlept=titlehist;
4824 strtitlept.Append(" Side Bands, ");
4825 strtitlept+=fptbins[i];
4826 strtitlept.Append("<= pt <");
4827 strtitlept+=fptbins[i+1];
4828 strtitlept.Append(" [GeV/c]");
4829
e047b348 4830 hd0D0ptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4831 hd0D0ptTGHCfromDstSB->SetXTitle("Impact parameter [#mum] ");
4832 hd0D0ptTGHCfromDstSB->SetYTitle("Entries");
4833 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstSB);
624c07ab 4834
4835 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 4836 hMCd0D0ptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4837 hMCd0D0ptTGHCfromDstSB->SetXTitle("MC Impact parameter [#mum] ");
4838 hMCd0D0ptTGHCfromDstSB->SetYTitle("Entries");
4839 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstSB);
624c07ab 4840
4841 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 4842 hd0D0VtxTrueptTGHCfromDstSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
4843 hd0D0VtxTrueptTGHCfromDstSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
4844 hd0D0VtxTrueptTGHCfromDstSB->SetYTitle("Entries");
4845 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstSB);
624c07ab 4846 }
4847
4848
4849 //############ TIGHT CUTS OTHER HISTOGRAMS ###########
4850 //
4851 //########### global properties histos ###########
4852
e047b348 4853 TH2F *hCPtaVSd0d0TGHCother=new TH2F("hCPtaVSd0d0TGHCother","hCPtaVSd0d0_TightCuts_other",1000,-100000.,100000.,100,-1.,1.);
ac4c229c 4854 TH1F *hSecVtxZTGHCother=new TH1F("hSecVtxZTGHCother","hSecVtxZ_TightCuts_other",1000,-8.,8.);
4855 TH1F *hSecVtxXTGHCother=new TH1F("hSecVtxXTGHCother","hSecVtxX_TightCuts_other",1000,-3000.,3000.);
4856 TH1F *hSecVtxYTGHCother=new TH1F("hSecVtxYTGHCother","hSecVtxY_TightCuts_other",1000,-3000.,3000.);
4857 TH2F *hSecVtxXYTGHCother=new TH2F("hSecVtxXYTGHCother","hSecVtxXY_TightCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
4858 TH1F *hSecVtxPhiTGHCother=new TH1F("hSecVtxPhiTGHCother","hSecVtxPhi_TightCuts_other",180,-180.1,180.1);
e047b348 4859 TH1F *hd0singlTrackTGHCother=new TH1F("hd0singlTrackTGHCother","hd0singlTrackTightCuts_Other",1000,-5000.,5000.);
4860 TH1F *hCPtaTGHCother=new TH1F("hCPtaTGHCother","hCPta_TightCuts_other",100,-1.,1.);
ac4c229c 4861 TH1F *hd0xd0TGHCother=new TH1F("hd0xd0TGHCother","hd0xd0_TightCuts_other",1000,-100000.,100000.);
4862 TH1F *hMassTrueTGHCother=new TH1F("hMassTrueTGHCother","D^{0} MC inv. Mass Tight Cuts other(All momenta)",600,1.600,2.200);
4863 TH1F *hMassTGHCother=new TH1F("hMassTGHCother","D^{0} inv. Mass Tight Cuts other (All momenta)",600,1.600,2.200);
4864 hMassTGHCother->Sumw2();
4865 TH1F *hMassTrueTGHCotherPM=new TH1F("hMassTrueTGHCotherPM","D^{0} MC inv. Mass Tight Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
4866 TH1F *hMassTGHCotherPM=new TH1F("hMassTGHCotherPM","D^{0} inv. Mass Tight Cuts other (All momenta), MassPeak",600,1.600,2.200);
4867 hMassTGHCotherPM->Sumw2();
4868 TH1F *hMassTrueTGHCotherSB=new TH1F("hMassTrueTGHCotherSB","D^{0} MC inv. Mass in Side Bands Tight Cuts other(All momenta)",600,1.600,2.200);
4869 TH1F *hMassTGHCotherSB=new TH1F("hMassTGHCotherSB","D^{0} inv. Mass in Side Bands Tight Cuts other (All momenta)",600,1.600,2.200);
4870 hMassTGHCotherSB->Sumw2();
4871
4872 flistTghCutsOther->Add(hCPtaVSd0d0TGHCother);
4873 flistTghCutsOther->Add(hSecVtxZTGHCother);
4874 flistTghCutsOther->Add(hSecVtxYTGHCother);
4875 flistTghCutsOther->Add(hSecVtxXTGHCother);
4876 flistTghCutsOther->Add(hSecVtxXYTGHCother);
4877 flistTghCutsOther->Add(hSecVtxPhiTGHCother);
e047b348 4878 flistTghCutsOther->Add(hd0singlTrackTGHCother);
ac4c229c 4879 flistTghCutsOther->Add(hCPtaTGHCother);
4880 flistTghCutsOther->Add(hd0xd0TGHCother);
4881 flistTghCutsOther->Add(hMassTrueTGHCother);
4882 flistTghCutsOther->Add(hMassTGHCother);
4883 flistTghCutsOther->Add(hMassTrueTGHCotherPM);
4884 flistTghCutsOther->Add(hMassTGHCotherPM);
4885 flistTghCutsOther->Add(hMassTrueTGHCotherSB);
4886 flistTghCutsOther->Add(hMassTGHCotherSB);
624c07ab 4887
e047b348 4888
4889
4890
4891 //%%% NEW HISTOS %%%%%%%%%%%%%%%%
4892 TH1F *hdcaTGHCother=new TH1F("hdcaTGHCother","hdca_TightCuts_Other",100,0.,1000.);
4893 hdcaTGHCother->SetXTitle("dca [#mum]");
4894 hdcaTGHCother->SetYTitle("Entries");
4895 TH1F *hcosthetastarTGHCother=new TH1F("hcosthetastarTGHCother","hCosThetaStar_TightCuts_Other",50,-1.,1.);
4896 hcosthetastarTGHCother->SetXTitle("cos #theta^{*}");
4897 hcosthetastarTGHCother->SetYTitle("Entries");
4898 TH1F *hptD0TGHCother=new TH1F("hptD0TGHCother","D^{0} transverse momentum distribution",34,ptbinsD0arr);
4899 hptD0TGHCother->SetXTitle("p_{t} [GeV/c]");
4900 hptD0TGHCother->SetYTitle("Entries");
4901 TH1F *hptD0VsMaxPtTGHCother=new TH1F("hptD0VsMaxPtTGHCother","Difference between D^{0} pt and highest (or second) pt",400,-50.,50.);
4902 TH2F *hptD0PTallsqrtTGHCother=new TH2F("hptD0PTallsqrtTGHCother","D^{0} pt Vs Sqrt(Sum pt square)",34,ptbinsD0arr,200,dumbinning);
4903 TH2F *hptD0PTallTGHCother=new TH2F("hptD0PTallTGHCother","D^{0} pt Vs Sum pt ",34,ptbinsD0arr,200,dumbinning);
4904 TH2F *hptD0vsptBTGHCother=new TH2F("hptD0vsptBTGHCother","D^{0} pt Vs B pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4905 TH2F *hpD0vspBTGHCother=new TH2F("hpD0vspBTGHCother","D^{0} tot momentum Vs B tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4906 TH2F *hptD0vsptcquarkTGHCother=new TH2F("hptD0vsptcquarkTGHCother","D^{0} pt Vs cquark pt distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4907 TH2F *hpD0vspcquarkTGHCother=new TH2F("hpD0vspcquarkTGHCother","D^{0} tot momentum Vs cquark tot momentum distribution",34,ptbinsD0arr,34,ptbinsD0arr);
4908 flistTghCutsOther->Add(hdcaTGHCother);
4909 flistTghCutsOther->Add(hcosthetastarTGHCother);
4910 flistTghCutsOther->Add(hptD0TGHCother);
4911 flistTghCutsOther->Add(hptD0VsMaxPtTGHCother);
4912 flistTghCutsOther->Add(hptD0PTallsqrtTGHCother);
4913 flistTghCutsOther->Add(hptD0PTallTGHCother);
4914 flistTghCutsOther->Add(hptD0vsptBTGHCother);
4915 flistTghCutsOther->Add(hpD0vspBTGHCother);
4916 flistTghCutsOther->Add(hptD0vsptcquarkTGHCother);
4917 flistTghCutsOther->Add(hpD0vspcquarkTGHCother);
4918
4919 TH1F *hd0zD0ptTGHCother;
cc3209fb 4920 TH1F *hInvMassD0TGHCother,*hInvMassD0barTGHCother;
e047b348 4921 TH2F *hInvMassPtTGHCother=new TH2F("hInvMassPtTGHCother","Candidate p_{t} Vs invariant mass",330,1.700,2.030,200,0.,20.);
d39e8f99 4922 THnSparseF *hSparseTGHCother=new THnSparseF("hSparseTGHCother","Candidate Masses, pt, Imp Par;massD0;massD0bar;pt;impactpar;selcase",5,nbinsSparse);
4923 hSparseTGHCother->SetBinEdges(0,massbins);
4924 hSparseTGHCother->SetBinEdges(1,massbins);
4925 hSparseTGHCother->SetBinEdges(2,ptbinsForNsparse);
4926 hSparseTGHCother->SetBinEdges(3,impparbins);
4927 hSparseTGHCother->SetBinEdges(4,massHypoBins);
4928 flistTghCutsOther->Add(hSparseTGHCother);
e047b348 4929 TH1F *hetaTGHCother;
4930 TH1F *hCosPDPBTGHCother;
4931 TH1F *hCosPcPDTGHCother;
4932 flistTghCutsOther->Add(hInvMassPtTGHCother);
4933// %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4934 TH2F *hd0D0VSd0xd0TGHCotherpt;
4935 TH2F *hangletracksVSd0xd0TGHCotherpt;
4936 TH2F *hangletracksVSd0D0TGHCotherpt;
4937 TH1F *hd0xd0TGHCotherpt;
4938
4939 TH2F *hTOFpidTGHCother=new TH2F("hTOFpidTGHCother","TOF time VS momentum",10,0.,4.,50,-50000.,50000.);
4940 flistTghCutsOther->Add(hTOFpidTGHCother);
4941
4942 for(Int_t i=0;i<fnbins;i++){
4943 namehist="hd0zD0ptTGHCother_pt";
4944 namehist+=i;
4945 titlehist="d0(z) Tight Cuts Otherm ptbin=";
4946 titlehist+=i;
4947 hd0zD0ptTGHCother=new TH1F(namehist.Data(),titlehist.Data(),1000,-3000,3000.);
4948 hd0zD0ptTGHCother->SetXTitle("d_{0}(z) [#mum]");
4949 hd0zD0ptTGHCother->SetYTitle("Entries");
4950 flistTghCutsOther->Add(hd0zD0ptTGHCother);
4951
cc3209fb 4952 namehist="hInvMassD0TGHCother_pt";
e047b348 4953 namehist+=i;
4954 titlehist="Invariant Mass Tight Cuts Other ptbin=";
4955 titlehist+=i;
cc3209fb 4956 hInvMassD0TGHCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4957 hInvMassD0TGHCother->SetXTitle("Invariant Mass [GeV]");
4958 hInvMassD0TGHCother->SetYTitle("Entries");
4959 flistTghCutsOther->Add(hInvMassD0TGHCother);
4960
4961 namehist="hInvMassD0barTGHCother_pt";
4962 namehist+=i;
d39e8f99 4963 titlehist="Invariant Mass D0bar Tight Cuts Other ptbin=";
cc3209fb 4964 titlehist+=i;
4965 hInvMassD0barTGHCother=new TH1F(namehist.Data(),titlehist.Data(),600,1.600,2.200);
4966 hInvMassD0barTGHCother->SetXTitle("Invariant Mass [GeV]");
4967 hInvMassD0barTGHCother->SetYTitle("Entries");
4968 flistTghCutsOther->Add(hInvMassD0barTGHCother);
e047b348 4969
4970 namehist="hetaTGHCother_pt";
4971 namehist+=i;
4972 titlehist="eta Tight Cuts Other ptbin=";
4973 titlehist+=i;
4974 hetaTGHCother=new TH1F(namehist.Data(),titlehist.Data(),100,-3.,3.);
4975 hetaTGHCother->SetXTitle("Pseudorapidity");
4976 hetaTGHCother->SetYTitle("Entries");
4977 flistTghCutsOther->Add(hetaTGHCother);
4978
4979 namehist="hCosPDPBTGHCother_pt";
4980 namehist+=i;
4981 titlehist="Cosine between D0 momentum and B momentum, ptbin=";
4982 titlehist+=i;
4983 hCosPDPBTGHCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4984 hCosPDPBTGHCother->SetXTitle("Cosine between D0 momentum and B momentum");
4985 hCosPDPBTGHCother->SetYTitle("Entries");
4986 flistTghCutsOther->Add(hCosPDPBTGHCother);
4987
4988 namehist="hCosPcPDTGHCother_pt";
4989 namehist+=i;
4990 titlehist="Cosine between cquark momentum and D0 momentum, ptbin=";
4991 titlehist+=i;
4992 hCosPcPDTGHCother=new TH1F(namehist.Data(),titlehist.Data(),50,-1.,1.);
4993 hCosPcPDTGHCother->SetXTitle("Cosine between c quark momentum and D0 momentum");
4994 hCosPcPDTGHCother->SetYTitle("Entries");
4995 flistTghCutsOther->Add(hCosPcPDTGHCother);
4996
4997// %%%%%%%%%%% HERE THE ADDITIONAL HISTS %%%%%%%%%%%%%%%%%
4998 namehist="hd0xd0TGHCother_pt";
4999 namehist+=i;
5000 titlehist="d0xd0 Tight Cuts Other ptbin=";
5001 titlehist+=i;
5002 hd0xd0TGHCotherpt=new TH1F(namehist.Data(),titlehist.Data(),1000,-50000.,10000.);
5003 hd0xd0TGHCotherpt->SetXTitle("d_{0}^{K}xd_{0}^{#pi} [#mum^2]");
5004 hd0xd0TGHCotherpt->SetYTitle("Entries");
5005 flistTghCutsOther->Add(hd0xd0TGHCotherpt);
5006
5007
5008 namehist="hd0D0VSd0xd0TGHCother_pt";
5009 namehist+=i;
5010 titlehist="d_{0}^{D^{0}} Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Other ptbin=";
5011 titlehist+=i;
5012 hd0D0VSd0xd0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,100,-300,300);
5013 hd0D0VSd0xd0TGHCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
5014 hd0D0VSd0xd0TGHCotherpt->SetYTitle(" d_{0}^{D^{0}} [#mum]");
5015 flistTghCutsOther->Add(hd0D0VSd0xd0TGHCotherpt);
5016
5017
5018 namehist="hangletracksVSd0xd0TGHCother_pt";
5019 namehist+=i;
5020 titlehist="Angle between K and #pi tracks Vs d_{0}^{K}xd_{0}^{#pi} Tight Cuts Other ptbin=";
5021 titlehist+=i;
5022 hangletracksVSd0xd0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-50000.,30000.,40,-0.1,3.24);
5023 hangletracksVSd0xd0TGHCotherpt->SetXTitle(" d_{0}^{K}xd_{0}^{#pi} [#mum]");
5024 hangletracksVSd0xd0TGHCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
5025 flistTghCutsOther->Add(hangletracksVSd0xd0TGHCotherpt);
5026
5027
5028 namehist="hangletracksVSd0D0TGHCother_pt";
5029 namehist+=i;
5030 titlehist="Angle between K and #pi tracks Vs d_{0}^{D^{0}} Tight Cuts Other ptbin=";
5031 titlehist+=i;
5032 hangletracksVSd0D0TGHCotherpt=new TH2F(namehist.Data(),titlehist.Data(),200,-400.,400.,40,-0.12,3.24);
5033 hangletracksVSd0D0TGHCotherpt->SetXTitle(" d_{0}^{D^{0}} [#mum]");
5034 hangletracksVSd0D0TGHCotherpt->SetYTitle(" angle between K and #p tracks [rad]");
5035 flistTghCutsOther->Add(hangletracksVSd0D0TGHCotherpt);
5036
5037 }
5038 // %%%%%%%% END OF NEW HISTOS %%%%%%%%%%%%%
5039 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5040
5041
5042
5043
5044
624c07ab 5045 //############# d0 D0 histos ###############à
ac4c229c 5046 TH1F *hd0D0TGHCotherPM = new TH1F("hd0D0TGHCotherPM","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5047 hd0D0TGHCotherPM->SetXTitle("Impact parameter [#mum]");
5048 hd0D0TGHCotherPM->SetYTitle("Entries");
5049
5050 TH1F *hd0D0VtxTrueTGHCotherPM = new TH1F("hd0D0VtxTrueTGHCotherPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5051 hd0D0VtxTrueTGHCotherPM->SetXTitle("Impact parameter [#mum]");
5052 hd0D0VtxTrueTGHCotherPM->SetYTitle("Entries");
5053
5054 TH1F *hMCd0D0TGHCotherPM = new TH1F("hMCd0D0TGHCotherPM","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5055 hMCd0D0TGHCotherPM->SetXTitle("MC Impact parameter [#mum]");
5056 hMCd0D0TGHCotherPM->SetYTitle("Entries");
5057
5058 TH1F *hd0D0TGHCotherSB = new TH1F("hd0D0TGHCotherSB","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5059 hd0D0TGHCotherSB->SetXTitle("Impact parameter [#mum]");
5060 hd0D0TGHCotherSB->SetYTitle("Entries");
5061
5062 TH1F *hd0D0VtxTrueTGHCotherSB = new TH1F("hd0D0VtxTrueTGHCotherSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5063 hd0D0VtxTrueTGHCotherSB->SetXTitle("Impact parameter [#mum]");
5064 hd0D0VtxTrueTGHCotherSB->SetYTitle("Entries");
5065
5066 TH1F *hMCd0D0TGHCotherSB = new TH1F("hMCd0D0TGHCotherSB","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
5067 hMCd0D0TGHCotherSB->SetXTitle("MC Impact parameter [#mum]");
5068 hMCd0D0TGHCotherSB->SetYTitle("Entries");
5069
5070 flistTghCutsOther->Add(hd0D0TGHCotherPM);
5071 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherPM);
5072 flistTghCutsOther->Add(hMCd0D0TGHCotherPM);
5073 flistTghCutsOther->Add(hd0D0TGHCotherSB);
5074 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherSB);
5075 flistTghCutsOther->Add(hMCd0D0TGHCotherSB);
5076
e047b348 5077 TH1F *hd0D0ptTGHCotherPM;
5078 TH1F *hMCd0D0ptTGHCotherPM;
5079 TH1F *hd0D0VtxTrueptTGHCotherPM;
5080 TH1F *hd0D0ptTGHCotherSB;
5081 TH1F *hMCd0D0ptTGHCotherSB;
5082 TH1F *hd0D0VtxTrueptTGHCotherSB;
ac4c229c 5083 namehist="hd0D0ptTGHCother_";
624c07ab 5084 titlehist="D^{0} impact par. plot, Tight Cuts, Other, ";
5085 for(Int_t i=0;i<fnbins;i++){
5086 strnamept=namehist;
5087 strnamept.Append("PkMss_pt");
5088 strnamept+=i;
5089
5090 strtitlept=titlehist;
5091 strtitlept.Append(" Mass Peak, ");
5092 strtitlept+=fptbins[i];
5093 strtitlept.Append("<= pt <");
5094 strtitlept+=fptbins[i+1];
5095 strtitlept.Append(" [GeV/c]");
5096
e047b348 5097 hd0D0ptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5098 hd0D0ptTGHCotherPM->SetXTitle("Impact parameter [#mum] ");
5099 hd0D0ptTGHCotherPM->SetYTitle("Entries");
5100 flistTghCutsOther->Add(hd0D0ptTGHCotherPM);
624c07ab 5101
5102 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 5103 hMCd0D0ptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5104 hMCd0D0ptTGHCotherPM->SetXTitle("MC Impact parameter [#mum] ");
5105 hMCd0D0ptTGHCotherPM->SetYTitle("Entries");
5106 flistTghCutsOther->Add(hMCd0D0ptTGHCotherPM);
624c07ab 5107
5108
5109 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 5110 hd0D0VtxTrueptTGHCotherPM = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5111 hd0D0VtxTrueptTGHCotherPM->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
5112 hd0D0VtxTrueptTGHCotherPM->SetYTitle("Entries");
5113 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherPM);
624c07ab 5114
5115 strnamept=namehist;
5116 strnamept.Append("SBMss_pt");
5117 strnamept+=i;
5118
5119 strtitlept=titlehist;
5120 strtitlept.Append(" Side Bands, ");
5121 strtitlept+=fptbins[i];
5122 strtitlept.Append("<= pt <");
5123 strtitlept+=fptbins[i+1];
5124 strtitlept.Append(" [GeV/c]");
5125
e047b348 5126 hd0D0ptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5127 hd0D0ptTGHCotherSB->SetXTitle("Impact parameter [#mum] ");
5128 hd0D0ptTGHCotherSB->SetYTitle("Entries");
5129 flistTghCutsOther->Add(hd0D0ptTGHCotherSB);
624c07ab 5130
5131 strnamept.ReplaceAll("hd0D0","hMCd0D0");
e047b348 5132 hMCd0D0ptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5133 hMCd0D0ptTGHCotherSB->SetXTitle("MC Impact parameter [#mum] ");
5134 hMCd0D0ptTGHCotherSB->SetYTitle("Entries");
5135 flistTghCutsOther->Add(hMCd0D0ptTGHCotherSB);
624c07ab 5136
5137 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
e047b348 5138 hd0D0VtxTrueptTGHCotherSB = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
5139 hd0D0VtxTrueptTGHCotherSB->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
5140 hd0D0VtxTrueptTGHCotherSB->SetYTitle("Entries");
5141 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherSB);
624c07ab 5142 }
e047b348 5143 Printf("AFTER DATA HISTOS CREATION \n");
624c07ab 5144}
5145
624c07ab 5146//________________________________________________________________________
5147void AliAnalysisTaskSECharmFraction::UserExec(Option_t */*option*/)
5148{
5149 // Execute analysis for current event:
5150 // heavy flavor candidates association to MC truth
5151
5152 AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
e047b348 5153 if (!aod) {
5154 Printf("ERROR: aod not available");
5155 return;
5156 }
5157 TClonesArray *arrayD0toKpi;
b557eb43 5158 if(!aod && AODEvent() && IsStandardAOD()) {
5159 // In case there is an AOD handler writing a standard AOD, use the AOD
5160 // event in memory rather than the input (ESD) event.
5161 aod = dynamic_cast<AliAODEvent*> (AODEvent());
5162 // in this case the braches in the deltaAOD (AliAOD.VertexingHF.root)
5163 // have to taken from the AOD event hold by the AliAODExtension
5164 AliAODHandler* aodHandler = (AliAODHandler*)
5165 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
e047b348 5166
b557eb43 5167 if(aodHandler->GetExtensions()) {
5168 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root");
e047b348 5169 AliAODEvent* aodFromExt = ext->GetAOD();
5170 if(fLikeSign){
5171 // load 2Prong Like Sign
5172 arrayD0toKpi =(TClonesArray*)aodFromExt->GetList()->FindObject("LikeSign2Prong");
5173 if(!arrayD0toKpi) {
5174 Printf("AliAnalysisTaskSECharmFraction::UserExec: LikeSign branch not found!\n");
5175 return;
5176 }
5177 }
5178 else {
5179 // load D0->Kpi candidates
5180 arrayD0toKpi = (TClonesArray*)aodFromExt->GetList()->FindObject("D0toKpi");
5181 if(!arrayD0toKpi) {
5182 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
5183 return;
5184 }
5185 }
b557eb43 5186 }
5187 } else {
e047b348 5188 if(fLikeSign){
5189 // load 2Prong Like Sign
5190 arrayD0toKpi =(TClonesArray*)aod->GetList()->FindObject("LikeSign2Prong");
5191 if(!arrayD0toKpi) {
5192 Printf("AliAnalysisTaskSECharmFraction::UserExec: LikeSign branch not found!\n");
5193 return;
5194 }
5195 }
5196 else {
5197 // load D0->Kpi candidates
5198 arrayD0toKpi = (TClonesArray*)aod->GetList()->FindObject("D0toKpi");
5199 if(!arrayD0toKpi) {
5200 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
5201 return;
5202 }
5203 }
b557eb43 5204 }
8931c313 5205
e047b348 5206
624c07ab 5207 if(!arrayD0toKpi) {
e047b348 5208 printf("AliAnalysisTaskSECharmFraction::UserExec: input branch not found!\n");
624c07ab 5209 return;
5210 }
7c23877d 5211
d39e8f99 5212 //histogram filled with 1 for every AOD
5213 fNentries->Fill(0);
5214
5215 // trigger class for PbPb C0SMH-B-NOPF-ALLNOTRD, C0SMH-B-NOPF-ALL
5216 // TString trigclass=aod->GetFiredTriggerClasses();
5217 // if(trigclass.Contains("C0SMH-B-NOPF-ALLNOTRD") || trigclass.Contains("C0SMH-B-NOPF-ALL")) fNentries->Fill(14);
5218
5219 Bool_t isEventSelTGHT=kTRUE,isEventSelLOOSE=kTRUE;
5220 if(!fCutsTight->IsEventSelected(aod)){
5221 isEventSelTGHT=kFALSE;
5222 if(fCutsTight->GetWhyRejection()==1){
5223 // rejected for pileup
5224 fNentries->Fill(13);
5225
5226 PostData(1,fNentries);
5227 return;
5228 }
5229 }
5230 if(!fCutsLoose->IsEventSelected(aod)){
5231 isEventSelLOOSE=kFALSE;
5232 if(fCutsLoose->GetWhyRejection()==1){
5233 // rejected for pileup
5234 fNentries->Fill(13);
5235 PostData(1,fNentries);
5236
5237 return;
5238 }
5239 }
5240
5241 if(!(isEventSelTGHT||isEventSelLOOSE)){
5242 PostData(1,fNentries);
5243 return;
5244 }
e047b348 5245 // fix for temporary bug in ESDfilter
7c23877d 5246 // the AODs with null vertex pointer didn't pass the PhysSel
5806c290 5247 if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001) return;
624c07ab 5248 // AOD primary vertex
5249 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
d39e8f99 5250 TString primTitle = vtx1->GetTitle();
5251 if(primTitle.Contains("VertexerTracks") && vtx1->GetNContributors()>0) {
5252 fNentries->Fill(3);
5253 }
5254 else {
5255 PostData(1,fNentries);
5256 return;
5257
5258 }
5259
5260
e047b348 5261 TClonesArray *arrayMC=0x0;
5262 AliAODMCHeader *aodmcHeader=0x0;
624c07ab 5263 Double_t vtxTrue[3];
e047b348 5264
bf74e6db 5265 if(fReadMC){
5266 // load MC particles
5267 arrayMC =
5268 (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
5269 if(!arrayMC) {
5270 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC particles branch not found!\n");
5271 return;
5272 }
bf74e6db 5273 // load MC header
5274 aodmcHeader =
5275 (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
5276 if(!aodmcHeader) {
5277 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC header branch not found!\n");
5278 return;
5279 }
bf74e6db 5280 // MC primary vertex
5281 aodmcHeader->GetVertex(vtxTrue);
e047b348 5282 // FILL HISTOS FOR D0 mesons, c quarks and D0 from B properties
5283 FillHistoMCproperties(arrayMC);
624c07ab 5284 }
d39e8f99 5285
e047b348 5286
624c07ab 5287
5288 //Printf("There are %d tracks in this event", aod->GetNumberOfTracks());
5289 // Int_t nTotHF=0,nTotDstar=0,nTot3Prong=0;
5290 Int_t nTotD0toKpi=0;
e047b348 5291 Int_t okd0tight,okd0bartight,okd0loose,okd0barloose,okd0tightnopid,okd0bartightnopid;
624c07ab 5292 Bool_t isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,isSideBand;
ac4c229c 5293 Bool_t isinacceptance;
624c07ab 5294 Int_t signallevel=-1;
e047b348 5295 Int_t ptbin,nVtx;
624c07ab 5296 // const Int_t nptbins=10;
5297 Double_t invMassD0,invMassD0bar,ptD0,massmumtrue;
5298
5299
e047b348 5300 AliAODRecoDecayHF *aodDMC=0x0;// to be used to create a fake true sec vertex
624c07ab 5301 // make trkIDtoEntry register (temporary)
5302 Int_t trkIDtoEntry[100000];
e047b348 5303 fptAll=0.;
5304 fptAllSq=0.;
5305 fptMax[0]=0.;
5306 fptMax[1]=0.;
5307 fptMax[2]=0.;
624c07ab 5308 for(Int_t it=0;it<aod->GetNumberOfTracks();it++) {
5309 AliAODTrack *track = aod->GetTrack(it);
e047b348 5310 fptAll+=track->Pt();
5311 fptAllSq+=track->Pt()*track->Pt();
5312 if(track->Pt()>fptMax[0]){
5313 fptMax[2]=fptMax[1];
5314 fptMax[1]=fptMax[0];
5315 fptMax[0]=track->Pt();
5316 }
5317 else if(track->Pt()>fptMax[1]){
5318 fptMax[2]=fptMax[1];
5319 fptMax[1]=track->Pt();
5320 }
5321 else if(track->Pt()>fptMax[2])fptMax[2]=track->Pt();
624c07ab 5322 if(track->GetID()<0) {
5323 //printf("Track ID <0, id= %d\n",track->GetID());
d39e8f99 5324 PostData(1,fNentries);
624c07ab 5325 return;
5326 }
5327 trkIDtoEntry[track->GetID()]=it;
5328 }
5329
e047b348 5330
624c07ab 5331 // loop over D0->Kpi candidates
5332 Int_t nD0toKpi = arrayD0toKpi->GetEntriesFast();
5333 nTotD0toKpi += nD0toKpi;
5334 // cout<<"Number of D0->Kpi: "<<nD0toKpi<<endl;
5335
5336 for (Int_t iD0toKpi = 0; iD0toKpi < nD0toKpi; iD0toKpi++) {
e047b348 5337 if(aodDMC!=0x0)delete aodDMC;
624c07ab 5338
5339 isPeakD0=kFALSE;
5340 isPeakD0bar=kFALSE;
5341 isSideBandD0=kFALSE;
5342 isSideBandD0bar=kFALSE;
5343 isSideBand=kFALSE;
c387e585 5344 isinacceptance=kFALSE;
ac4c229c 5345 okd0tight=0;
5346 okd0bartight=0;
e047b348 5347 okd0tightnopid=0;
5348 okd0bartightnopid=0;
ac4c229c 5349 okd0loose=0;
5350 okd0barloose=0;
624c07ab 5351
5352 signallevel=-1;
5353
5354
5355 AliAODRecoDecayHF2Prong *d = (AliAODRecoDecayHF2Prong*)arrayD0toKpi->UncheckedAt(iD0toKpi);
5356 Bool_t unsetvtx=kFALSE;
5357 if(!d->GetOwnPrimaryVtx()) {
5358 d->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
5359 unsetvtx=kTRUE;
5360 }
624c07ab 5361
624c07ab 5362
e047b348 5363 //############# SIGNALLEVEL DESCRIPTION #####################
5364 // TO BE CONSIDERED WITH GREAT CARE, only =0 and =1 (and MC selection when possible) are reliable
5365 // For the other signallevel numbers the order in which cut are applied is relevant
5366 // signallevel =0,1: is selected as signal,is signal (MC)
5367 // from 2 to 20: MC information
5368 // from 21 to 29: "detector" selection (acceptance, pt, refits)
5369 // 21: acceptance, eta (N.B. before 24 May was signallevel=9)
5370 // 22: isinfiducialacceptance
5371 // 23: single track p
5372 // 25: ITS cluster selection
5373 // 26: TPC refit
5374 // 27: ITS refit
5375 // 28: no (TOF||TPC) pid information (no kTOFpid,kTOFout,kTIME,kTPCpid,...)
5376 //
5377 // from 30 to 39: PID selection
5378 // 31: no Kaon compatible tracks found between daughters
5379 // 32: no Kaon identified tracks found (strong sel. at low momenta)
5380 // 33: both mass hypotheses are rejected
5381 // from 40 to 45: standard cut selection
5382 // from 45 to 49: special cut signal kinematic selection
5383 // 46: pstar cut
5384 // from 50 to 60: special cut selection
5385 // 51: Nvtx contributors
5386 // 52: angle between tracks
5387 // 53: vtx not reconstructed when excludind daughters
5388 // 54: track not propagated to dca when the vtx is recalculated
5389 // 55: single track normalized impact par.
5390 // 56: normalized d0xd0
5391 // 57: d0xd0 cut with vtx on the fly
5392 // 58,59: cut normalized decay lenght and decay lenght
ac4c229c 5393 //####### DATA SELECTION ####################################
5394 //
5395 // ######## CHECK FOR ACCEPTANCE ##########
5396 ptD0=d->Pt();
e047b348 5397 ptbin=fCutsTight->PtBin(ptD0);
d39e8f99 5398 // Double_t relangle=d->ProngsRelAngle(0,1);
e047b348 5399 // UPV: HERE TO CHANGE WITH:
5400 // isinacceptance = (TMath::Abs(d->EtaProng(0))<fAcceptanceCuts[0]&&TMath::Abs(d->EtaProng(1))<fAcceptanceCuts[0]); //eta acceptance
5401
624c07ab 5402 //######## INVARIANT MASS SELECTION ###############
5403 CheckInvMassD0(d,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar);
d39e8f99 5404 if((isSideBandD0||isSideBandD0bar)){
5405 if(!(isPeakD0||isPeakD0bar))isSideBand=kTRUE; //(isSideBand no more used in the following, can remove it)
5406 else {// AVOID TO CONSIDER IN THE SIDEBAND THOSE CANDIDATES FOR WHICH 1 MASS HYPOTHESIS IS IN THE PEAK REGION
5407 isSideBand=kFALSE;
5408 isSideBandD0=kFALSE;
5409 isSideBandD0bar=kFALSE;
5410 }
5411 }
5412
5413
624c07ab 5414 // INVESTIGATE SIGNAL TYPE : ACCESS TO MC INFORMATION
bf74e6db 5415 if(fReadMC){
5416 aodDMC=GetD0toKPiSignalType(d,arrayMC,signallevel,massmumtrue,vtxTrue);
5417 }
5418 else signallevel=0;
e047b348 5419 // ACCOUNT FOR ETA & ITS CLUSTER SELECTION
d39e8f99 5420 if(fFastAnalysis<1){ // ALREADY DONE BY AliRDHFCutsD0ToKPi selection
5421 isinacceptance=fCutsTight->AreDaughtersSelected(d);
5422 if(!isinacceptance)signallevel=21;
5423 }
e047b348 5424 if(!fCutsTight->IsInFiducialAcceptance(ptD0,d->Y(421))){
5425 isinacceptance=kFALSE;
5426 signallevel=22;
5427 }
5428
5429 //###################################################################################
5430 //
5431 // ################ SPECIAL ADDITIONAL CUTS FOR SIGNAL SEARCH #######################
5432 // UPV: ITS CLUSTER SELECTION ALREADY DONE , COUNT THEM THE SAME
5433 //
5434 Int_t nlayers=0,nSPD=0,nSSD=0;
5435 Bool_t spd1=kFALSE;
d39e8f99 5436 if(fFastAnalysis<1){
5437 for(Int_t idg=0;idg<d->GetNDaughters();idg++){
5438
5439 AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(idg);
5440 if(TESTBIT(dgTrack->GetITSClusterMap(),5)){
5441 nlayers++;
5442 nSSD++;
5443 }
e047b348 5444 if(TESTBIT(dgTrack->GetITSClusterMap(),4)){
5445 nlayers++;
5446 nSSD++;
5447 }
5448 if(TESTBIT(dgTrack->GetITSClusterMap(),3))nlayers++;
5449 if(TESTBIT(dgTrack->GetITSClusterMap(),2))nlayers++;
5450 if(TESTBIT(dgTrack->GetITSClusterMap(),1)){
5451 nlayers++;
5452 nSPD++;
5453 }
5454 if(TESTBIT(dgTrack->GetITSClusterMap(),0)){
5455 nlayers++;
5456 nSPD++;
5457 spd1=kTRUE;
5458 }
d39e8f99 5459 }
e047b348 5460 }
d39e8f99 5461 /*
e047b348 5462 // ######## NOW SELECTION ##########
5463 if(dgTrack->Pt()<0.5){
5464 // ########## k-Both selection ##############
5465 if(nlayers<5)signallevel=25;
5466 if(nSPD<2)signallevel=25;
5467 }
5468 else if(dgTrack->Pt()<1.){
5469 // ########## 4 its clust (1 SSD,1 SPD) && k-Any selection ##############
5470 if(nlayers<4)signallevel=25;
5471 if(nSSD<1)signallevel=25;
5472 if(nSPD<1)signallevel=25;
5473 }
5474 else{
5475 // ########## 3 its clust (1 SPD, 1 SSD) && k-Any selection ##########
5476 if(nlayers<3)signallevel=25;
5477 if(nSSD<1)signallevel=25;
5478 if(nSPD<1)signallevel=25;
5479 }
5480 }
5481 */
5482
5483
5484
e047b348 5485
e047b348 5486 //########### END OF SPECIAL CUTS ######################
5487 //
5488 //###############################################################
5489
5490 // NOW APPLY CUTS
5491 // Check tighter cuts w/o PID:
5492 //
d39e8f99 5493 // Int_t ncont=vtx1->GetNContributors();
e047b348 5494 if(vtx1->GetNContributors()<1)signallevel=51;
5495 Bool_t defaultNC=SpecialSelD0(d,nVtx);
d39e8f99 5496 if(isEventSelTGHT){
5497 Bool_t iscutusingpid=fCutsTight->GetIsUsePID();
5498 fCutsTight->SetUsePID(kFALSE);
5499 Int_t isSelectedTightNoPid=fCutsTight->IsSelected(d,AliRDHFCuts::kAll,aod);
5500 switch(isSelectedTightNoPid){
5501 case 0:
5502 okd0tightnopid=kFALSE;
5503 okd0bartightnopid=kFALSE;
5504 break;
5505 case 1:
5506 okd0tightnopid=kTRUE;
5507 okd0bartightnopid=kFALSE;
5508 break;
5509 case 2:
5510 okd0tightnopid=kFALSE;
5511 okd0bartightnopid=kTRUE;
5512 break;
5513 case 3:
5514 okd0tightnopid=kTRUE;
5515 okd0bartightnopid=kTRUE;
5516 break;
5517 default:
5518 okd0tightnopid=kTRUE;
5519 okd0bartightnopid=kTRUE;
5520 break;
5521 }
5522
5523 if(!defaultNC){
5524 okd0tightnopid=kFALSE;
5525 okd0bartightnopid=kFALSE;
5526 }
5527 // signallevel=fCutsTight->GetSelectionStep();
5528 fSignalType->Fill(signallevel);
5529
e047b348 5530
d39e8f99 5531
5532
5533 // ######### SPECIAL SELECTION PID ##############
5534 fCutsTight->SetUsePID(iscutusingpid);
5535 Int_t isSelectedPid=fCutsTight->IsSelected(d,AliRDHFCuts::kPID,aod);
5536 Int_t isSelectedTight=fCutsTight->CombineSelectionLevels(3,isSelectedTightNoPid,isSelectedPid);
5537 switch(isSelectedTight){
5538 case 0:
5539 okd0tight=kFALSE;
5540 okd0bartight=kFALSE;
5541 break;
5542 case 1:
5543 okd0tight=kTRUE;
5544 okd0bartight=kFALSE;
5545 break;
5546 case 2:
5547 okd0tight=kFALSE;
5548 okd0bartight=kTRUE;
5549 break;
5550 case 3:
5551 okd0tight=kTRUE;
5552 okd0bartight=kTRUE;
5553 break;
5554 default:
5555 okd0tight=kTRUE;
5556 okd0bartight=kTRUE;
5557 break;
5558 }
5559 }
5560 else{
5561 fSignalType->Fill(signallevel);
e047b348 5562 }
624c07ab 5563
ac4c229c 5564 if(((isPeakD0&&okd0tight)||(isPeakD0bar&&okd0bartight))&&isinacceptance)fSignalTypeTghCuts->Fill(signallevel);
624c07ab 5565
d39e8f99 5566 if(isEventSelLOOSE){
5567 // CHECK LOOSER CUTS
5568 //ptbin=SetStandardCuts(ptD0,flargeInvMassCut);
5569
5570 // d->SelectD0(fCutsLoose->GetD0toKpiCuts(),okd0loose,okd0barloose);
5571 Int_t isSelectedLoose=fCutsLoose->IsSelected(d,AliRDHFCuts::kAll,aod);
5572 switch(isSelectedLoose){
5573 case 0:
5574 okd0loose=kFALSE;
5575 okd0barloose=kFALSE;
5576 break;
5577 case 1:
5578 okd0loose=kTRUE;
5579 okd0barloose=kFALSE;
5580 break;
5581 case 2:
5582 okd0loose=kFALSE;
5583 okd0barloose=kTRUE;
e047b348 5584 break;
d39e8f99 5585 case 3:
5586 okd0loose=kTRUE;
5587 okd0barloose=kTRUE;
5588 break;
5589 default:
5590 okd0loose=kTRUE;
5591 okd0barloose=kTRUE;
5592 break;
5593 }
5594 if(!defaultNC){
5595 okd0loose=kFALSE;
5596 okd0barloose=kFALSE;
5597 }
e047b348 5598 }
5599
5600
5601
ac4c229c 5602 if(((isPeakD0&&okd0loose)||(isPeakD0bar&&okd0barloose))&&isinacceptance)fSignalTypeLsCuts->Fill(signallevel);
624c07ab 5603
5604
e047b348 5605
624c07ab 5606 //################### FILL HISTOS ########################
5607 //################################################################
5608 //
5609 //######## improvement: SPEED HERE CAN BE IMPROVED: CALCULATE ONCE AND FOR ALL
5610 // CANDIDATE VARIABLES
5611
e047b348 5612
5613
624c07ab 5614 //NO CUTS Case: force okD0 and okD0bar = kTRUE
e047b348 5615 // special cuts are applied also in the "NO Cuts" case
5616 //
5617 //
5618 // SPECIAL modification:
5619 // IMPORTANT!!!!!! ONLY FOR TEMPORARY CONVENIENCE
5620 // IF fusePID is kTRUE, NO CUTS BECOMES NO PID case with tight cuts (fill signal histos when 30<=signallevel<40 )!!!!!!!!!!
d39e8f99 5621 if((!fusePID)&&isEventSelTGHT){
e047b348 5622 okd0tightnopid=defaultNC;
5623 okd0bartightnopid=defaultNC;
5624 }
5625 // ############ MISALIGN HERE: TEMPORARY SOLUTION ##########
5626 //d->Misalign("full14");
d39e8f99 5627 if(signallevel==1||signallevel==0)FillHistos(d,flistNoCutsSignal,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue); // else if(fusePID&&signallevel>=30&&signallevel<40)FillHistos(d,flistNoCutsSignal,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);// OLD LINE, COULD BE REMOVED
5628 else if(signallevel==2)FillHistos(d,flistNoCutsFromDstar,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5629 else if(signallevel==3||signallevel==4)FillHistos(d,flistNoCutsFromB,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5630 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10||signallevel==9)FillHistos(d,flistNoCutsBack,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5631 else if(signallevel==5||signallevel==6)FillHistos(d,flistNoCutsOther,ptbin,okd0tightnopid,okd0bartightnopid,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
e047b348 5632
624c07ab 5633
e047b348 5634
624c07ab 5635 //LOOSE CUTS Case
d39e8f99 5636 if(signallevel==1||signallevel==0)FillHistos(d,flistLsCutsSignal,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5637 else if(signallevel==2)FillHistos(d,flistLsCutsFromDstar,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5638 else if(signallevel==3||signallevel==4)FillHistos(d,flistLsCutsFromB,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5639 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10)FillHistos(d,flistLsCutsBack,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5640 else if(signallevel==5||signallevel==6)FillHistos(d,flistLsCutsOther,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
624c07ab 5641
5642 //TIGHT CUTS Case
d39e8f99 5643 if(signallevel==1||signallevel==0)FillHistos(d,flistTghCutsSignal,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5644 else if(signallevel==2)FillHistos(d,flistTghCutsFromDstar,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5645 else if(signallevel==3||signallevel==4)FillHistos(d,flistTghCutsFromB,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5646 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10)FillHistos(d,flistTghCutsBack,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
5647 else if(signallevel==5||signallevel==6)FillHistos(d,flistTghCutsOther,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,massmumtrue,aodDMC,vtxTrue);
ac4c229c 5648
624c07ab 5649
e047b348 5650
5651
5652 // ######## PRINTING INFO FOR D0-like candidate
5653
5654 if(nSPD==2&&ptD0>2.){
5655 if((okd0tight&&TMath::Abs(invMassD0-1.864)<0.01)||(okd0bartight&&TMath::Abs(invMassD0bar-1.864)<0.01)){
d39e8f99 5656 //printf("INFO FOR DRAWING: \n pt: %f \n Rapidity: %f \n Period Number: %d \n Run Number: %d \n BunchCrossNumb: %d \n OrbitNumber: %d \n",ptD0,d->Y(421),aod->GetPeriodNumber(),aod->GetRunNumber(),aod->GetBunchCrossNumber(),aod->GetOrbitNumber());
5657 //printf("PrimVtx NContributors: %d \n Prongs Rel Angle: %f \n \n",ncont,relangle);
e047b348 5658 }
5659 }
5660 if(aodDMC!=0x0){
624c07ab 5661 delete aodDMC;
e047b348 5662 aodDMC=0x0;
624c07ab 5663 }
ac4c229c 5664
624c07ab 5665 if(unsetvtx) d->UnsetOwnPrimaryVtx();
ac4c229c 5666
624c07ab 5667 }
c387e585 5668
624c07ab 5669 // ####################### POST OUTPUT TLIST DATA #########################
5670 // ####### histo for #AOD entries already posted
d39e8f99 5671 PostData(1,fNentries);
624c07ab 5672 PostData(2,fSignalType);
5673 PostData(3,fSignalTypeLsCuts);
5674 PostData(4,fSignalTypeTghCuts);
e047b348 5675 PostData(5,flistMCproperties);
5676 PostData(6,flistNoCutsSignal);
5677 PostData(7,flistNoCutsBack);
5678 PostData(8,flistNoCutsFromB);
5679 PostData(9,flistNoCutsFromDstar);
5680 PostData(10,flistNoCutsOther);
5681 PostData(11,flistLsCutsSignal);
5682 PostData(12,flistLsCutsBack);
5683 PostData(13,flistLsCutsFromB);
5684 PostData(14,flistLsCutsFromDstar);
5685 PostData(15,flistLsCutsOther);
5686 PostData(16,flistTghCutsSignal);
5687 PostData(17,flistTghCutsBack);
5688 PostData(18,flistTghCutsFromB);
5689 PostData(19,flistTghCutsFromDstar);
5690 PostData(20,flistTghCutsOther);
624c07ab 5691
5692 return;
5693}
e047b348 5694
cc3209fb 5695
5696
5697//_________________________________________
5698Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Float_t *&ptbinlimits){
5699 //
5700 // creating cuts for D0 -> Kpi
5701 //
d39e8f99 5702
5703 Printf("Using Default Cuts as set in AliAnalysisTaskSECharmFraction \n");
cc3209fb 5704 // const Double_t ptmin = 0.1;
5705 const Double_t ptmax = 9999.;
5706 const Int_t nptbins =13;
5707 const Int_t nvars=9;
5708 Int_t varycuts=-1;
5709
e047b348 5710 if(fCutsTight){
5711 delete fCutsTight;fCutsTight=NULL;
5712 }
5713 if(fCutsLoose){
5714 delete fCutsLoose;fCutsLoose=NULL;
5715 }
cc3209fb 5716
5717
e047b348 5718 fCutsTight = new AliRDHFCutsD0toKpi();
5719 fCutsTight->SetName("D0toKpiCutsStandard");
5720 fCutsTight->SetTitle("Standard Cuts for D0 analysis");
5721
5722 fCutsLoose = new AliRDHFCutsD0toKpi();
5723 fCutsLoose->SetName("D0toKpiCutsLoose");
5724 fCutsLoose->SetTitle("Loose Cuts for D0 analysis");
5725
5726 // EVENT CUTS
cc3209fb 5727 fCutsTight->SetMinVtxContr(1);
5728 fCutsLoose->SetMinVtxContr(1);
5729
e047b348 5730 // TRACKS ON SINGLE TRACKS
5731 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
5732 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
5733 esdTrackCuts->SetRequireTPCRefit(kTRUE);
5734 esdTrackCuts->SetRequireITSRefit(kTRUE);
cc3209fb 5735 // esdTrackCuts->SetMinNClustersITS(4);
e047b348 5736 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
5737 esdTrackCuts->SetMinDCAToVertexXY(0.);
5738 esdTrackCuts->SetEtaRange(-0.8,0.8);
5739 esdTrackCuts->SetPtRange(0.3,1.e10);
5740
cc3209fb 5741
e047b348 5742 fCutsTight->AddTrackCuts(esdTrackCuts);
cc3209fb 5743 fCutsLoose->AddTrackCuts(esdTrackCuts);
e047b348 5744
5745
cc3209fb 5746
5747 Float_t ptbins[nptbins+1];
5748 ptbins[0]=0.;
5749 ptbins[1]=0.5;
5750 ptbins[2]=1.;
5751 ptbins[3]=2.;
5752 ptbins[4]=3.;
5753 ptbins[5]=4.;
5754 ptbins[6]=5.;
5755 ptbins[7]=6.;
5756 ptbins[8]=8.;
5757 ptbins[9]=12.;
5758 ptbins[10]=16.;
5759 ptbins[11]=20.;
5760 ptbins[12]=24.;
5761 ptbins[13]=ptmax;
5762
5763 fCutsTight->SetGlobalIndex(nvars,nptbins);
5764 fCutsLoose->SetGlobalIndex(nvars,nptbins);
e047b348 5765 fCutsTight->SetPtBins(nptbins+1,ptbins);
5766 fCutsLoose->SetPtBins(nptbins+1,ptbins);
5767
cc3209fb 5768 /* Float_t cutsArrayD0toKpiStand_1[9]={0.200,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-35000.*1E-8,0.7}; // pt<1
5769 Float_t cutsArrayD0toKpiStand_2[9]={0.200,200.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-30000.*1E-8,0.8}; // 1<=pt<2
5770 Float_t cutsArrayD0toKpiStand_3[9]={0.200,200.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-26000.*1E-8,0.94}; // 2<=pt<3
5771 Float_t cutsArrayD0toKpiStand_4[9]={0.200,200.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-15000.*1E-8,0.88}; // 3<=pt<5
5772 Float_t cutsArrayD0toKpiStand_5[9]={0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.9}; // 5<=pt<8
5773 Float_t cutsArrayD0toKpiStand_6[9]={0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.9}; // 8<pt<12
5774 Float_t cutsArrayD0toKpiStand_7[9]={0.200,150.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-10000.*1E-8,0.9}; // pt>12
e047b348 5775 */
cc3209fb 5776
5777 const Int_t nvary=3;
5778 Float_t varyd0xd0[nptbins][nvary]={{-35000.*1E-8,-40000.*1E-8,-50000.*1E-8},/* pt<0.5*/
5779 {-35000.*1E-8,-40000.*1E-8,-50000.*1E-8},/* 0.5<pt<1*/
5780 {-25000.*1E-8,-32000.*1E-8,-38000.*1E-8},/* 1<pt<2 */
5781 {-22000.*1E-8,-26000.*1E-8,-30000.*1E-8},/* 2<pt<3 */
5782 {-12000.*1E-8,-15000.*1E-8,-20000.*1E-8},/* 3<pt<4 */
5783 {-12000.*1E-8,-15000.*1E-8,-20000.*1E-8},/* 4<pt<5 */
5784 {-5000.*1E-8,-10000.*1E-8,-15000.*1E-8},/* 5<pt<6 */
5785 {-5000.*1E-8,-10000.*1E-8,-15000.*1E-8},/* 6<pt<8 */
5786 {-0.*1E-8,-10000.*1E-8,-12000.*1E-8},/* 8<pt<12 */
5787 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 12<pt<16 */
5788 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 16<pt<20 */
5789 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8},/* 20<pt<24 */
5790 {5000.*1E-8,-5000.*1E-8,-10000.*1E-8}};/* pt>24 */
5791
5792
5793 Float_t varyCosPoint[nptbins][nvary]={{0.75,0.80,0.85},/* 0<pt<0.5 */
5794 {0.75,0.80,0.85},/* 0.5<pt<1*/
5795 {0.75,0.80,0.85},/* 1<pt<2 */
5796 {0.92,0.94,0.95},/* 2<pt<3 */
5797 {0.85,0.88,0.91},/* 3<pt<4 */
5798 {0.85,0.88,0.91},/* 4<pt<5 */
5799 {0.88,0.90,0.92},/* 5<pt<6 */
5800 {0.88,0.90,0.92},/* 6<pt<8 */
5801 {0.85,0.90,0.92},/* 8<pt<12 */
5802 {0.85,0.90,0.92},/* 12<pt<16 */
5803 {0.8,0.85,0.9},/* 16<pt<20 */
5804 {0.8,0.85,0.9},/* 20<pt<24 */
5805 {0.75,0.82,0.9}};/* pt>24 */
e047b348 5806
e047b348 5807
cc3209fb 5808
5809 if(varycuts==-1){//DEFAULT CUTS
5810 varycuts=11;
5811 varyd0xd0[9][1]=-10000.*1E-8;
5812 varyd0xd0[10][1]=-10000.*1E-8;
5813 varyd0xd0[11][1]=-10000.*1E-8;
5814 varyd0xd0[12][1]=-10000.*1E-8;
5815 }
5816 Int_t vcd0xd0=varycuts/10;
5817 Int_t vccospoint=varycuts%10;
5818 // ######################## STAND VARY CUTS ###########################################
5819 Float_t cutsMatrixD0toKpiStand[nptbins][nvars]={{0.400,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,varyd0xd0[0][vcd0xd0],varyCosPoint[0][vccospoint]},/* 0<pt<0.5*/
5820 {0.400,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,varyd0xd0[1][vcd0xd0],varyCosPoint[1][vccospoint]},/* 0.5<pt<1*/
5821 {0.400,300.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,varyd0xd0[2][vcd0xd0],varyCosPoint[2][vccospoint]},/* 1<pt<2 */
5822 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[3][vcd0xd0],varyCosPoint[3][vccospoint]},/* 2<pt<3 */
5823 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[4][vcd0xd0],varyCosPoint[4][vccospoint]},/* 3<pt<4 */
5824 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[5][vcd0xd0],varyCosPoint[5][vccospoint]},/* 4<pt<5*/
5825 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[6][vcd0xd0],varyCosPoint[6][vccospoint]},/* 5<pt<6 */
5826 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[7][vcd0xd0],varyCosPoint[7][vccospoint]},/* 6<pt<8 */
5827 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[8][vcd0xd0],varyCosPoint[8][vccospoint]},/* 8<pt<12 */
5828 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[9][vcd0xd0],varyCosPoint[9][vccospoint]},/*12< pt <16*/
5829 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[10][vcd0xd0],varyCosPoint[10][vccospoint]}, /*16< pt <20*/
5830 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[11][vcd0xd0],varyCosPoint[11][vccospoint]}, /*20< pt <24*/
5831 {0.400,250.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,varyd0xd0[12][vcd0xd0],varyCosPoint[12][vccospoint]}
5832 };/* pt > 24*/
5833
5834 Float_t cutsMatrixD0toKpiLoose[nptbins][nvars]={{0.400,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-35000.*1E-8,0.73},/* pt<0.5*/
5835 {0.400,300.*1E-4,0.8,0.3,0.3,1000.*1E-4,1000.*1E-4,-35000.*1E-8,0.73},/* 0.5<pt<1*/
5836 {0.400,300.*1E-4,0.8,0.4,0.4,1000.*1E-4,1000.*1E-4,-25000.*1E-8,0.75},/* 1<pt<2 */
5837 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-15000.*1E-8,0.8},/* 2<pt<3 */
5838 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85},/* 3<pt<4 */
5839 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85},/* 4<pt<5 */
5840 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85},/* 5<pt<6 */
5841 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-8000.*1E-8,0.85},/* 6<pt<8 */
5842 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-5000.*1E-8,0.85},/* 8<pt<12 */
5843 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.*1E-8,0.85},/* 12<pt<16 */
5844 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.85},/* 16<pt<20 */
5845 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.85},/* 20<pt<24 */
5846 {0.400,300.*1E-4,0.8,0.7,0.7,1000.*1E-4,1000.*1E-4,0.*1E-8,0.85}};/* pt>24 */
5847
5848
5849 //CREATE TRANSPOSE MATRIX...REVERSE INDICES as required by AliRDHFCuts
5850 Float_t **cutsMatrixTransposeStand=new Float_t*[nvars];
5851 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=new Float_t[nptbins];
5852 Float_t **cutsMatrixTransposeLoose=new Float_t*[nvars];
5853 for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeLoose[iv]=new Float_t[nptbins];
5854
5855 for (Int_t ibin=0;ibin<nptbins;ibin++){
5856 for (Int_t ivar = 0; ivar<nvars; ivar++){
5857 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar];
5858 cutsMatrixTransposeLoose[ivar][ibin]=cutsMatrixD0toKpiLoose[ibin][ivar];
5859 //printf("cutsMatrixD0toKpi[%d][%d] = %f\n",ibin, ivar,cutsMatrixD0toKpiStand[ibin][ivar]);
5860 }
5861 }
5862
e047b348 5863
e047b348 5864
cc3209fb 5865 fCutsTight->SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
5866 fCutsLoose->SetCuts(nvars,nptbins,cutsMatrixTransposeLoose);
5867
d39e8f99 5868
e11ae259 5869 for (Int_t ivar = 0; ivar<nvars; ivar++){
5870 delete [] cutsMatrixTransposeStand[ivar];
5871 delete [] cutsMatrixTransposeLoose[ivar];
5872 }
5873 delete [] cutsMatrixTransposeStand;
5874 cutsMatrixTransposeStand=NULL;
5875 delete [] cutsMatrixTransposeLoose;
5876 cutsMatrixTransposeLoose=NULL;
5877
d39e8f99 5878
5879
cc3209fb 5880 fCutsTight->SetUseSpecialCuts(kTRUE);
5881 fCutsLoose->SetUseSpecialCuts(kTRUE);
5882 fCutsTight->SetRemoveDaughtersFromPrim(kTRUE);
5883 fCutsLoose->SetRemoveDaughtersFromPrim(kTRUE);
5884 // PID SETTINGS
5885 AliAODPidHF* pidObj=new AliAODPidHF();
5886 //pidObj->SetName("pid4D0");
5887 Int_t mode=1;
5888 const Int_t nlims=2;
5889 Double_t plims[nlims]={0.6,0.8}; //TPC limits in momentum [GeV/c]
5890 Bool_t compat=kTRUE; //effective only for this mode
5891 Bool_t asym=kTRUE;
5892 Double_t sigmas[5]={2.,1.,0.,3.,0.}; //to be checked and to be modified with new implementation of setters by Rossella
5893 pidObj->SetAsym(asym);// if you want to use the asymmetric bands in TPC
5894 pidObj->SetMatch(mode);
5895 pidObj->SetPLimit(plims,nlims);
5896 pidObj->SetSigma(sigmas);
5897 pidObj->SetCompat(compat);
5898 pidObj->SetTPC(kTRUE);
5899 pidObj->SetTOF(kTRUE);
5900
5901 fCutsTight->SetPidHF(pidObj);
5902 fCutsLoose->SetPidHF(pidObj);
e11ae259 5903 delete pidObj; pidObj=NULL;
cc3209fb 5904 fCutsTight->SetUsePID(kTRUE);
5905 fCutsLoose->SetUsePID(kTRUE);
5906
5907 fCutsTight->SetUseDefaultPID(kFALSE);
5908 fCutsLoose->SetUseDefaultPID(kFALSE);
5909
5910 // PILE UP REJECTION
5911 fCutsTight->SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
5912 fCutsLoose->SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
5913
5914 ptbinlimits=ptbins;
5915 fCutsTight->PrintAll();
5916
d39e8f99 5917
cc3209fb 5918 return nptbins;
5919
e047b348 5920}
624c07ab 5921
cc3209fb 5922
624c07ab 5923//_________________________________________
5924Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Double_t pt,Double_t invMassCut){
e047b348 5925 // UPV: this should set the cut object
5926
624c07ab 5927 //#############
5928 // TEMPORARY: to be change in :
5929 // for(j<nptbins)
5930 // if pt < standardptbin[j+1]
5931 // SetCuts, bin=j
5932 // break
5933 //
5934 // the way the cuts are set is for further development
5935 // (to be interfaced with AliAnalsysTaskSETuneCuts)
c387e585 5936 //
5937 // Cuts:
5938 // 0 = inv. mass half width [GeV]
5939 // 1 = dca [cm]
5940 // 2 = cosThetaStar
5941 // 3 = pTK [GeV/c]
5942 // 4 = pTPi [GeV/c]
5943 // 5 = d0K [cm] upper limit!
5944 // 6 = d0Pi [cm] upper limit!
5945 // 7 = d0d0 [cm^2]
e047b348 5946 // 8 = cosThetaPoint
5947 Int_t ptbin=-1;
5948
5949
c387e585 5950
e047b348 5951 /*//#######################################################################
5952 //###########################################################################
5953 // STANDARD SETS OF CUTS ("tight"~PPR like; commented loose are more stringent than "tight")
5954 // #########################################################################
624c07ab 5955 Int_t ptbin=-1;
e047b348 5956 if(pt>0. && pt<=1.) {
5957 ptbin=0;
5958 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
5959 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
5960 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.0002,0.7);
5961 }
5962 if(pt>1. && pt<=2.) {
624c07ab 5963 ptbin=1;
e047b348 5964 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
5965 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5966 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.7);
624c07ab 5967 //printf("I'm in the bin %d\n",ptbin);
5968 }
e047b348 5969 if(pt>2. && pt<=3.) {
624c07ab 5970 ptbin=2;
e047b348 5971 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
5972 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
5973 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.7);
5974 //printf("I'm in the bin %d\n",ptbin);
5975 }
5976 if(pt>3. && pt<=5.){
5977 ptbin=3;
5978 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.0001,0.8);
5979 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
5980 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.0001,0.75);
624c07ab 5981 //printf("I'm in the bin %d\n",ptbin);
5982 }
5983 if(pt>5.){
e047b348 5984 ptbin=4;
5985 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00005,0.8);
5986 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
5987 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.00005,0.75);
5988 }//if(pt>5)
5989 return ptbin;
5990 //############################################################################
5991 */
5992
5993
5994
5995 /* //#######################################################################
5996 //################# VARY CUTS for d0xd0 STUDY ##########################
5997
5998if(pt>0. && pt<=1.) {
5999 ptbin=0;
6000 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
6001 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6002 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.0002,0.7);
6003 }
6004 if(pt>1. && pt<=2.) {
6005 ptbin=1;
6006 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,0.2,0.6);
6007 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6008 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.1);
6009 //printf("I'm in the bin %d\n",ptbin);
6010 }
6011 if(pt>2. && pt<=3.) {
6012 ptbin=2;
6013 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,0.2,0.6);
6014 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6015 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.3,0.3,1.,1.,-0.0001,0.1);
6016 //printf("I'm in the bin %d\n",ptbin);
6017 }
6018 if(pt>3. && pt<=5.){
6019 ptbin=3;
6020 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,0.2,0.8);
6021 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6022 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.3,0.4,0.4,1.,1.,-0.0001,0.1);
6023 //printf("I'm in the bin %d\n",ptbin);
6024 }
6025 if(pt>5.){
6026 ptbin=4;
6027 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,0.2,0.8);
6028 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6029 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.00005,0.1);
6030 }//if(pt>5)
6031 return ptbin;
6032 // #################################################################
6033 */
6034
6035 //##########################################################################
6036 //################## CUTS with d0xd0 cut released #########################
6037 //### and TGHC cuts d0K and d0Pi to 0.1 instead of 0.05
6038 //### USED FOR PHDthesis
6039 //##########################################################################
6040
6041 /* if(pt>0. && pt<=1.) {
6042 ptbin=0;
6043 fCutsTight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.1,0.1,-0.000,0.5);
6044 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6045 fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.3,0.3,1.,1.,-0.000,0.7);
6046 }
6047 if(pt>1. && pt<=2.) {
6048 ptbin=1;
6049 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.1,0.1,-0.000,0.6);
6050 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6051 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.0000,0.7);
6052 //printf("I'm in the bin %d\n",ptbin);
6053 }
6054 if(pt>2. && pt<=3.) {
6055 ptbin=2;
6056 fCutsTight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.1,0.1,-0.000,0.6);
6057 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6058 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.4,0.4,1.,1.,-0.000,0.7);
6059 //printf("I'm in the bin %d\n",ptbin);
6060 }
6061 if(pt>3. && pt<=5.){
6062 ptbin=3;
6063 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.000,0.8);
6064 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6065 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.000,0.75);
6066 //printf("I'm in the bin %d\n",ptbin);
6067 }
6068 if(pt>5.){
6069 ptbin=4;
6070 fCutsTight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0000,0.8);
6071 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6072 fCutsLoose->SetD0toKpiCuts(invMassCut,0.03,0.8,0.5,0.5,1.,1.,-0.0000,0.75);
6073 }//if(pt>5)
6074 return ptbin;
6075 */
6076
6077
6078
6079
6080 //########## LOOKING FOR SIGNAL #####################
6081 /*
6082 if(pt>0. && pt<=1.) {
6083 ptbin=0;
6084 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.03,0.8,0.3,0.3,0.1,0.1,-0.00035,0.7);
6085 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
6086 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.04,0.8,0.3,0.3,0.1,0.1,-0.00025,0.7);
6087 }
6088 if(pt>1. && pt<=2.) {
6089 ptbin=1;
6090 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.4,0.4,0.1,0.1,-0.00035,0.8);
6091 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6092 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.03,0.8,0.3,0.3,0.1,0.1,-0.0025,0.75);
6093 //printf("I'm in the bin %d\n",ptbin);
6094 }
6095 if(pt>2. && pt<=3.) {
6096 ptbin=2;
6097 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00026,0.94);
6098 //fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
6099 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0002,0.92);
6100 //printf("I'm in the bin %d\n",ptbin);
6101 }
6102 if(pt>3. && pt<=5.){
6103 ptbin=3;
6104 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00015,0.88);
6105 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
6106 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.00015,0.9);
6107 //printf("I'm in the bin %d\n",ptbin);
6108 }
6109 if(pt>5.&& pt<=8.){
6110 ptbin=4;
6111 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0001,0.9);
6112 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6113 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.02,0.8,0.7,0.7,0.1,0.1,-0.0000,0.88);
6114 }//if(pt>5)
6115 if(pt>8.&&pt<=12.){
6116 ptbin=5;
6117 fCutsTight->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0001,0.9);
6118 // fCutsLoose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
6119 fCutsLoose->SetD0toKpiCuts(5*invMassCut,0.015,0.8,0.7,0.7,0.1,0.1,-0.0005,0.88);
624c07ab 6120 }//if(pt>5)
e047b348 6121
624c07ab 6122 return ptbin;
e047b348 6123 */
6124 printf("AliAnalysisTaskSECharmFraction::Obsolete method! Parameters pt=%f,invmasscut=%f not used \n",pt,invMassCut);
6125 return ptbin;
6126
624c07ab 6127}
6128
6129//__________________________________________________________
6130void AliAnalysisTaskSECharmFraction::CheckInvMassD0(AliAODRecoDecayHF2Prong *d,Double_t &invMassD0,Double_t &invMassD0bar,Bool_t &isPeakD0,Bool_t &isPeakD0bar,Bool_t &isSideBandD0,Bool_t &isSideBandD0bar){
6131 //Check wheter the candidate inv. mass is compatible with signal or sideband inv. mass selection
6132
6133 d->InvMassD0(invMassD0,invMassD0bar);
6134 //CHECK if ISPEAK
6135 if(TMath::Abs(invMassD0-fmD0PDG)<fsignalInvMassCut)isPeakD0=kTRUE;
6136 if(TMath::Abs(invMassD0bar-fmD0PDG)<fsignalInvMassCut)isPeakD0bar=kTRUE;
6137 //CHECK if ISSIDEBAND: no constraint is present between signal region definition and side band definition
6138 // ######## TO BE CHANGED the distinction between sidebandD0 and sidebandD0bar is meaningless
6139 // and it is present only for side band region study (see which inv mass has the D0(D0bar)
6140 // in case the D0bar(D0) is in the sideband) #######
6141 if(TMath::Abs(invMassD0-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
6142 isSideBandD0=kTRUE;
6143 }
6144 if(TMath::Abs(invMassD0bar-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0bar-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
6145 isSideBandD0bar=kTRUE;
6146 }
6147
6148}
6149
6150
6151
6152//_______________________
ac4c229c 6153AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::GetD0toKPiSignalType(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx){
624c07ab 6154 //THIS METHOD CHECK THE TYPE OF SIGNAL/BACKGROUND THE CANDIDATE IS.
6155 // IF (!AND ONLY IF) THE TWO DAUGHTERS COME FROM A COMMONE MOTHER A FAKE TRUE SECONDARY VERTEX IS CONSTRUCTED (aodDMC)
6156 //
6157 // THE FOLLOWING SCHEME IS ADOPTED: signaltype is set to
e047b348 6158 // 1:signal (D0 prompt); 2: signal D0 from Dstar; 3: D0 fromB 4: D0 from Dstar fromB
6159 // then background categories: -1: one or both daughters is a fake track
6160 // 5: both daughters come from a D meson != D0
6161 // 6: both daughters come from a D0->4prongs
6162 // 7: both daughetrs are primaries
6163 // 8: generic background (can include one of the previous if desired)
6164 // 9: daughters out of acceptance
6165 // 10: pathologic cases (not clear)
6166 // 11: end of the method without output
6167 // 12: different result than MatchToMC method
6168
6169 AliAODMCParticle *mum1=0x0;
6170 AliAODMCParticle *b1=0x0,*b2=0x0;
6171 AliAODMCParticle *grandmoth1=0x0;
624c07ab 6172 massMumTrue=-1;
6173
6174 Int_t pdgmum,dglabels[2],matchtoMC;
6175 Int_t pdgdaughters[2]={211,321};
6176 // get daughter AOD tracks
6177 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
6178 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
e047b348 6179 AliAODRecoDecayHF *aodDMC=0x0;
6180 if(trk0==0x0||trk1==0x0){
624c07ab 6181 AliDebug(2,"Delete tracks I AM \n");
6182
6183 signaltype=-1;
6184 return aodDMC;
6185
6186 }
6187 dglabels[0]=trk0->GetLabel();
6188 dglabels[1]=trk1->GetLabel();
e047b348 6189 if(dglabels[0]<0||dglabels[1]<0){
624c07ab 6190 AliDebug(2,"HERE I AM \n");
6191
6192 //fake tracks
6193
7eb5a89e 6194 signaltype=-1;
624c07ab 6195 return aodDMC;
6196
6197 }
6198 // printf("Before entering the MC checks \n");
6199
6200 b1=(AliAODMCParticle*)arrayMC->At(trk0->GetLabel());
6201 b2=(AliAODMCParticle*)arrayMC->At(trk1->GetLabel());
e047b348 6202 if(!b1||!b2){
6203 //Tracks with no mother ??? FAKE DECAY VERTEX
43e4f69a 6204 signaltype=10;
6205 return aodDMC;
6206 }
43e4f69a 6207 if(b1->GetMother()<0||b2->GetMother()<0){
e047b348 6208 //Tracks with no mother ??? FAKE DECAY VERTEX
624c07ab 6209 signaltype=10;
6210 return aodDMC;
6211 }
6212
6213 mum1=(AliAODMCParticle*)arrayMC->At(b1->GetMother());
6214 // mum2=(AliAODMCParticle*)arrayMC->At(b2->GetMother());//FOR FURTHER USE
6215
6216 if(b1->GetMother()!=b2->GetMother()){
6217 //Check the label of the mother is the same
6218 // NOT SAME MOTHER
6219
6220
6221 signaltype=8;
6222 return aodDMC;
6223 }
6224 massMumTrue=mum1->GetCalcMass();
6225
6226 matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
6227 aodDMC=ConstructFakeTrueSecVtx(b1,b2,mum1,primaryVtx);
6228
e047b348 6229 if(aodDMC==0x0){
624c07ab 6230 signaltype=10;
6231 return aodDMC;
6232 }
6233
6234 // if((mum1->GetPdgCode()!=mum2->GetPdgCode()))continue; //Check the mother is the same particle
6235 // printf("Particle codes: tr1: %d, tr2: %d, mum1: %d, mum 2: %d \n",b1->GetPdgCode(),b2->GetPdgCode(),mum1->GetPdgCode(),mum2->GetPdgCode());
6236 if(!((TMath::Abs(b1->GetPdgCode())==321&&TMath::Abs(b1->GetPdgCode())!=211)||(TMath::Abs(b1->GetPdgCode())==211&&TMath::Abs(b1->GetPdgCode()!=321)))){
6237 // Not a Kaon and a Pion
6238
6239 signaltype=8;
6240 return aodDMC;
6241 }
6242
6243 pdgmum=mum1->GetPdgCode();
6244 if(TMath::Abs(pdgmum)!=421){
6245 if(TMath::Abs(pdgmum)==411||TMath::Abs(pdgmum)==431||TMath::Abs(pdgmum)==443){
6246 // IT IS A SECONDARY VERTEX FROM CHARM BUT NOT A D0
6247
6248 signaltype=5;
6249 return aodDMC;
6250 }
6251 else {
6252 signaltype=8;
6253 return aodDMC;
6254 }
6255 }
6256
6257 if(mum1->GetDaughter(1)-mum1->GetDaughter(0)+1!=2){
6258 // from D0 but NOT A 2 PRONG DECAY
6259 signaltype=6;
6260 return aodDMC;
6261
6262 }
6263
43e4f69a 6264 if(mum1->GetMother()<0){
624c07ab 6265 // A particle coming from nothing
6266 signaltype=10;
6267 return aodDMC;
c387e585 6268
624c07ab 6269 }
7eb5a89e 6270 Bool_t isfromDstar=kFALSE;
6271 // matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
624c07ab 6272 grandmoth1=(AliAODMCParticle*)arrayMC->At(mum1->GetMother());
7eb5a89e 6273 if(TMath::Abs(grandmoth1->GetPdgCode())==413||TMath::Abs(grandmoth1->GetPdgCode())==423)isfromDstar=kTRUE;// D0 COMING FROM A D0*
6274
c387e585 6275 /*
6276 //CHECK FOR CABIBBO SUPPRESSED DECAY
6277 Int_t isCabibSup=0,pdgKaon;
6278
6279 pdgKaon=b1->GetPdgCode();
6280 if(TMath::Abs(pdgKaon)!=321)pdgKaon=b2->GetPdgCode();
6281 if(pdgmum>0&&pdgKaon>0)isCabibSup=1;
6282 if(pdgmum<0&&pdgKaon<0)isCabibSup=1;
6283 if(isCabibSup){
6284 signaltype=0;
6285 return aodDMC;
6286 }
6287 */
624c07ab 6288 // if(fcheckMCD0){//THIS CHECK IS NEEDED TO AVOID POSSIBLE FAILURE IN THE SECOND WHILE, FOR DEBUGGING
6289 while(TMath::Abs(grandmoth1->GetPdgCode())!=4&&TMath::Abs(grandmoth1->GetPdgCode())!=5){
43e4f69a 6290 if(grandmoth1->GetMother()<0){
624c07ab 6291 //### THE FOLLOWING IN CASE OF DEBUGGING ##########à
6292 /*printf("mother=-1, pdgcode: %d \n",grandmoth1->GetPdgCode());
6293 Int_t son=grandmoth1->GetDaughter(0);
6294 sonpart=(AliAODMCParticle*)arrayMC->At(son);
6295 while(TMath::Abs(sonpart->GetPdgCode())!=421){
6296 printf("mother=-1, pdgcode: %d \n",sonpart->GetPdgCode());
6297 son++;
6298 sonpart=(AliAODMCParticle*)arrayMC->At(son);
6299 }*/
6300
6301 signaltype=10;
6302 return aodDMC;
6303 }
6304 grandmoth1=(AliAODMCParticle*)arrayMC->At(grandmoth1->GetMother());
6305 }
6306
6307 if(TMath::Abs(grandmoth1->GetPdgCode())==4){
6308 if(matchtoMC!=-1){
7eb5a89e 6309
6310 if(isfromDstar)signaltype=2;
6311 else signaltype=1;
624c07ab 6312 return aodDMC;
6313 }
6314 else {
6315 signaltype=12;
6316 return aodDMC;
7eb5a89e 6317
624c07ab 6318 }
6319 }
6320 else if(TMath::Abs(grandmoth1->GetPdgCode())==5){
6321 if(matchtoMC!=-1){
7eb5a89e 6322 if(isfromDstar)signaltype=4;
6323 else signaltype=3;
624c07ab 6324 return aodDMC;
6325
6326 }
6327 else {
6328
6329 signaltype=12;
6330 return aodDMC;
6331 }
6332 }
6333 signaltype=11;// JUST FOR SAFETY: SHOULD NEVER REACH THIS POINT
6334 return aodDMC;
6335 // return 11;
6336}
6337
6338//___________________________________
ac4c229c 6339AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::ConstructFakeTrueSecVtx(const AliAODMCParticle *b1, const AliAODMCParticle *b2, const AliAODMCParticle *mum,Double_t *primaryVtxTrue){
624c07ab 6340 // CONSTRUCT A FAKE TRUE SECONDARY VERTEX (aodDMC)
6341 //!!!NOTE THAT ONLY ONE MOTHER IS CONSIDERED: THE METHOD REQUIRES THE DAUGHTERS COME FROM THE SAME MOTHER !!
e047b348 6342 if(b1==0x0||b2==0x0)return 0x0;
6343 if(mum==0x0)return 0x0;
624c07ab 6344 Double_t pD[3],xD[3],pXtrTrue[2],pYtrTrue[2],pZtrTrue[2],xtr1[3],xtr2[3];
6345 Int_t charge[2]={0,0};
6346 if(b1->Charge()==-1)charge[0]=1;
6347 else {
6348 if(b2->Charge()==-1){
6349 //printf("Same charges for prongs \n");
e047b348 6350 if(!fLikeSign)return 0x0;
624c07ab 6351 }
6352 charge[1]=1;
6353 }
6354
6355 pXtrTrue[charge[0]]=b1->Px();
6356 pYtrTrue[charge[0]]=b1->Py();
6357 pZtrTrue[charge[0]]=b1->Pz();
6358 if(!b1->XvYvZv(xtr1)){
e047b348 6359 return 0x0;
624c07ab 6360 }
6361
6362 pXtrTrue[charge[1]]=b2->Px();
6363 pYtrTrue[charge[1]]=b2->Py();
6364 pZtrTrue[charge[1]]=b2->Pz();
6365
6366 if(!mum->PxPyPz(pD)){
6367 //printf("!D from B:Get momentum failed \n");
e047b348 6368 return 0x0;
624c07ab 6369 }
6370 if(!mum->XvYvZv(xD)){
6371 //printf("!D from B:Get position failed \n");
e047b348 6372 return 0x0;
624c07ab 6373 }
6374 /* ############ THIS HAPPENS FROM TIME TO TIME: NUMERIC PROBLEM KNOWN #################
6375 if(pXtrTrue[0]+pXtrTrue[1]!=pD[0]){
6376 }*/
6377
6378
6379 if(!b2->XvYvZv(xtr2)){
e047b348 6380 return 0x0;
624c07ab 6381 }
6382 Double_t d0dummy[2]={0.,0.};//TEMPORARY : dummy d0 for AliAODRecoDeay constructor
6383 AliAODRecoDecayHF* aodDMC=new AliAODRecoDecayHF(primaryVtxTrue,xD,2,0,pXtrTrue,pYtrTrue,pZtrTrue,d0dummy);
6384
6385 /* ######## THE FOLLOWINF FOR DEBUGGING ############
6386 Printf("testing the Fake vertex: SecVtxX: %f, Px: %f, Py: %f, Pz:%f \n ",aodDMC->GetSecVtxX(),aodDMC->Px(),aodDMC->Py(),aodDMC->Pz());
6387 Printf("pD: x=%f, y=%f,z=%f\n",pD[0],pD[1],pD[2]);
6388 Printf("Daughters :px1:%f, px2:%f \n",pXtrTrue[0],pXtrTrue[1]);
6389 Printf("Daughters :py1:%f, py2:%f \n",pYtrTrue[0],pYtrTrue[1]);
6390 Printf("Daughters :pz1:%f, pz2:%f \n",pZtrTrue[0],pZtrTrue[1]);
6391 Printf("Mother pdg: %d",mum->GetPdgCode());
6392 Printf("Impact Par Prod: %f\n",aodDMC->ImpParXY());
6393 */
6394
6395 return aodDMC;
6396}
6397
6398//________________________________________________________
d39e8f99 6399Bool_t AliAnalysisTaskSECharmFraction::FillHistos(AliAODRecoDecayHF2Prong *d,TList *&list,Int_t ptbin,Int_t okD0,Int_t okD0bar,Double_t invMassD0,Double_t invMassD0bar,Bool_t isPeakD0,Bool_t isPeakD0bar,Bool_t isSideBandD0,Bool_t isSideBandD0bar,Double_t massmumtrue,AliAODRecoDecayHF *aodDMC,Double_t *vtxTrue){//FILL THE HISTOGRAMS: TAKE THE HISTOS FROM THE list NAME
ac4c229c 6400
624c07ab 6401
6402 if((!okD0)&&(!okD0bar))return kTRUE;
e047b348 6403 if(ptbin==-1)return kTRUE;
6404 // flistNoCutsSignal->Add(hptD0NCsign);
6405 // flistNoCutsSignal->Add(hptD0VsMaxPtNCsign);
6406 // flistNoCutsSignal->Add(hptD0PTallsqrtNCsign);
6407 // flistNoCutsSignal->Add(hptD0PTallNCsign);
6408
6409 // %%%%%% TO BE DONE
6410 // flistNoCutsSignal->Add(hptD0vsptBNCsign);
6411 // flistNoCutsSignal->Add(hpD0vspBNCsign);
6412 //flistNoCutsSignal->Add(hptD0vsptcquarkNCsign);
6413 //flistNoCutsSignal->Add(hpD0vspcquarkNCsign);
6414 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%
6415 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
624c07ab 6416
e047b348 6417 // DONE
6418 //hd0zD0ptLSCsign_pt
cc3209fb 6419 //hInvMassD0LSCsign_pt
e047b348 6420 //hetaLSCsign_pt
6421 //
6422 // %%% TO BE DONE %%
6423 //hCosPDPBLSCsign_pt
6424 //hCosPcPDLSCsign_pt
6425
d39e8f99 6426 Double_t pt=d->Pt();
6427 Double_t impparxy=d->ImpParXY()*10000.;
e047b348 6428
6429
6430
624c07ab 6431 // ######### Get Standard label for hist in tlist ###############
6432 TString namehist=list->GetName(),str;
6433 namehist.ReplaceAll("list","");
6434
6435 // ######### Global properties histos #################
ac4c229c 6436 // ####### take care: only for candidates which pass the cuts !! not for side band ########
d39e8f99 6437 if(fFastAnalysis<2){
6438 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar)){
6439 str="hCPtaVSd0d0";
6440 str.Append(namehist.Data());
6441 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->CosPointingAngle());
6442
6443 str="hSecVtxZ";
6444 str.Append(namehist.Data());
6445 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxZ());
6446
6447 str="hSecVtxX";
6448 str.Append(namehist.Data());
6449 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.);
6450
6451 str="hSecVtxY";
6452 str.Append(namehist.Data());
6453 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxY()*10000.);
6454
6455 str="hSecVtxXY";
6456 str.Append(namehist.Data());
6457 ((TH2F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.,d->GetSecVtxY()*10000.);
6458
6459 str="hSecVtxPhi";
6460 str.Append(namehist.Data());
6461 ((TH1F*)list->FindObject(str.Data()))->Fill(TMath::ATan2(d->GetSecVtxY()*10000.,d->GetSecVtxX()*10000.)*TMath::RadToDeg());
6462
6463
6464 str="hd0singlTrack";
6465 str.Append(namehist.Data());
6466 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Getd0Prong(0)*10000.);
6467 ((TH1F*)list->FindObject(str.Data()))->Fill(d->Getd0Prong(1)*10000.);
6468
6469 str="hCPta";
6470 str.Append(namehist.Data());
6471 ((TH1F*)list->FindObject(str.Data()))->Fill(d->CosPointingAngle());
6472
6473 str="hd0xd0";
6474 str.Append(namehist.Data());
6475 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
6476
6477 //%%%%%%%% NEW HISTO %%%%%%%%%%
6478 str="hdca";
6479 str.Append(namehist.Data());
6480 ((TH1F*)list->FindObject(str.Data()))->Fill(1e4*d->GetDCA());
6481
6482 str="hcosthetastar";
6483 str.Append(namehist.Data());
6484 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(d->CosThetaStarD0());
6485 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(d->CosThetaStarD0bar());
6486
6487 str="hptD0";
6488 str.Append(namehist.Data());
6489 ((TH1F*)list->FindObject(str.Data()))->Fill(pt);
6490
6491 str="hptD0VsMaxPt";
6492 str.Append(namehist.Data());
6493 Int_t pr=0;
6494 if(d->PtProng(1)>d->PtProng(0))pr=1;
6495 if(d->PtProng(pr)<fptMax[0]) ((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[0]);
6496 else if(d->PtProng(TMath::Abs(pr-1))<fptMax[1])((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[1]);
6497 else ((TH1F*)list->FindObject(str.Data()))->Fill(pt-fptMax[2]);
6498
6499
6500 str="hptD0PTallsqrt";
6501 str.Append(namehist.Data());
6502 Double_t sumsqrpt=fptAllSq-d->PtProng(1)*d->PtProng(1)-d->PtProng(0)*d->PtProng(0);
6503 if(sumsqrpt>0.)((TH1F*)list->FindObject(str.Data()))->Fill(pt,TMath::Sqrt(sumsqrpt));
6504
6505 str="hptD0PTall";
6506 str.Append(namehist.Data());
6507 ((TH1F*)list->FindObject(str.Data()))->Fill(pt,fptAll-d->PtProng(1)-d->PtProng(0));
6508
6509
6510 str="hd0zD0pt";
6511 str.Append(namehist.Data());
6512 str.Append("_pt");
6513 str+=ptbin;
6514 if(d->GetPrimaryVtx()!=0x0)((TH1F*)list->FindObject(str.Data()))->Fill(1e4*(d->Zv()-d->GetPrimaryVtx()->GetZ()));
6515
6516 str="heta";
6517 str.Append(namehist.Data());
6518 str.Append("_pt");
6519 str+=ptbin;
3e78b6f0 6520 //((TH1F*)list->FindObject(str.Data()))->Fill(d->Eta());
d39e8f99 6521
6522 // OTHER NEW ADDITIONAL HISTOS
6523
6524 str="hd0xd0";
6525 str.Append(namehist.Data());
6526 str.Append("_pt");
6527 str+=ptbin;
6528 //printf("Hist name: %s \n",str.Data());
6529 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
6530
6531
6532 str="hd0D0VSd0xd0";
6533 str.Append(namehist.Data());
6534 str.Append("_pt");
6535 str+=ptbin;
6536 //printf("Hist name: %s \n",str.Data());
6537 ((TH2F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),impparxy);
6538
6539
6540 str="hangletracksVSd0xd0";
6541 str.Append(namehist.Data());
6542 str.Append("_pt");
6543 str+=ptbin;
6544 //printf("Hist name: %s \n",str.Data());
6545 ((TH2F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->ProngsRelAngle(0,1));
6546
6547 str="hangletracksVSd0D0";
6548 str.Append(namehist.Data());
6549 str.Append("_pt");
6550 str+=ptbin;
6551 // printf("Hist name: %s \n",str.Data());
6552 ((TH2F*)list->FindObject(str.Data()))->Fill(impparxy,d->ProngsRelAngle(0,1));
e047b348 6553 // ####################################################
d39e8f99 6554 }
e047b348 6555 }
ac4c229c 6556
6557 // ######### Invariant mass histos #################
6558 str="hMass";
624c07ab 6559 str.Append(namehist.Data());
ac4c229c 6560 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6561 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
624c07ab 6562
6563
ac4c229c 6564 if(isPeakD0||isPeakD0bar){
6565 str="hMass";
6566 str.Append(namehist.Data());
6567 str.Append("PM");
6568 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6569 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6570 }
d39e8f99 6571
cc3209fb 6572 // The Following is a NEW HISTO
6573 str="hInvMassD0";
e047b348 6574 str.Append(namehist.Data());
6575 str.Append("_pt");
6576 str+=ptbin;
6577 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
cc3209fb 6578 if((!fsplitMassD0D0bar)&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6579 str="hInvMassD0bar";
6580 str.Append(namehist.Data());
6581 str.Append("_pt");
6582 str+=ptbin;
6583 if(fsplitMassD0D0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6584
e047b348 6585
d39e8f99 6586 // FILLING OF THE SPARSE HISTO
6587 if(fFastAnalysis<2){ // ONLY IF NOT VERY FAST ANALYSIS
6588 str="hSparse";
6589 str.Append(namehist.Data());
6590 Double_t point[5]={invMassD0,invMassD0bar,pt,impparxy,0.};
6591 if(okD0&&okD0bar)point[4]=3.5;
6592 else if(okD0)point[4]=1.5;
6593 else if(okD0bar)point[4]=2.5;
6594 ((THnSparseF*)list->FindObject(str.Data()))->Fill(point);
6595
6596 str="hInvMassPt";
6597 str.Append(namehist.Data());
6598 if(okD0)((TH2F*)list->FindObject(str.Data()))->Fill(invMassD0,pt);
6599 if(okD0bar)((TH2F*)list->FindObject(str.Data()))->Fill(invMassD0bar,pt);
e047b348 6600
d39e8f99 6601 }
e047b348 6602 /* if(isPeakD0||isPeakD0bar){
6603 str="hMass";
6604 str.Append(namehist.Data());
6605 str.Append("PM");
6606 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6607 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6608 // The Following is a NEW HISTO
cc3209fb 6609 str="hInvMassD0";
e047b348 6610 str.Append(namehist.Data());
6611 str.Append("_pt");
6612 str+=ptbin;
6613 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6614 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6615 }*/
d39e8f99 6616 if(isSideBandD0||isSideBandD0bar){
ac4c229c 6617 str="hMass";
6618 str.Append(namehist.Data());
6619 str.Append("SB");
6620 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
6621 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
6622 }
bf74e6db 6623 if(fReadMC){
6624 if(massmumtrue>0.){
ac4c229c 6625 str="hMassTrue";
6626 str.Append(namehist.Data());
ac4c229c 6627 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
bf74e6db 6628
6629 if(isPeakD0||isPeakD0bar){
6630 str="hMassTrue";
6631 str.Append(namehist.Data());
6632 str.Append("PM");
6633 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6634 }
d39e8f99 6635 if(isSideBandD0||isSideBandD0bar){
bf74e6db 6636 str="hMassTrue";
6637 str.Append(namehist.Data());
6638 str.Append("SB");
6639 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
6640 }
ac4c229c 6641 }
6642 }
d39e8f99 6643 // ################ D0 Impact Parameter Histos #####################
6644 if(isPeakD0||isPeakD0bar){
6645
ac4c229c 6646 str="hd0D0";
6647 str.Append(namehist.Data());
6648 str.Append("PM");
d39e8f99 6649 if(!fReadMC){
6650 // WE COUNT TWICE A CANDIDATE UNDER THE INV MASS PEAK BOTH AS a D0 and a D0bar (if selected) for DATA ONLY
6651 // THIS BECAUSE WE SUBTRACT a "BACKGROUND" AMOUNT ESTIMATED USING THE INV MASS FIT INFORMATION
6652 // WHICH SHOULD ACCOUNT FOR REFLECTIONS
6653 if(isPeakD0&&okD0){
6654 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6655 }
6656 if(isPeakD0bar&&okD0bar){
6657 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6658 }
6659 }
6660 else {
6661 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar))((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6662 }
ac4c229c 6663
6664 str="hd0D0pt";
6665 str.Append(namehist.Data());
6666 str.Append("_PkMss_pt");
d39e8f99 6667 str+=ptbin;
6668 if(!fReadMC){
6669 // WE COUNT TWICE A CANDIDATE UNDER THE INV MASS PEAK BOTH AS a D0 and a D0bar (if selected) for DATA ONLY
6670 // THIS BECAUSE WE SUBTRACT a "BACKGROUND" AMOUNT ESTIMATED USING THE INV MASS FIT INFORMATION
6671 // WHICH SHOULD ACCOUNT FOR REFLECTIONS
6672 if(isPeakD0&&okD0){
6673 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6674 }
6675 if(isPeakD0bar&&okD0bar){
6676 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6677 }
6678 }
6679 else {
6680 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar))((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
6681 }
6682
ac4c229c 6683
e047b348 6684 if(fReadMC&&vtxTrue){
d39e8f99 6685 // ONLY AN HISTO FOR QA: WE DO NOT CONSIDER THE IMPACT PARAMETER FOR EACH MASS HYPOTHESIS
ac4c229c 6686 str="hd0D0VtxTrue";
6687 str.Append(namehist.Data());
6688 str.Append("PM");
6689 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6690
6691 str="hd0D0VtxTruept";
6692 str.Append(namehist.Data());
6693 str.Append("_PkMss_pt");
6694 str+=ptbin;
6695 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6696 }
6697
e047b348 6698 if(fReadMC&&aodDMC!=0x0){
d39e8f99 6699 // WE NEED JUST THE SHAPE: AVOID TAKING THE IMPACT PAR FOR EACH MASS HYPO PASSING THE CUTS
6700 // aodDMC->Print("");
ac4c229c 6701 aodDMC->ImpParXY();
d39e8f99 6702 // aodDMC->Print("");
ac4c229c 6703 str="hMCd0D0";
6704 str.Append(namehist.Data());
6705 str.Append("PM");
6706 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6707
6708 str="hMCd0D0pt";
6709 str.Append(namehist.Data());
6710 str.Append("_PkMss_pt");
6711 str+=ptbin;
6712 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
d39e8f99 6713 }
6714 }
6715 else if(isSideBandD0||isSideBandD0bar){
6716 // WE ASSUME THE IMPACT PARAMETER DISTRIBUION FOR BACKGROUND(SIDEBANDS) CANDIDATES
6717 // IS NOT CORRELATED TO THE INVARIANT MASSES. THEREFORE WE JUST TAKE ONE TIME
6718 // THE IMPACT PARAMETER AND NOT ONE FOR EACH MASS HYPOTHESIS PASSING THE CUTS
6719
ac4c229c 6720 str="hd0D0";
6721 str.Append(namehist.Data());
6722 str.Append("SB");
d39e8f99 6723 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
ac4c229c 6724
6725 str="hd0D0pt";
6726 str.Append(namehist.Data());
6727 str.Append("_SBMss_pt");
6728 str+=ptbin;
d39e8f99 6729 ((TH1F*)list->FindObject(str.Data()))->Fill(impparxy);
ac4c229c 6730
6731
bf74e6db 6732 if(fReadMC&&vtxTrue){
ac4c229c 6733 str="hd0D0VtxTrue";
6734 str.Append(namehist.Data());
6735 str.Append("SB");
6736 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6737
6738 str="hd0D0VtxTruept";
6739 str.Append(namehist.Data());
6740 str.Append("_SBMss_pt");
6741 str+=ptbin;
6742 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
6743
6744 }
6745
e047b348 6746 if(fReadMC&&aodDMC!=0x0){
ac4c229c 6747 str="hMCd0D0";
6748 str.Append(namehist.Data());
6749 str.Append("SB");
6750 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6751
6752 str="hMCd0D0pt";
6753 str.Append(namehist.Data());
6754 str.Append("_SBMss_pt");
6755 str+=ptbin;
6756 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
6757 }
6758
6759 }
624c07ab 6760
6761 return kTRUE;
6762}
6763
ac4c229c 6764
e047b348 6765 void AliAnalysisTaskSECharmFraction::FillHistoMCproperties(TClonesArray *arrayMC){
6766 //#############################################################
6767 // HERE LOOK AT global properties of D0 mesons, c quarks and B
6768 //
6769 //#############################################################
6770 Double_t pxyzMum[3],pxyzDaught[3],cosOpenAngle=-1.1,ptmum,ptdaught;
6771 Int_t ncdaught=0,cquarksMC=0,nD0all=0,nD0FromB=0,nBdaught=0,nD0bquark=0,nD0bMeson=0,nD0bBaryon=0;
6772 for (Int_t iPart=0; iPart<arrayMC->GetEntriesFast(); iPart++) {
6773 AliAODMCParticle* mcPart = dynamic_cast<AliAODMCParticle*>(arrayMC->At(iPart));
6774 if (!mcPart) {
6775 AliWarning("Particle not found in tree, skipping");
6776 continue;
6777 }
6778 if (TMath::Abs(mcPart->GetPdgCode()) == 4){
6779 cquarksMC++;
6780 mcPart->PxPyPz(pxyzMum);
6781 ptmum=mcPart->Pt();
6782
6783 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllPt"))->Fill(ptmum);
6784 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllEta"))->Fill(mcPart->Eta());
6785 ((TH1F*)flistMCproperties->FindObject("hMCcquarkAllEnergy"))->Fill(mcPart->E());
6786 //NOW LOOK FOR A D0 among cquark daughters
6787 ncdaught=mcPart->GetDaughter(1)-mcPart->GetDaughter(0)+1;
6788 ((TH1F*)flistMCproperties->FindObject("hMCcquarkNdaught"))->Fill(ncdaught);
6789 if(ncdaught>1){
6790 for(Int_t iDaught=mcPart->GetDaughter(0);iDaught<mcPart->GetDaughter(1);iDaught++){
6791 AliAODMCParticle* mcPartD0 = dynamic_cast<AliAODMCParticle*>(arrayMC->At(iDaught));
d39e8f99 6792 if(mcPartD0==0x0)continue;
e047b348 6793 if(TMath::Abs(mcPartD0->GetPdgCode()) == 421){
6794 // a D0 coming from a c quark
6795 mcPartD0->PxPyPz(pxyzDaught);
6796 ptdaught=mcPartD0->Pt();
6797 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcPt"))->Fill(ptdaught);
6798 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcEta"))->Fill(mcPartD0->Eta());
6799 ((TH1F*)flistMCproperties->FindObject("hMCD0fromcEnergy"))->Fill(mcPartD0->E());
6800 // ##############################################################################################
6801 // Compare D0 momentum and c quarks:
6802 // NB: here ALL D0 are considered, also those not decaying in KPi !!!
6803 // ##############################################################################################
6804 ((TH2F*)flistMCproperties->FindObject("hMCD0VscquarkPt"))->Fill(mcPart->Pt(),mcPartD0->Pt());
6805 ((TH2F*)flistMCproperties->FindObject("hMCD0VscquarkEnergy"))->Fill(mcPart->E(),mcPartD0->E());
6806 ((TH1F*)flistMCproperties->FindObject("hMCD0deltacquarkEnergy"))->Fill(mcPartD0->E()/mcPart->E());
6807 ((TH1F*)flistMCproperties->FindObject("hMCD0EnergyVsAvcquarkDaughtEn"))->Fill((mcPartD0->E()-(mcPart->E()/ncdaught))/mcPart->E());
6808 //calculate open angle
6809 if((pxyzMum[0]!=0.||pxyzMum[1]!=0.||pxyzMum[2]!=0.)&&(pxyzDaught[0]!=0.||pxyzDaught[1]!=0.||pxyzDaught[2]!=0.))cosOpenAngle=(pxyzDaught[0]*pxyzMum[0]+pxyzDaught[1]*pxyzMum[1]+pxyzDaught[2]*pxyzMum[2])/(TMath::Sqrt(pxyzDaught[0]*pxyzDaught[0]+pxyzDaught[1]*pxyzDaught[1]+pxyzDaught[2]*pxyzDaught[2])*TMath::Sqrt(pxyzDaught[0]*pxyzDaught[0]+pxyzDaught[1]*pxyzDaught[1]+pxyzDaught[2]*pxyzDaught[2]));
6810 ((TH1F*)flistMCproperties->FindObject("hMCD0cquarkAngle"))->Fill(cosOpenAngle);
6811 ((TH2F*)flistMCproperties->FindObject("hMCD0cquarkAngleEnergy"))->Fill(mcPart->E(),cosOpenAngle);
6812 }
6813 }
6814 }
6815 }
6816
6817 // NOW LOOK FOR D0 not coming from cquarks
6818 if (TMath::Abs(mcPart->GetPdgCode()) == 421){
6819 nD0all++;
6820 if(mcPart->GetMother()<0)continue;
6821 AliAODMCParticle* mcD0Parent = dynamic_cast<AliAODMCParticle*>(arrayMC->At(mcPart->GetMother()));
3e78b6f0 6822 if(!mcD0Parent)continue;
e047b348 6823 Bool_t notfound=kFALSE,bMeson=kFALSE,bBaryon=kFALSE;
6824 //CheckOrigin
6825 while(TMath::Abs(mcD0Parent->GetPdgCode())!=4&&TMath::Abs(mcD0Parent->GetPdgCode())!=5){
6826 if(500<TMath::Abs(mcD0Parent->GetPdgCode())%10000&&TMath::Abs(mcD0Parent->GetPdgCode())<600){
6827 bMeson=kTRUE;
6828 break;
6829 }
6830 else if (5000<TMath::Abs(mcD0Parent->GetPdgCode())&&TMath::Abs(mcD0Parent->GetPdgCode())<6000){
6831 bBaryon=kTRUE;
6832 break;
6833 }
6834 if(mcD0Parent->GetMother()<0){
6835 notfound=kTRUE;
6836 break;
6837 }
6838 mcD0Parent=dynamic_cast<AliAODMCParticle*>(arrayMC->At(mcD0Parent->GetMother()));
3e78b6f0 6839 if(!mcD0Parent){
6840 notfound=kTRUE;
6841 break;
6842 }
e047b348 6843 }
6844 if(notfound)continue;
6845 if(TMath::Abs(mcD0Parent->GetPdgCode())==4)continue;//D0 from c quarks already counted
6846 ((TH1F*)flistMCproperties->FindObject("hMCfromBpdgB"))->Fill(TMath::Abs(mcD0Parent->GetPdgCode()));
6847 if(bBaryon)nD0bBaryon++;
6848 else if(bMeson)nD0bMeson++;
6849 else nD0bquark++;
6850 nD0FromB++;
6851 mcD0Parent->PxPyPz(pxyzMum);
6852 ptmum=mcD0Parent->Pt();
6853 ((TH1F*)flistMCproperties->FindObject("hMCBhadrPt"))->Fill(ptmum);
6854 ((TH1F*)flistMCproperties->FindObject("hMCBhadrEta"))->Fill(mcD0Parent->Eta());
6855 ((TH1F*)flistMCproperties->FindObject("hMCBhadrEnergy"))->Fill(mcD0Parent->E());
6856
6857 nBdaught=mcD0Parent->GetDaughter(1)-mcD0Parent->GetDaughter(0)+1;
6858 ((TH1F*)flistMCproperties->FindObject("hMCBhadrNdaught"))->Fill(nBdaught);
6859
6860
6861 // Now take properties of this D0 coming from a B
6862 mcPart->PxPyPz(pxyzDaught);
6863 ptdaught=mcPart->Pt();
6864 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBPt"))->Fill(ptdaught);
6865 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBEta"))->Fill(mcPart->Eta());
6866 ((TH1F*)flistMCproperties->FindObject("hMCD0fromBEnergy"))->Fill(mcPart->E());
6867 // ##############################################################################################
6868 // Compare D0 momentum and b hadron:
6869 // NB: here ALL D0 are considered, also those not decaying in KPi !!!
6870 // ##############################################################################################
6871 ((TH2F*)flistMCproperties->FindObject("hMCD0VsBhadrPt"))->Fill(mcD0Parent->Pt(),mcPart->Pt());
6872 ((TH2F*)flistMCproperties->FindObject("hMCD0VsBhadrEnergy"))->Fill(mcD0Parent->E(),mcPart->E());
6873 ((TH1F*)flistMCproperties->FindObject("hMCD0deltaBhadrEnergy"))->Fill(mcPart->E()/mcD0Parent->E());
6874 ((TH1F*)flistMCproperties->FindObject("hMCD0EnergyVsAvBDaughtEn"))->Fill((mcPart->E()-(mcD0Parent->E()/nBdaught))/mcD0Parent->E());
6875 //calculate open angle
6876 if((pxyzMum[0]!=0.||pxyzMum[1]!=0.||pxyzMum[2]!=0.)&&(pxyzDaught[0]!=0.||pxyzDaught[1]!=0.||pxyzDaught[2]!=0.))cosOpenAngle=(pxyzDaught[0]*pxyzMum[0]+pxyzDaught[1]*pxyzMum[1]+pxyzDaught[2]*pxyzMum[2])/(TMath::Sqrt(pxyzDaught[0]*pxyzDaught[0]+pxyzDaught[1]*pxyzDaught[1]+pxyzDaught[2]*pxyzDaught[2])*TMath::Sqrt(pxyzDaught[0]*pxyzDaught[0]+pxyzDaught[1]*pxyzDaught[1]+pxyzDaught[2]*pxyzDaught[2]));
6877 ((TH1F*)flistMCproperties->FindObject("hMCD0BhadrAngle"))->Fill(cosOpenAngle);
6878 ((TH2F*)flistMCproperties->FindObject("hMCD0BhadrAngleEnergy"))->Fill(mcPart->E(),cosOpenAngle);
6879 }
6880 }
6881 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(1,cquarksMC);
6882 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(2,nD0all);
6883 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(3,nD0FromB);
6884 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(4,nD0bMeson);
6885 ((TH1F*)flistMCproperties->FindObject("hMCPartFound"))->Fill(5,nD0bBaryon);
6886
6887 }
6888
6889
6890void AliAnalysisTaskSECharmFraction::SetPtBins(Int_t nbins,const Float_t *ptbins){
6891 if((fptbins)!=0x0)delete fptbins;
6892 fnbins=nbins;fptbins=new Float_t[fnbins];
6893 memcpy(fptbins,ptbins,fnbins*sizeof(Float_t));
ac4c229c 6894 return;
6895}
6896
6897void AliAnalysisTaskSECharmFraction::SetStandardMassSelection(){
6898 //SET THE DEFAULT VALUES FOR INVARIANT MASS SELECTION
e047b348 6899
6900 /*HERE DEFAULT
6901 SetSignalInvMassCut();
6902 SetLargeInvMassCut();
6903 SetSideBandInvMassCut();
6904 SetSideBandInvMassWindow();
6905 */
6906
6907 // HERE FOR SEARCH FOR SIGNAL
ac4c229c 6908 SetSignalInvMassCut();
6909 SetLargeInvMassCut();
6910 SetSideBandInvMassCut();
6911 SetSideBandInvMassWindow();
6912 return;
e047b348 6913}
6914
6915Bool_t AliAnalysisTaskSECharmFraction::SpecialSelD0(AliAODRecoDecayHF2Prong *d,Int_t &nusedforVtx){
6916
6917 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
6918 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
6919 nusedforVtx=0;
6920 if(trk0->GetUsedForPrimVtxFit())nusedforVtx++;
6921 if(trk1->GetUsedForPrimVtxFit())nusedforVtx++;
6922 if(nusedforVtx>fNtrMaxforVtx)return kFALSE;
6923
6924 if(TMath::Abs(d->Getd0Prong(1)) < -99999. ||
6925 TMath::Abs(d->Getd0Prong(0)) < -99999.) return kFALSE;
6926
6927 return kTRUE;
6928}
6929
6930
6931
6932AliAODVertex* AliAnalysisTaskSECharmFraction::GetPrimaryVtxSkipped(AliAODEvent *aodev,AliAODRecoDecayHF2Prong *d){
6933 //Calculate the primary vertex w/o the daughter tracks of the candidate
6934
6935 AliESDVertex *vertexESD=0x0;
6936 AliAODVertex *vertexAOD=0x0;
6937 AliVertexerTracks *vertexer = new AliVertexerTracks(aodev->GetMagneticField());
6938
6939 Int_t skipped[2];
6940 Int_t nTrksToSkip=2;
6941 AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(0);
6942 skipped[0]=dgTrack->GetID();
6943 dgTrack = (AliAODTrack*)d->GetDaughter(1);
6944 skipped[1]=dgTrack->GetID();
6945
6946
6947 //
6948 vertexer->SetSkipTracks(nTrksToSkip,skipped);
6949 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(aodev);
6950 vertexer->SetMinClusters(4);
6951 if(!vertexESD) return vertexAOD;
6952 if(vertexESD->GetNContributors()<=0) {
6953 AliDebug(2,"vertexing failed");
6954 delete vertexESD; vertexESD=NULL;
6955 return vertexAOD;
ac4c229c 6956 }
e047b348 6957
6958 delete vertexer; vertexer=NULL;
6959
6960
6961 // convert to AliAODVertex
6962 Double_t pos[3],cov[6],chi2perNDF;
6963 vertexESD->GetXYZ(pos); // position
6964 vertexESD->GetCovMatrix(cov); //covariance matrix
6965 chi2perNDF = vertexESD->GetChi2toNDF();
6966 delete vertexESD; vertexESD=NULL;
6967
6968 vertexAOD = new AliAODVertex(pos,cov,chi2perNDF);
6969 return vertexAOD;
6970
6971}
ac4c229c 6972
6973
624c07ab 6974void AliAnalysisTaskSECharmFraction::Terminate(const Option_t*){
6975 //TERMINATE METHOD: NOTHING TO DO
6976
6977
6978}