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