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