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