]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/AliAnalysisTaskSECharmFraction.cxx
Use AliAnalysisTaskSE::AODEvent() to read the AOD that has just been produced by...
[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
16/////////////////////////////////////////////////////////////
17//
18// Class AliAnalysisTaskSECharmFraction
19// AliAnalysisTaskSE for the extraction of the fraction of prompt charm
20// using the charm hadron impact parameter to the primary vertex
21//
22// Author: Andrea Rossi, andrea.rossi@ts.infn.it
23/////////////////////////////////////////////////////////////
24
ac4c229c 25
624c07ab 26#include <TH1F.h>
27#include <TH2F.h>
624c07ab 28#include <TDatabasePDG.h>
29#include <TMath.h>
30#include <TROOT.h>
624c07ab 31#include "AliAODEvent.h"
624c07ab 32#include "AliAODRecoDecayHF2Prong.h"
33#include "AliAODRecoDecayHF.h"
34#include "AliAODRecoDecay.h"
35#include "AliAODTrack.h"
36#include "AliAODVertex.h"
37#include "AliAODMCParticle.h"
38#include "AliAODMCHeader.h"
ac4c229c 39#include "AliAnalysisVertexingHF.h"
624c07ab 40#include "AliAnalysisTaskSECharmFraction.h"
41
ac4c229c 42
43class TCanvas;
44class TTree;
45class TChain;
46class AliAODInputHandler;
47class AliAnalysisManager;
48class AliAnalysisTaskSE;
49
50
624c07ab 51ClassImp(AliAnalysisTaskSECharmFraction)
52
53//________________________________________________________________________
54 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction()
55 : AliAnalysisTaskSE(),
56 fVHFloose(0),
57 fVHFtight(0),
58 fmD0PDG(),
59 fnbins(),
60 fptbins(0),
c387e585 61 fAcceptanceCuts(),
624c07ab 62 fsignalInvMassCut(),
63 flargeInvMassCut(),
64 fsidebandInvMassCut(),
65 fsidebandInvMassWindow(),
66 fUseMC(kTRUE),
67 fNentries(0),
68 fSignalType(0),
69 fSignalTypeLsCuts(0),
70 fSignalTypeTghCuts(0),
ac4c229c 71 flistNoCutsSignal(0),
72 flistNoCutsBack(0),
73 flistNoCutsFromB(0),
74 flistNoCutsFromDstar(0),
75 flistNoCutsOther(0),
76 flistLsCutsSignal(0),
77 flistLsCutsBack(0),
78 flistLsCutsFromB(0),
79 flistLsCutsFromDstar(0),
80 flistLsCutsOther(0),
81 flistTghCutsSignal(0),
82 flistTghCutsBack(0),
83 flistTghCutsFromB(0),
84 flistTghCutsFromDstar(0),
85 flistTghCutsOther(0)
624c07ab 86
87{
88 //Default constructor
89}
90//________________________________________________________________________
91 AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name)
92 : AliAnalysisTaskSE(name),
93 fVHFloose(0),
94 fVHFtight(0),
95 fmD0PDG(),
96 fnbins(),
97 fptbins(0),
c387e585 98 fAcceptanceCuts(),
624c07ab 99 fsignalInvMassCut(),
100 flargeInvMassCut(),
101 fsidebandInvMassCut(),
102 fsidebandInvMassWindow(),
103 fUseMC(kTRUE),
104 fNentries(0),
105 fSignalType(0),
106 fSignalTypeLsCuts(0),
107 fSignalTypeTghCuts(0),
ac4c229c 108 flistNoCutsSignal(0),
109 flistNoCutsBack(0),
110 flistNoCutsFromB(0),
111 flistNoCutsFromDstar(0),
112 flistNoCutsOther(0),
113 flistLsCutsSignal(0),
114 flistLsCutsBack(0),
115 flistLsCutsFromB(0),
116 flistLsCutsFromDstar(0),
117 flistLsCutsOther(0),
118 flistTghCutsSignal(0),
119 flistTghCutsBack(0),
120 flistTghCutsFromB(0),
121 flistTghCutsFromDstar(0),
122 flistTghCutsOther(0)
624c07ab 123
124{
125 // Constructor
126
127 // Define input and output slots here
128 // Input slot #0 works with a TChain
129 // Output slot #0 writes into a TH1 container
130
131 //Standard pt bin
132 fnbins=4;
133 fptbins=new Double_t[fnbins+1];
134 fptbins[0]=0.;
135 fptbins[1]=1.;
136 fptbins[2]=3.;
137 fptbins[3]=5.;
138 fptbins[4]=1000.;
c387e585 139 //fAcceptanceCuts=new Double_t[3];
ac4c229c 140 SetAcceptanceCut();
624c07ab 141 SetStandardMassSelection();
142 DefineOutput(1, TH1F::Class());
143 DefineOutput(2, TH1F::Class());
144 DefineOutput(3, TH1F::Class());
145 DefineOutput(4, TH1F::Class());
146 for(Int_t j=5;j<20;j++){
147 DefineOutput(j, TList::Class());
148 }
149
150
151}
152
153
154AliAnalysisTaskSECharmFraction::AliAnalysisTaskSECharmFraction(const char *name,Int_t nptbins,Double_t *ptbins)
155 : AliAnalysisTaskSE(name),
156 fVHFloose(0),
157 fVHFtight(0),
158 fmD0PDG(),
159 fnbins(),
160 fptbins(0),
c387e585 161 fAcceptanceCuts(),
624c07ab 162 fsignalInvMassCut(),
163 flargeInvMassCut(),
164 fsidebandInvMassCut(),
165 fsidebandInvMassWindow(),
166 fUseMC(kTRUE),
167 fNentries(0),
168 fSignalType(0),
169 fSignalTypeLsCuts(0),
170 fSignalTypeTghCuts(0),
ac4c229c 171 flistNoCutsSignal(0),
172 flistNoCutsBack(0),
173 flistNoCutsFromB(0),
174 flistNoCutsFromDstar(0),
175 flistNoCutsOther(0),
176 flistLsCutsSignal(0),
177 flistLsCutsBack(0),
178 flistLsCutsFromB(0),
179 flistLsCutsFromDstar(0),
180 flistLsCutsOther(0),
181 flistTghCutsSignal(0),
182 flistTghCutsBack(0),
183 flistTghCutsFromB(0),
184 flistTghCutsFromDstar(0),
185 flistTghCutsOther(0)
624c07ab 186{
187 // Constructor
188 // ptbins must be of dimension nptbins +1
189
190 SetNPtBins(nptbins,ptbins);
191 SetStandardMassSelection();
c387e585 192 // fAcceptanceCuts=new Double_t[3];
ac4c229c 193 SetAcceptanceCut();
624c07ab 194 // Define input and output slots here
195
196 // Output slot #0 writes into a TH1 container
197 DefineOutput(1, TH1F::Class());
198 DefineOutput(2, TH1F::Class());
199 DefineOutput(3, TH1F::Class());
200 DefineOutput(4, TH1F::Class());
201 for(Int_t j=5;j<20;j++){
202
203 DefineOutput(j, TList::Class());
204 }
205
206
207}
208
209//________________________________________________________________________
210AliAnalysisTaskSECharmFraction::~AliAnalysisTaskSECharmFraction()
211{ //Destructor
212
213 if (fVHFtight) {
214 delete fVHFtight;
215 fVHFtight = 0;
216 }
217 if (fVHFloose) {
218 delete fVHFloose;
219 fVHFloose = 0;
220 }
ac4c229c 221 if(fptbins){
222 delete fptbins;
223 fptbins =0;
224 }
c387e585 225 /* if(fAcceptanceCuts){
ac4c229c 226 delete fAcceptanceCuts;
227 fAcceptanceCuts=0;
c387e585 228 }*/
624c07ab 229 if (fNentries) {
230 delete fNentries;
231 fNentries = 0;
232 }
233 if (fSignalType) {
234 delete fSignalType;
235 fSignalType = 0;
236 }
237 if (fSignalTypeLsCuts) {
238 delete fSignalTypeLsCuts;
239 fSignalTypeLsCuts = 0;
240 }
241 if (fSignalTypeTghCuts) {
242 delete fSignalTypeTghCuts;
243 fSignalTypeTghCuts = 0;
244 }
ac4c229c 245 if(flistNoCutsSignal){
246 delete flistNoCutsSignal;
247 flistNoCutsSignal=0;
624c07ab 248 }
ac4c229c 249 if(flistNoCutsBack){
250 delete flistNoCutsBack;
251 flistNoCutsBack=0;
624c07ab 252 }
ac4c229c 253 if(flistNoCutsFromB){
254 delete flistNoCutsFromB;
255 flistNoCutsFromB=0;
624c07ab 256 }
ac4c229c 257 if(flistNoCutsFromDstar){
258 delete flistNoCutsFromDstar;
259 flistNoCutsFromDstar=0;
624c07ab 260 }
ac4c229c 261 if(flistNoCutsOther){
262 delete flistNoCutsOther;
263 flistNoCutsOther=0;
624c07ab 264 }
265
ac4c229c 266 if(flistLsCutsSignal){
267 delete flistLsCutsSignal;
268 flistLsCutsSignal=0;
624c07ab 269 }
ac4c229c 270 if(flistLsCutsBack){
271 delete flistLsCutsBack;
272 flistLsCutsBack=0;
624c07ab 273 }
ac4c229c 274 if(flistLsCutsFromB){
275 delete flistLsCutsFromB;
276 flistLsCutsFromB=0;
624c07ab 277 }
ac4c229c 278 if(flistLsCutsFromDstar){
279 delete flistLsCutsFromDstar;
280 flistLsCutsFromDstar=0;
624c07ab 281 }
ac4c229c 282 if(flistLsCutsOther){
283 delete flistLsCutsOther;
284 flistLsCutsOther=0;
624c07ab 285 }
286
ac4c229c 287 if(flistTghCutsSignal){
288 delete flistTghCutsSignal;
289 flistTghCutsSignal=0;
624c07ab 290 }
ac4c229c 291 if(flistTghCutsBack){
292 delete flistTghCutsBack;
293 flistTghCutsBack=0;
624c07ab 294 }
ac4c229c 295 if(flistTghCutsFromB){
296 delete flistTghCutsFromB;
297 flistTghCutsFromB=0;
624c07ab 298 }
ac4c229c 299 if(flistTghCutsFromDstar){
300 delete flistTghCutsFromDstar;
301 flistTghCutsFromDstar=0;
624c07ab 302 }
ac4c229c 303 if(flistTghCutsOther){
304 delete flistTghCutsOther;
305 flistTghCutsOther=0;
624c07ab 306 }
307
308
309}
310
311
312//________________________________________________________________________
313void AliAnalysisTaskSECharmFraction::Init()
314{
315 // Initialization
316
317 if(fDebug > 1) printf("AnalysisTaskSED0Mass::Init() \n");
318 fmD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
319
320 gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/ConfigVertexingHF.C");
321
322 // 2 sets of dedidcated cuts -- defined in UserExec
323 // the config file and the way the cuts are set is for further development
324 // (to be interfaced with AliAnalsysTaskSETuneCuts)
325
326 fVHFtight = (AliAnalysisVertexingHF*)gROOT->ProcessLine("ConfigVertexingHF()");
327 fVHFloose = (AliAnalysisVertexingHF*)gROOT->ProcessLine("ConfigVertexingHF()");
328 if(!fptbins){
329 //SET STANDARD PT BINNING
330 fnbins=4;
331 fptbins=new Double_t[fnbins+1];
332 fptbins[0]=0.;
333 fptbins[1]=1.;
334 fptbins[2]=3.;
335 fptbins[3]=5.;
336 fptbins[4]=1000.;
337 }
338 return;
339}
340
341//________________________________________________________________________
342void AliAnalysisTaskSECharmFraction::UserCreateOutputObjects()
343{
344 // Create histograms
345 // Called once
c387e585 346
347 // ################ NAMING SCHEME ###################################
348 // LISTS NAMING SCHEME
349 // "list" + cut selection string + MC selection string
350 // cut strings: "NC" =nocuts, "LSC"= loose cuts, "TGHC"= tight cuts
351 // MC sel. strings: "sign"= D0 from c quark
352 // "fromDstar" = D0 from Dstar from c quark
353 // "fromB"= D0from B decay (->from b quark) + D0from Dstar from B
354 // "back"= backgroun, generic except the cas "other"
355 // "other"= background case for candidates made of a pion and a kaon coming from the same D0 (in 4 prong) or from D+
356 //
357 // HISTS NAMING SCHEME
358 //
359 // "h" + specific name + cut selection string + MC selection string + (InvMass region string) + (pt string)
360 //
361 // cut selection strings = those for lists
362 // MC selection strings = those for lists
363 // inv mass region strings : "PM" or "SB" for global properties and pt integrated histos
364 // "_PkMss" or "_SBMss" for impact par. pt dependent histos
365 // pt string : "_pt" + integer number of ptbin
366 //
367 //###################################################################
624c07ab 368
369 TString namehist;
370 TString titlehist;
371 TString strnamept,strtitlept;
372
373 fNentries=new TH1F("nentriesChFr", "Look at the number of entries! = number of AODs", 2,1.,2.);
374 fSignalType=new TH1F("hsignaltype", "Histo for type of MC signal", 21,-1.,20.);
375 fSignalTypeLsCuts=new TH1F("hsignaltypeLsCuts", "Histo for type of MC signal with loose cuts", 21,-1.,20.);
376 fSignalTypeTghCuts=new TH1F("hsignaltypeTghCuts", "Histo for type of MC signal with tight cuts", 21,-1.,20.);
377
378 //########## DEFINE THE TLISTS ##################
379
ac4c229c 380 flistNoCutsSignal = new TList();
381 flistNoCutsSignal->SetOwner();
382 flistNoCutsSignal->SetName("listNCsign");
624c07ab 383
ac4c229c 384 flistNoCutsBack = new TList();
385 flistNoCutsBack->SetOwner();
386 flistNoCutsBack->SetName("listNCback");
624c07ab 387
ac4c229c 388 flistNoCutsFromB = new TList();
389 flistNoCutsFromB->SetOwner();
390 flistNoCutsFromB->SetName("listNCfromB");
624c07ab 391
ac4c229c 392 flistNoCutsFromDstar = new TList();
393 flistNoCutsFromDstar->SetOwner();
394 flistNoCutsFromDstar->SetName("listNCfromDstar");
624c07ab 395
ac4c229c 396 flistNoCutsOther = new TList();
397 flistNoCutsOther->SetOwner();
398 flistNoCutsOther->SetName("listNCother");
624c07ab 399
400
ac4c229c 401 flistLsCutsSignal = new TList();
402 flistLsCutsSignal->SetOwner();
403 flistLsCutsSignal->SetName("listLSCsign");
624c07ab 404
ac4c229c 405 flistLsCutsBack = new TList();
406 flistLsCutsBack->SetOwner();
407 flistLsCutsBack->SetName("listLSCback");
624c07ab 408
ac4c229c 409 flistLsCutsFromB = new TList();
410 flistLsCutsFromB->SetOwner();
411 flistLsCutsFromB->SetName("listLSCfromB");
624c07ab 412
ac4c229c 413 flistLsCutsFromDstar = new TList();
414 flistLsCutsFromDstar->SetOwner();
415 flistLsCutsFromDstar->SetName("listLSCfromDstar");
624c07ab 416
ac4c229c 417 flistLsCutsOther = new TList();
418 flistLsCutsOther->SetOwner();
419 flistLsCutsOther->SetName("listLSCother");
624c07ab 420
421
ac4c229c 422 flistTghCutsSignal = new TList();
423 flistTghCutsSignal->SetOwner();
424 flistTghCutsSignal->SetName("listTGHCsign");
624c07ab 425
ac4c229c 426 flistTghCutsBack = new TList();
427 flistTghCutsBack->SetOwner();
428 flistTghCutsBack->SetName("listTGHCback");
624c07ab 429
ac4c229c 430 flistTghCutsFromB = new TList();
431 flistTghCutsFromB->SetOwner();
432 flistTghCutsFromB->SetName("listTGHCfromB");
624c07ab 433
ac4c229c 434 flistTghCutsFromDstar = new TList();
435 flistTghCutsFromDstar->SetOwner();
436 flistTghCutsFromDstar->SetName("listTGHCfromDstar");
624c07ab 437
ac4c229c 438 flistTghCutsOther = new TList();
439 flistTghCutsOther->SetOwner();
440 flistTghCutsOther->SetName("listTGHCother");
624c07ab 441
442
443
444
445 //################################################################################################
446 // #
447 // HISTOS FOR NO CUTS CASE #
448 // #
449 //################################################################################################
450
451
452 //############ NO CUTS SIGNAL HISTOGRAMS ###############
453 //
454 // ####### global properties histo ############
455
ac4c229c 456 TH2F *hCPtaVSd0d0NCsign=new TH2F("hCPtaVSd0d0NCsign","hCPtaVSd0d0_NoCuts_Signal",1000,-100000.,100000.,100,0.,1.);
457 TH1F *hSecVtxZNCsign=new TH1F("hSecVtxZNCsign","hSecVtxZ_NoCuts_Signal",1000,-8.,8.);
458 TH1F *hSecVtxXNCsign=new TH1F("hSecVtxXNCsign","hSecVtxX_NoCuts_Signal",1000,-3000.,3000.);
459 TH1F *hSecVtxYNCsign=new TH1F("hSecVtxYNCsign","hSecVtxY_NoCuts_Signal",1000,-3000.,3000.);
460 TH2F *hSecVtxXYNCsign=new TH2F("hSecVtxXYNCsign","hSecVtxXY_NoCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
461 TH1F *hSecVtxPhiNCsign=new TH1F("hSecVtxPhiNCsign","hSecVtxPhi_NoCuts_Signal",180,-180.1,180.1);
462 TH1F *hCPtaNCsign=new TH1F("hCPtaNCsign","hCPta_NoCuts_Signal",100,0.,1.);
463 TH1F *hd0xd0NCsign=new TH1F("hd0xd0NCsign","hd0xd0_NoCuts_Signal",1000,-100000.,100000.);
464 TH1F *hMassTrueNCsign=new TH1F("hMassTrueNCsign","D^{0} MC inv. Mass No Cuts Signal(All momenta)",600,1.600,2.200);
465 TH1F *hMassNCsign=new TH1F("hMassNCsign","D^{0} inv. Mass No Cuts Signal (All momenta)",600,1.600,2.200);
466 hMassNCsign->Sumw2();
467 TH1F *hMassTrueNCsignPM=new TH1F("hMassTrueNCsignPM","D^{0} MC inv. Mass No Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
468 TH1F *hMassNCsignPM=new TH1F("hMassNCsignPM","D^{0} inv. Mass No Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
469 hMassNCsignPM->Sumw2();
470
471 TH1F *hMassTrueNCsignSB=new TH1F("hMassTrueNCsignSB","D^{0} MC inv. Mass in Side Bands No Cuts Signal(All momenta)",600,1.600,2.200);
472 TH1F *hMassNCsignSB=new TH1F("hMassNCsignSB","D^{0} inv. Mass in Side Bands No Cuts Signal (All momenta)",600,1.600,2.200);
473 hMassNCsignSB->Sumw2();
474
475 flistNoCutsSignal->Add(hCPtaVSd0d0NCsign);
476 flistNoCutsSignal->Add(hSecVtxZNCsign);
477 flistNoCutsSignal->Add(hSecVtxYNCsign);
478 flistNoCutsSignal->Add(hSecVtxXNCsign);
479 flistNoCutsSignal->Add(hSecVtxXYNCsign);
480 flistNoCutsSignal->Add(hSecVtxPhiNCsign);
481 flistNoCutsSignal->Add(hCPtaNCsign);
482 flistNoCutsSignal->Add(hd0xd0NCsign);
483 flistNoCutsSignal->Add(hMassTrueNCsign);
484 flistNoCutsSignal->Add(hMassNCsign);
485 flistNoCutsSignal->Add(hMassTrueNCsignPM);
486 flistNoCutsSignal->Add(hMassNCsignPM);
487 flistNoCutsSignal->Add(hMassTrueNCsignSB);
488 flistNoCutsSignal->Add(hMassNCsignSB);
624c07ab 489
490 // ####### d0 D0 histos ############
ac4c229c 491 TH1F *hd0D0NCsignPM = new TH1F("hd0D0NCsignPM","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
492 hd0D0NCsignPM->SetXTitle("Impact parameter [#mum]");
493 hd0D0NCsignPM->SetYTitle("Entries");
494
495 TH1F *hd0D0VtxTrueNCsignPM = new TH1F("hd0D0VtxTrueNCsignPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
496 hd0D0VtxTrueNCsignPM->SetXTitle("Impact parameter [#mum]");
497 hd0D0VtxTrueNCsignPM->SetYTitle("Entries");
498
499 TH1F *hMCd0D0NCsignPM = new TH1F("hMCd0D0NCsignPM","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
500 hMCd0D0NCsignPM->SetXTitle("MC Impact parameter [#mum]");
501 hMCd0D0NCsignPM->SetYTitle("Entries");
502
503 TH1F *hd0D0NCsignSB = new TH1F("hd0D0NCsignSB","D^{0} impact par. plot , No Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
504 hd0D0NCsignSB->SetXTitle("Impact parameter [#mum]");
505 hd0D0NCsignSB->SetYTitle("Entries");
506
507 TH1F *hd0D0VtxTrueNCsignSB = new TH1F("hd0D0VtxTrueNCsignSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
508 hd0D0VtxTrueNCsignSB->SetXTitle("Impact parameter [#mum]");
509 hd0D0VtxTrueNCsignSB->SetYTitle("Entries");
510
511 TH1F *hMCd0D0NCsignSB = new TH1F("hMCd0D0NCsignSB","D^{0} impact par. plot, No Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
512 hMCd0D0NCsignSB->SetXTitle("MC Impact parameter [#mum]");
513 hMCd0D0NCsignSB->SetYTitle("Entries");
514
515 flistNoCutsSignal->Add(hd0D0NCsignPM);
516 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignPM);
517 flistNoCutsSignal->Add(hMCd0D0NCsignPM);
518 flistNoCutsSignal->Add(hd0D0NCsignSB);
519 flistNoCutsSignal->Add(hd0D0VtxTrueNCsignSB);
520 flistNoCutsSignal->Add(hMCd0D0NCsignSB);
521
522 TH1F **hd0D0ptNCsignPM=new TH1F*[fnbins];
523 TH1F **hMCd0D0ptNCsignPM=new TH1F*[fnbins];
524 TH1F ** hd0D0VtxTrueptNCsignPM=new TH1F*[fnbins];
525 TH1F **hd0D0ptNCsignSB=new TH1F*[fnbins];
526 TH1F **hMCd0D0ptNCsignSB=new TH1F*[fnbins];
527 TH1F ** hd0D0VtxTrueptNCsignSB=new TH1F*[fnbins];
528 namehist="hd0D0ptNCsign_";
624c07ab 529 titlehist="D^{0} impact par. plot, No Cuts, Signal, ";
530 for(Int_t i=0;i<fnbins;i++){
531 strnamept=namehist;
532 strnamept.Append("PkMss_pt");
533 strnamept+=i;
534
535 strtitlept=titlehist;
536 strtitlept.Append(" Mass Peak, ");
537 strtitlept+=fptbins[i];
538 strtitlept.Append("<= pt <");
539 strtitlept+=fptbins[i+1];
540 strtitlept.Append(" [GeV/c]");
541
ac4c229c 542 hd0D0ptNCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
543 hd0D0ptNCsignPM[i]->SetXTitle("Impact parameter [#mum] ");
544 hd0D0ptNCsignPM[i]->SetYTitle("Entries");
545 flistNoCutsSignal->Add(hd0D0ptNCsignPM[i]);
624c07ab 546
547 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 548 hMCd0D0ptNCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
549 hMCd0D0ptNCsignPM[i]->SetXTitle("MC Impact parameter [#mum] ");
550 hMCd0D0ptNCsignPM[i]->SetYTitle("Entries");
551 flistNoCutsSignal->Add(hMCd0D0ptNCsignPM[i]);
624c07ab 552
553
554 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 555 hd0D0VtxTrueptNCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
556 hd0D0VtxTrueptNCsignPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
557 hd0D0VtxTrueptNCsignPM[i]->SetYTitle("Entries");
558 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignPM[i]);
624c07ab 559
560 strnamept=namehist;
561 strnamept.Append("SBMss_pt");
562 strnamept+=i;
563
564 strtitlept=titlehist;
565 strtitlept.Append(" Side Bands, ");
566 strtitlept+=fptbins[i];
567 strtitlept.Append("<= pt <");
568 strtitlept+=fptbins[i+1];
569 strtitlept.Append(" [GeV/c]");
570
ac4c229c 571 hd0D0ptNCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
572 hd0D0ptNCsignSB[i]->SetXTitle("Impact parameter [#mum] ");
573 hd0D0ptNCsignSB[i]->SetYTitle("Entries");
574 flistNoCutsSignal->Add(hd0D0ptNCsignSB[i]);
624c07ab 575
576 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 577 hMCd0D0ptNCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
578 hMCd0D0ptNCsignSB[i]->SetXTitle("MC Impact parameter [#mum] ");
579 hMCd0D0ptNCsignSB[i]->SetYTitle("Entries");
580 flistNoCutsSignal->Add(hMCd0D0ptNCsignSB[i]);
624c07ab 581
582 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 583 hd0D0VtxTrueptNCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
584 hd0D0VtxTrueptNCsignSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
585 hd0D0VtxTrueptNCsignSB[i]->SetYTitle("Entries");
586 flistNoCutsSignal->Add(hd0D0VtxTrueptNCsignSB[i]);
624c07ab 587 }
588
589
590 //############ NO CUTS BACKGROUND HISTOGRAMS ###########
591 //
592 // ######## global properties histos #######
ac4c229c 593 TH2F *hCPtaVSd0d0NCback=new TH2F("hCPtaVSd0d0NCback","hCPtaVSd0d0_NoCuts_Background",1000,-100000.,100000.,100,0.,1.);
594 TH1F *hSecVtxZNCback=new TH1F("hSecVtxZNCback","hSecVtxZ_NoCuts_Background",1000,-8.,8.);
595 TH1F *hSecVtxXNCback=new TH1F("hSecVtxXNCback","hSecVtxX_NoCuts_Background",1000,-3000.,3000.);
596 TH1F *hSecVtxYNCback=new TH1F("hSecVtxYNCback","hSecVtxY_NoCuts_Background",1000,-3000.,3000.);
597 TH2F *hSecVtxXYNCback=new TH2F("hSecVtxXYNCback","hSecVtxXY_NoCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
598 TH1F *hSecVtxPhiNCback=new TH1F("hSecVtxPhiNCback","hSecVtxPhi_NoCuts_Background",180,-180.1,180.1);
599 TH1F *hCPtaNCback=new TH1F("hCPtaNCback","hCPta_NoCuts_Background",100,0.,1.);
600 TH1F *hd0xd0NCback=new TH1F("hd0xd0NCback","hd0xd0_NoCuts_Background",1000,-100000.,100000.);
601 TH1F *hMassTrueNCback=new TH1F("hMassTrueNCback","D^{0} MC inv. Mass No Cuts Background(All momenta)",600,1.600,2.200);
602 TH1F *hMassNCback=new TH1F("hMassNCback","D^{0} inv. Mass No Cuts Background (All momenta)",600,1.600,2.200);
603 hMassNCback->Sumw2();
604 TH1F *hMassTrueNCbackPM=new TH1F("hMassTrueNCbackPM","D^{0} MC inv. Mass No Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
605 TH1F *hMassNCbackPM=new TH1F("hMassNCbackPM","D^{0} inv. Mass No Cuts Background (All momenta), MassPeak",600,1.600,2.200);
606 hMassNCbackPM->Sumw2();
607 TH1F *hMassTrueNCbackSB=new TH1F("hMassTrueNCbackSB","D^{0} MC inv. Mass in Side Bands No Cuts Background(All momenta)",600,1.600,2.200);
608 TH1F *hMassNCbackSB=new TH1F("hMassNCbackSB","D^{0} inv. Mass in Side Bands No Cuts Background (All momenta)",600,1.600,2.200);
609 hMassNCbackSB->Sumw2();
610
611 flistNoCutsBack->Add(hCPtaVSd0d0NCback);
612 flistNoCutsBack->Add(hSecVtxZNCback);
613 flistNoCutsBack->Add(hSecVtxYNCback);
614 flistNoCutsBack->Add(hSecVtxXNCback);
615 flistNoCutsBack->Add(hSecVtxXYNCback);
616 flistNoCutsBack->Add(hSecVtxPhiNCback);
617 flistNoCutsBack->Add(hCPtaNCback);
618 flistNoCutsBack->Add(hd0xd0NCback);
619 flistNoCutsBack->Add(hMassTrueNCback);
620 flistNoCutsBack->Add(hMassNCback);
621 flistNoCutsBack->Add(hMassTrueNCbackPM);
622 flistNoCutsBack->Add(hMassNCbackPM);
623 flistNoCutsBack->Add(hMassTrueNCbackSB);
624 flistNoCutsBack->Add(hMassNCbackSB);
624c07ab 625
626
627 // ####### d0 D0 histos ############
628
ac4c229c 629 TH1F *hd0D0NCbackPM = new TH1F("hd0D0NCbackPM","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
630 hd0D0NCbackPM->SetXTitle("Impact parameter [#mum]");
631 hd0D0NCbackPM->SetYTitle("Entries");
632
633 TH1F *hd0D0VtxTrueNCbackPM = new TH1F("hd0D0VtxTrueNCbackPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
634 hd0D0VtxTrueNCbackPM->SetXTitle("Impact parameter [#mum]");
635 hd0D0VtxTrueNCbackPM->SetYTitle("Entries");
636
637 TH1F *hMCd0D0NCbackPM = new TH1F("hMCd0D0NCbackPM","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
638 hMCd0D0NCbackPM->SetXTitle("MC Impact parameter [#mum]");
639 hMCd0D0NCbackPM->SetYTitle("Entries");
640
641 TH1F *hd0D0NCbackSB = new TH1F("hd0D0NCbackSB","D^{0} impact par. plot , No Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
642 hd0D0NCbackSB->SetXTitle("Impact parameter [#mum]");
643 hd0D0NCbackSB->SetYTitle("Entries");
644
645 TH1F *hd0D0VtxTrueNCbackSB = new TH1F("hd0D0VtxTrueNCbackSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
646 hd0D0VtxTrueNCbackSB->SetXTitle("Impact parameter [#mum]");
647 hd0D0VtxTrueNCbackSB->SetYTitle("Entries");
648
649 TH1F *hMCd0D0NCbackSB = new TH1F("hMCd0D0NCbackSB","D^{0} impact par. plot, No Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
650 hMCd0D0NCbackSB->SetXTitle("MC Impact parameter [#mum]");
651 hMCd0D0NCbackSB->SetYTitle("Entries");
652
653 flistNoCutsBack->Add(hd0D0NCbackPM);
654 flistNoCutsBack->Add(hd0D0VtxTrueNCbackPM);
655 flistNoCutsBack->Add(hMCd0D0NCbackPM);
656 flistNoCutsBack->Add(hd0D0NCbackSB);
657 flistNoCutsBack->Add(hd0D0VtxTrueNCbackSB);
658 flistNoCutsBack->Add(hMCd0D0NCbackSB);
659
660 TH1F **hd0D0ptNCbackPM=new TH1F*[fnbins];
661 TH1F **hMCd0D0ptNCbackPM=new TH1F*[fnbins];
662 TH1F ** hd0D0VtxTrueptNCbackPM=new TH1F*[fnbins];
663 TH1F **hd0D0ptNCbackSB=new TH1F*[fnbins];
664 TH1F **hMCd0D0ptNCbackSB=new TH1F*[fnbins];
665 TH1F ** hd0D0VtxTrueptNCbackSB=new TH1F*[fnbins];
666 namehist="hd0D0ptNCback_";
624c07ab 667 titlehist="D^{0} impact par. plot, No Cuts, Background, ";
668 for(Int_t i=0;i<fnbins;i++){
669 strnamept=namehist;
670 strnamept.Append("PkMss_pt");
671 strnamept+=i;
672
673 strtitlept=titlehist;
674 strtitlept.Append(" Mass Peak, ");
675 strtitlept+=fptbins[i];
676 strtitlept.Append("<= pt <");
677 strtitlept+=fptbins[i+1];
678 strtitlept.Append(" [GeV/c]");
679
ac4c229c 680 hd0D0ptNCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
681 hd0D0ptNCbackPM[i]->SetXTitle("Impact parameter [#mum] ");
682 hd0D0ptNCbackPM[i]->SetYTitle("Entries");
683 flistNoCutsBack->Add(hd0D0ptNCbackPM[i]);
624c07ab 684
685 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 686 hMCd0D0ptNCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
687 hMCd0D0ptNCbackPM[i]->SetXTitle("MC Impact parameter [#mum] ");
688 hMCd0D0ptNCbackPM[i]->SetYTitle("Entries");
689 flistNoCutsBack->Add(hMCd0D0ptNCbackPM[i]);
624c07ab 690
691
692 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 693 hd0D0VtxTrueptNCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
694 hd0D0VtxTrueptNCbackPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
695 hd0D0VtxTrueptNCbackPM[i]->SetYTitle("Entries");
696 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackPM[i]);
624c07ab 697
698 strnamept=namehist;
699 strnamept.Append("SBMss_pt");
700 strnamept+=i;
701
702 strtitlept=titlehist;
703 strtitlept.Append(" Side Bands, ");
704 strtitlept+=fptbins[i];
705 strtitlept.Append("<= pt <");
706 strtitlept+=fptbins[i+1];
707 strtitlept.Append(" [GeV/c]");
708
ac4c229c 709 hd0D0ptNCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
710 hd0D0ptNCbackSB[i]->SetXTitle("Impact parameter [#mum] ");
711 hd0D0ptNCbackSB[i]->SetYTitle("Entries");
712 flistNoCutsBack->Add(hd0D0ptNCbackSB[i]);
624c07ab 713
714 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 715 hMCd0D0ptNCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
716 hMCd0D0ptNCbackSB[i]->SetXTitle("MC Impact parameter [#mum] ");
717 hMCd0D0ptNCbackSB[i]->SetYTitle("Entries");
718 flistNoCutsBack->Add(hMCd0D0ptNCbackSB[i]);
624c07ab 719
720 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 721 hd0D0VtxTrueptNCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
722 hd0D0VtxTrueptNCbackSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
723 hd0D0VtxTrueptNCbackSB[i]->SetYTitle("Entries");
724 flistNoCutsBack->Add(hd0D0VtxTrueptNCbackSB[i]);
624c07ab 725 }
726
727
728
729 //############ NO CUTS FROMB HISTOGRAMS ###########
730 //
731 //####### global properties histos
732
ac4c229c 733 TH2F *hCPtaVSd0d0NCfromB=new TH2F("hCPtaVSd0d0NCfromB","hCPtaVSd0d0_NoCuts_FromB",1000,-100000.,100000.,100,0.,1.);
734 TH1F *hSecVtxZNCfromB=new TH1F("hSecVtxZNCfromB","hSecVtxZ_NoCuts_FromB",1000,-8.,8.);
735 TH1F *hSecVtxXNCfromB=new TH1F("hSecVtxXNCfromB","hSecVtxX_NoCuts_FromB",1000,-3000.,3000.);
736 TH1F *hSecVtxYNCfromB=new TH1F("hSecVtxYNCfromB","hSecVtxY_NoCuts_FromB",1000,-3000.,3000.);
737 TH2F *hSecVtxXYNCfromB=new TH2F("hSecVtxXYNCfromB","hSecVtxXY_NoCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
738 TH1F *hSecVtxPhiNCfromB=new TH1F("hSecVtxPhiNCfromB","hSecVtxPhi_NoCuts_FromB",180,-180.1,180.1);
739 TH1F *hCPtaNCfromB=new TH1F("hCPtaNCfromB","hCPta_NoCuts_FromB",100,0.,1.);
740 TH1F *hd0xd0NCfromB=new TH1F("hd0xd0NCfromB","hd0xd0_NoCuts_FromB",1000,-100000.,100000.);
741 TH1F *hMassTrueNCfromB=new TH1F("hMassTrueNCfromB","D^{0} MC inv. Mass No Cuts FromB(All momenta)",600,1.600,2.200);
742 TH1F *hMassNCfromB=new TH1F("hMassNCfromB","D^{0} inv. Mass No Cuts FromB (All momenta)",600,1.600,2.200);
743 hMassNCfromB->Sumw2();
744 TH1F *hMassTrueNCfromBPM=new TH1F("hMassTrueNCfromBPM","D^{0} MC inv. Mass No Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
745 TH1F *hMassNCfromBPM=new TH1F("hMassNCfromBPM","D^{0} inv. Mass No Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
746 hMassNCfromB->Sumw2();
747 TH1F *hMassTrueNCfromBSB=new TH1F("hMassTrueNCfromBSB","D^{0} MC inv. Mass in Side Bands No Cuts FromB(All momenta)",600,1.600,2.200);
748 TH1F *hMassNCfromBSB=new TH1F("hMassNCfromBSB","D^{0} inv. Mass in Side Bands No Cuts FromB (All momenta)",600,1.600,2.200);
749 hMassNCfromBSB->Sumw2();
750
751 flistNoCutsFromB->Add(hCPtaVSd0d0NCfromB);
752 flistNoCutsFromB->Add(hSecVtxZNCfromB);
753 flistNoCutsFromB->Add(hSecVtxYNCfromB);
754 flistNoCutsFromB->Add(hSecVtxXNCfromB);
755 flistNoCutsFromB->Add(hSecVtxXYNCfromB);
756 flistNoCutsFromB->Add(hSecVtxPhiNCfromB);
757 flistNoCutsFromB->Add(hCPtaNCfromB);
758 flistNoCutsFromB->Add(hd0xd0NCfromB);
759 flistNoCutsFromB->Add(hMassTrueNCfromB);
760 flistNoCutsFromB->Add(hMassNCfromB);
761 flistNoCutsFromB->Add(hMassTrueNCfromBPM);
762 flistNoCutsFromB->Add(hMassNCfromBPM);
763 flistNoCutsFromB->Add(hMassTrueNCfromBSB);
764 flistNoCutsFromB->Add(hMassNCfromBSB);
624c07ab 765
766 // ######### d0 D0 histos ##############
ac4c229c 767 TH1F *hd0D0NCfromBPM = new TH1F("hd0D0NCfromBPM","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
768 hd0D0NCfromBPM->SetXTitle("Impact parameter [#mum]");
769 hd0D0NCfromBPM->SetYTitle("Entries");
770
771 TH1F *hd0D0VtxTrueNCfromBPM = new TH1F("hd0D0VtxTrueNCfromBPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
772 hd0D0VtxTrueNCfromBPM->SetXTitle("Impact parameter [#mum]");
773 hd0D0VtxTrueNCfromBPM->SetYTitle("Entries");
774
775 TH1F *hMCd0D0NCfromBPM = new TH1F("hMCd0D0NCfromBPM","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
776 hMCd0D0NCfromBPM->SetXTitle("MC Impact parameter [#mum]");
777 hMCd0D0NCfromBPM->SetYTitle("Entries");
778
779 TH1F *hd0D0NCfromBSB = new TH1F("hd0D0NCfromBSB","D^{0} impact par. plot , No Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
780 hd0D0NCfromBSB->SetXTitle("Impact parameter [#mum]");
781 hd0D0NCfromBSB->SetYTitle("Entries");
782
783 TH1F *hd0D0VtxTrueNCfromBSB = new TH1F("hd0D0VtxTrueNCfromBSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
784 hd0D0VtxTrueNCfromBSB->SetXTitle("Impact parameter [#mum]");
785 hd0D0VtxTrueNCfromBSB->SetYTitle("Entries");
786
787 TH1F *hMCd0D0NCfromBSB = new TH1F("hMCd0D0NCfromBSB","D^{0} impact par. plot, No Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
788 hMCd0D0NCfromBSB->SetXTitle("MC Impact parameter [#mum]");
789 hMCd0D0NCfromBSB->SetYTitle("Entries");
790
791 flistNoCutsFromB->Add(hd0D0NCfromBPM);
792 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBPM);
793 flistNoCutsFromB->Add(hMCd0D0NCfromBPM);
794 flistNoCutsFromB->Add(hd0D0NCfromBSB);
795 flistNoCutsFromB->Add(hd0D0VtxTrueNCfromBSB);
796 flistNoCutsFromB->Add(hMCd0D0NCfromBSB);
797
798 TH1F **hd0D0ptNCfromBPM=new TH1F*[fnbins];
799 TH1F **hMCd0D0ptNCfromBPM=new TH1F*[fnbins];
800 TH1F ** hd0D0VtxTrueptNCfromBPM=new TH1F*[fnbins];
801 TH1F **hd0D0ptNCfromBSB=new TH1F*[fnbins];
802 TH1F **hMCd0D0ptNCfromBSB=new TH1F*[fnbins];
803 TH1F ** hd0D0VtxTrueptNCfromBSB=new TH1F*[fnbins];
804 namehist="hd0D0ptNCfromB_";
624c07ab 805 titlehist="D^{0} impact par. plot, No Cuts, FromB, ";
806 for(Int_t i=0;i<fnbins;i++){
807 strnamept=namehist;
808 strnamept.Append("PkMss_pt");
809 strnamept+=i;
810
811 strtitlept=titlehist;
812 strtitlept.Append(" Mass Peak, ");
813 strtitlept+=fptbins[i];
814 strtitlept.Append("<= pt <");
815 strtitlept+=fptbins[i+1];
816 strtitlept.Append(" [GeV/c]");
817
ac4c229c 818 hd0D0ptNCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
819 hd0D0ptNCfromBPM[i]->SetXTitle("Impact parameter [#mum] ");
820 hd0D0ptNCfromBPM[i]->SetYTitle("Entries");
821 flistNoCutsFromB->Add(hd0D0ptNCfromBPM[i]);
624c07ab 822
823 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 824 hMCd0D0ptNCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
825 hMCd0D0ptNCfromBPM[i]->SetXTitle("MC Impact parameter [#mum] ");
826 hMCd0D0ptNCfromBPM[i]->SetYTitle("Entries");
827 flistNoCutsFromB->Add(hMCd0D0ptNCfromBPM[i]);
624c07ab 828
829
830 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 831 hd0D0VtxTrueptNCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
832 hd0D0VtxTrueptNCfromBPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
833 hd0D0VtxTrueptNCfromBPM[i]->SetYTitle("Entries");
834 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBPM[i]);
624c07ab 835
836 strnamept=namehist;
837 strnamept.Append("SBMss_pt");
838 strnamept+=i;
839
840 strtitlept=titlehist;
841 strtitlept.Append(" Side Bands, ");
842 strtitlept+=fptbins[i];
843 strtitlept.Append("<= pt <");
844 strtitlept+=fptbins[i+1];
845 strtitlept.Append(" [GeV/c]");
846
ac4c229c 847 hd0D0ptNCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
848 hd0D0ptNCfromBSB[i]->SetXTitle("Impact parameter [#mum] ");
849 hd0D0ptNCfromBSB[i]->SetYTitle("Entries");
850 flistNoCutsFromB->Add(hd0D0ptNCfromBSB[i]);
624c07ab 851
852 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 853 hMCd0D0ptNCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
854 hMCd0D0ptNCfromBSB[i]->SetXTitle("MC Impact parameter [#mum] ");
855 hMCd0D0ptNCfromBSB[i]->SetYTitle("Entries");
856 flistNoCutsFromB->Add(hMCd0D0ptNCfromBSB[i]);
624c07ab 857
858 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 859 hd0D0VtxTrueptNCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
860 hd0D0VtxTrueptNCfromBSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
861 hd0D0VtxTrueptNCfromBSB[i]->SetYTitle("Entries");
862 flistNoCutsFromB->Add(hd0D0VtxTrueptNCfromBSB[i]);
624c07ab 863 }
864
865
866
867 //############ NO CUTS FROM DSTAR HISTOGRAMS ###########
868 //
869 //############# global properties histos #######
870
ac4c229c 871 TH2F *hCPtaVSd0d0NCfromDstar=new TH2F("hCPtaVSd0d0NCfromDstar","hCPtaVSd0d0_NoCuts_FromDStar",1000,-100000.,100000.,100,0.,1.);
872 TH1F *hSecVtxZNCfromDstar=new TH1F("hSecVtxZNCfromDstar","hSecVtxZ_NoCuts_FromDStar",1000,-8.,8.);
873 TH1F *hSecVtxXNCfromDstar=new TH1F("hSecVtxXNCfromDstar","hSecVtxX_NoCuts_FromDStar",1000,-3000.,3000.);
874 TH1F *hSecVtxYNCfromDstar=new TH1F("hSecVtxYNCfromDstar","hSecVtxY_NoCuts_FromDStar",1000,-3000.,3000.);
875 TH2F *hSecVtxXYNCfromDstar=new TH2F("hSecVtxXYNCfromDstar","hSecVtxXY_NoCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
876 TH1F *hSecVtxPhiNCfromDstar=new TH1F("hSecVtxPhiNCfromDstar","hSecVtxPhi_NoCuts_FromDStar",180,-180.1,180.1);
877 TH1F *hCPtaNCfromDstar=new TH1F("hCPtaNCfromDstar","hCPta_NoCuts_FromDStar",100,0.,1.);
878 TH1F *hd0xd0NCfromDstar=new TH1F("hd0xd0NCfromDstar","hd0xd0_NoCuts_FromDStar",1000,-100000.,100000.);
879 TH1F *hMassTrueNCfromDstar=new TH1F("hMassTrueNCfromDstar","D^{0} MC inv. Mass No Cuts FromDStar(All momenta)",600,1.600,2.200);
880 TH1F *hMassNCfromDstar=new TH1F("hMassNCfromDstar","D^{0} inv. Mass No Cuts FromDStar (All momenta)",600,1.600,2.200);
881 hMassNCfromDstar->Sumw2();
882 TH1F *hMassTrueNCfromDstarPM=new TH1F("hMassTrueNCfromDstarPM","D^{0} MC inv. Mass No Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
883 TH1F *hMassNCfromDstarPM=new TH1F("hMassNCfromDstarPM","D^{0} inv. Mass No Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
884 hMassNCfromDstarPM->Sumw2();
885 TH1F *hMassTrueNCfromDstarSB=new TH1F("hMassTrueNCfromDstarSB","D^{0} MC inv. Mass in Side Bands No Cuts FromDStar(All momenta)",600,1.600,2.200);
886 TH1F *hMassNCfromDstarSB=new TH1F("hMassNCfromDstarSB","D^{0} inv. Mass in Side Bands No Cuts FromDStar (All momenta)",600,1.600,2.200);
887 hMassNCfromDstarSB->Sumw2();
888
889 flistNoCutsFromDstar->Add(hCPtaVSd0d0NCfromDstar);
890 flistNoCutsFromDstar->Add(hSecVtxZNCfromDstar);
891 flistNoCutsFromDstar->Add(hSecVtxYNCfromDstar);
892 flistNoCutsFromDstar->Add(hSecVtxXNCfromDstar);
893 flistNoCutsFromDstar->Add(hSecVtxXYNCfromDstar);
894 flistNoCutsFromDstar->Add(hSecVtxPhiNCfromDstar);
895 flistNoCutsFromDstar->Add(hCPtaNCfromDstar);
896 flistNoCutsFromDstar->Add(hd0xd0NCfromDstar);
897 flistNoCutsFromDstar->Add(hMassTrueNCfromDstar);
898 flistNoCutsFromDstar->Add(hMassNCfromDstar);
899 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarPM);
900 flistNoCutsFromDstar->Add(hMassNCfromDstarPM);
901 flistNoCutsFromDstar->Add(hMassTrueNCfromDstarSB);
902 flistNoCutsFromDstar->Add(hMassNCfromDstarSB);
624c07ab 903
904 //########## d0 D0 histos #############
ac4c229c 905 TH1F *hd0D0NCfromDstPM = new TH1F("hd0D0NCfromDstarPM","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
906 hd0D0NCfromDstPM->SetXTitle("Impact parameter [#mum]");
907 hd0D0NCfromDstPM->SetYTitle("Entries");
908
909 TH1F *hd0D0VtxTrueNCfromDstPM = new TH1F("hd0D0VtxTrueNCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
910 hd0D0VtxTrueNCfromDstPM->SetXTitle("Impact parameter [#mum]");
911 hd0D0VtxTrueNCfromDstPM->SetYTitle("Entries");
912
913 TH1F *hMCd0D0NCfromDstPM = new TH1F("hMCd0D0NCfromDstarPM","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
914 hMCd0D0NCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
915 hMCd0D0NCfromDstPM->SetYTitle("Entries");
916
917 TH1F *hd0D0NCfromDstSB = new TH1F("hd0D0NCfromDstarSB","D^{0} impact par. plot , No Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
918 hd0D0NCfromDstSB->SetXTitle("Impact parameter [#mum]");
919 hd0D0NCfromDstSB->SetYTitle("Entries");
920
921 TH1F *hd0D0VtxTrueNCfromDstSB = new TH1F("hd0D0VtxTrueNCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
922 hd0D0VtxTrueNCfromDstSB->SetXTitle("Impact parameter [#mum]");
923 hd0D0VtxTrueNCfromDstSB->SetYTitle("Entries");
924
925 TH1F *hMCd0D0NCfromDstSB = new TH1F("hMCd0D0NCfromDstarSB","D^{0} impact par. plot, No Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
926 hMCd0D0NCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
927 hMCd0D0NCfromDstSB->SetYTitle("Entries");
928
929 flistNoCutsFromDstar->Add(hd0D0NCfromDstPM);
930 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstPM);
931 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstPM);
932 flistNoCutsFromDstar->Add(hd0D0NCfromDstSB);
933 flistNoCutsFromDstar->Add(hd0D0VtxTrueNCfromDstSB);
934 flistNoCutsFromDstar->Add(hMCd0D0NCfromDstSB);
935
936 TH1F **hd0D0ptNCfromDstPM=new TH1F*[fnbins];
937 TH1F **hMCd0D0ptNCfromDstPM=new TH1F*[fnbins];
938 TH1F ** hd0D0VtxTrueptNCfromDstPM=new TH1F*[fnbins];
939 TH1F **hd0D0ptNCfromDstSB=new TH1F*[fnbins];
940 TH1F **hMCd0D0ptNCfromDstSB=new TH1F*[fnbins];
941 TH1F ** hd0D0VtxTrueptNCfromDstSB=new TH1F*[fnbins];
942 namehist="hd0D0ptNCfromDstar_";
624c07ab 943 titlehist="D^{0} impact par. plot, No Cuts, FromDStar, ";
944 for(Int_t i=0;i<fnbins;i++){
945 strnamept=namehist;
946 strnamept.Append("PkMss_pt");
947 strnamept+=i;
948
949 strtitlept=titlehist;
950 strtitlept.Append(" Mass Peak, ");
951 strtitlept+=fptbins[i];
952 strtitlept.Append("<= pt <");
953 strtitlept+=fptbins[i+1];
954 strtitlept.Append(" [GeV/c]");
955
ac4c229c 956 hd0D0ptNCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
957 hd0D0ptNCfromDstPM[i]->SetXTitle("Impact parameter [#mum] ");
958 hd0D0ptNCfromDstPM[i]->SetYTitle("Entries");
959 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstPM[i]);
624c07ab 960
961 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 962 hMCd0D0ptNCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
963 hMCd0D0ptNCfromDstPM[i]->SetXTitle("MC Impact parameter [#mum] ");
964 hMCd0D0ptNCfromDstPM[i]->SetYTitle("Entries");
965 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstPM[i]);
624c07ab 966
967
968 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 969 hd0D0VtxTrueptNCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
970 hd0D0VtxTrueptNCfromDstPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
971 hd0D0VtxTrueptNCfromDstPM[i]->SetYTitle("Entries");
972 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstPM[i]);
624c07ab 973
974 strnamept=namehist;
975 strnamept.Append("SBMss_pt");
976 strnamept+=i;
977
978 strtitlept=titlehist;
979 strtitlept.Append(" Side Bands, ");
980 strtitlept+=fptbins[i];
981 strtitlept.Append("<= pt <");
982 strtitlept+=fptbins[i+1];
983 strtitlept.Append(" [GeV/c]");
984
ac4c229c 985 hd0D0ptNCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
986 hd0D0ptNCfromDstSB[i]->SetXTitle("Impact parameter [#mum] ");
987 hd0D0ptNCfromDstSB[i]->SetYTitle("Entries");
988 flistNoCutsFromDstar->Add(hd0D0ptNCfromDstSB[i]);
624c07ab 989
990 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 991 hMCd0D0ptNCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
992 hMCd0D0ptNCfromDstSB[i]->SetXTitle("MC Impact parameter [#mum] ");
993 hMCd0D0ptNCfromDstSB[i]->SetYTitle("Entries");
994 flistNoCutsFromDstar->Add(hMCd0D0ptNCfromDstSB[i]);
624c07ab 995
996 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 997 hd0D0VtxTrueptNCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
998 hd0D0VtxTrueptNCfromDstSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
999 hd0D0VtxTrueptNCfromDstSB[i]->SetYTitle("Entries");
1000 flistNoCutsFromDstar->Add(hd0D0VtxTrueptNCfromDstSB[i]);
624c07ab 1001 }
1002
1003
1004 //############ NO CUTS OTHER HISTOGRAMS ###########
1005 //
1006 //########### global properties histos ###########
1007
ac4c229c 1008 TH2F *hCPtaVSd0d0NCother=new TH2F("hCPtaVSd0d0NCother","hCPtaVSd0d0_NoCuts_other",1000,-100000.,100000.,100,0.,1.);
1009 TH1F *hSecVtxZNCother=new TH1F("hSecVtxZNCother","hSecVtxZ_NoCuts_other",1000,-8.,8.);
1010 TH1F *hSecVtxXNCother=new TH1F("hSecVtxXNCother","hSecVtxX_NoCuts_other",1000,-3000.,3000.);
1011 TH1F *hSecVtxYNCother=new TH1F("hSecVtxYNCother","hSecVtxY_NoCuts_other",1000,-3000.,3000.);
1012 TH2F *hSecVtxXYNCother=new TH2F("hSecVtxXYNCother","hSecVtxXY_NoCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
1013 TH1F *hSecVtxPhiNCother=new TH1F("hSecVtxPhiNCother","hSecVtxPhi_NoCuts_other",180,-180.1,180.1);
1014 TH1F *hCPtaNCother=new TH1F("hCPtaNCother","hCPta_NoCuts_other",100,0.,1.);
1015 TH1F *hd0xd0NCother=new TH1F("hd0xd0NCother","hd0xd0_NoCuts_other",1000,-100000.,100000.);
1016 TH1F *hMassTrueNCother=new TH1F("hMassTrueNCother","D^{0} MC inv. Mass No Cuts other(All momenta)",600,1.600,2.200);
1017 TH1F *hMassNCother=new TH1F("hMassNCother","D^{0} inv. Mass No Cuts other (All momenta)",600,1.600,2.200);
1018 hMassNCother->Sumw2();
1019 TH1F *hMassTrueNCotherPM=new TH1F("hMassTrueNCotherPM","D^{0} MC inv. Mass No Cuts Other, Mass Peak. (All momenta)",600,1.600,2.200);
1020 TH1F *hMassNCotherPM=new TH1F("hMassNCotherPM","D^{0} inv. Mass No Cuts Other (All momenta), MassPeak",600,1.600,2.200);
1021 hMassNCotherPM->Sumw2();
1022 TH1F *hMassTrueNCotherSB=new TH1F("hMassTrueNCotherSB","D^{0} MC inv. Mass in Side Bands No Cuts other(All momenta)",600,1.600,2.200);
1023 TH1F *hMassNCotherSB=new TH1F("hMassNCotherSB","D^{0} inv. Mass in Side Bands No Cuts other (All momenta)",600,1.600,2.200);
1024 hMassNCotherSB->Sumw2();
1025
1026 flistNoCutsOther->Add(hCPtaVSd0d0NCother);
1027 flistNoCutsOther->Add(hSecVtxZNCother);
1028 flistNoCutsOther->Add(hSecVtxYNCother);
1029 flistNoCutsOther->Add(hSecVtxXNCother);
1030 flistNoCutsOther->Add(hSecVtxXYNCother);
1031 flistNoCutsOther->Add(hSecVtxPhiNCother);
1032 flistNoCutsOther->Add(hCPtaNCother);
1033 flistNoCutsOther->Add(hd0xd0NCother);
1034 flistNoCutsOther->Add(hMassTrueNCother);
1035 flistNoCutsOther->Add(hMassNCother);
1036 flistNoCutsOther->Add(hMassTrueNCotherPM);
1037 flistNoCutsOther->Add(hMassNCotherPM);
1038 flistNoCutsOther->Add(hMassTrueNCotherSB);
1039 flistNoCutsOther->Add(hMassNCotherSB);
624c07ab 1040
1041 //############# d0 D0 histos ###############à
ac4c229c 1042 TH1F *hd0D0NCotherPM = new TH1F("hd0D0NCotherPM","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1043 hd0D0NCotherPM->SetXTitle("Impact parameter [#mum]");
1044 hd0D0NCotherPM->SetYTitle("Entries");
1045
1046 TH1F *hd0D0VtxTrueNCotherPM = new TH1F("hd0D0VtxTrueNCotherPM","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1047 hd0D0VtxTrueNCotherPM->SetXTitle("Impact parameter [#mum]");
1048 hd0D0VtxTrueNCotherPM->SetYTitle("Entries");
1049
1050 TH1F *hMCd0D0NCotherPM = new TH1F("hMCd0D0NCotherPM","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1051 hMCd0D0NCotherPM->SetXTitle("MC Impact parameter [#mum]");
1052 hMCd0D0NCotherPM->SetYTitle("Entries");
1053
1054 TH1F *hd0D0NCotherSB = new TH1F("hd0D0NCotherSB","D^{0} impact par. plot , No Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1055 hd0D0NCotherSB->SetXTitle("Impact parameter [#mum]");
1056 hd0D0NCotherSB->SetYTitle("Entries");
1057
1058 TH1F *hd0D0VtxTrueNCotherSB = new TH1F("hd0D0VtxTrueNCotherSB","D^{0} impact par. w.r.t. True Vtx, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1059 hd0D0VtxTrueNCotherSB->SetXTitle("Impact parameter [#mum]");
1060 hd0D0VtxTrueNCotherSB->SetYTitle("Entries");
1061
1062 TH1F *hMCd0D0NCotherSB = new TH1F("hMCd0D0NCotherSB","D^{0} impact par. plot, No Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1063 hMCd0D0NCotherSB->SetXTitle("MC Impact parameter [#mum]");
1064 hMCd0D0NCotherSB->SetYTitle("Entries");
1065
1066 flistNoCutsOther->Add(hd0D0NCotherPM);
1067 flistNoCutsOther->Add(hd0D0VtxTrueNCotherPM);
1068 flistNoCutsOther->Add(hMCd0D0NCotherPM);
1069 flistNoCutsOther->Add(hd0D0NCotherSB);
1070 flistNoCutsOther->Add(hd0D0VtxTrueNCotherSB);
1071 flistNoCutsOther->Add(hMCd0D0NCotherSB);
1072
1073 TH1F **hd0D0ptNCotherPM=new TH1F*[fnbins];
1074 TH1F **hMCd0D0ptNCotherPM=new TH1F*[fnbins];
1075 TH1F ** hd0D0VtxTrueptNCotherPM=new TH1F*[fnbins];
1076 TH1F **hd0D0ptNCotherSB=new TH1F*[fnbins];
1077 TH1F **hMCd0D0ptNCotherSB=new TH1F*[fnbins];
1078 TH1F ** hd0D0VtxTrueptNCotherSB=new TH1F*[fnbins];
1079 namehist="hd0D0ptNCother_";
624c07ab 1080 titlehist="D^{0} impact par. plot, No Cuts, Other, ";
1081 for(Int_t i=0;i<fnbins;i++){
1082 strnamept=namehist;
1083 strnamept.Append("PkMss_pt");
1084 strnamept+=i;
1085
1086 strtitlept=titlehist;
1087 strtitlept.Append(" Mass Peak, ");
1088 strtitlept+=fptbins[i];
1089 strtitlept.Append("<= pt <");
1090 strtitlept+=fptbins[i+1];
1091 strtitlept.Append(" [GeV/c]");
1092
ac4c229c 1093 hd0D0ptNCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1094 hd0D0ptNCotherPM[i]->SetXTitle("Impact parameter [#mum] ");
1095 hd0D0ptNCotherPM[i]->SetYTitle("Entries");
1096 flistNoCutsOther->Add(hd0D0ptNCotherPM[i]);
624c07ab 1097
1098 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1099 hMCd0D0ptNCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1100 hMCd0D0ptNCotherPM[i]->SetXTitle("MC Impact parameter [#mum] ");
1101 hMCd0D0ptNCotherPM[i]->SetYTitle("Entries");
1102 flistNoCutsOther->Add(hMCd0D0ptNCotherPM[i]);
624c07ab 1103
1104
1105 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1106 hd0D0VtxTrueptNCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1107 hd0D0VtxTrueptNCotherPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1108 hd0D0VtxTrueptNCotherPM[i]->SetYTitle("Entries");
1109 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherPM[i]);
624c07ab 1110
1111 strnamept=namehist;
1112 strnamept.Append("SBMss_pt");
1113 strnamept+=i;
1114
1115 strtitlept=titlehist;
1116 strtitlept.Append(" Side Bands, ");
1117 strtitlept+=fptbins[i];
1118 strtitlept.Append("<= pt <");
1119 strtitlept+=fptbins[i+1];
1120 strtitlept.Append(" [GeV/c]");
1121
ac4c229c 1122 hd0D0ptNCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1123 hd0D0ptNCotherSB[i]->SetXTitle("Impact parameter [#mum] ");
1124 hd0D0ptNCotherSB[i]->SetYTitle("Entries");
1125 flistNoCutsOther->Add(hd0D0ptNCotherSB[i]);
624c07ab 1126
1127 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1128 hMCd0D0ptNCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1129 hMCd0D0ptNCotherSB[i]->SetXTitle("MC Impact parameter [#mum] ");
1130 hMCd0D0ptNCotherSB[i]->SetYTitle("Entries");
1131 flistNoCutsOther->Add(hMCd0D0ptNCotherSB[i]);
624c07ab 1132
1133 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1134 hd0D0VtxTrueptNCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1135 hd0D0VtxTrueptNCotherSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1136 hd0D0VtxTrueptNCotherSB[i]->SetYTitle("Entries");
1137 flistNoCutsOther->Add(hd0D0VtxTrueptNCotherSB[i]);
624c07ab 1138 }
1139
1140
1141 //################################################################################################
1142 // #
1143 // HISTOS FOR LOOSE CUTS #
1144 // #
1145 //################################################################################################
1146
1147 //############ LOOSE CUTS SIGNAL HISTOGRAMS ###############
1148 //
1149 // ####### global properties histo ############
1150
ac4c229c 1151 TH2F *hCPtaVSd0d0LSCsign=new TH2F("hCPtaVSd0d0LSCsign","hCPtaVSd0d0_LooseCuts_Signal",1000,-100000.,100000.,100,0.,1.);
1152 TH1F *hSecVtxZLSCsign=new TH1F("hSecVtxZLSCsign","hSecVtxZ_LooseCuts_Signal",1000,-8.,8.);
1153 TH1F *hSecVtxXLSCsign=new TH1F("hSecVtxXLSCsign","hSecVtxX_LooseCuts_Signal",1000,-3000.,3000.);
1154 TH1F *hSecVtxYLSCsign=new TH1F("hSecVtxYLSCsign","hSecVtxY_LooseCuts_Signal",1000,-3000.,3000.);
1155 TH2F *hSecVtxXYLSCsign=new TH2F("hSecVtxXYLSCsign","hSecVtxXY_LooseCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
1156 TH1F *hSecVtxPhiLSCsign=new TH1F("hSecVtxPhiLSCsign","hSecVtxPhi_LooseCuts_Signal",180,-180.1,180.1);
1157 TH1F *hCPtaLSCsign=new TH1F("hCPtaLSCsign","hCPta_LooseCuts_Signal",100,0.,1.);
1158 TH1F *hd0xd0LSCsign=new TH1F("hd0xd0LSCsign","hd0xd0_LooseCuts_Signal",1000,-100000.,100000.);
1159 TH1F *hMassTrueLSCsign=new TH1F("hMassTrueLSCsign","D^{0} MC inv. Mass Loose Cuts Signal(All momenta)",600,1.600,2.200);
1160 TH1F *hMassLSCsign=new TH1F("hMassLSCsign","D^{0} inv. Mass Loose Cuts Signal (All momenta)",600,1.600,2.200);
1161 hMassLSCsign->Sumw2();
1162 TH1F *hMassTrueLSCsignPM=new TH1F("hMassTrueLSCsignPM","D^{0} MC inv. Mass Loose Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
1163 TH1F *hMassLSCsignPM=new TH1F("hMassLSCsignPM","D^{0} inv. Mass Loose Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
1164 hMassLSCsignPM->Sumw2();
1165 TH1F *hMassTrueLSCsignSB=new TH1F("hMassTrueLSCsignSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Signal(All momenta)",600,1.600,2.200);
1166 TH1F *hMassLSCsignSB=new TH1F("hMassLSCsignSB","D^{0} inv. Mass in Side Bands Loose Cuts Signal (All momenta)",600,1.600,2.200);
1167 hMassLSCsignSB->Sumw2();
1168
1169 flistLsCutsSignal->Add(hCPtaVSd0d0LSCsign);
1170 flistLsCutsSignal->Add(hSecVtxZLSCsign);
1171 flistLsCutsSignal->Add(hSecVtxYLSCsign);
1172 flistLsCutsSignal->Add(hSecVtxXLSCsign);
1173 flistLsCutsSignal->Add(hSecVtxXYLSCsign);
1174 flistLsCutsSignal->Add(hSecVtxPhiLSCsign);
1175 flistLsCutsSignal->Add(hCPtaLSCsign);
1176 flistLsCutsSignal->Add(hd0xd0LSCsign);
1177 flistLsCutsSignal->Add(hMassTrueLSCsign);
1178 flistLsCutsSignal->Add(hMassLSCsign);
1179 flistLsCutsSignal->Add(hMassTrueLSCsignPM);
1180 flistLsCutsSignal->Add(hMassLSCsignPM);
1181 flistLsCutsSignal->Add(hMassTrueLSCsignSB);
1182 flistLsCutsSignal->Add(hMassLSCsignSB);
624c07ab 1183
1184 // ####### d0 D0 histos ############
ac4c229c 1185 TH1F *hd0D0LSCsignPM = new TH1F("hd0D0LSCsignPM","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1186 hd0D0LSCsignPM->SetXTitle("Impact parameter [#mum]");
1187 hd0D0LSCsignPM->SetYTitle("Entries");
1188
1189 TH1F *hd0D0VtxTrueLSCsignPM = new TH1F("hd0D0VtxTrueLSCsignPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1190 hd0D0VtxTrueLSCsignPM->SetXTitle("Impact parameter [#mum]");
1191 hd0D0VtxTrueLSCsignPM->SetYTitle("Entries");
1192
1193 TH1F *hMCd0D0LSCsignPM = new TH1F("hMCd0D0LSCsignPM","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1194 hMCd0D0LSCsignPM->SetXTitle("MC Impact parameter [#mum]");
1195 hMCd0D0LSCsignPM->SetYTitle("Entries");
1196
1197 TH1F *hd0D0LSCsignSB = new TH1F("hd0D0LSCsignSB","D^{0} impact par. plot , Loose Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1198 hd0D0LSCsignSB->SetXTitle("Impact parameter [#mum]");
1199 hd0D0LSCsignSB->SetYTitle("Entries");
1200
1201 TH1F *hd0D0VtxTrueLSCsignSB = new TH1F("hd0D0VtxTrueLSCsignSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1202 hd0D0VtxTrueLSCsignSB->SetXTitle("Impact parameter [#mum]");
1203 hd0D0VtxTrueLSCsignSB->SetYTitle("Entries");
1204
1205 TH1F *hMCd0D0LSCsignSB = new TH1F("hMCd0D0LSCsignSB","D^{0} impact par. plot, Loose Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1206 hMCd0D0LSCsignSB->SetXTitle("MC Impact parameter [#mum]");
1207 hMCd0D0LSCsignSB->SetYTitle("Entries");
1208
1209 flistLsCutsSignal->Add(hd0D0LSCsignPM);
1210 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignPM);
1211 flistLsCutsSignal->Add(hMCd0D0LSCsignPM);
1212 flistLsCutsSignal->Add(hd0D0LSCsignSB);
1213 flistLsCutsSignal->Add(hd0D0VtxTrueLSCsignSB);
1214 flistLsCutsSignal->Add(hMCd0D0LSCsignSB);
1215
1216 TH1F **hd0D0ptLSCsignPM=new TH1F*[fnbins];
1217 TH1F **hMCd0D0ptLSCsignPM=new TH1F*[fnbins];
1218 TH1F ** hd0D0VtxTrueptLSCsignPM=new TH1F*[fnbins];
1219 TH1F **hd0D0ptLSCsignSB=new TH1F*[fnbins];
1220 TH1F **hMCd0D0ptLSCsignSB=new TH1F*[fnbins];
1221 TH1F ** hd0D0VtxTrueptLSCsignSB=new TH1F*[fnbins];
1222 namehist="hd0D0ptLSCsign_";
624c07ab 1223 titlehist="D^{0} impact par. plot, Loose Cuts, Signal, ";
1224 for(Int_t i=0;i<fnbins;i++){
1225 strnamept=namehist;
1226 strnamept.Append("PkMss_pt");
1227 strnamept+=i;
1228
1229 strtitlept=titlehist;
1230 strtitlept.Append(" Mass Peak, ");
1231 strtitlept+=fptbins[i];
1232 strtitlept.Append("<= pt <");
1233 strtitlept+=fptbins[i+1];
1234 strtitlept.Append(" [GeV/c]");
1235
ac4c229c 1236 hd0D0ptLSCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1237 hd0D0ptLSCsignPM[i]->SetXTitle("Impact parameter [#mum] ");
1238 hd0D0ptLSCsignPM[i]->SetYTitle("Entries");
1239 flistLsCutsSignal->Add(hd0D0ptLSCsignPM[i]);
624c07ab 1240
1241 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1242 hMCd0D0ptLSCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1243 hMCd0D0ptLSCsignPM[i]->SetXTitle("MC Impact parameter [#mum] ");
1244 hMCd0D0ptLSCsignPM[i]->SetYTitle("Entries");
1245 flistLsCutsSignal->Add(hMCd0D0ptLSCsignPM[i]);
624c07ab 1246
1247
1248 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1249 hd0D0VtxTrueptLSCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1250 hd0D0VtxTrueptLSCsignPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1251 hd0D0VtxTrueptLSCsignPM[i]->SetYTitle("Entries");
1252 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignPM[i]);
624c07ab 1253
1254 strnamept=namehist;
1255 strnamept.Append("SBMss_pt");
1256 strnamept+=i;
1257
1258 strtitlept=titlehist;
1259 strtitlept.Append(" Side Bands, ");
1260 strtitlept+=fptbins[i];
1261 strtitlept.Append("<= pt <");
1262 strtitlept+=fptbins[i+1];
1263 strtitlept.Append(" [GeV/c]");
1264
ac4c229c 1265 hd0D0ptLSCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1266 hd0D0ptLSCsignSB[i]->SetXTitle("Impact parameter [#mum] ");
1267 hd0D0ptLSCsignSB[i]->SetYTitle("Entries");
1268 flistLsCutsSignal->Add(hd0D0ptLSCsignSB[i]);
624c07ab 1269
1270 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1271 hMCd0D0ptLSCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1272 hMCd0D0ptLSCsignSB[i]->SetXTitle("MC Impact parameter [#mum] ");
1273 hMCd0D0ptLSCsignSB[i]->SetYTitle("Entries");
1274 flistLsCutsSignal->Add(hMCd0D0ptLSCsignSB[i]);
624c07ab 1275
1276 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1277 hd0D0VtxTrueptLSCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1278 hd0D0VtxTrueptLSCsignSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1279 hd0D0VtxTrueptLSCsignSB[i]->SetYTitle("Entries");
1280 flistLsCutsSignal->Add(hd0D0VtxTrueptLSCsignSB[i]);
624c07ab 1281 }
1282
1283
1284 //############ LOOSE CUTS BACKGROUND HISTOGRAMS ###########
1285 //
1286 // ######## global properties histos #######
ac4c229c 1287 TH2F *hCPtaVSd0d0LSCback=new TH2F("hCPtaVSd0d0LSCback","hCPtaVSd0d0_LooseCuts_Background",1000,-100000.,100000.,100,0.,1.);
1288 TH1F *hSecVtxZLSCback=new TH1F("hSecVtxZLSCback","hSecVtxZ_LooseCuts_Background",1000,-8.,8.);
1289 TH1F *hSecVtxXLSCback=new TH1F("hSecVtxXLSCback","hSecVtxX_LooseCuts_Background",1000,-3000.,3000.);
1290 TH1F *hSecVtxYLSCback=new TH1F("hSecVtxYLSCback","hSecVtxY_LooseCuts_Background",1000,-3000.,3000.);
1291 TH2F *hSecVtxXYLSCback=new TH2F("hSecVtxXYLSCback","hSecVtxXY_LooseCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
1292 TH1F *hSecVtxPhiLSCback=new TH1F("hSecVtxPhiLSCback","hSecVtxPhi_LooseCuts_Background",180,-180.1,180.1);
1293 TH1F *hCPtaLSCback=new TH1F("hCPtaLSCback","hCPta_LooseCuts_Background",100,0.,1.);
1294 TH1F *hd0xd0LSCback=new TH1F("hd0xd0LSCback","hd0xd0_LooseCuts_Background",1000,-100000.,100000.);
1295 TH1F *hMassTrueLSCback=new TH1F("hMassTrueLSCback","D^{0} MC inv. Mass Loose Cuts Background(All momenta)",600,1.600,2.200);
1296 TH1F *hMassLSCback=new TH1F("hMassLSCback","D^{0} inv. Mass Loose Cuts Background (All momenta)",600,1.600,2.200);
1297 hMassLSCback->Sumw2();
1298 TH1F *hMassTrueLSCbackPM=new TH1F("hMassTrueLSCbackPM","D^{0} MC inv. Mass Loose Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
1299 TH1F *hMassLSCbackPM=new TH1F("hMassLSCbackPM","D^{0} inv. Mass Loose Cuts Background (All momenta), MassPeak",600,1.600,2.200);
1300 hMassLSCbackPM->Sumw2();
1301 TH1F *hMassTrueLSCbackSB=new TH1F("hMassTrueLSCbackSB","D^{0} MC inv. Mass in Side Bands Loose Cuts Background(All momenta)",600,1.600,2.200);
1302 TH1F *hMassLSCbackSB=new TH1F("hMassLSCbackSB","D^{0} inv. Mass in Side Bands Loose Cuts Background (All momenta)",600,1.600,2.200);
1303 hMassLSCbackSB->Sumw2();
1304
1305 flistLsCutsBack->Add(hCPtaVSd0d0LSCback);
1306 flistLsCutsBack->Add(hSecVtxZLSCback);
1307 flistLsCutsBack->Add(hSecVtxYLSCback);
1308 flistLsCutsBack->Add(hSecVtxXLSCback);
1309 flistLsCutsBack->Add(hSecVtxXYLSCback);
1310 flistLsCutsBack->Add(hSecVtxPhiLSCback);
1311 flistLsCutsBack->Add(hCPtaLSCback);
1312 flistLsCutsBack->Add(hd0xd0LSCback);
1313 flistLsCutsBack->Add(hMassTrueLSCback);
1314 flistLsCutsBack->Add(hMassLSCback);
1315 flistLsCutsBack->Add(hMassTrueLSCbackPM);
1316 flistLsCutsBack->Add(hMassLSCbackPM);
1317 flistLsCutsBack->Add(hMassTrueLSCbackSB);
1318 flistLsCutsBack->Add(hMassLSCbackSB);
624c07ab 1319
1320
1321 // ####### d0 D0 histos ############
1322
ac4c229c 1323 TH1F *hd0D0LSCbackPM = new TH1F("hd0D0LSCbackPM","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1324 hd0D0LSCbackPM->SetXTitle("Impact parameter [#mum]");
1325 hd0D0LSCbackPM->SetYTitle("Entries");
1326
1327 TH1F *hd0D0VtxTrueLSCbackPM = new TH1F("hd0D0VtxTrueLSCbackPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1328 hd0D0VtxTrueLSCbackPM->SetXTitle("Impact parameter [#mum]");
1329 hd0D0VtxTrueLSCbackPM->SetYTitle("Entries");
1330
1331 TH1F *hMCd0D0LSCbackPM = new TH1F("hMCd0D0LSCbackPM","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1332 hMCd0D0LSCbackPM->SetXTitle("MC Impact parameter [#mum]");
1333 hMCd0D0LSCbackPM->SetYTitle("Entries");
1334
1335 TH1F *hd0D0LSCbackSB = new TH1F("hd0D0LSCbackSB","D^{0} impact par. plot , Loose Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1336 hd0D0LSCbackSB->SetXTitle("Impact parameter [#mum]");
1337 hd0D0LSCbackSB->SetYTitle("Entries");
1338
1339 TH1F *hd0D0VtxTrueLSCbackSB = new TH1F("hd0D0VtxTrueLSCbackSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1340 hd0D0VtxTrueLSCbackSB->SetXTitle("Impact parameter [#mum]");
1341 hd0D0VtxTrueLSCbackSB->SetYTitle("Entries");
1342
1343 TH1F *hMCd0D0LSCbackSB = new TH1F("hMCd0D0LSCbackSB","D^{0} impact par. plot, Loose Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
1344 hMCd0D0LSCbackSB->SetXTitle("MC Impact parameter [#mum]");
1345 hMCd0D0LSCbackSB->SetYTitle("Entries");
1346
1347 flistLsCutsBack->Add(hd0D0LSCbackPM);
1348 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackPM);
1349 flistLsCutsBack->Add(hMCd0D0LSCbackPM);
1350 flistLsCutsBack->Add(hd0D0LSCbackSB);
1351 flistLsCutsBack->Add(hd0D0VtxTrueLSCbackSB);
1352 flistLsCutsBack->Add(hMCd0D0LSCbackSB);
1353
1354 TH1F **hd0D0ptLSCbackPM=new TH1F*[fnbins];
1355 TH1F **hMCd0D0ptLSCbackPM=new TH1F*[fnbins];
1356 TH1F ** hd0D0VtxTrueptLSCbackPM=new TH1F*[fnbins];
1357 TH1F **hd0D0ptLSCbackSB=new TH1F*[fnbins];
1358 TH1F **hMCd0D0ptLSCbackSB=new TH1F*[fnbins];
1359 TH1F ** hd0D0VtxTrueptLSCbackSB=new TH1F*[fnbins];
1360 namehist="hd0D0ptLSCback_";
624c07ab 1361 titlehist="D^{0} impact par. plot, Loose Cuts, Background, ";
1362 for(Int_t i=0;i<fnbins;i++){
1363 strnamept=namehist;
1364 strnamept.Append("PkMss_pt");
1365 strnamept+=i;
1366
1367 strtitlept=titlehist;
1368 strtitlept.Append(" Mass Peak, ");
1369 strtitlept+=fptbins[i];
1370 strtitlept.Append("<= pt <");
1371 strtitlept+=fptbins[i+1];
1372 strtitlept.Append(" [GeV/c]");
1373
ac4c229c 1374 hd0D0ptLSCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1375 hd0D0ptLSCbackPM[i]->SetXTitle("Impact parameter [#mum] ");
1376 hd0D0ptLSCbackPM[i]->SetYTitle("Entries");
1377 flistLsCutsBack->Add(hd0D0ptLSCbackPM[i]);
624c07ab 1378
1379 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1380 hMCd0D0ptLSCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1381 hMCd0D0ptLSCbackPM[i]->SetXTitle("MC Impact parameter [#mum] ");
1382 hMCd0D0ptLSCbackPM[i]->SetYTitle("Entries");
1383 flistLsCutsBack->Add(hMCd0D0ptLSCbackPM[i]);
624c07ab 1384
1385
1386 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1387 hd0D0VtxTrueptLSCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1388 hd0D0VtxTrueptLSCbackPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1389 hd0D0VtxTrueptLSCbackPM[i]->SetYTitle("Entries");
1390 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackPM[i]);
624c07ab 1391
1392 strnamept=namehist;
1393 strnamept.Append("SBMss_pt");
1394 strnamept+=i;
1395
1396 strtitlept=titlehist;
1397 strtitlept.Append(" Side Bands, ");
1398 strtitlept+=fptbins[i];
1399 strtitlept.Append("<= pt <");
1400 strtitlept+=fptbins[i+1];
1401 strtitlept.Append(" [GeV/c]");
1402
ac4c229c 1403 hd0D0ptLSCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1404 hd0D0ptLSCbackSB[i]->SetXTitle("Impact parameter [#mum] ");
1405 hd0D0ptLSCbackSB[i]->SetYTitle("Entries");
1406 flistLsCutsBack->Add(hd0D0ptLSCbackSB[i]);
624c07ab 1407
1408 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1409 hMCd0D0ptLSCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1410 hMCd0D0ptLSCbackSB[i]->SetXTitle("MC Impact parameter [#mum] ");
1411 hMCd0D0ptLSCbackSB[i]->SetYTitle("Entries");
1412 flistLsCutsBack->Add(hMCd0D0ptLSCbackSB[i]);
624c07ab 1413
1414 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1415 hd0D0VtxTrueptLSCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1416 hd0D0VtxTrueptLSCbackSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1417 hd0D0VtxTrueptLSCbackSB[i]->SetYTitle("Entries");
1418 flistLsCutsBack->Add(hd0D0VtxTrueptLSCbackSB[i]);
624c07ab 1419 }
1420
1421
1422
1423 //############ LOOSE CUTS FROMB HISTOGRAMS ###########
1424 //
1425 //####### global properties histos
1426
ac4c229c 1427 TH2F *hCPtaVSd0d0LSCfromB=new TH2F("hCPtaVSd0d0LSCfromB","hCPtaVSd0d0_LooseCuts_FromB",1000,-100000.,100000.,100,0.,1.);
1428 TH1F *hSecVtxZLSCfromB=new TH1F("hSecVtxZLSCfromB","hSecVtxZ_LooseCuts_FromB",1000,-8.,8.);
1429 TH1F *hSecVtxXLSCfromB=new TH1F("hSecVtxXLSCfromB","hSecVtxX_LooseCuts_FromB",1000,-3000.,3000.);
1430 TH1F *hSecVtxYLSCfromB=new TH1F("hSecVtxYLSCfromB","hSecVtxY_LooseCuts_FromB",1000,-3000.,3000.);
1431 TH2F *hSecVtxXYLSCfromB=new TH2F("hSecVtxXYLSCfromB","hSecVtxXY_LooseCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
1432 TH1F *hSecVtxPhiLSCfromB=new TH1F("hSecVtxPhiLSCfromB","hSecVtxPhi_LooseCuts_FromB",180,-180.1,180.1);
1433 TH1F *hCPtaLSCfromB=new TH1F("hCPtaLSCfromB","hCPta_LooseCuts_FromB",100,0.,1.);
1434 TH1F *hd0xd0LSCfromB=new TH1F("hd0xd0LSCfromB","hd0xd0_LooseCuts_FromB",1000,-100000.,100000.);
1435 TH1F *hMassTrueLSCfromB=new TH1F("hMassTrueLSCfromB","D^{0} MC inv. Mass Loose Cuts FromB(All momenta)",600,1.600,2.200);
1436 TH1F *hMassLSCfromB=new TH1F("hMassLSCfromB","D^{0} inv. Mass Loose Cuts FromB (All momenta)",600,1.600,2.200);
1437 hMassLSCfromB->Sumw2();
1438 TH1F *hMassTrueLSCfromBPM=new TH1F("hMassTrueLSCfromBPM","D^{0} MC inv. Mass Loose Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
1439 TH1F *hMassLSCfromBPM=new TH1F("hMassLSCfromBPM","D^{0} inv. Mass Loose Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
1440 hMassLSCfromBPM->Sumw2();
1441 TH1F *hMassTrueLSCfromBSB=new TH1F("hMassTrueLSCfromBSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromB(All momenta)",600,1.600,2.200);
1442 TH1F *hMassLSCfromBSB=new TH1F("hMassLSCfromBSB","D^{0} inv. Mass in Side Bands Loose Cuts FromB (All momenta)",600,1.600,2.200);
1443 hMassLSCfromBSB->Sumw2();
1444
1445 flistLsCutsFromB->Add(hCPtaVSd0d0LSCfromB);
1446 flistLsCutsFromB->Add(hSecVtxZLSCfromB);
1447 flistLsCutsFromB->Add(hSecVtxYLSCfromB);
1448 flistLsCutsFromB->Add(hSecVtxXLSCfromB);
1449 flistLsCutsFromB->Add(hSecVtxXYLSCfromB);
1450 flistLsCutsFromB->Add(hSecVtxPhiLSCfromB);
1451 flistLsCutsFromB->Add(hCPtaLSCfromB);
1452 flistLsCutsFromB->Add(hd0xd0LSCfromB);
1453 flistLsCutsFromB->Add(hMassTrueLSCfromB);
1454 flistLsCutsFromB->Add(hMassLSCfromB);
1455 flistLsCutsFromB->Add(hMassTrueLSCfromBPM);
1456 flistLsCutsFromB->Add(hMassLSCfromBPM);
1457 flistLsCutsFromB->Add(hMassTrueLSCfromBSB);
1458 flistLsCutsFromB->Add(hMassLSCfromBSB);
624c07ab 1459
1460 // ######### d0 D0 histos ##############
ac4c229c 1461 TH1F *hd0D0LSCfromBPM = new TH1F("hd0D0LSCfromBPM","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1462 hd0D0LSCfromBPM->SetXTitle("Impact parameter [#mum]");
1463 hd0D0LSCfromBPM->SetYTitle("Entries");
1464
1465 TH1F *hd0D0VtxTrueLSCfromBPM = new TH1F("hd0D0VtxTrueLSCfromBPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1466 hd0D0VtxTrueLSCfromBPM->SetXTitle("Impact parameter [#mum]");
1467 hd0D0VtxTrueLSCfromBPM->SetYTitle("Entries");
1468
1469 TH1F *hMCd0D0LSCfromBPM = new TH1F("hMCd0D0LSCfromBPM","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1470 hMCd0D0LSCfromBPM->SetXTitle("MC Impact parameter [#mum]");
1471 hMCd0D0LSCfromBPM->SetYTitle("Entries");
1472
1473 TH1F *hd0D0LSCfromBSB = new TH1F("hd0D0LSCfromBSB","D^{0} impact par. plot , Loose Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1474 hd0D0LSCfromBSB->SetXTitle("Impact parameter [#mum]");
1475 hd0D0LSCfromBSB->SetYTitle("Entries");
1476
1477 TH1F *hd0D0VtxTrueLSCfromBSB = new TH1F("hd0D0VtxTrueLSCfromBSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1478 hd0D0VtxTrueLSCfromBSB->SetXTitle("Impact parameter [#mum]");
1479 hd0D0VtxTrueLSCfromBSB->SetYTitle("Entries");
1480
1481 TH1F *hMCd0D0LSCfromBSB = new TH1F("hMCd0D0LSCfromBSB","D^{0} impact par. plot, Loose Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
1482 hMCd0D0LSCfromBSB->SetXTitle("MC Impact parameter [#mum]");
1483 hMCd0D0LSCfromBSB->SetYTitle("Entries");
1484
1485 flistLsCutsFromB->Add(hd0D0LSCfromBPM);
1486 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBPM);
1487 flistLsCutsFromB->Add(hMCd0D0LSCfromBPM);
1488 flistLsCutsFromB->Add(hd0D0LSCfromBSB);
1489 flistLsCutsFromB->Add(hd0D0VtxTrueLSCfromBSB);
1490 flistLsCutsFromB->Add(hMCd0D0LSCfromBSB);
1491
1492 TH1F **hd0D0ptLSCfromBPM=new TH1F*[fnbins];
1493 TH1F **hMCd0D0ptLSCfromBPM=new TH1F*[fnbins];
1494 TH1F ** hd0D0VtxTrueptLSCfromBPM=new TH1F*[fnbins];
1495 TH1F **hd0D0ptLSCfromBSB=new TH1F*[fnbins];
1496 TH1F **hMCd0D0ptLSCfromBSB=new TH1F*[fnbins];
1497 TH1F ** hd0D0VtxTrueptLSCfromBSB=new TH1F*[fnbins];
1498 namehist="hd0D0ptLSCfromB_";
624c07ab 1499 titlehist="D^{0} impact par. plot, Loose Cuts, FromB, ";
1500 for(Int_t i=0;i<fnbins;i++){
1501 strnamept=namehist;
1502 strnamept.Append("PkMss_pt");
1503 strnamept+=i;
1504
1505 strtitlept=titlehist;
1506 strtitlept.Append(" Mass Peak, ");
1507 strtitlept+=fptbins[i];
1508 strtitlept.Append("<= pt <");
1509 strtitlept+=fptbins[i+1];
1510 strtitlept.Append(" [GeV/c]");
1511
ac4c229c 1512 hd0D0ptLSCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1513 hd0D0ptLSCfromBPM[i]->SetXTitle("Impact parameter [#mum] ");
1514 hd0D0ptLSCfromBPM[i]->SetYTitle("Entries");
1515 flistLsCutsFromB->Add(hd0D0ptLSCfromBPM[i]);
624c07ab 1516
1517 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1518 hMCd0D0ptLSCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1519 hMCd0D0ptLSCfromBPM[i]->SetXTitle("MC Impact parameter [#mum] ");
1520 hMCd0D0ptLSCfromBPM[i]->SetYTitle("Entries");
1521 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBPM[i]);
624c07ab 1522
1523
1524 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1525 hd0D0VtxTrueptLSCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1526 hd0D0VtxTrueptLSCfromBPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1527 hd0D0VtxTrueptLSCfromBPM[i]->SetYTitle("Entries");
1528 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBPM[i]);
624c07ab 1529
1530 strnamept=namehist;
1531 strnamept.Append("SBMss_pt");
1532 strnamept+=i;
1533
1534 strtitlept=titlehist;
1535 strtitlept.Append(" Side Bands, ");
1536 strtitlept+=fptbins[i];
1537 strtitlept.Append("<= pt <");
1538 strtitlept+=fptbins[i+1];
1539 strtitlept.Append(" [GeV/c]");
1540
ac4c229c 1541 hd0D0ptLSCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1542 hd0D0ptLSCfromBSB[i]->SetXTitle("Impact parameter [#mum] ");
1543 hd0D0ptLSCfromBSB[i]->SetYTitle("Entries");
1544 flistLsCutsFromB->Add(hd0D0ptLSCfromBSB[i]);
624c07ab 1545
1546 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1547 hMCd0D0ptLSCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1548 hMCd0D0ptLSCfromBSB[i]->SetXTitle("MC Impact parameter [#mum] ");
1549 hMCd0D0ptLSCfromBSB[i]->SetYTitle("Entries");
1550 flistLsCutsFromB->Add(hMCd0D0ptLSCfromBSB[i]);
624c07ab 1551
1552 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1553 hd0D0VtxTrueptLSCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1554 hd0D0VtxTrueptLSCfromBSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1555 hd0D0VtxTrueptLSCfromBSB[i]->SetYTitle("Entries");
1556 flistLsCutsFromB->Add(hd0D0VtxTrueptLSCfromBSB[i]);
624c07ab 1557 }
1558
1559
1560
1561 //############ LOOSE CUTS FROM DSTAR HISTOGRAMS ###########
1562 //
1563 //############## global properties histos
ac4c229c 1564 TH2F *hCPtaVSd0d0LSCfromDstar=new TH2F("hCPtaVSd0d0LSCfromDstar","hCPtaVSd0d0_LooseCuts_FromDStar",1000,-100000.,100000.,100,0.,1.);
1565 TH1F *hSecVtxZLSCfromDstar=new TH1F("hSecVtxZLSCfromDstar","hSecVtxZ_LooseCuts_FromDStar",1000,-8.,8.);
1566 TH1F *hSecVtxXLSCfromDstar=new TH1F("hSecVtxXLSCfromDstar","hSecVtxX_LooseCuts_FromDStar",1000,-3000.,3000.);
1567 TH1F *hSecVtxYLSCfromDstar=new TH1F("hSecVtxYLSCfromDstar","hSecVtxY_LooseCuts_FromDStar",1000,-3000.,3000.);
1568 TH2F *hSecVtxXYLSCfromDstar=new TH2F("hSecVtxXYLSCfromDstar","hSecVtxXY_LooseCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
1569 TH1F *hSecVtxPhiLSCfromDstar=new TH1F("hSecVtxPhiLSCfromDstar","hSecVtxPhi_LooseCuts_FromDStar",180,-180.1,180.1);
1570 TH1F *hCPtaLSCfromDstar=new TH1F("hCPtaLSCfromDstar","hCPta_LooseCuts_FromDStar",100,0.,1.);
1571 TH1F *hd0xd0LSCfromDstar=new TH1F("hd0xd0LSCfromDstar","hd0xd0_LooseCuts_FromDStar",1000,-100000.,100000.);
1572 TH1F *hMassTrueLSCfromDstar=new TH1F("hMassTrueLSCfromDstar","D^{0} MC inv. Mass Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
1573 TH1F *hMassLSCfromDstar=new TH1F("hMassLSCfromDstar","D^{0} inv. Mass Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
1574 hMassLSCfromDstar->Sumw2();
1575 TH1F *hMassTrueLSCfromDstarPM=new TH1F("hMassTrueLSCfromDstarPM","D^{0} MC inv. Mass Loose Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
1576 TH1F *hMassLSCfromDstarPM=new TH1F("hMassLSCfromDstarPM","D^{0} inv. Mass Loose Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
1577 hMassLSCfromDstarPM->Sumw2();
1578 TH1F *hMassTrueLSCfromDstarSB=new TH1F("hMassTrueLSCfromDstarSB","D^{0} MC inv. Mass in Side Bands Loose Cuts FromDStar(All momenta)",600,1.600,2.200);
1579 TH1F *hMassLSCfromDstarSB=new TH1F("hMassLSCfromDstarSB","D^{0} inv. Mass in Side Bands Loose Cuts FromDStar (All momenta)",600,1.600,2.200);
1580 hMassLSCfromDstarSB->Sumw2();
1581
1582 flistLsCutsFromDstar->Add(hCPtaVSd0d0LSCfromDstar);
1583 flistLsCutsFromDstar->Add(hSecVtxZLSCfromDstar);
1584 flistLsCutsFromDstar->Add(hSecVtxYLSCfromDstar);
1585 flistLsCutsFromDstar->Add(hSecVtxXLSCfromDstar);
1586 flistLsCutsFromDstar->Add(hSecVtxXYLSCfromDstar);
1587 flistLsCutsFromDstar->Add(hSecVtxPhiLSCfromDstar);
1588 flistLsCutsFromDstar->Add(hCPtaLSCfromDstar);
1589 flistLsCutsFromDstar->Add(hd0xd0LSCfromDstar);
1590 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstar);
1591 flistLsCutsFromDstar->Add(hMassLSCfromDstar);
1592 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarPM);
1593 flistLsCutsFromDstar->Add(hMassLSCfromDstarPM);
1594 flistLsCutsFromDstar->Add(hMassTrueLSCfromDstarSB);
1595 flistLsCutsFromDstar->Add(hMassLSCfromDstarSB);
624c07ab 1596
1597 //########## d0 D0 histos #############
ac4c229c 1598 TH1F *hd0D0LSCfromDstPM = new TH1F("hd0D0LSCfromDstarPM","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1599 hd0D0LSCfromDstPM->SetXTitle("Impact parameter [#mum]");
1600 hd0D0LSCfromDstPM->SetYTitle("Entries");
1601
1602 TH1F *hd0D0VtxTrueLSCfromDstPM = new TH1F("hd0D0VtxTrueLSCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1603 hd0D0VtxTrueLSCfromDstPM->SetXTitle("Impact parameter [#mum]");
1604 hd0D0VtxTrueLSCfromDstPM->SetYTitle("Entries");
1605
1606 TH1F *hMCd0D0LSCfromDstPM = new TH1F("hMCd0D0LSCfromDstarPM","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1607 hMCd0D0LSCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
1608 hMCd0D0LSCfromDstPM->SetYTitle("Entries");
1609
1610 TH1F *hd0D0LSCfromDstSB = new TH1F("hd0D0LSCfromDstarSB","D^{0} impact par. plot , Loose Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1611 hd0D0LSCfromDstSB->SetXTitle("Impact parameter [#mum]");
1612 hd0D0LSCfromDstSB->SetYTitle("Entries");
1613
1614 TH1F *hd0D0VtxTrueLSCfromDstSB = new TH1F("hd0D0VtxTrueLSCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1615 hd0D0VtxTrueLSCfromDstSB->SetXTitle("Impact parameter [#mum]");
1616 hd0D0VtxTrueLSCfromDstSB->SetYTitle("Entries");
1617
1618 TH1F *hMCd0D0LSCfromDstSB = new TH1F("hMCd0D0LSCfromDstarSB","D^{0} impact par. plot, Loose Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
1619 hMCd0D0LSCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
1620 hMCd0D0LSCfromDstSB->SetYTitle("Entries");
1621
1622 flistLsCutsFromDstar->Add(hd0D0LSCfromDstPM);
1623 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstPM);
1624 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstPM);
1625 flistLsCutsFromDstar->Add(hd0D0LSCfromDstSB);
1626 flistLsCutsFromDstar->Add(hd0D0VtxTrueLSCfromDstSB);
1627 flistLsCutsFromDstar->Add(hMCd0D0LSCfromDstSB);
1628
1629 TH1F **hd0D0ptLSCfromDstPM=new TH1F*[fnbins];
1630 TH1F **hMCd0D0ptLSCfromDstPM=new TH1F*[fnbins];
1631 TH1F ** hd0D0VtxTrueptLSCfromDstPM=new TH1F*[fnbins];
1632 TH1F **hd0D0ptLSCfromDstSB=new TH1F*[fnbins];
1633 TH1F **hMCd0D0ptLSCfromDstSB=new TH1F*[fnbins];
1634 TH1F ** hd0D0VtxTrueptLSCfromDstSB=new TH1F*[fnbins];
1635 namehist="hd0D0ptLSCfromDstar_";
624c07ab 1636 titlehist="D^{0} impact par. plot, Loose Cuts, FromDStar, ";
1637 for(Int_t i=0;i<fnbins;i++){
1638 strnamept=namehist;
1639 strnamept.Append("PkMss_pt");
1640 strnamept+=i;
1641
1642 strtitlept=titlehist;
1643 strtitlept.Append(" Mass Peak, ");
1644 strtitlept+=fptbins[i];
1645 strtitlept.Append("<= pt <");
1646 strtitlept+=fptbins[i+1];
1647 strtitlept.Append(" [GeV/c]");
1648
ac4c229c 1649 hd0D0ptLSCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1650 hd0D0ptLSCfromDstPM[i]->SetXTitle("Impact parameter [#mum] ");
1651 hd0D0ptLSCfromDstPM[i]->SetYTitle("Entries");
1652 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstPM[i]);
624c07ab 1653
1654 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1655 hMCd0D0ptLSCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1656 hMCd0D0ptLSCfromDstPM[i]->SetXTitle("MC Impact parameter [#mum] ");
1657 hMCd0D0ptLSCfromDstPM[i]->SetYTitle("Entries");
1658 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstPM[i]);
624c07ab 1659
1660
1661 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1662 hd0D0VtxTrueptLSCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1663 hd0D0VtxTrueptLSCfromDstPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1664 hd0D0VtxTrueptLSCfromDstPM[i]->SetYTitle("Entries");
1665 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstPM[i]);
624c07ab 1666
1667 strnamept=namehist;
1668 strnamept.Append("SBMss_pt");
1669 strnamept+=i;
1670
1671 strtitlept=titlehist;
1672 strtitlept.Append(" Side Bands, ");
1673 strtitlept+=fptbins[i];
1674 strtitlept.Append("<= pt <");
1675 strtitlept+=fptbins[i+1];
1676 strtitlept.Append(" [GeV/c]");
1677
ac4c229c 1678 hd0D0ptLSCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1679 hd0D0ptLSCfromDstSB[i]->SetXTitle("Impact parameter [#mum] ");
1680 hd0D0ptLSCfromDstSB[i]->SetYTitle("Entries");
1681 flistLsCutsFromDstar->Add(hd0D0ptLSCfromDstSB[i]);
624c07ab 1682
1683 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1684 hMCd0D0ptLSCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1685 hMCd0D0ptLSCfromDstSB[i]->SetXTitle("MC Impact parameter [#mum] ");
1686 hMCd0D0ptLSCfromDstSB[i]->SetYTitle("Entries");
1687 flistLsCutsFromDstar->Add(hMCd0D0ptLSCfromDstSB[i]);
624c07ab 1688
1689 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1690 hd0D0VtxTrueptLSCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1691 hd0D0VtxTrueptLSCfromDstSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1692 hd0D0VtxTrueptLSCfromDstSB[i]->SetYTitle("Entries");
1693 flistLsCutsFromDstar->Add(hd0D0VtxTrueptLSCfromDstSB[i]);
624c07ab 1694 }
1695
1696
1697 //############ LOOSE CUTS OTHER HISTOGRAMS ###########
1698 //
1699 //########### global properties histos ###########
1700
ac4c229c 1701 TH2F *hCPtaVSd0d0LSCother=new TH2F("hCPtaVSd0d0LSCother","hCPtaVSd0d0_LooseCuts_other",1000,-100000.,100000.,100,0.,1.);
1702 TH1F *hSecVtxZLSCother=new TH1F("hSecVtxZLSCother","hSecVtxZ_LooseCuts_other",1000,-8.,8.);
1703 TH1F *hSecVtxXLSCother=new TH1F("hSecVtxXLSCother","hSecVtxX_LooseCuts_other",1000,-3000.,3000.);
1704 TH1F *hSecVtxYLSCother=new TH1F("hSecVtxYLSCother","hSecVtxY_LooseCuts_other",1000,-3000.,3000.);
1705 TH2F *hSecVtxXYLSCother=new TH2F("hSecVtxXYLSCother","hSecVtxXY_LooseCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
1706 TH1F *hSecVtxPhiLSCother=new TH1F("hSecVtxPhiLSCother","hSecVtxPhi_LooseCuts_other",180,-180.1,180.1);
1707 TH1F *hCPtaLSCother=new TH1F("hCPtaLSCother","hCPta_LooseCuts_other",100,0.,1.);
1708 TH1F *hd0xd0LSCother=new TH1F("hd0xd0LSCother","hd0xd0_LooseCuts_other",1000,-100000.,100000.);
1709 TH1F *hMassTrueLSCother=new TH1F("hMassTrueLSCother","D^{0} MC inv. Mass Loose Cuts other(All momenta)",600,1.600,2.200);
1710 TH1F *hMassLSCother=new TH1F("hMassLSCother","D^{0} inv. Mass Loose Cuts other (All momenta)",600,1.600,2.200);
1711 hMassLSCother->Sumw2();
1712 TH1F *hMassTrueLSCotherPM=new TH1F("hMassTrueLSCotherPM","D^{0} MC inv. Mass Loose Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
1713 TH1F *hMassLSCotherPM=new TH1F("hMassLSCotherPM","D^{0} inv. Mass Loose Cuts other (All momenta), MassPeak",600,1.600,2.200);
1714 hMassLSCotherPM->Sumw2();
1715 TH1F *hMassTrueLSCotherSB=new TH1F("hMassTrueLSCotherSB","D^{0} MC inv. Mass in Side Bands Loose Cuts other(All momenta)",600,1.600,2.200);
1716 TH1F *hMassLSCotherSB=new TH1F("hMassLSCotherSB","D^{0} inv. Mass in Side Bands Loose Cuts other (All momenta)",600,1.600,2.200);
1717 hMassLSCotherSB->Sumw2();
1718
1719 flistLsCutsOther->Add(hCPtaVSd0d0LSCother);
1720 flistLsCutsOther->Add(hSecVtxZLSCother);
1721 flistLsCutsOther->Add(hSecVtxYLSCother);
1722 flistLsCutsOther->Add(hSecVtxXLSCother);
1723 flistLsCutsOther->Add(hSecVtxXYLSCother);
1724 flistLsCutsOther->Add(hSecVtxPhiLSCother);
1725 flistLsCutsOther->Add(hCPtaLSCother);
1726 flistLsCutsOther->Add(hd0xd0LSCother);
1727 flistLsCutsOther->Add(hMassTrueLSCother);
1728 flistLsCutsOther->Add(hMassLSCother);
1729 flistLsCutsOther->Add(hMassTrueLSCotherPM);
1730 flistLsCutsOther->Add(hMassLSCotherPM);
1731 flistLsCutsOther->Add(hMassTrueLSCotherSB);
1732 flistLsCutsOther->Add(hMassLSCotherSB);
624c07ab 1733
1734 //############# d0 D0 histos ###############à
ac4c229c 1735 TH1F *hd0D0LSCotherPM = new TH1F("hd0D0LSCotherPM","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1736 hd0D0LSCotherPM->SetXTitle("Impact parameter [#mum]");
1737 hd0D0LSCotherPM->SetYTitle("Entries");
1738
1739 TH1F *hd0D0VtxTrueLSCotherPM = new TH1F("hd0D0VtxTrueLSCotherPM","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1740 hd0D0VtxTrueLSCotherPM->SetXTitle("Impact parameter [#mum]");
1741 hd0D0VtxTrueLSCotherPM->SetYTitle("Entries");
1742
1743 TH1F *hMCd0D0LSCotherPM = new TH1F("hMCd0D0LSCotherPM","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1744 hMCd0D0LSCotherPM->SetXTitle("MC Impact parameter [#mum]");
1745 hMCd0D0LSCotherPM->SetYTitle("Entries");
1746
1747 TH1F *hd0D0LSCotherSB = new TH1F("hd0D0LSCotherSB","D^{0} impact par. plot , Loose Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1748 hd0D0LSCotherSB->SetXTitle("Impact parameter [#mum]");
1749 hd0D0LSCotherSB->SetYTitle("Entries");
1750
1751 TH1F *hd0D0VtxTrueLSCotherSB = new TH1F("hd0D0VtxTrueLSCotherSB","D^{0} impact par. w.r.t. True Vtx, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1752 hd0D0VtxTrueLSCotherSB->SetXTitle("Impact parameter [#mum]");
1753 hd0D0VtxTrueLSCotherSB->SetYTitle("Entries");
1754
1755 TH1F *hMCd0D0LSCotherSB = new TH1F("hMCd0D0LSCotherSB","D^{0} impact par. plot, Loose Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
1756 hMCd0D0LSCotherSB->SetXTitle("MC Impact parameter [#mum]");
1757 hMCd0D0LSCotherSB->SetYTitle("Entries");
1758
1759 flistLsCutsOther->Add(hd0D0LSCotherPM);
1760 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherPM);
1761 flistLsCutsOther->Add(hMCd0D0LSCotherPM);
1762 flistLsCutsOther->Add(hd0D0LSCotherSB);
1763 flistLsCutsOther->Add(hd0D0VtxTrueLSCotherSB);
1764 flistLsCutsOther->Add(hMCd0D0LSCotherSB);
1765
1766 TH1F **hd0D0ptLSCotherPM=new TH1F*[fnbins];
1767 TH1F **hMCd0D0ptLSCotherPM=new TH1F*[fnbins];
1768 TH1F ** hd0D0VtxTrueptLSCotherPM=new TH1F*[fnbins];
1769 TH1F **hd0D0ptLSCotherSB=new TH1F*[fnbins];
1770 TH1F **hMCd0D0ptLSCotherSB=new TH1F*[fnbins];
1771 TH1F ** hd0D0VtxTrueptLSCotherSB=new TH1F*[fnbins];
1772 namehist="hd0D0ptLSCother_";
624c07ab 1773 titlehist="D^{0} impact par. plot, Loose Cuts, Other, ";
1774 for(Int_t i=0;i<fnbins;i++){
1775 strnamept=namehist;
1776 strnamept.Append("PkMss_pt");
1777 strnamept+=i;
1778
1779 strtitlept=titlehist;
1780 strtitlept.Append(" Mass Peak, ");
1781 strtitlept+=fptbins[i];
1782 strtitlept.Append("<= pt <");
1783 strtitlept+=fptbins[i+1];
1784 strtitlept.Append(" [GeV/c]");
1785
ac4c229c 1786 hd0D0ptLSCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1787 hd0D0ptLSCotherPM[i]->SetXTitle("Impact parameter [#mum] ");
1788 hd0D0ptLSCotherPM[i]->SetYTitle("Entries");
1789 flistLsCutsOther->Add(hd0D0ptLSCotherPM[i]);
624c07ab 1790
1791 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1792 hMCd0D0ptLSCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1793 hMCd0D0ptLSCotherPM[i]->SetXTitle("MC Impact parameter [#mum] ");
1794 hMCd0D0ptLSCotherPM[i]->SetYTitle("Entries");
1795 flistLsCutsOther->Add(hMCd0D0ptLSCotherPM[i]);
624c07ab 1796
1797
1798 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1799 hd0D0VtxTrueptLSCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1800 hd0D0VtxTrueptLSCotherPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1801 hd0D0VtxTrueptLSCotherPM[i]->SetYTitle("Entries");
1802 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherPM[i]);
624c07ab 1803
1804 strnamept=namehist;
1805 strnamept.Append("SBMss_pt");
1806 strnamept+=i;
1807
1808 strtitlept=titlehist;
1809 strtitlept.Append(" Side Bands, ");
1810 strtitlept+=fptbins[i];
1811 strtitlept.Append("<= pt <");
1812 strtitlept+=fptbins[i+1];
1813 strtitlept.Append(" [GeV/c]");
1814
ac4c229c 1815 hd0D0ptLSCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1816 hd0D0ptLSCotherSB[i]->SetXTitle("Impact parameter [#mum] ");
1817 hd0D0ptLSCotherSB[i]->SetYTitle("Entries");
1818 flistLsCutsOther->Add(hd0D0ptLSCotherSB[i]);
624c07ab 1819
1820 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1821 hMCd0D0ptLSCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1822 hMCd0D0ptLSCotherSB[i]->SetXTitle("MC Impact parameter [#mum] ");
1823 hMCd0D0ptLSCotherSB[i]->SetYTitle("Entries");
1824 flistLsCutsOther->Add(hMCd0D0ptLSCotherSB[i]);
624c07ab 1825
1826 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1827 hd0D0VtxTrueptLSCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1828 hd0D0VtxTrueptLSCotherSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1829 hd0D0VtxTrueptLSCotherSB[i]->SetYTitle("Entries");
1830 flistLsCutsOther->Add(hd0D0VtxTrueptLSCotherSB[i]);
624c07ab 1831 }
1832
1833
1834
1835
1836 //################################################################################################
1837 // #
1838 // HISTOS FOR TIGHT CUTS #
1839 // #
1840 //################################################################################################
1841
1842 //############ TIGHT CUTS SIGNAL HISTOGRAMS ###############
1843 //
1844 // ####### global properties histo ############
1845
ac4c229c 1846 TH2F *hCPtaVSd0d0TGHCsign=new TH2F("hCPtaVSd0d0TGHCsign","hCPtaVSd0d0_TightCuts_Signal",1000,-100000.,100000.,100,0.,1.);
1847 TH1F *hSecVtxZTGHCsign=new TH1F("hSecVtxZTGHCsign","hSecVtxZ_TightCuts_Signal",1000,-8.,8.);
1848 TH1F *hSecVtxXTGHCsign=new TH1F("hSecVtxXTGHCsign","hSecVtxX_TightCuts_Signal",1000,-3000.,3000.);
1849 TH1F *hSecVtxYTGHCsign=new TH1F("hSecVtxYTGHCsign","hSecVtxY_TightCuts_Signal",1000,-3000.,3000.);
1850 TH2F *hSecVtxXYTGHCsign=new TH2F("hSecVtxXYTGHCsign","hSecVtxXY_TightCuts_Signal",1000,-3000.,3000.,1000,-3000.,3000.);
1851 TH1F *hSecVtxPhiTGHCsign=new TH1F("hSecVtxPhiTGHCsign","hSecVtxPhi_TightCuts_Signal",180,-180.1,180.1);
1852 TH1F *hCPtaTGHCsign=new TH1F("hCPtaTGHCsign","hCPta_TightCuts_Signal",100,0.,1.);
1853 TH1F *hd0xd0TGHCsign=new TH1F("hd0xd0TGHCsign","hd0xd0_TightCuts_Signal",1000,-100000.,100000.);
1854 TH1F *hMassTrueTGHCsign=new TH1F("hMassTrueTGHCsign","D^{0} MC inv. Mass Tight Cuts Signal(All momenta)",600,1.600,2.200);
1855 TH1F *hMassTGHCsign=new TH1F("hMassTGHCsign","D^{0} inv. Mass Tight Cuts Signal (All momenta)",600,1.600,2.200);
1856 hMassTGHCsign->Sumw2();
1857 TH1F *hMassTrueTGHCsignPM=new TH1F("hMassTrueTGHCsignPM","D^{0} MC inv. Mass Tight Cuts Signal, Mass Peak. (All momenta)",600,1.600,2.200);
1858 TH1F *hMassTGHCsignPM=new TH1F("hMassTGHCsignPM","D^{0} inv. Mass Tight Cuts Signal (All momenta), MassPeak",600,1.600,2.200);
1859 hMassTGHCsignPM->Sumw2();
1860 TH1F *hMassTrueTGHCsignSB=new TH1F("hMassTrueTGHCsignSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Signal(All momenta)",600,1.600,2.200);
1861 TH1F *hMassTGHCsignSB=new TH1F("hMassTGHCsignSB","D^{0} inv. Mass in Side Bands Tight Cuts Signal (All momenta)",600,1.600,2.200);
1862 hMassTGHCsignSB->Sumw2();
1863
1864 flistTghCutsSignal->Add(hCPtaVSd0d0TGHCsign);
1865 flistTghCutsSignal->Add(hSecVtxZTGHCsign);
1866 flistTghCutsSignal->Add(hSecVtxYTGHCsign);
1867 flistTghCutsSignal->Add(hSecVtxXTGHCsign);
1868 flistTghCutsSignal->Add(hSecVtxXYTGHCsign);
1869 flistTghCutsSignal->Add(hSecVtxPhiTGHCsign);
1870 flistTghCutsSignal->Add(hCPtaTGHCsign);
1871 flistTghCutsSignal->Add(hd0xd0TGHCsign);
1872 flistTghCutsSignal->Add(hMassTrueTGHCsign);
1873 flistTghCutsSignal->Add(hMassTGHCsign);
1874 flistTghCutsSignal->Add(hMassTrueTGHCsignPM);
1875 flistTghCutsSignal->Add(hMassTGHCsignPM);
1876 flistTghCutsSignal->Add(hMassTrueTGHCsignSB);
1877 flistTghCutsSignal->Add(hMassTGHCsignSB);
624c07ab 1878
1879 // ####### d0 D0 histos ############
ac4c229c 1880 TH1F *hd0D0TGHCsignPM = new TH1F("hd0D0TGHCsignPM","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1881 hd0D0TGHCsignPM->SetXTitle("Impact parameter [#mum]");
1882 hd0D0TGHCsignPM->SetYTitle("Entries");
1883
1884 TH1F *hd0D0VtxTrueTGHCsignPM = new TH1F("hd0D0VtxTrueTGHCsignPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1885 hd0D0VtxTrueTGHCsignPM->SetXTitle("Impact parameter [#mum]");
1886 hd0D0VtxTrueTGHCsignPM->SetYTitle("Entries");
1887
1888 TH1F *hMCd0D0TGHCsignPM = new TH1F("hMCd0D0TGHCsignPM","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1889 hMCd0D0TGHCsignPM->SetXTitle("MC Impact parameter [#mum]");
1890 hMCd0D0TGHCsignPM->SetYTitle("Entries");
1891
1892 TH1F *hd0D0TGHCsignSB = new TH1F("hd0D0TGHCsignSB","D^{0} impact par. plot , Tight Cuts ,Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1893 hd0D0TGHCsignSB->SetXTitle("Impact parameter [#mum]");
1894 hd0D0TGHCsignSB->SetYTitle("Entries");
1895
1896 TH1F *hd0D0VtxTrueTGHCsignSB = new TH1F("hd0D0VtxTrueTGHCsignSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1897 hd0D0VtxTrueTGHCsignSB->SetXTitle("Impact parameter [#mum]");
1898 hd0D0VtxTrueTGHCsignSB->SetYTitle("Entries");
1899
1900 TH1F *hMCd0D0TGHCsignSB = new TH1F("hMCd0D0TGHCsignSB","D^{0} impact par. plot, Tight Cuts, Signal,Mass Peak (All momenta)",1000,-1000.,1000.);
1901 hMCd0D0TGHCsignSB->SetXTitle("MC Impact parameter [#mum]");
1902 hMCd0D0TGHCsignSB->SetYTitle("Entries");
1903
1904 flistTghCutsSignal->Add(hd0D0TGHCsignPM);
1905 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignPM);
1906 flistTghCutsSignal->Add(hMCd0D0TGHCsignPM);
1907 flistTghCutsSignal->Add(hd0D0TGHCsignSB);
1908 flistTghCutsSignal->Add(hd0D0VtxTrueTGHCsignSB);
1909 flistTghCutsSignal->Add(hMCd0D0TGHCsignSB);
1910
1911 TH1F **hd0D0ptTGHCsignPM=new TH1F*[fnbins];
1912 TH1F **hMCd0D0ptTGHCsignPM=new TH1F*[fnbins];
1913 TH1F ** hd0D0VtxTrueptTGHCsignPM=new TH1F*[fnbins];
1914 TH1F **hd0D0ptTGHCsignSB=new TH1F*[fnbins];
1915 TH1F **hMCd0D0ptTGHCsignSB=new TH1F*[fnbins];
1916 TH1F ** hd0D0VtxTrueptTGHCsignSB=new TH1F*[fnbins];
1917 namehist="hd0D0ptTGHCsign_";
624c07ab 1918 titlehist="D^{0} impact par. plot, Tight Cuts, Signal, ";
1919 for(Int_t i=0;i<fnbins;i++){
1920 strnamept=namehist;
1921 strnamept.Append("PkMss_pt");
1922 strnamept+=i;
1923
1924 strtitlept=titlehist;
1925 strtitlept.Append(" Mass Peak, ");
1926 strtitlept+=fptbins[i];
1927 strtitlept.Append("<= pt <");
1928 strtitlept+=fptbins[i+1];
1929 strtitlept.Append(" [GeV/c]");
1930
ac4c229c 1931 hd0D0ptTGHCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1932 hd0D0ptTGHCsignPM[i]->SetXTitle("Impact parameter [#mum] ");
1933 hd0D0ptTGHCsignPM[i]->SetYTitle("Entries");
1934 flistTghCutsSignal->Add(hd0D0ptTGHCsignPM[i]);
624c07ab 1935
1936 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1937 hMCd0D0ptTGHCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1938 hMCd0D0ptTGHCsignPM[i]->SetXTitle("MC Impact parameter [#mum] ");
1939 hMCd0D0ptTGHCsignPM[i]->SetYTitle("Entries");
1940 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignPM[i]);
624c07ab 1941
1942
1943 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1944 hd0D0VtxTrueptTGHCsignPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1945 hd0D0VtxTrueptTGHCsignPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1946 hd0D0VtxTrueptTGHCsignPM[i]->SetYTitle("Entries");
1947 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignPM[i]);
624c07ab 1948
1949 strnamept=namehist;
1950 strnamept.Append("SBMss_pt");
1951 strnamept+=i;
1952
1953 strtitlept=titlehist;
1954 strtitlept.Append(" Side Bands, ");
1955 strtitlept+=fptbins[i];
1956 strtitlept.Append("<= pt <");
1957 strtitlept+=fptbins[i+1];
1958 strtitlept.Append(" [GeV/c]");
1959
ac4c229c 1960 hd0D0ptTGHCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1961 hd0D0ptTGHCsignSB[i]->SetXTitle("Impact parameter [#mum] ");
1962 hd0D0ptTGHCsignSB[i]->SetYTitle("Entries");
1963 flistTghCutsSignal->Add(hd0D0ptTGHCsignSB[i]);
624c07ab 1964
1965 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 1966 hMCd0D0ptTGHCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1967 hMCd0D0ptTGHCsignSB[i]->SetXTitle("MC Impact parameter [#mum] ");
1968 hMCd0D0ptTGHCsignSB[i]->SetYTitle("Entries");
1969 flistTghCutsSignal->Add(hMCd0D0ptTGHCsignSB[i]);
624c07ab 1970
1971 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 1972 hd0D0VtxTrueptTGHCsignSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
1973 hd0D0VtxTrueptTGHCsignSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
1974 hd0D0VtxTrueptTGHCsignSB[i]->SetYTitle("Entries");
1975 flistTghCutsSignal->Add(hd0D0VtxTrueptTGHCsignSB[i]);
624c07ab 1976 }
1977
1978
1979 //############ TIGHT CUTS BACKGROUND HISTOGRAMS ###########
1980 //
1981 // ######## global properties histos #######
ac4c229c 1982 TH2F *hCPtaVSd0d0TGHCback=new TH2F("hCPtaVSd0d0TGHCback","hCPtaVSd0d0_TightCuts_Background",1000,-100000.,100000.,100,0.,1.);
1983 TH1F *hSecVtxZTGHCback=new TH1F("hSecVtxZTGHCback","hSecVtxZ_TightCuts_Background",1000,-8.,8.);
1984 TH1F *hSecVtxXTGHCback=new TH1F("hSecVtxXTGHCback","hSecVtxX_TightCuts_Background",1000,-3000.,3000.);
1985 TH1F *hSecVtxYTGHCback=new TH1F("hSecVtxYTGHCback","hSecVtxY_TightCuts_Background",1000,-3000.,3000.);
1986 TH2F *hSecVtxXYTGHCback=new TH2F("hSecVtxXYTGHCback","hSecVtxXY_TightCuts_Background",1000,-3000.,3000.,1000,-3000.,3000.);
1987 TH1F *hSecVtxPhiTGHCback=new TH1F("hSecVtxPhiTGHCback","hSecVtxPhi_TightCuts_Background",180,-180.1,180.1);
1988 TH1F *hCPtaTGHCback=new TH1F("hCPtaTGHCback","hCPta_TightCuts_Background",100,0.,1.);
1989 TH1F *hd0xd0TGHCback=new TH1F("hd0xd0TGHCback","hd0xd0_TightCuts_Background",1000,-100000.,100000.);
1990 TH1F *hMassTrueTGHCback=new TH1F("hMassTrueTGHCback","D^{0} MC inv. Mass Tight Cuts Background(All momenta)",600,1.600,2.200);
1991 TH1F *hMassTGHCback=new TH1F("hMassTGHCback","D^{0} inv. Mass Tight Cuts Background (All momenta)",600,1.600,2.200);
1992 hMassTGHCback->Sumw2();
1993 TH1F *hMassTrueTGHCbackPM=new TH1F("hMassTrueTGHCbackPM","D^{0} MC inv. Mass Tight Cuts Background, Mass Peak. (All momenta)",600,1.600,2.200);
1994 TH1F *hMassTGHCbackPM=new TH1F("hMassTGHCbackPM","D^{0} inv. Mass Tight Cuts Background (All momenta), MassPeak",600,1.600,2.200);
1995 hMassTGHCbackPM->Sumw2();
1996 TH1F *hMassTrueTGHCbackSB=new TH1F("hMassTrueTGHCbackSB","D^{0} MC inv. Mass in Side Bands Tight Cuts Backgrround(All momenta)",600,1.600,2.200);
1997 TH1F *hMassTGHCbackSB=new TH1F("hMassTGHCbackSB","D^{0} inv. Mass in Side Bands Tight Cuts Background (All momenta)",600,1.600,2.200);
1998 hMassTGHCbackSB->Sumw2();
1999
2000 flistTghCutsBack->Add(hCPtaVSd0d0TGHCback);
2001 flistTghCutsBack->Add(hSecVtxZTGHCback);
2002 flistTghCutsBack->Add(hSecVtxYTGHCback);
2003 flistTghCutsBack->Add(hSecVtxXTGHCback);
2004 flistTghCutsBack->Add(hSecVtxXYTGHCback);
2005 flistTghCutsBack->Add(hSecVtxPhiTGHCback);
2006 flistTghCutsBack->Add(hCPtaTGHCback);
2007 flistTghCutsBack->Add(hd0xd0TGHCback);
2008 flistTghCutsBack->Add(hMassTrueTGHCback);
2009 flistTghCutsBack->Add(hMassTGHCback);
2010 flistTghCutsBack->Add(hMassTrueTGHCbackPM);
2011 flistTghCutsBack->Add(hMassTGHCbackPM);
2012 flistTghCutsBack->Add(hMassTrueTGHCbackSB);
2013 flistTghCutsBack->Add(hMassTGHCbackSB);
624c07ab 2014
2015
2016 // ####### d0 D0 histos ############
2017
ac4c229c 2018 TH1F *hd0D0TGHCbackPM = new TH1F("hd0D0TGHCbackPM","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2019 hd0D0TGHCbackPM->SetXTitle("Impact parameter [#mum]");
2020 hd0D0TGHCbackPM->SetYTitle("Entries");
2021
2022 TH1F *hd0D0VtxTrueTGHCbackPM = new TH1F("hd0D0VtxTrueTGHCbackPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2023 hd0D0VtxTrueTGHCbackPM->SetXTitle("Impact parameter [#mum]");
2024 hd0D0VtxTrueTGHCbackPM->SetYTitle("Entries");
2025
2026 TH1F *hMCd0D0TGHCbackPM = new TH1F("hMCd0D0TGHCbackPM","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2027 hMCd0D0TGHCbackPM->SetXTitle("MC Impact parameter [#mum]");
2028 hMCd0D0TGHCbackPM->SetYTitle("Entries");
2029
2030 TH1F *hd0D0TGHCbackSB = new TH1F("hd0D0TGHCbackSB","D^{0} impact par. plot , Tight Cuts ,Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2031 hd0D0TGHCbackSB->SetXTitle("Impact parameter [#mum]");
2032 hd0D0TGHCbackSB->SetYTitle("Entries");
2033
2034 TH1F *hd0D0VtxTrueTGHCbackSB = new TH1F("hd0D0VtxTrueTGHCbackSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2035 hd0D0VtxTrueTGHCbackSB->SetXTitle("Impact parameter [#mum]");
2036 hd0D0VtxTrueTGHCbackSB->SetYTitle("Entries");
2037
2038 TH1F *hMCd0D0TGHCbackSB = new TH1F("hMCd0D0TGHCbackSB","D^{0} impact par. plot, Tight Cuts, Background,Mass Peak (All momenta)",1000,-1000.,1000.);
2039 hMCd0D0TGHCbackSB->SetXTitle("MC Impact parameter [#mum]");
2040 hMCd0D0TGHCbackSB->SetYTitle("Entries");
2041
2042 flistTghCutsBack->Add(hd0D0TGHCbackPM);
2043 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackPM);
2044 flistTghCutsBack->Add(hMCd0D0TGHCbackPM);
2045 flistTghCutsBack->Add(hd0D0TGHCbackSB);
2046 flistTghCutsBack->Add(hd0D0VtxTrueTGHCbackSB);
2047 flistTghCutsBack->Add(hMCd0D0TGHCbackSB);
2048
2049 TH1F **hd0D0ptTGHCbackPM=new TH1F*[fnbins];
2050 TH1F **hMCd0D0ptTGHCbackPM=new TH1F*[fnbins];
2051 TH1F ** hd0D0VtxTrueptTGHCbackPM=new TH1F*[fnbins];
2052 TH1F **hd0D0ptTGHCbackSB=new TH1F*[fnbins];
2053 TH1F **hMCd0D0ptTGHCbackSB=new TH1F*[fnbins];
2054 TH1F ** hd0D0VtxTrueptTGHCbackSB=new TH1F*[fnbins];
2055 namehist="hd0D0ptTGHCback_";
624c07ab 2056 titlehist="D^{0} impact par. plot, Tight Cuts, Background, ";
2057 for(Int_t i=0;i<fnbins;i++){
2058 strnamept=namehist;
2059 strnamept.Append("PkMss_pt");
2060 strnamept+=i;
2061
2062 strtitlept=titlehist;
2063 strtitlept.Append(" Mass Peak, ");
2064 strtitlept+=fptbins[i];
2065 strtitlept.Append("<= pt <");
2066 strtitlept+=fptbins[i+1];
2067 strtitlept.Append(" [GeV/c]");
2068
ac4c229c 2069 hd0D0ptTGHCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2070 hd0D0ptTGHCbackPM[i]->SetXTitle("Impact parameter [#mum] ");
2071 hd0D0ptTGHCbackPM[i]->SetYTitle("Entries");
2072 flistTghCutsBack->Add(hd0D0ptTGHCbackPM[i]);
624c07ab 2073
2074 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 2075 hMCd0D0ptTGHCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2076 hMCd0D0ptTGHCbackPM[i]->SetXTitle("MC Impact parameter [#mum] ");
2077 hMCd0D0ptTGHCbackPM[i]->SetYTitle("Entries");
2078 flistTghCutsBack->Add(hMCd0D0ptTGHCbackPM[i]);
624c07ab 2079
2080
2081 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 2082 hd0D0VtxTrueptTGHCbackPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2083 hd0D0VtxTrueptTGHCbackPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2084 hd0D0VtxTrueptTGHCbackPM[i]->SetYTitle("Entries");
2085 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackPM[i]);
624c07ab 2086
2087 strnamept=namehist;
2088 strnamept.Append("SBMss_pt");
2089 strnamept+=i;
2090
2091 strtitlept=titlehist;
2092 strtitlept.Append(" Side Bands, ");
2093 strtitlept+=fptbins[i];
2094 strtitlept.Append("<= pt <");
2095 strtitlept+=fptbins[i+1];
2096 strtitlept.Append(" [GeV/c]");
2097
ac4c229c 2098 hd0D0ptTGHCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2099 hd0D0ptTGHCbackSB[i]->SetXTitle("Impact parameter [#mum] ");
2100 hd0D0ptTGHCbackSB[i]->SetYTitle("Entries");
2101 flistTghCutsBack->Add(hd0D0ptTGHCbackSB[i]);
624c07ab 2102
2103 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 2104 hMCd0D0ptTGHCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2105 hMCd0D0ptTGHCbackSB[i]->SetXTitle("MC Impact parameter [#mum] ");
2106 hMCd0D0ptTGHCbackSB[i]->SetYTitle("Entries");
2107 flistTghCutsBack->Add(hMCd0D0ptTGHCbackSB[i]);
624c07ab 2108
2109 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 2110 hd0D0VtxTrueptTGHCbackSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2111 hd0D0VtxTrueptTGHCbackSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2112 hd0D0VtxTrueptTGHCbackSB[i]->SetYTitle("Entries");
2113 flistTghCutsBack->Add(hd0D0VtxTrueptTGHCbackSB[i]);
624c07ab 2114 }
2115
2116
2117
2118 //############ TIGHT CUTS FROMB HISTOGRAMS ###########
2119 //
2120 //####### global properties histos
2121
ac4c229c 2122 TH2F *hCPtaVSd0d0TGHCfromB=new TH2F("hCPtaVSd0d0TGHCfromB","hCPtaVSd0d0_TightCuts_FromB",1000,-100000.,100000.,100,0.,1.);
2123 TH1F *hSecVtxZTGHCfromB=new TH1F("hSecVtxZTGHCfromB","hSecVtxZ_TightCuts_FromB",1000,-8.,8.);
2124 TH1F *hSecVtxXTGHCfromB=new TH1F("hSecVtxXTGHCfromB","hSecVtxX_TightCuts_FromB",1000,-3000.,3000.);
2125 TH1F *hSecVtxYTGHCfromB=new TH1F("hSecVtxYTGHCfromB","hSecVtxY_TightCuts_FromB",1000,-3000.,3000.);
2126 TH2F *hSecVtxXYTGHCfromB=new TH2F("hSecVtxXYTGHCfromB","hSecVtxXY_TightCuts_FromB",1000,-3000.,3000.,1000,-3000.,3000.);
2127 TH1F *hSecVtxPhiTGHCfromB=new TH1F("hSecVtxPhiTGHCfromB","hSecVtxPhi_TightCuts_FromB",180,-180.1,180.1);
2128 TH1F *hCPtaTGHCfromB=new TH1F("hCPtaTGHCfromB","hCPta_TightCuts_FromB",100,0.,1.);
2129 TH1F *hd0xd0TGHCfromB=new TH1F("hd0xd0TGHCfromB","hd0xd0_TightCuts_FromB",1000,-100000.,100000.);
2130 TH1F *hMassTrueTGHCfromB=new TH1F("hMassTrueTGHCfromB","D^{0} MC inv. Mass Tight Cuts FromB(All momenta)",600,1.600,2.200);
2131 TH1F *hMassTGHCfromB=new TH1F("hMassTGHCfromB","D^{0} inv. Mass Tight Cuts FromB (All momenta)",600,1.600,2.200);
2132 hMassTGHCfromB->Sumw2();
2133 TH1F *hMassTrueTGHCfromBPM=new TH1F("hMassTrueTGHCfromBPM","D^{0} MC inv. Mass Tight Cuts FromB, Mass Peak. (All momenta)",600,1.600,2.200);
2134 TH1F *hMassTGHCfromBPM=new TH1F("hMassTGHCfromBPM","D^{0} inv. Mass Tight Cuts FromB (All momenta), MassPeak",600,1.600,2.200);
2135 hMassTGHCfromBPM->Sumw2();
2136 TH1F *hMassTrueTGHCfromBSB=new TH1F("hMassTrueTGHCfromBSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromB(All momenta)",600,1.600,2.200);
2137 TH1F *hMassTGHCfromBSB=new TH1F("hMassTGHCfromBSB","D^{0} inv. Mass in Side Bands Tight Cuts FromB (All momenta)",600,1.600,2.200);
2138 hMassTGHCfromBSB->Sumw2();
2139
2140 flistTghCutsFromB->Add(hCPtaVSd0d0TGHCfromB);
2141 flistTghCutsFromB->Add(hSecVtxZTGHCfromB);
2142 flistTghCutsFromB->Add(hSecVtxYTGHCfromB);
2143 flistTghCutsFromB->Add(hSecVtxXTGHCfromB);
2144 flistTghCutsFromB->Add(hSecVtxXYTGHCfromB);
2145 flistTghCutsFromB->Add(hSecVtxPhiTGHCfromB);
2146 flistTghCutsFromB->Add(hCPtaTGHCfromB);
2147 flistTghCutsFromB->Add(hd0xd0TGHCfromB);
2148 flistTghCutsFromB->Add(hMassTrueTGHCfromB);
2149 flistTghCutsFromB->Add(hMassTGHCfromB);
2150 flistTghCutsFromB->Add(hMassTrueTGHCfromBPM);
2151 flistTghCutsFromB->Add(hMassTGHCfromBPM);
2152 flistTghCutsFromB->Add(hMassTrueTGHCfromBSB);
2153 flistTghCutsFromB->Add(hMassTGHCfromBSB);
624c07ab 2154
2155 // ######### d0 D0 histos ##############
ac4c229c 2156 TH1F *hd0D0TGHCfromBPM = new TH1F("hd0D0TGHCfromBPM","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2157 hd0D0TGHCfromBPM->SetXTitle("Impact parameter [#mum]");
2158 hd0D0TGHCfromBPM->SetYTitle("Entries");
2159
2160 TH1F *hd0D0VtxTrueTGHCfromBPM = new TH1F("hd0D0VtxTrueTGHCfromBPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2161 hd0D0VtxTrueTGHCfromBPM->SetXTitle("Impact parameter [#mum]");
2162 hd0D0VtxTrueTGHCfromBPM->SetYTitle("Entries");
2163
2164 TH1F *hMCd0D0TGHCfromBPM = new TH1F("hMCd0D0TGHCfromBPM","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2165 hMCd0D0TGHCfromBPM->SetXTitle("MC Impact parameter [#mum]");
2166 hMCd0D0TGHCfromBPM->SetYTitle("Entries");
2167
2168 TH1F *hd0D0TGHCfromBSB = new TH1F("hd0D0TGHCfromBSB","D^{0} impact par. plot , Tight Cuts ,FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2169 hd0D0TGHCfromBSB->SetXTitle("Impact parameter [#mum]");
2170 hd0D0TGHCfromBSB->SetYTitle("Entries");
2171
2172 TH1F *hd0D0VtxTrueTGHCfromBSB = new TH1F("hd0D0VtxTrueTGHCfromBSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2173 hd0D0VtxTrueTGHCfromBSB->SetXTitle("Impact parameter [#mum]");
2174 hd0D0VtxTrueTGHCfromBSB->SetYTitle("Entries");
2175
2176 TH1F *hMCd0D0TGHCfromBSB = new TH1F("hMCd0D0TGHCfromBSB","D^{0} impact par. plot, Tight Cuts, FromB,Mass Peak (All momenta)",1000,-1000.,1000.);
2177 hMCd0D0TGHCfromBSB->SetXTitle("MC Impact parameter [#mum]");
2178 hMCd0D0TGHCfromBSB->SetYTitle("Entries");
2179
2180 flistTghCutsFromB->Add(hd0D0TGHCfromBPM);
2181 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBPM);
2182 flistTghCutsFromB->Add(hMCd0D0TGHCfromBPM);
2183 flistTghCutsFromB->Add(hd0D0TGHCfromBSB);
2184 flistTghCutsFromB->Add(hd0D0VtxTrueTGHCfromBSB);
2185 flistTghCutsFromB->Add(hMCd0D0TGHCfromBSB);
2186
2187 TH1F **hd0D0ptTGHCfromBPM=new TH1F*[fnbins];
2188 TH1F **hMCd0D0ptTGHCfromBPM=new TH1F*[fnbins];
2189 TH1F ** hd0D0VtxTrueptTGHCfromBPM=new TH1F*[fnbins];
2190 TH1F **hd0D0ptTGHCfromBSB=new TH1F*[fnbins];
2191 TH1F **hMCd0D0ptTGHCfromBSB=new TH1F*[fnbins];
2192 TH1F ** hd0D0VtxTrueptTGHCfromBSB=new TH1F*[fnbins];
2193 namehist="hd0D0ptTGHCfromB_";
624c07ab 2194 titlehist="D^{0} impact par. plot, Tight Cuts, FromB, ";
2195 for(Int_t i=0;i<fnbins;i++){
2196 strnamept=namehist;
2197 strnamept.Append("PkMss_pt");
2198 strnamept+=i;
2199
2200 strtitlept=titlehist;
2201 strtitlept.Append(" Mass Peak, ");
2202 strtitlept+=fptbins[i];
2203 strtitlept.Append("<= pt <");
2204 strtitlept+=fptbins[i+1];
2205 strtitlept.Append(" [GeV/c]");
2206
ac4c229c 2207 hd0D0ptTGHCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2208 hd0D0ptTGHCfromBPM[i]->SetXTitle("Impact parameter [#mum] ");
2209 hd0D0ptTGHCfromBPM[i]->SetYTitle("Entries");
2210 flistTghCutsFromB->Add(hd0D0ptTGHCfromBPM[i]);
624c07ab 2211
2212 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 2213 hMCd0D0ptTGHCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2214 hMCd0D0ptTGHCfromBPM[i]->SetXTitle("MC Impact parameter [#mum] ");
2215 hMCd0D0ptTGHCfromBPM[i]->SetYTitle("Entries");
2216 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBPM[i]);
624c07ab 2217
2218
2219 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 2220 hd0D0VtxTrueptTGHCfromBPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2221 hd0D0VtxTrueptTGHCfromBPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2222 hd0D0VtxTrueptTGHCfromBPM[i]->SetYTitle("Entries");
2223 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBPM[i]);
624c07ab 2224
2225 strnamept=namehist;
2226 strnamept.Append("SBMss_pt");
2227 strnamept+=i;
2228
2229 strtitlept=titlehist;
2230 strtitlept.Append(" Side Bands, ");
2231 strtitlept+=fptbins[i];
2232 strtitlept.Append("<= pt <");
2233 strtitlept+=fptbins[i+1];
2234 strtitlept.Append(" [GeV/c]");
2235
ac4c229c 2236 hd0D0ptTGHCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2237 hd0D0ptTGHCfromBSB[i]->SetXTitle("Impact parameter [#mum] ");
2238 hd0D0ptTGHCfromBSB[i]->SetYTitle("Entries");
2239 flistTghCutsFromB->Add(hd0D0ptTGHCfromBSB[i]);
624c07ab 2240
2241 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 2242 hMCd0D0ptTGHCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2243 hMCd0D0ptTGHCfromBSB[i]->SetXTitle("MC Impact parameter [#mum] ");
2244 hMCd0D0ptTGHCfromBSB[i]->SetYTitle("Entries");
2245 flistTghCutsFromB->Add(hMCd0D0ptTGHCfromBSB[i]);
624c07ab 2246
2247 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 2248 hd0D0VtxTrueptTGHCfromBSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2249 hd0D0VtxTrueptTGHCfromBSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2250 hd0D0VtxTrueptTGHCfromBSB[i]->SetYTitle("Entries");
2251 flistTghCutsFromB->Add(hd0D0VtxTrueptTGHCfromBSB[i]);
624c07ab 2252 }
2253
2254
2255
2256 //############ TIGHT CUTS FROM DSTAR HISTOGRAMS ###########
2257 //
2258 //############## global properties histos
ac4c229c 2259 TH2F *hCPtaVSd0d0TGHCfromDstar=new TH2F("hCPtaVSd0d0TGHCfromDstar","hCPtaVSd0d0_TightCuts_FromDStar",1000,-100000.,100000.,100,0.,1.);
2260 TH1F *hSecVtxZTGHCfromDstar=new TH1F("hSecVtxZTGHCfromDstar","hSecVtxZ_TightCuts_FromDStar",1000,-8.,8.);
2261 TH1F *hSecVtxXTGHCfromDstar=new TH1F("hSecVtxXTGHCfromDstar","hSecVtxX_TightCuts_FromDStar",1000,-3000.,3000.);
2262 TH1F *hSecVtxYTGHCfromDstar=new TH1F("hSecVtxYTGHCfromDstar","hSecVtxY_TightCuts_FromDStar",1000,-3000.,3000.);
2263 TH2F *hSecVtxXYTGHCfromDstar=new TH2F("hSecVtxXYTGHCfromDstar","hSecVtxXY_TightCuts_FromDStar",1000,-3000.,3000.,1000,-3000.,3000.);
2264 TH1F *hSecVtxPhiTGHCfromDstar=new TH1F("hSecVtxPhiTGHCfromDstar","hSecVtxPhi_TightCuts_FromDStar",180,-180.1,180.1);
2265 TH1F *hCPtaTGHCfromDstar=new TH1F("hCPtaTGHCfromDstar","hCPta_TightCuts_FromDStar",100,0.,1.);
2266 TH1F *hd0xd0TGHCfromDstar=new TH1F("hd0xd0TGHCfromDstar","hd0xd0_TightCuts_FromDStar",1000,-100000.,100000.);
2267 TH1F *hMassTrueTGHCfromDstar=new TH1F("hMassTrueTGHCfromDstar","D^{0} MC inv. Mass Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
2268 TH1F *hMassTGHCfromDstar=new TH1F("hMassTGHCfromDstar","D^{0} inv. Mass Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
2269 hMassTGHCfromDstar->Sumw2();
2270 TH1F *hMassTrueTGHCfromDstarPM=new TH1F("hMassTrueTGHCfromDstarPM","D^{0} MC inv. Mass Tight Cuts FromDStar, Mass Peak. (All momenta)",600,1.600,2.200);
2271 TH1F *hMassTGHCfromDstarPM=new TH1F("hMassTGHCfromDstarPM","D^{0} inv. Mass Tight Cuts FromDStar (All momenta), MassPeak",600,1.600,2.200);
2272 hMassTGHCfromDstarPM->Sumw2();
2273 TH1F *hMassTrueTGHCfromDstarSB=new TH1F("hMassTrueTGHCfromDstarSB","D^{0} MC inv. Mass in Side Bands Tight Cuts FromDStar(All momenta)",600,1.600,2.200);
2274 TH1F *hMassTGHCfromDstarSB=new TH1F("hMassTGHCfromDstarSB","D^{0} inv. Mass in Side Bands Tight Cuts FromDStar (All momenta)",600,1.600,2.200);
2275 hMassTGHCfromDstarSB->Sumw2();
2276
2277 flistTghCutsFromDstar->Add(hCPtaVSd0d0TGHCfromDstar);
2278 flistTghCutsFromDstar->Add(hSecVtxZTGHCfromDstar);
2279 flistTghCutsFromDstar->Add(hSecVtxYTGHCfromDstar);
2280 flistTghCutsFromDstar->Add(hSecVtxXTGHCfromDstar);
2281 flistTghCutsFromDstar->Add(hSecVtxXYTGHCfromDstar);
2282 flistTghCutsFromDstar->Add(hSecVtxPhiTGHCfromDstar);
2283 flistTghCutsFromDstar->Add(hCPtaTGHCfromDstar);
2284 flistTghCutsFromDstar->Add(hd0xd0TGHCfromDstar);
2285 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstar);
2286 flistTghCutsFromDstar->Add(hMassTGHCfromDstar);
2287 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarPM);
2288 flistTghCutsFromDstar->Add(hMassTGHCfromDstarPM);
2289 flistTghCutsFromDstar->Add(hMassTrueTGHCfromDstarSB);
2290 flistTghCutsFromDstar->Add(hMassTGHCfromDstarSB);
624c07ab 2291
2292 //########## d0 D0 histos #############
ac4c229c 2293 TH1F *hd0D0TGHCfromDstPM = new TH1F("hd0D0TGHCfromDstarPM","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
2294 hd0D0TGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
2295 hd0D0TGHCfromDstPM->SetYTitle("Entries");
2296
2297 TH1F *hd0D0VtxTrueTGHCfromDstPM = new TH1F("hd0D0VtxTrueTGHCfromDstarPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
2298 hd0D0VtxTrueTGHCfromDstPM->SetXTitle("Impact parameter [#mum]");
2299 hd0D0VtxTrueTGHCfromDstPM->SetYTitle("Entries");
2300
2301 TH1F *hMCd0D0TGHCfromDstPM = new TH1F("hMCd0D0TGHCfromDstarPM","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
2302 hMCd0D0TGHCfromDstPM->SetXTitle("MC Impact parameter [#mum]");
2303 hMCd0D0TGHCfromDstPM->SetYTitle("Entries");
2304
2305 TH1F *hd0D0TGHCfromDstSB = new TH1F("hd0D0TGHCfromDstarSB","D^{0} impact par. plot , Tight Cuts ,FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
2306 hd0D0TGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
2307 hd0D0TGHCfromDstSB->SetYTitle("Entries");
2308
2309 TH1F *hd0D0VtxTrueTGHCfromDstSB = new TH1F("hd0D0VtxTrueTGHCfromDstarSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
2310 hd0D0VtxTrueTGHCfromDstSB->SetXTitle("Impact parameter [#mum]");
2311 hd0D0VtxTrueTGHCfromDstSB->SetYTitle("Entries");
2312
2313 TH1F *hMCd0D0TGHCfromDstSB = new TH1F("hMCd0D0TGHCfromDstarSB","D^{0} impact par. plot, Tight Cuts, FromDStar,Mass Peak (All momenta)",1000,-1000.,1000.);
2314 hMCd0D0TGHCfromDstSB->SetXTitle("MC Impact parameter [#mum]");
2315 hMCd0D0TGHCfromDstSB->SetYTitle("Entries");
2316
2317 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstPM);
2318 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstPM);
2319 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstPM);
2320 flistTghCutsFromDstar->Add(hd0D0TGHCfromDstSB);
2321 flistTghCutsFromDstar->Add(hd0D0VtxTrueTGHCfromDstSB);
2322 flistTghCutsFromDstar->Add(hMCd0D0TGHCfromDstSB);
2323
2324 TH1F **hd0D0ptTGHCfromDstPM=new TH1F*[fnbins];
2325 TH1F **hMCd0D0ptTGHCfromDstPM=new TH1F*[fnbins];
2326 TH1F ** hd0D0VtxTrueptTGHCfromDstPM=new TH1F*[fnbins];
2327 TH1F **hd0D0ptTGHCfromDstSB=new TH1F*[fnbins];
2328 TH1F **hMCd0D0ptTGHCfromDstSB=new TH1F*[fnbins];
2329 TH1F ** hd0D0VtxTrueptTGHCfromDstSB=new TH1F*[fnbins];
2330 namehist="hd0D0ptTGHCfromDstar_";
624c07ab 2331 titlehist="D^{0} impact par. plot, Tight Cuts, FromDStar, ";
2332 for(Int_t i=0;i<fnbins;i++){
2333 strnamept=namehist;
2334 strnamept.Append("PkMss_pt");
2335 strnamept+=i;
2336
2337 strtitlept=titlehist;
2338 strtitlept.Append(" Mass Peak, ");
2339 strtitlept+=fptbins[i];
2340 strtitlept.Append("<= pt <");
2341 strtitlept+=fptbins[i+1];
2342 strtitlept.Append(" [GeV/c]");
2343
ac4c229c 2344 hd0D0ptTGHCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2345 hd0D0ptTGHCfromDstPM[i]->SetXTitle("Impact parameter [#mum] ");
2346 hd0D0ptTGHCfromDstPM[i]->SetYTitle("Entries");
2347 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstPM[i]);
624c07ab 2348
2349 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 2350 hMCd0D0ptTGHCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2351 hMCd0D0ptTGHCfromDstPM[i]->SetXTitle("MC Impact parameter [#mum] ");
2352 hMCd0D0ptTGHCfromDstPM[i]->SetYTitle("Entries");
2353 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstPM[i]);
624c07ab 2354
2355
2356 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 2357 hd0D0VtxTrueptTGHCfromDstPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2358 hd0D0VtxTrueptTGHCfromDstPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2359 hd0D0VtxTrueptTGHCfromDstPM[i]->SetYTitle("Entries");
2360 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstPM[i]);
624c07ab 2361
2362 strnamept=namehist;
2363 strnamept.Append("SBMss_pt");
2364 strnamept+=i;
2365
2366 strtitlept=titlehist;
2367 strtitlept.Append(" Side Bands, ");
2368 strtitlept+=fptbins[i];
2369 strtitlept.Append("<= pt <");
2370 strtitlept+=fptbins[i+1];
2371 strtitlept.Append(" [GeV/c]");
2372
ac4c229c 2373 hd0D0ptTGHCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2374 hd0D0ptTGHCfromDstSB[i]->SetXTitle("Impact parameter [#mum] ");
2375 hd0D0ptTGHCfromDstSB[i]->SetYTitle("Entries");
2376 flistTghCutsFromDstar->Add(hd0D0ptTGHCfromDstSB[i]);
624c07ab 2377
2378 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 2379 hMCd0D0ptTGHCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2380 hMCd0D0ptTGHCfromDstSB[i]->SetXTitle("MC Impact parameter [#mum] ");
2381 hMCd0D0ptTGHCfromDstSB[i]->SetYTitle("Entries");
2382 flistTghCutsFromDstar->Add(hMCd0D0ptTGHCfromDstSB[i]);
624c07ab 2383
2384 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 2385 hd0D0VtxTrueptTGHCfromDstSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2386 hd0D0VtxTrueptTGHCfromDstSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2387 hd0D0VtxTrueptTGHCfromDstSB[i]->SetYTitle("Entries");
2388 flistTghCutsFromDstar->Add(hd0D0VtxTrueptTGHCfromDstSB[i]);
624c07ab 2389 }
2390
2391
2392 //############ TIGHT CUTS OTHER HISTOGRAMS ###########
2393 //
2394 //########### global properties histos ###########
2395
ac4c229c 2396 TH2F *hCPtaVSd0d0TGHCother=new TH2F("hCPtaVSd0d0TGHCother","hCPtaVSd0d0_TightCuts_other",1000,-100000.,100000.,100,0.,1.);
2397 TH1F *hSecVtxZTGHCother=new TH1F("hSecVtxZTGHCother","hSecVtxZ_TightCuts_other",1000,-8.,8.);
2398 TH1F *hSecVtxXTGHCother=new TH1F("hSecVtxXTGHCother","hSecVtxX_TightCuts_other",1000,-3000.,3000.);
2399 TH1F *hSecVtxYTGHCother=new TH1F("hSecVtxYTGHCother","hSecVtxY_TightCuts_other",1000,-3000.,3000.);
2400 TH2F *hSecVtxXYTGHCother=new TH2F("hSecVtxXYTGHCother","hSecVtxXY_TightCuts_other",1000,-3000.,3000.,1000,-3000.,3000.);
2401 TH1F *hSecVtxPhiTGHCother=new TH1F("hSecVtxPhiTGHCother","hSecVtxPhi_TightCuts_other",180,-180.1,180.1);
2402 TH1F *hCPtaTGHCother=new TH1F("hCPtaTGHCother","hCPta_TightCuts_other",100,0.,1.);
2403 TH1F *hd0xd0TGHCother=new TH1F("hd0xd0TGHCother","hd0xd0_TightCuts_other",1000,-100000.,100000.);
2404 TH1F *hMassTrueTGHCother=new TH1F("hMassTrueTGHCother","D^{0} MC inv. Mass Tight Cuts other(All momenta)",600,1.600,2.200);
2405 TH1F *hMassTGHCother=new TH1F("hMassTGHCother","D^{0} inv. Mass Tight Cuts other (All momenta)",600,1.600,2.200);
2406 hMassTGHCother->Sumw2();
2407 TH1F *hMassTrueTGHCotherPM=new TH1F("hMassTrueTGHCotherPM","D^{0} MC inv. Mass Tight Cuts other, Mass Peak. (All momenta)",600,1.600,2.200);
2408 TH1F *hMassTGHCotherPM=new TH1F("hMassTGHCotherPM","D^{0} inv. Mass Tight Cuts other (All momenta), MassPeak",600,1.600,2.200);
2409 hMassTGHCotherPM->Sumw2();
2410 TH1F *hMassTrueTGHCotherSB=new TH1F("hMassTrueTGHCotherSB","D^{0} MC inv. Mass in Side Bands Tight Cuts other(All momenta)",600,1.600,2.200);
2411 TH1F *hMassTGHCotherSB=new TH1F("hMassTGHCotherSB","D^{0} inv. Mass in Side Bands Tight Cuts other (All momenta)",600,1.600,2.200);
2412 hMassTGHCotherSB->Sumw2();
2413
2414 flistTghCutsOther->Add(hCPtaVSd0d0TGHCother);
2415 flistTghCutsOther->Add(hSecVtxZTGHCother);
2416 flistTghCutsOther->Add(hSecVtxYTGHCother);
2417 flistTghCutsOther->Add(hSecVtxXTGHCother);
2418 flistTghCutsOther->Add(hSecVtxXYTGHCother);
2419 flistTghCutsOther->Add(hSecVtxPhiTGHCother);
2420 flistTghCutsOther->Add(hCPtaTGHCother);
2421 flistTghCutsOther->Add(hd0xd0TGHCother);
2422 flistTghCutsOther->Add(hMassTrueTGHCother);
2423 flistTghCutsOther->Add(hMassTGHCother);
2424 flistTghCutsOther->Add(hMassTrueTGHCotherPM);
2425 flistTghCutsOther->Add(hMassTGHCotherPM);
2426 flistTghCutsOther->Add(hMassTrueTGHCotherSB);
2427 flistTghCutsOther->Add(hMassTGHCotherSB);
624c07ab 2428
2429 //############# d0 D0 histos ###############à
ac4c229c 2430 TH1F *hd0D0TGHCotherPM = new TH1F("hd0D0TGHCotherPM","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2431 hd0D0TGHCotherPM->SetXTitle("Impact parameter [#mum]");
2432 hd0D0TGHCotherPM->SetYTitle("Entries");
2433
2434 TH1F *hd0D0VtxTrueTGHCotherPM = new TH1F("hd0D0VtxTrueTGHCotherPM","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2435 hd0D0VtxTrueTGHCotherPM->SetXTitle("Impact parameter [#mum]");
2436 hd0D0VtxTrueTGHCotherPM->SetYTitle("Entries");
2437
2438 TH1F *hMCd0D0TGHCotherPM = new TH1F("hMCd0D0TGHCotherPM","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2439 hMCd0D0TGHCotherPM->SetXTitle("MC Impact parameter [#mum]");
2440 hMCd0D0TGHCotherPM->SetYTitle("Entries");
2441
2442 TH1F *hd0D0TGHCotherSB = new TH1F("hd0D0TGHCotherSB","D^{0} impact par. plot , Tight Cuts ,Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2443 hd0D0TGHCotherSB->SetXTitle("Impact parameter [#mum]");
2444 hd0D0TGHCotherSB->SetYTitle("Entries");
2445
2446 TH1F *hd0D0VtxTrueTGHCotherSB = new TH1F("hd0D0VtxTrueTGHCotherSB","D^{0} impact par. w.r.t. True Vtx, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2447 hd0D0VtxTrueTGHCotherSB->SetXTitle("Impact parameter [#mum]");
2448 hd0D0VtxTrueTGHCotherSB->SetYTitle("Entries");
2449
2450 TH1F *hMCd0D0TGHCotherSB = new TH1F("hMCd0D0TGHCotherSB","D^{0} impact par. plot, Tight Cuts, Other,Mass Peak (All momenta)",1000,-1000.,1000.);
2451 hMCd0D0TGHCotherSB->SetXTitle("MC Impact parameter [#mum]");
2452 hMCd0D0TGHCotherSB->SetYTitle("Entries");
2453
2454 flistTghCutsOther->Add(hd0D0TGHCotherPM);
2455 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherPM);
2456 flistTghCutsOther->Add(hMCd0D0TGHCotherPM);
2457 flistTghCutsOther->Add(hd0D0TGHCotherSB);
2458 flistTghCutsOther->Add(hd0D0VtxTrueTGHCotherSB);
2459 flistTghCutsOther->Add(hMCd0D0TGHCotherSB);
2460
2461 TH1F **hd0D0ptTGHCotherPM=new TH1F*[fnbins];
2462 TH1F **hMCd0D0ptTGHCotherPM=new TH1F*[fnbins];
2463 TH1F ** hd0D0VtxTrueptTGHCotherPM=new TH1F*[fnbins];
2464 TH1F **hd0D0ptTGHCotherSB=new TH1F*[fnbins];
2465 TH1F **hMCd0D0ptTGHCotherSB=new TH1F*[fnbins];
2466 TH1F ** hd0D0VtxTrueptTGHCotherSB=new TH1F*[fnbins];
2467 namehist="hd0D0ptTGHCother_";
624c07ab 2468 titlehist="D^{0} impact par. plot, Tight Cuts, Other, ";
2469 for(Int_t i=0;i<fnbins;i++){
2470 strnamept=namehist;
2471 strnamept.Append("PkMss_pt");
2472 strnamept+=i;
2473
2474 strtitlept=titlehist;
2475 strtitlept.Append(" Mass Peak, ");
2476 strtitlept+=fptbins[i];
2477 strtitlept.Append("<= pt <");
2478 strtitlept+=fptbins[i+1];
2479 strtitlept.Append(" [GeV/c]");
2480
ac4c229c 2481 hd0D0ptTGHCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2482 hd0D0ptTGHCotherPM[i]->SetXTitle("Impact parameter [#mum] ");
2483 hd0D0ptTGHCotherPM[i]->SetYTitle("Entries");
2484 flistTghCutsOther->Add(hd0D0ptTGHCotherPM[i]);
624c07ab 2485
2486 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 2487 hMCd0D0ptTGHCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2488 hMCd0D0ptTGHCotherPM[i]->SetXTitle("MC Impact parameter [#mum] ");
2489 hMCd0D0ptTGHCotherPM[i]->SetYTitle("Entries");
2490 flistTghCutsOther->Add(hMCd0D0ptTGHCotherPM[i]);
624c07ab 2491
2492
2493 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 2494 hd0D0VtxTrueptTGHCotherPM[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2495 hd0D0VtxTrueptTGHCotherPM[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2496 hd0D0VtxTrueptTGHCotherPM[i]->SetYTitle("Entries");
2497 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherPM[i]);
624c07ab 2498
2499 strnamept=namehist;
2500 strnamept.Append("SBMss_pt");
2501 strnamept+=i;
2502
2503 strtitlept=titlehist;
2504 strtitlept.Append(" Side Bands, ");
2505 strtitlept+=fptbins[i];
2506 strtitlept.Append("<= pt <");
2507 strtitlept+=fptbins[i+1];
2508 strtitlept.Append(" [GeV/c]");
2509
ac4c229c 2510 hd0D0ptTGHCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2511 hd0D0ptTGHCotherSB[i]->SetXTitle("Impact parameter [#mum] ");
2512 hd0D0ptTGHCotherSB[i]->SetYTitle("Entries");
2513 flistTghCutsOther->Add(hd0D0ptTGHCotherSB[i]);
624c07ab 2514
2515 strnamept.ReplaceAll("hd0D0","hMCd0D0");
ac4c229c 2516 hMCd0D0ptTGHCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2517 hMCd0D0ptTGHCotherSB[i]->SetXTitle("MC Impact parameter [#mum] ");
2518 hMCd0D0ptTGHCotherSB[i]->SetYTitle("Entries");
2519 flistTghCutsOther->Add(hMCd0D0ptTGHCotherSB[i]);
624c07ab 2520
2521 strnamept.ReplaceAll("hMCd0D0","hd0D0VtxTrue");
ac4c229c 2522 hd0D0VtxTrueptTGHCotherSB[i] = new TH1F(strnamept.Data(),strtitlept.Data(),1000,-1000.,1000.);
2523 hd0D0VtxTrueptTGHCotherSB[i]->SetXTitle("Impact parameter w.r.t. True Vtx [#mum] ");
2524 hd0D0VtxTrueptTGHCotherSB[i]->SetYTitle("Entries");
2525 flistTghCutsOther->Add(hd0D0VtxTrueptTGHCotherSB[i]);
624c07ab 2526 }
2527
2528
2529}
2530
2531
2532
2533//________________________________________________________________________
2534void AliAnalysisTaskSECharmFraction::UserExec(Option_t */*option*/)
2535{
2536 // Execute analysis for current event:
2537 // heavy flavor candidates association to MC truth
2538
2539 AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
2540
8931c313 2541 // In case there is an AOD handler writing a standard AOD, use the AOD
2542 // event in memory rather than the input (ESD) event.
2543 if (!aod && AODEvent() && IsStandardAOD()) aod = dynamic_cast<AliAODEvent*> (AODEvent());
2544
624c07ab 2545 // load D0->Kpi candidates
2546 TClonesArray *arrayD0toKpi =
2547 (TClonesArray*)aod->GetList()->FindObject("D0toKpi");
2548 if(!arrayD0toKpi) {
2549 Printf("AliAnalysisTaskSECharmFraction::UserExec: D0toKpi branch not found!\n");
2550 return;
2551 }
2552
2553 // AOD primary vertex
2554 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
2555
2556
2557 // load MC particles
2558 TClonesArray *arrayMC =
2559 (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
2560 if(!arrayMC) {
2561 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC particles branch not found!\n");
2562 return;
2563 }
2564
2565 // load MC header
2566 AliAODMCHeader *aodmcHeader =
2567 (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
2568 if(!aodmcHeader) {
2569 Printf("AliAnalysisTaskSECharmFraction::UserExec: MC header branch not found!\n");
2570 return;
2571 }
2572
2573 // MC primary vertex
2574 Double_t vtxTrue[3];
2575 aodmcHeader->GetVertex(vtxTrue);
2576
2577 if (!aod) {
2578 Printf("ERROR: aod not available");
2579 return;
2580 }
2581 //histogram filled with 1 for every AOD
2582 fNentries->Fill(1);
2583 PostData(1,fNentries);
2584
2585
2586 //Printf("There are %d tracks in this event", aod->GetNumberOfTracks());
2587 // Int_t nTotHF=0,nTotDstar=0,nTot3Prong=0;
2588 Int_t nTotD0toKpi=0;
ac4c229c 2589 Int_t okd0tight,okd0bartight,okd0loose,okd0barloose;
624c07ab 2590 Bool_t isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar,isSideBand;
ac4c229c 2591 Bool_t isinacceptance;
624c07ab 2592 Int_t signallevel=-1;
2593 Int_t ptbin;
2594 // const Int_t nptbins=10;
2595 Double_t invMassD0,invMassD0bar,ptD0,massmumtrue;
2596
2597
2598 AliAODRecoDecayHF *aodDMC=0x0;// to be used to create a fake true sec vertex
2599 // make trkIDtoEntry register (temporary)
2600 Int_t trkIDtoEntry[100000];
2601 for(Int_t it=0;it<aod->GetNumberOfTracks();it++) {
2602 AliAODTrack *track = aod->GetTrack(it);
2603 if(track->GetID()<0) {
2604 //printf("Track ID <0, id= %d\n",track->GetID());
2605 return;
2606 }
2607 trkIDtoEntry[track->GetID()]=it;
2608 }
2609
2610
2611 // loop over D0->Kpi candidates
2612 Int_t nD0toKpi = arrayD0toKpi->GetEntriesFast();
2613 nTotD0toKpi += nD0toKpi;
2614 // cout<<"Number of D0->Kpi: "<<nD0toKpi<<endl;
2615
2616 for (Int_t iD0toKpi = 0; iD0toKpi < nD0toKpi; iD0toKpi++) {
2617 if(aodDMC!=0x0)delete aodDMC;
2618
2619 isPeakD0=kFALSE;
2620 isPeakD0bar=kFALSE;
2621 isSideBandD0=kFALSE;
2622 isSideBandD0bar=kFALSE;
2623 isSideBand=kFALSE;
c387e585 2624 isinacceptance=kFALSE;
ac4c229c 2625 okd0tight=0;
2626 okd0bartight=0;
2627 okd0loose=0;
2628 okd0barloose=0;
624c07ab 2629
2630 signallevel=-1;
2631
2632
2633 AliAODRecoDecayHF2Prong *d = (AliAODRecoDecayHF2Prong*)arrayD0toKpi->UncheckedAt(iD0toKpi);
2634 Bool_t unsetvtx=kFALSE;
2635 if(!d->GetOwnPrimaryVtx()) {
2636 d->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
2637 unsetvtx=kTRUE;
2638 }
624c07ab 2639
624c07ab 2640
ac4c229c 2641 //####### DATA SELECTION ####################################
2642 //
2643 // ######## CHECK FOR ACCEPTANCE ##########
2644 ptD0=d->Pt();
c387e585 2645 isinacceptance = (TMath::Abs(d->EtaProng(0))<fAcceptanceCuts[0]&&TMath::Abs(d->EtaProng(1))<fAcceptanceCuts[0]); //eta acceptance
624c07ab 2646
2647 //######## INVARIANT MASS SELECTION ###############
2648 CheckInvMassD0(d,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBandD0,isSideBandD0bar);
c387e585 2649 if((isSideBandD0||isSideBandD0bar)&&!(isPeakD0||isPeakD0bar))isSideBand=kTRUE;// TEMPORARY, NOT DONE IN THE METHOD CALLED ABOVE ONLY FOR FURTHER SIDE BAND STUDY
624c07ab 2650
2651 // INVESTIGATE SIGNAL TYPE : ACCESS TO MC INFORMATION
2652 aodDMC=GetD0toKPiSignalType(d,arrayMC,signallevel,massmumtrue,vtxTrue);
ac4c229c 2653 if(!isinacceptance)signallevel=9;
c387e585 2654 fSignalType->Fill(signallevel);
2655
624c07ab 2656 // END OF BACKGROUND TYPE SELECTION
2657
2658 // NOW APPLY CUTS
2659 //NO CUTS CASE IS FOR FREE
2660
2661 // CHECK TIGHTER CUTS
2662 ptbin=SetStandardCuts(ptD0,flargeInvMassCut);
ac4c229c 2663 d->SelectD0(fVHFtight->GetD0toKpiCuts(),okd0tight,okd0bartight);
2664 if(((isPeakD0&&okd0tight)||(isPeakD0bar&&okd0bartight))&&isinacceptance)fSignalTypeTghCuts->Fill(signallevel);
624c07ab 2665
2666 // CHECK LOOSER CUTS
2667 ptbin=SetStandardCuts(ptD0,flargeInvMassCut);
ac4c229c 2668 d->SelectD0(fVHFloose->GetD0toKpiCuts(),okd0loose,okd0barloose);
2669 if(((isPeakD0&&okd0loose)||(isPeakD0bar&&okd0barloose))&&isinacceptance)fSignalTypeLsCuts->Fill(signallevel);
624c07ab 2670
2671
2672 //################### FILL HISTOS ########################
2673 //################################################################
2674 //
2675 //######## improvement: SPEED HERE CAN BE IMPROVED: CALCULATE ONCE AND FOR ALL
2676 // CANDIDATE VARIABLES
2677
2678 //NO CUTS Case: force okD0 and okD0bar = kTRUE
ac4c229c 2679 if(signallevel==1)FillHistos(d,flistNoCutsSignal,ptbin,kTRUE,kTRUE,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2680 else if(signallevel==2)FillHistos(d,flistNoCutsFromDstar,ptbin,kTRUE,kTRUE,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2681 else if(signallevel==3||signallevel==4)FillHistos(d,flistNoCutsFromB,ptbin,kTRUE,kTRUE,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2682 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10||signallevel==9)FillHistos(d,flistNoCutsBack,ptbin,kTRUE,kTRUE,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2683 else if(signallevel==5||signallevel==6)FillHistos(d,flistNoCutsOther,ptbin,kTRUE,kTRUE,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
624c07ab 2684
2685 //LOOSE CUTS Case
ac4c229c 2686 if(signallevel==1)FillHistos(d,flistLsCutsSignal,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2687 else if(signallevel==2)FillHistos(d,flistLsCutsFromDstar,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2688 else if(signallevel==3||signallevel==4)FillHistos(d,flistLsCutsFromB,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
c387e585 2689 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10)FillHistos(d,flistLsCutsBack,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
ac4c229c 2690 else if(signallevel==5||signallevel==6)FillHistos(d,flistLsCutsOther,ptbin,okd0loose,okd0barloose,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
624c07ab 2691
2692 //TIGHT CUTS Case
ac4c229c 2693 if(signallevel==1)FillHistos(d,flistTghCutsSignal,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2694 else if(signallevel==2)FillHistos(d,flistTghCutsFromDstar,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2695 else if(signallevel==3||signallevel==4)FillHistos(d,flistTghCutsFromB,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
c387e585 2696 else if(signallevel==-1||signallevel==7||signallevel==8||signallevel==10)FillHistos(d,flistTghCutsBack,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
ac4c229c 2697 else if(signallevel==5||signallevel==6)FillHistos(d,flistTghCutsOther,ptbin,okd0tight,okd0bartight,invMassD0,invMassD0bar,isPeakD0,isPeakD0bar,isSideBand,massmumtrue,aodDMC,vtxTrue);
2698
624c07ab 2699
2700 if(aodDMC!=0x0){
2701 delete aodDMC;
2702 aodDMC=0x0;
2703 }
ac4c229c 2704
624c07ab 2705 if(unsetvtx) d->UnsetOwnPrimaryVtx();
ac4c229c 2706
624c07ab 2707 }
c387e585 2708
624c07ab 2709 // ####################### POST OUTPUT TLIST DATA #########################
2710 // ####### histo for #AOD entries already posted
2711
2712 PostData(2,fSignalType);
2713 PostData(3,fSignalTypeLsCuts);
2714 PostData(4,fSignalTypeTghCuts);
ac4c229c 2715 PostData(5,flistNoCutsSignal);
2716 PostData(6,flistNoCutsBack);
2717 PostData(7,flistNoCutsFromB);
2718 PostData(8,flistNoCutsFromDstar);
2719 PostData(9,flistNoCutsOther);
2720 PostData(10,flistLsCutsSignal);
2721 PostData(11,flistLsCutsBack);
2722 PostData(12,flistLsCutsFromB);
2723 PostData(13,flistLsCutsFromDstar);
2724 PostData(14,flistLsCutsOther);
2725 PostData(15,flistTghCutsSignal);
2726 PostData(16,flistTghCutsBack);
2727 PostData(17,flistTghCutsFromB);
2728 PostData(18,flistTghCutsFromDstar);
2729 PostData(19,flistTghCutsOther);
624c07ab 2730
2731 return;
2732}
2733
2734//_________________________________________
2735Int_t AliAnalysisTaskSECharmFraction::SetStandardCuts(Double_t pt,Double_t invMassCut){
2736 //#############
2737 // TEMPORARY: to be change in :
2738 // for(j<nptbins)
2739 // if pt < standardptbin[j+1]
2740 // SetCuts, bin=j
2741 // break
2742 //
2743 // the way the cuts are set is for further development
2744 // (to be interfaced with AliAnalsysTaskSETuneCuts)
c387e585 2745 //
2746 // Cuts:
2747 // 0 = inv. mass half width [GeV]
2748 // 1 = dca [cm]
2749 // 2 = cosThetaStar
2750 // 3 = pTK [GeV/c]
2751 // 4 = pTPi [GeV/c]
2752 // 5 = d0K [cm] upper limit!
2753 // 6 = d0Pi [cm] upper limit!
2754 // 7 = d0d0 [cm^2]
2755 // 8 = cosThetaPoint
2756
624c07ab 2757 Int_t ptbin=-1;
2758 if (pt>0. && pt<=1.) {
2759 ptbin=0;
c387e585 2760 fVHFtight->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.0002,0.5);
624c07ab 2761 fVHFloose->SetD0toKpiCuts(invMassCut,0.04,0.8,0.5,0.5,0.05,0.05,-0.00025,0.7);
2762 }
2763
2764 if(pt>1. && pt<=3.) {
2765 ptbin=1;
c387e585 2766 fVHFtight->SetD0toKpiCuts(invMassCut,0.03,0.8,0.6,0.6,0.05,0.05,-0.0002,0.6);
624c07ab 2767 fVHFloose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,1,1,-0.00025,0.8);
2768 //printf("I'm in the bin %d\n",ptbin);
2769 }
2770
2771 if(pt>3. && pt<=5.){
2772 ptbin=2;
c387e585 2773 fVHFtight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.0001,0.8);
624c07ab 2774 fVHFloose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8);
2775 //printf("I'm in the bin %d\n",ptbin);
2776 }
2777 if(pt>5.){
2778 ptbin=3;
c387e585 2779 fVHFtight->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00005,0.8);
624c07ab 2780 fVHFloose->SetD0toKpiCuts(invMassCut,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.9);
2781 }//if(pt>5)
2782 return ptbin;
2783}
2784
2785//__________________________________________________________
2786void AliAnalysisTaskSECharmFraction::CheckInvMassD0(AliAODRecoDecayHF2Prong *d,Double_t &invMassD0,Double_t &invMassD0bar,Bool_t &isPeakD0,Bool_t &isPeakD0bar,Bool_t &isSideBandD0,Bool_t &isSideBandD0bar){
2787 //Check wheter the candidate inv. mass is compatible with signal or sideband inv. mass selection
2788
2789 d->InvMassD0(invMassD0,invMassD0bar);
2790 //CHECK if ISPEAK
2791 if(TMath::Abs(invMassD0-fmD0PDG)<fsignalInvMassCut)isPeakD0=kTRUE;
2792 if(TMath::Abs(invMassD0bar-fmD0PDG)<fsignalInvMassCut)isPeakD0bar=kTRUE;
2793 //CHECK if ISSIDEBAND: no constraint is present between signal region definition and side band definition
2794 // ######## TO BE CHANGED the distinction between sidebandD0 and sidebandD0bar is meaningless
2795 // and it is present only for side band region study (see which inv mass has the D0(D0bar)
2796 // in case the D0bar(D0) is in the sideband) #######
2797 if(TMath::Abs(invMassD0-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
2798 isSideBandD0=kTRUE;
2799 }
2800 if(TMath::Abs(invMassD0bar-fmD0PDG)>fsidebandInvMassCut&&TMath::Abs(invMassD0bar-fmD0PDG)<fsidebandInvMassCut+fsidebandInvMassWindow){
2801 isSideBandD0bar=kTRUE;
2802 }
2803
2804}
2805
2806
2807
2808//_______________________
ac4c229c 2809AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::GetD0toKPiSignalType(const AliAODRecoDecayHF2Prong *d,TClonesArray *arrayMC,Int_t &signaltype,Double_t &massMumTrue,Double_t *primaryVtx){
624c07ab 2810 //THIS METHOD CHECK THE TYPE OF SIGNAL/BACKGROUND THE CANDIDATE IS.
2811 // IF (!AND ONLY IF) THE TWO DAUGHTERS COME FROM A COMMONE MOTHER A FAKE TRUE SECONDARY VERTEX IS CONSTRUCTED (aodDMC)
2812 //
2813 // THE FOLLOWING SCHEME IS ADOPTED: signaltype is set to
7eb5a89e 2814 // 1:signal (D0 prompt); 2: signal D0 from Dstar; 3: D0 fromB 4: D0 from Dstar fromB
2815 // then background categories: -1: one or both daughters is a fake track
c387e585 2816 // 5: both daughters come from a D meson != D0
624c07ab 2817 // 6: both daughters come from a D0->4prongs
2818 // 7: both daughetrs are primaries
2819 // 8: generic background (can include one of the previous if desired)
ac4c229c 2820 // 9: daughters out of acceptance
624c07ab 2821 // 10: pathologic cases (not clear)
2822 // 11: end of the method without output
2823 // 12: different result than MatchToMC method
2824
2825 AliAODMCParticle *mum1=0x0;
2826 AliAODMCParticle *b1=0x0,*b2=0x0;
2827 AliAODMCParticle *grandmoth1=0x0;
2828 massMumTrue=-1;
2829
2830 Int_t pdgmum,dglabels[2],matchtoMC;
2831 Int_t pdgdaughters[2]={211,321};
2832 // get daughter AOD tracks
2833 AliAODTrack *trk0 = (AliAODTrack*)d->GetDaughter(0);
2834 AliAODTrack *trk1 = (AliAODTrack*)d->GetDaughter(1);
2835 AliAODRecoDecayHF *aodDMC=0x0;
2836 if(trk0==0x0||trk1==0x0){
2837 AliDebug(2,"Delete tracks I AM \n");
2838
2839 signaltype=-1;
2840 return aodDMC;
2841
2842 }
2843 dglabels[0]=trk0->GetLabel();
2844 dglabels[1]=trk1->GetLabel();
2845 if(dglabels[0]==-1||dglabels[1]==-1){
2846 AliDebug(2,"HERE I AM \n");
2847
2848 //fake tracks
2849
7eb5a89e 2850 signaltype=-1;
624c07ab 2851 return aodDMC;
2852
2853 }
2854 // printf("Before entering the MC checks \n");
2855
2856 b1=(AliAODMCParticle*)arrayMC->At(trk0->GetLabel());
2857 b2=(AliAODMCParticle*)arrayMC->At(trk1->GetLabel());
2858
2859 if(b1->GetMother()==-1||b2->GetMother()==-1){
2860 //Tracks with no mother ????? FAKE DECAY VERTEX
2861
2862
2863 signaltype=10;
2864 return aodDMC;
2865 }
2866
2867 mum1=(AliAODMCParticle*)arrayMC->At(b1->GetMother());
2868 // mum2=(AliAODMCParticle*)arrayMC->At(b2->GetMother());//FOR FURTHER USE
2869
2870 if(b1->GetMother()!=b2->GetMother()){
2871 //Check the label of the mother is the same
2872 // NOT SAME MOTHER
2873
2874
2875 signaltype=8;
2876 return aodDMC;
2877 }
2878 massMumTrue=mum1->GetCalcMass();
2879
2880 matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
2881 aodDMC=ConstructFakeTrueSecVtx(b1,b2,mum1,primaryVtx);
2882
2883 if(aodDMC==0x0){
2884 signaltype=10;
2885 return aodDMC;
2886 }
2887
2888 // if((mum1->GetPdgCode()!=mum2->GetPdgCode()))continue; //Check the mother is the same particle
2889 // printf("Particle codes: tr1: %d, tr2: %d, mum1: %d, mum 2: %d \n",b1->GetPdgCode(),b2->GetPdgCode(),mum1->GetPdgCode(),mum2->GetPdgCode());
2890 if(!((TMath::Abs(b1->GetPdgCode())==321&&TMath::Abs(b1->GetPdgCode())!=211)||(TMath::Abs(b1->GetPdgCode())==211&&TMath::Abs(b1->GetPdgCode()!=321)))){
2891 // Not a Kaon and a Pion
2892
2893 signaltype=8;
2894 return aodDMC;
2895 }
2896
2897 pdgmum=mum1->GetPdgCode();
2898 if(TMath::Abs(pdgmum)!=421){
2899 if(TMath::Abs(pdgmum)==411||TMath::Abs(pdgmum)==431||TMath::Abs(pdgmum)==443){
2900 // IT IS A SECONDARY VERTEX FROM CHARM BUT NOT A D0
2901
2902 signaltype=5;
2903 return aodDMC;
2904 }
2905 else {
2906 signaltype=8;
2907 return aodDMC;
2908 }
2909 }
2910
2911 if(mum1->GetDaughter(1)-mum1->GetDaughter(0)+1!=2){
2912 // from D0 but NOT A 2 PRONG DECAY
2913 signaltype=6;
2914 return aodDMC;
2915
2916 }
2917
2918 if(mum1->GetMother()==-1){
2919 // A particle coming from nothing
2920 signaltype=10;
2921 return aodDMC;
c387e585 2922
624c07ab 2923 }
7eb5a89e 2924 Bool_t isfromDstar=kFALSE;
2925 // matchtoMC=d->MatchToMC(421,arrayMC,2,pdgdaughters);
624c07ab 2926 grandmoth1=(AliAODMCParticle*)arrayMC->At(mum1->GetMother());
7eb5a89e 2927 if(TMath::Abs(grandmoth1->GetPdgCode())==413||TMath::Abs(grandmoth1->GetPdgCode())==423)isfromDstar=kTRUE;// D0 COMING FROM A D0*
2928
c387e585 2929 /*
2930 //CHECK FOR CABIBBO SUPPRESSED DECAY
2931 Int_t isCabibSup=0,pdgKaon;
2932
2933 pdgKaon=b1->GetPdgCode();
2934 if(TMath::Abs(pdgKaon)!=321)pdgKaon=b2->GetPdgCode();
2935 if(pdgmum>0&&pdgKaon>0)isCabibSup=1;
2936 if(pdgmum<0&&pdgKaon<0)isCabibSup=1;
2937 if(isCabibSup){
2938 signaltype=0;
2939 return aodDMC;
2940 }
2941 */
624c07ab 2942 // if(fcheckMCD0){//THIS CHECK IS NEEDED TO AVOID POSSIBLE FAILURE IN THE SECOND WHILE, FOR DEBUGGING
2943 while(TMath::Abs(grandmoth1->GetPdgCode())!=4&&TMath::Abs(grandmoth1->GetPdgCode())!=5){
2944 if(grandmoth1->GetMother()==-1){
2945 //### THE FOLLOWING IN CASE OF DEBUGGING ##########à
2946 /*printf("mother=-1, pdgcode: %d \n",grandmoth1->GetPdgCode());
2947 Int_t son=grandmoth1->GetDaughter(0);
2948 sonpart=(AliAODMCParticle*)arrayMC->At(son);
2949 while(TMath::Abs(sonpart->GetPdgCode())!=421){
2950 printf("mother=-1, pdgcode: %d \n",sonpart->GetPdgCode());
2951 son++;
2952 sonpart=(AliAODMCParticle*)arrayMC->At(son);
2953 }*/
2954
2955 signaltype=10;
2956 return aodDMC;
2957 }
2958 grandmoth1=(AliAODMCParticle*)arrayMC->At(grandmoth1->GetMother());
2959 }
2960
2961 if(TMath::Abs(grandmoth1->GetPdgCode())==4){
2962 if(matchtoMC!=-1){
7eb5a89e 2963
2964 if(isfromDstar)signaltype=2;
2965 else signaltype=1;
624c07ab 2966 return aodDMC;
2967 }
2968 else {
2969 signaltype=12;
2970 return aodDMC;
7eb5a89e 2971
624c07ab 2972 }
2973 }
2974 else if(TMath::Abs(grandmoth1->GetPdgCode())==5){
2975 if(matchtoMC!=-1){
7eb5a89e 2976 if(isfromDstar)signaltype=4;
2977 else signaltype=3;
624c07ab 2978 return aodDMC;
2979
2980 }
2981 else {
2982
2983 signaltype=12;
2984 return aodDMC;
2985 }
2986 }
2987 signaltype=11;// JUST FOR SAFETY: SHOULD NEVER REACH THIS POINT
2988 return aodDMC;
2989 // return 11;
2990}
2991
2992//___________________________________
ac4c229c 2993AliAODRecoDecayHF* AliAnalysisTaskSECharmFraction::ConstructFakeTrueSecVtx(const AliAODMCParticle *b1, const AliAODMCParticle *b2, const AliAODMCParticle *mum,Double_t *primaryVtxTrue){
624c07ab 2994 // CONSTRUCT A FAKE TRUE SECONDARY VERTEX (aodDMC)
2995 //!!!NOTE THAT ONLY ONE MOTHER IS CONSIDERED: THE METHOD REQUIRES THE DAUGHTERS COME FROM THE SAME MOTHER !!
2996 if(b1==0x0||b2==0x0)return 0x0;
2997 if(mum==0x0)return 0x0;
2998 Double_t pD[3],xD[3],pXtrTrue[2],pYtrTrue[2],pZtrTrue[2],xtr1[3],xtr2[3];
2999 Int_t charge[2]={0,0};
3000 if(b1->Charge()==-1)charge[0]=1;
3001 else {
3002 if(b2->Charge()==-1){
3003 //printf("Same charges for prongs \n");
3004 return 0x0;
3005 }
3006 charge[1]=1;
3007 }
3008
3009 pXtrTrue[charge[0]]=b1->Px();
3010 pYtrTrue[charge[0]]=b1->Py();
3011 pZtrTrue[charge[0]]=b1->Pz();
3012 if(!b1->XvYvZv(xtr1)){
3013 return 0x0;
3014 }
3015
3016 pXtrTrue[charge[1]]=b2->Px();
3017 pYtrTrue[charge[1]]=b2->Py();
3018 pZtrTrue[charge[1]]=b2->Pz();
3019
3020 if(!mum->PxPyPz(pD)){
3021 //printf("!D from B:Get momentum failed \n");
3022 return 0x0;
3023 }
3024 if(!mum->XvYvZv(xD)){
3025 //printf("!D from B:Get position failed \n");
3026 return 0x0;
3027 }
3028 /* ############ THIS HAPPENS FROM TIME TO TIME: NUMERIC PROBLEM KNOWN #################
3029 if(pXtrTrue[0]+pXtrTrue[1]!=pD[0]){
3030 }*/
3031
3032
3033 if(!b2->XvYvZv(xtr2)){
3034 return 0x0;
3035 }
3036 Double_t d0dummy[2]={0.,0.};//TEMPORARY : dummy d0 for AliAODRecoDeay constructor
3037 AliAODRecoDecayHF* aodDMC=new AliAODRecoDecayHF(primaryVtxTrue,xD,2,0,pXtrTrue,pYtrTrue,pZtrTrue,d0dummy);
3038
3039 /* ######## THE FOLLOWINF FOR DEBUGGING ############
3040 Printf("testing the Fake vertex: SecVtxX: %f, Px: %f, Py: %f, Pz:%f \n ",aodDMC->GetSecVtxX(),aodDMC->Px(),aodDMC->Py(),aodDMC->Pz());
3041 Printf("pD: x=%f, y=%f,z=%f\n",pD[0],pD[1],pD[2]);
3042 Printf("Daughters :px1:%f, px2:%f \n",pXtrTrue[0],pXtrTrue[1]);
3043 Printf("Daughters :py1:%f, py2:%f \n",pYtrTrue[0],pYtrTrue[1]);
3044 Printf("Daughters :pz1:%f, pz2:%f \n",pZtrTrue[0],pZtrTrue[1]);
3045 Printf("Mother pdg: %d",mum->GetPdgCode());
3046 Printf("Impact Par Prod: %f\n",aodDMC->ImpParXY());
3047 */
3048
3049 return aodDMC;
3050}
3051
3052//________________________________________________________
ac4c229c 3053Bool_t AliAnalysisTaskSECharmFraction::FillHistos(AliAODRecoDecayHF2Prong *d,TList *&list,Int_t ptbin,Int_t okD0,Int_t okD0bar,Double_t invMassD0,Double_t invMassD0bar,Bool_t isPeakD0,Bool_t isPeakD0bar,Bool_t isSideBand,Double_t massmumtrue,AliAODRecoDecayHF *aodDMC,Double_t *vtxTrue){//FILL THE HISTOGRAMS: TAKE THE HISTOS FROM THE list NAME
3054
624c07ab 3055
3056 if((!okD0)&&(!okD0bar))return kTRUE;
3057
3058 // ######### Get Standard label for hist in tlist ###############
3059 TString namehist=list->GetName(),str;
3060 namehist.ReplaceAll("list","");
3061
3062 // ######### Global properties histos #################
ac4c229c 3063 // ####### take care: only for candidates which pass the cuts !! not for side band ########
3064 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar)){
3065 str="hCPtaVSd0d0";
3066 str.Append(namehist.Data());
3067 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0(),d->CosPointingAngle());
3068
3069 str="hSecVtxZ";
3070 str.Append(namehist.Data());
3071 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxZ());
3072
3073 str="hSecVtxX";
3074 str.Append(namehist.Data());
3075 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.);
3076
3077 str="hSecVtxY";
3078 str.Append(namehist.Data());
3079 ((TH1F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxY()*10000.);
3080
3081 str="hSecVtxXY";
3082 str.Append(namehist.Data());
3083 ((TH2F*)list->FindObject(str.Data()))->Fill(d->GetSecVtxX()*10000.,d->GetSecVtxY()*10000.);
3084
3085 str="hSecVtxPhi";
3086 str.Append(namehist.Data());
3087 ((TH1F*)list->FindObject(str.Data()))->Fill(TMath::ATan2(d->GetSecVtxY()*10000.,d->GetSecVtxX()*10000.)*TMath::RadToDeg());
3088
3089 str="hCPta";
3090 str.Append(namehist.Data());
3091 ((TH1F*)list->FindObject(str.Data()))->Fill(d->CosPointingAngle());
3092
3093 str="hd0xd0";
3094 str.Append(namehist.Data());
3095 ((TH1F*)list->FindObject(str.Data()))->Fill(1e8*d->Prodd0d0());
3096 }
624c07ab 3097
ac4c229c 3098
3099 // ######### Invariant mass histos #################
3100 str="hMass";
624c07ab 3101 str.Append(namehist.Data());
ac4c229c 3102 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
3103 ((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
624c07ab 3104
3105
ac4c229c 3106 if(isPeakD0||isPeakD0bar){
3107 str="hMass";
3108 str.Append(namehist.Data());
3109 str.Append("PM");
3110 if(isPeakD0&&okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
3111 if(isPeakD0bar&&okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
3112 }
3113 if(isSideBand){
3114 str="hMass";
3115 str.Append(namehist.Data());
3116 str.Append("SB");
3117 if(okD0)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0);
3118 if(okD0bar)((TH1F*)list->FindObject(str.Data()))->Fill(invMassD0bar);
3119 }
624c07ab 3120
ac4c229c 3121 if(massmumtrue>0.){
3122 str="hMassTrue";
3123 str.Append(namehist.Data());
3124 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
3125
3126 if(isPeakD0||isPeakD0bar){
3127 str="hMassTrue";
3128 str.Append(namehist.Data());
3129 str.Append("PM");
3130 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
3131 }
3132 if(isSideBand){
3133 str="hMassTrue";
3134 str.Append(namehist.Data());
3135 str.Append("SB");
3136 ((TH1F*)list->FindObject(str.Data()))->Fill(massmumtrue);
3137 }
3138 }
3139
3140 // ################ D0 Impact Parameter Histos #####################
3141 if((isPeakD0&&okD0)||(isPeakD0bar&&okD0bar)){
3142 str="hd0D0";
3143 str.Append(namehist.Data());
3144 str.Append("PM");
3145 ((TH1F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.);
3146
3147 str="hd0D0pt";
3148 str.Append(namehist.Data());
3149 str.Append("_PkMss_pt");
3150 str+=ptbin;
3151 ((TH1F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.);
624c07ab 3152
ac4c229c 3153
3154 if(vtxTrue){
3155 str="hd0D0VtxTrue";
3156 str.Append(namehist.Data());
3157 str.Append("PM");
3158 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
3159
3160 str="hd0D0VtxTruept";
3161 str.Append(namehist.Data());
3162 str.Append("_PkMss_pt");
3163 str+=ptbin;
3164 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
3165 }
3166
3167 if(aodDMC!=0x0){
3168 aodDMC->Print("");
3169 aodDMC->ImpParXY();
3170 aodDMC->Print("");
3171 str="hMCd0D0";
3172 str.Append(namehist.Data());
3173 str.Append("PM");
3174 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
3175
3176 str="hMCd0D0pt";
3177 str.Append(namehist.Data());
3178 str.Append("_PkMss_pt");
3179 str+=ptbin;
3180 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
3181 }
3182
3183 }
3184 else if(isSideBand){
3185 str="hd0D0";
3186 str.Append(namehist.Data());
3187 str.Append("SB");
3188 ((TH1F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.);
3189
3190 str="hd0D0pt";
3191 str.Append(namehist.Data());
3192 str.Append("_SBMss_pt");
3193 str+=ptbin;
3194 ((TH1F*)list->FindObject(str.Data()))->Fill(d->ImpParXY()*10000.);
3195
3196
3197 if(vtxTrue){
3198 str="hd0D0VtxTrue";
3199 str.Append(namehist.Data());
3200 str.Append("SB");
3201 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
3202
3203 str="hd0D0VtxTruept";
3204 str.Append(namehist.Data());
3205 str.Append("_SBMss_pt");
3206 str+=ptbin;
3207 ((TH1F*)list->FindObject(str.Data()))->Fill(d->AliAODRecoDecay::ImpParXY(vtxTrue)*10000.);
3208
3209 }
3210
3211 if(aodDMC!=0x0){
3212 str="hMCd0D0";
3213 str.Append(namehist.Data());
3214 str.Append("SB");
3215 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
3216
3217 str="hMCd0D0pt";
3218 str.Append(namehist.Data());
3219 str.Append("_SBMss_pt");
3220 str+=ptbin;
3221 ((TH1F*)list->FindObject(str.Data()))->Fill(aodDMC->ImpParXY()*10000.);
3222 }
3223
3224 }
624c07ab 3225
3226 return kTRUE;
3227}
3228
ac4c229c 3229
3230void AliAnalysisTaskSECharmFraction::SetNPtBins(Int_t nbins,const Double_t *ptbins){
3231 if((fptbins)!=0x0)delete fptbins;
3232 fnbins=nbins;fptbins=new Double_t[fnbins];
3233 memcpy(fptbins,ptbins,fnbins*sizeof(Double_t));
3234 return;
3235}
3236
3237void AliAnalysisTaskSECharmFraction::SetStandardMassSelection(){
3238 //SET THE DEFAULT VALUES FOR INVARIANT MASS SELECTION
3239 SetSignalInvMassCut();
3240 SetLargeInvMassCut();
3241 SetSideBandInvMassCut();
3242 SetSideBandInvMassWindow();
3243 return;
3244 }
3245
3246
624c07ab 3247void AliAnalysisTaskSECharmFraction::Terminate(const Option_t*){
3248 //TERMINATE METHOD: NOTHING TO DO
3249
3250
3251}