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