#include "TFile.h" #include "TH1.h" #include "Riostream.h" using namespace std; //void readascii(const char*, int); //int SigSemilep(int i); //int TagType(int i); int SigSemilep(int i) { int Sig=-1; if(i==-100 || i==-3) Sig=0; //Data or No LundID if(i==9 ||i==109) Sig=1; // Vub if(i==0 || i==100) Sig=2; // D if(i==1 || i==101) Sig=3; // D* if(i >= 2 && i <= 8 || i >= 102 && i <= 108) Sig=4; // D** if(i==-1) Sig=5; // non B if(i==-2) Sig=6; //Fake Lepton if(Sig==-1) printf("What is %d?",i); return Sig; } int TagType(int i){ int Tag=i; if(i==-100) Tag=0; if(i==-1 || i==-2 || i >= 10) Tag=9; return Tag; } void readascii(const char* filename, int hshift1){ ifstream in; in.open(filename); int evtLept, EventKind, nTrack, nKa, nLepSam, Lks, Lkao, KndSl; Float_t PLepRaw, the1, the2, llTheta, llMass, nuMassSig; Float_t nuMassTag, mtot, etot, ptot, thtot; Stat_t Weight; int nplep; // ---------------------------- // Book histograms // ---------------------------- const int nbin=50; char hname[120]; char htitle[120]; Int_t H; TH1F *h = new TH1F[300000]; h[876] = new TH1F("876", "#nu Mass GC",12,-10.,2.0); h[877] = new TH1F("877", "#nu Mass WC",12,-10.,2.0); h[776] = new TH1F("776", "#nu Mass GC",12,-10.,2.0); h[777] = new TH1F("777", "#nu Mass WC",12,-10.,2.0); h[8760] = new TH1F("8760", "#nu Mass GC",12,-10.,2.0); h[8770] = new TH1F("8770", "#nu Mass WC",12,-10.,2.0); h[7760] = new TH1F("7760", "#nu Mass GC",12,-10.,2.0); h[7770] = new TH1F("7770", "#nu Mass WC",12,-10.,2.0); for(Int_t i=0;i<=8;i++){ sprintf(hname,"h%d",(700+i)); h[700+i] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); sprintf(hname,"h%d",(710+i)); h[710+i] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); sprintf(hname,"h%d",(900+i)); h[900+i] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); sprintf(hname,"h%d",(910+i)); h[910+i] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); sprintf(hname,"h%d",(750+i)); h[750+i] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); sprintf(hname,"h%d",(760+i)); h[760+i] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); sprintf(hname,"h%d",(950+i)); h[950+i] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); sprintf(hname,"h%d",(960+i)); h[960+i] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); } for(Int_t i=1;i<=4;i++){ for(Int_t j=0;j<=7;j++){ sprintf(hname,"h%d",i*1000+610+j); h[i*1000+610+j] = new TH1F(Form("hname%d",i1),"PLep Data GC",nbin,1.0,3.5); sprintf(hname,"h%d",i*1000+600+j); h[i*1000+600+j] = new TH1F(Form("hname%d",i1),"PLep Data WC",nbin,1.0,3.5); sprintf(hname,"h%d",i*1000+710+j); h[i*1000+710+j] = new TH1F(Form("hname%d",i1),"PLep Data GC (noveto)",nbin,1.0,3.5); sprintf(hname,"h%d",i*1000+700+j); h[i*1000+700+j] = new TH1F(Form("hname%d",i1),"PLep Data WC (noveto)",nbin,1.0,3.5); } } for(Int_t i=1;i<=4;i++) { for(Int_t j=0;j<=9;j++) { for(Int_t k=0;k<=9;k++) { for(Int_t l=1;l<=2;l++) { H=i*10000+l*1000+j*100+k*10; sprintf(hname,"h%d",(H)); h[H] = new TH1F(Form("hname%d",i1), "#nu Mass GC",12,-10.,2.0); sprintf(hname,"h%d",(H+1)); h[H+1] = new TH1F(Form("hname%d",i1), "#nu Mass GC NoVeto",12,-10.,2.0); sprintf(hname,"h%d",H+5); h[H+5] = new TH1F(Form("hname%d",i1), "#nu Mass WC",12,-10.,2.0); sprintf(hname,"h%d",H+6); h[H+6] = new TH1F(Form("hname%d",i1), "#nu Mass WC NoVeto",12,-10.,2.0); sprintf(hname,"h%d",H+2); h[H+2] = new TH1F(Form("hname%d",i1), "PLep GC Mass",nbin,1.0,3.5); sprintf(hname,"h%d",H+3); h[H+3] = new TH1F(Form("hname%d",i1), "PLep GC NoVeto",nbin,1.0,3.5); sprintf(hname,"h%d",H+4); h[H+4] = new TH1F(Form("hname%d",i1), "PLep GC Side",nbin,1.0,3.5); sprintf(hname,"h%d",H+7); h[H+7] = new TH1F(Form("hname%d",i1), "PLep WC Mass",nbin,1.0,3.5); sprintf(hname,"h%d",H+8); h[H+8] = new TH1F(Form("hname%d",i1), "PLep WC NoVeto",nbin,1.0,3.5); sprintf(hname,"h%d",H+9); h[H+9] = new TH1F(Form("hname%d",i1), "PLep WC Side",nbin,1.0,3.5); sprintf(hname,"h%d",H+5002); h[H+5002] = new TH1F(Form("hname%d",i1), "PLep GC Mass",nbin,1.0,3.5); sprintf(hname,"h%d",H+5007); h[H+5007] = new TH1F(Form("hname%d",i1), "PLep WC Mass",nbin,1.0,3.5); sprintf(hname,"h%d",H+5000); h[H+5000] = new TH1F(Form("hname%d",i1), "Mnu GC Mass",12,-10.,2.0); sprintf(hname,"h%d",H+5005); h[H+5005] = new TH1F(Form("hname%d",i1), "Mnu WC Mass",12,-10.,2.0); sprintf(hname,"h%d",H+2000); h[H+2000] = new TH1F(Form("hname%d",i1), "Mnu GC Mass",12,-10.,2.0); sprintf(hname,"h%d",H+2005); h[H+2005] = new TH1F(Form("hname%d",i1), "Mnu WC Mass",12,-10.,2.0); sprintf(hname,"h%d",H+5003); h[H+5003] = new TH1F(Form("hname%d",i1), "PLep GC Mass",nbin,1.0,3.5); sprintf(hname,"h%d",H+5008); h[H+5008] = new TH1F(Form("hname%d",i1), "PLep WC Mass",nbin,1.0,3.5); } } } } sprintf(hname, "h%d", 1031); h[1031] = new TH1F(Form("hname%d",i1),"mnu p.gt.2.8",12,-10.,2.0); sprintf(hname, "h%d", 1032); h[1032] = new TH1F(Form("hname%d",i1),"mnu p.gt.2.8",12,-10.,2.0); sprintf(hname, "h%d", 1041); h[1041] = new TH1F(Form("hname%d",i1),"mnu p.gt.2.8",12,-10.,2.0); sprintf(hname, "h%d", 1042); h[1042] = new TH1F(Form("hname%d",i1),"mnu p.gt.2.8",12,-10.,2.0); sprintf(hname, "h%d", 2031); h[2031] = new TH1F(Form("hname%d",i1),"mnu p.gt.2.8",12,-10.,2.0); sprintf(hname, "h%d", 2032); h[2032] = new TH1F(Form("hname%d",i1),"mnu p.gt.2.8",12,-10.,2.0); sprintf(hname, "h%d", 2041); h[2041] = new TH1F(Form("hname%d",i1),"mnu p.gt.2.8",12,-10.,2.0); sprintf(hname, "h%d", 2042); h[2042] = new TH1F(Form("hname%d",i1),"mnu p.gt.2.8",12,-10.,2.0); sprintf(hname, "h%d", 61); h[61] = new TH1F(Form("hname%d",i1), "PLep Data GC",nbin,1.0,3.5); sprintf(hname, "h%d", 66); h[66] = new TH1F(Form("hname%d",i1), "PLep Data WC",nbin,1.0,3.5); sprintf(hname, "h%d", 161); h[161] = new TH1F(Form("hname%d",i1), "PLep Data GC",nbin,1.0,3.5); sprintf(hname, "h%d", 166); h[166] = new TH1F(Form("hname%d",i1), "PLep Data WC",nbin,1.0,3.5); sprintf(hname, "h%d", 62); h[62] = new TH1F(Form("hname%d",i1), "PLep Data GC",nbin,1.0,3.5); sprintf(hname, "h%d", 67); h[67] = new TH1F(Form("hname%d",i1), "PLep Data WC",nbin,1.0,3.5); sprintf(hname, "h%d", 162); h[162] = new TH1F(Form("hname%d",i1), "PLep Data GC",nbin,1.0,3.5); sprintf(hname, "h%d", 167); h[167] = new TH1F(Form("hname%d",i1), "PLep Data WC",nbin,1.0,3.5); sprintf(hname, "h%d", 551); h[551] = new TH1F(Form("hname%d",i1), "nu Mass Sig El",12,-10.,2.0); sprintf(hname, "h%d", 552); h[552] = new TH1F(Form("hname%d",i1), "nu Mass Sig Mu",12,-10.,2.0); sprintf(hname, "h%d", 556); h[556] = new TH1F(Form("hname%d",i1), "PLep Sig El ",nbin,1.0,3.5); sprintf(hname, "h%d", 557); h[557] = new TH1F(Form("hname%d",i1), "PLep Sig Mu ",nbin,1.0,3.5) ; sprintf(hname, "h%d", 1000+510); h[1000+510] = new TH1F(Form("hname%d",i1), "PLep Data WC",nbin,1.0,3.5); sprintf(hname, "h%d", 1000+500); h[1000+500] = new TH1F(Form("hname%d",i1), "PLep Data",nbin,1.0,3.5); sprintf(hname, "h%d", 2000+510); h[2000+510] = new TH1F(Form("hname%d",i1), "PLep Data WC",nbin,1.0,3.5); sprintf(hname, "h%d", 2000+500); h[2000+500] = new TH1F(Form("hname%d",i1), "PLep Data",nbin,1.0,3.5); sprintf(hname, "h%d", 3000+511); h[3000+511] = new TH1F(Form("hname%d",i1), "PLep Sig B0 WC",nbin,1.0,3.5); sprintf(hname, "h%d", 3000+501); h[3000+501] = new TH1F(Form("hname%d",i1), "PLep Sig B0 ",nbin,1.0,3.5); sprintf(hname, "h%d", 4000+511); h[4000+511] = new TH1F(Form("hname%d",i1), "PLep Sig B+ WC",nbin,1.0,3.5); sprintf(hname, "h%d", 4000+501); h[4000+501] = new TH1F(Form("hname%d",i1), "PLep Sig B+ ",nbin,1.0,3.5); sprintf(hname, "h%d", 3000+512); h[3000+512] = new TH1F(Form("hname%d",i1), "PLep BB B0 WC",nbin,1.0,3.5); sprintf(hname, "h%d", 3000+502); h[3000+502] = new TH1F(Form("hname%d",i1), "PLep BB B0 ",nbin,1.0,3.5); sprintf(hname, "h%d", 4000+512); h[4000+512] = new TH1F(Form("hname%d",i1), "PLep BB B+ WC",nbin,1.0,3.5); sprintf(hname, "h%d", 4000+502); h[4000+502] = new TH1F(Form("hname%d",i1), "PLep BB B+ ",nbin,1.0,3.5); while (1) { in >> evtLept >> PLepRaw >> the1 >> the2 >> EventKind >> nTrack >> Weight >> llTheta >> llMass >> nKa >> nLepSam >> nuMassSig >> nuMassTag >> Lks >> Lkao >> KndSl >> mtot >> etot >> ptot >> thtot; if (!in.good()) break; Float_t PLep = TMath::Abs(PLepRaw); //Define cuts: bool cut1=false; bool cut2=false; bool cut3=false; bool cut4=false; bool cut5=false; bool cut6=false; bool cut9=false; //Load functions //.L functions.c // ---------------------------------------------------------- int SigKind = SigSemilep(KndSl); int TagKind = TagType(EventKind); //int SigKind = 0; //int TagKind= 0; // ---------------------------------------------------------- if((TMath::Abs(evtLept)==11) && (TMath::Abs(nTrack)>=6)){ if(TMath::Abs(the1-the2)>0.05){ if(the1 >0. && the2>0. && thtot>0.2 && thtot<2.8 && ptot>1.0 && ptot <3.8){ cut1=true; } } } else if((TMath::Abs(evtLept)>11) && (TMath::Abs(nTrack)>=5)) { if(the1>0. && the2>0. && ptot>0.5 && ptot<3.8 ) { cut1=true; } } if(TMath::Abs(evtLept)==11) { if(llMass>0.5 && llMass<4.0) { cut2=true; } } else if(llMass>0.5 && llMass<4.2) { cut2=true; } if(llTheta>0.4 && llTheta<2.8) { cut3=true; } if(TMath::Abs(evtLept)==11 || TMath::Abs(evtLept)==22) { if(llMass-3.1>0.05 || llMass-3.1 < -0.10) { cut4=true; } } else{ cut4=true; } if(nuMassSig<-4.0&&(Lks+Lkao)<1) cut5=true; if(nTrack>0 && nKa==0 && nLepSam<2) cut6=true; //unmixed if(nTrack<0 && nKa<1 && nLepSam<1) cut6=true; // mixed if(PLep>2.30&&PLep<2.60) cut9=true; //---------------------------------------------------------------- /* if(hshift1==3000) { */ /* if(bool isSigEl) H=551; */ /* if(bool isSigMu) H=552; */ /* if(SigKind==1 && TagKind==1) { */ /* h[H+5]->Fill(PLep, Weight); */ /* } */ /* if(cut9){ */ /* if(SigKind==1 && TagKind==1) { */ /* h[H]->Fill(nuMassTag,Weight); */ /* } */ /* } */ /* } */ // ----------------------------------------------------------- bool isVub=false; bool isNotVub=false; bool isGC=false; bool isWC=false; bool isMixed=false; bool isUnmixed=false; bool isSigMu=false; bool isSigEl=false; if(SigKind==1) { isVub=true; isNotVub=false; } else { isVub=false; isNotVub=true; } if(nTrack>0) { isMixed=false; isUnmixed=false; } else { isMixed=true; isUnmixed=false; } if(TMath::Abs(evtLept)==21 || TMath::Abs(evtLept)==22) { isSigMu=true; isSigEl=false; } else { isSigMu=false; isSigEl=true; } if(evtLept>0) { isGC=true; isWC=false; } else { isGC=false; isWC=true; } // ----------------------------------------------------------- if(isSigEl) H=hshift1*10+1000+TagKind*100+SigKind*10; if(isSigMu) H=hshift1*10+2000+TagKind*100+SigKind*10; int nmnu=0; if(cut9) { if(cut1 && cut2 && cut3 && cut4) { if(cut5 && cut6) { if(evtLept>0) { if(nuMassTag>-3.0 && nuMassTag<2.0) { nmnu++; } h[H]->Fill(nuMassTag,Weight); } if(evtLept<0) { h[H+5]->Fill(nuMassTag,Weight); } } else { if(evtLept>0) { h[H+1]->Fill(nuMassTag,Weight); } if(evtLept<0) { h[H+6]->Fill(nuMassTag,Weight); } } } } // Nu Mass no-cuts (only PLep) // if(cut9) { if(cut9 && cut2 && cut1 && cut3 && cut4) { if(evtLept>0) { h[H+5000]->Fill(nuMassTag,Weight); } if(evtLept<0) { h[H+5+5000]->Fill(nuMassTag,Weight); } } // Nu Mass no-cuts (PLep+continuum rejection) // if(cut9 && cut2 && cut1 && cut3 && cut4) { if(cut9) { if(evtLept>0) { h[H+2000]->Fill(nuMassTag,Weight); } if(evtLept<0) { h[H+5+2000]->Fill(nuMassTag,Weight); } } // studi WC-GC *** nuovi if(hshift1<3000 && PLep>2.8 && PLep<3.5) { if(isGC) h[hshift1+31]->Fill(nuMassTag,Weight); if(isWC) h[hshift1+32]->Fill(nuMassTag,Weight); } if(hshift1<3000 && PLep>2.8 && PLep<3.5) { if(cut1 && cut2 && cut3 && cut4 && cut5 && cut6) { if(isGC) h[hshift1+41]->Fill(nuMassTag,Weight); if(isWC) h[hshift1+42]->Fill(nuMassTag,Weight); } } /* --- Codice Istogrammi 1.0 - 3.5 2.7 - 3.5 1(lep)002 GC MB 1(lep+5)002 1(lep)003 GC SB 1(lep+5)003 1(lep)007 WC MB 1(lep+5)007 1(lep)008 WC SB 1(lep+5)008 ---------------------------------------------------------------- PLep mass-side if(isMCB0 && SigKind==3) PLep=PLep*(0.95+(PLep-1.0)*.02) */ if(nuMassTag>-3.0 && nuMassTag<2.0) { if(cut1 && cut2 && cut3 && cut4) { if(cut5 && cut6) { if(evtLept>0) { if(cut9) nplep++; h[H+2]->Fill(PLep,Weight); } if(evtLept<0) { h[H+7]->Fill(PLep,Weight); } } if(cut5 && cut6 && TMath::Abs(PLep)>2.7) { if(evtLept>0) { h[H+5000+2]->Fill(PLep,Weight); } if(evtLept<0) { h[H+5000+7]->Fill(PLep,Weight); } } } } // PLep side-band if(nuMassTag<-4.0) { if(cut1 && cut2 && cut3 && cut4) { if(cut5 && cut6) { if(evtLept>0) { h[H+3]->Fill(PLep,Weight); } if(evtLept<0) { h[H+8]->Fill(PLep,Weight); } } if(cut5 && cut6 && TMath::Abs(PLep)>2.7) { if(evtLept>0) { h[H+5000+3]->Fill(PLep,Weight); } } if(evtLept<0) { h[H+5000+8]->Fill(PLep, Weight); } } } } /* PLep mass-band nocuts if(nuMassTag>-3.0) { if(evtLept>0) { h[H+2+5000]->Fill(PLep,Weight); } if(evtLept<0) { h[H+7+5000]->Fill(PLep,Weight); } } ----------------------------------------------------------- */ in.close(); } int MyMain(void){ TFile *f = new TFile("output.root","RECREATE"); readascii("/home/jmorris/Banalysis/on_nuovo_small.dat",1000); readascii("/home/jmorris/Banalysis/of_nuovo_small.dat",2000); readascii("/home/jmorris/Banalysis/b0_nuovo_small.dat",3000); readascii("/home/jmorris/Banalysis/bp_nuovo_small.dat",4000); // readascii("/data/babar/rotondo/DataEMiss/on_nuovo.dat",1000); //readascii("/data/babar/rotondo/DataEMiss/of_nuovo.dat",2000); //readascii("/data/babar/rotondo/DataEMiss/b0_nuovo.dat",3000); //readascii("/data/babar/rotondo/DataEMiss/bp_nuovo.dat",4000); f->Write(); return 0; }