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