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