void DrawComparisonXSecSyst(void){ struct STestFunctor { bool operator()(TObject *aObj) { cout<<aObj->GetTitle()<<endl; //cout<<"pippo"<<endl; //comparisonJetMCData(aObj->GetTitle,1); return true; } }; treeBKG_->Branch("bckg_leadingJetPt",&bckg_leadingJetPt); treeBKG_->Branch("bckg_2leadingJetPt",&bckg_2leadingJetPt); treeBKG_->Branch("bckg_3leadingJetPt",&bckg_3leadingJetPt); treeBKG_->Branch("bckg_4leadingJetPt",&bckg_4leadingJetPt); treeBKG_->Branch("bckg_JetMultiplicity",&bckg_JetMultiplicity); gROOT->Reset(); gROOT->ForceStyle(); gROOT->LoadMacro("tdrStyle.C++"); tdrStyle(); // Recupero l'informazione sul numero di eventi processati per singolo MC dataNumEvents = numEventsPerStep(datafile, "demo"); zNumEvents = numEventsPerStep(mcfile, "demo"); ttNumEvents = numEventsPerStep(back_ttbar, "demo"); wNumEvents = numEventsPerStep(back_w, "demo"); wzEvents = numEventsPerStep(WZ, "demo"); zzEvents = numEventsPerStep(ZZ, "demo"); wwEvents = numEventsPerStep(WW, "demo"); // --------------------------------------------------- string direc="/gpfs/cms/data/2011/Observables/"; //string direc=plotpath; if (isAngularAnalysis){ mcfile=direc+"MC_zjets"+version; back_w=direc+"MC_wjets"+version; back_ttbar=direc+"MC_ttbar"+version; WW=direc+"MC_diW"+version; ZZ=direc+"MC_siZ"+version; WZ=direc+"MC_diWZ"+version; datafile=direc+"DATA"+version; } TFile *mcf = TFile::Open(mcfile.c_str()); //MC file mcf->cd("validationJEC/"); TDirectory *dir=gDirectory; TList *mylist=(TList*)dir->GetListOfKeys(); TIter iter(mylist); // Use TIter::Next() to get each TObject mom owns. TObject* tobj = 0; string tmpname; // input and output files string FileName(outfilename); //FileName += ".root"; OutputFile = TFile::Open(FileName.c_str() , "RECREATE" ) ; int i=0; // solo di servizio quando debuggo... while ( (tobj = iter.Next()) ) { gROOT->Reset(); gROOT->ForceStyle(); tdrStyle(); gStyle->SetPadRightMargin(0.15); string name=tobj->GetName(); TString temp = (TString)name; //int num=tobj->GetUniqueID(); if(temp.Contains("weight")){ mcf = TFile::Open(mcfile.c_str()); TFile *ttbarf = TFile::Open(back_ttbar.c_str()); TFile *wf = TFile::Open(back_w.c_str()); TFile *wzf = TFile::Open(WZ.c_str()); TFile *zzf = TFile::Open(ZZ.c_str()); TFile *wwf = TFile::Open(WW.c_str()); TCanvas * Canvweight = new TCanvas("Canvweight","Canvweight",0,0,800,600); //if (Canv) delete Canv; //Canv = new TCanvas("Canv","Canv",0,0,800,600); gPad->SetLogy(1); //---- weights mcf->cd("validationJEC"); TH1F* mc; gDirectory->GetObject(name.c_str(),mc); if(mc){ mc->SetFillColor(kRed); mc->GetXaxis()->SetRangeUser(0.,12.); mc->SetMinimum(1.); mc->Draw(); zwemean = mc->GetMean(); tmpname=plotpath+name+"-zjets.png"; Canvweight->Print(tmpname.c_str()); } //---- weights ttbarf->cd("validationJEC"); TH1F* ttbar; gDirectory->GetObject(name.c_str(),ttbar); if(ttbar){ ttbar->SetFillColor(kBlue); ttbar->GetXaxis()->SetRangeUser(0.,2.); ttbar->Draw(); ttwemean = ttbar->GetMean(); tmpname=plotpath+name+"-ttbar.png"; Canvweight->Print(tmpname.c_str()); } //---- weights wf->cd("validationJEC"); TH1F* w; gDirectory->GetObject(name.c_str(),w); if(w){ w->SetFillColor(kViolet+2); w->GetXaxis()->SetRangeUser(0.,2.); w->Draw(); wwemean = w->GetMean(); tmpname=plotpath+name+"-wjets.png"; Canvweight->Print(tmpname.c_str()); } //---- weights wzf->cd("validationJEC"); TH1F* wz; gDirectory->GetObject(name.c_str(),wz); if(wz){ wz->SetFillColor(kYellow+2); wz->GetXaxis()->SetRangeUser(0.,2.); wz->Draw(); wzwemean = w->GetMean(); tmpname=plotpath+name+"-wzjets.png"; Canvweight->Print(tmpname.c_str()); } //---- weights zzf->cd("validationJEC"); TH1F* zz; gDirectory->GetObject(name.c_str(),zz); if(zz){ zz->SetFillColor(kOrange+2); zz->GetXaxis()->SetRangeUser(0.,2.); zz->Draw(); zzwemean = w->GetMean(); tmpname=plotpath+name+"-zzjets.png"; Canvweight->Print(tmpname.c_str()); } //---- weights wwf->cd("validationJEC"); TH1F* www; gDirectory->GetObject(name.c_str(),www); if(www){ www->SetFillColor(kBlack); www->GetXaxis()->SetRangeUser(0.,2.); www->Draw(); wwwemean = www->GetMean(); tmpname=plotpath+name+"-wwwjets.png"; Canvweight->Print(tmpname.c_str()); } } else comparisonJetMCData(name,1); i++; //if(i==4)break; } // AVVISI AI NAVIGANTI //if(dataNumEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEI DATI, quindi ho normalizzato sugli eventi totali del campione\n"; //else cout << "Il numero di eventi (dati) " << dataNumEvents << "\n"; if(zNumEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DELLO Z+JETS, quindi ho normalizzato sugli eventi totali del campione\n"; else cout << "Il numero di eventi di Z+jets " << zNumEvents << "\n"; if(ttNumEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL TTBAR+JETS, quindi ho normalizzato sugli eventi totali del campione\n"; else cout << "Il numero di eventi di ttbar+jets " << ttNumEvents << "\n"; if(wNumEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL W+JETS, quindi ho normalizzato sugli eventi totali del campione\n"; else cout << "Il numero di eventi di W+jets " << wNumEvents << "\n"; if(wzEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL W+JETS, quindi ho normalizzato sugli eventi totali del campione\n"; else cout << "Il numero di eventi di ZW+jets " << wzEvents << "\n"; if(zzEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL W+JETS, quindi ho normalizzato sugli eventi totali del campione\n"; else cout << "Il numero di eventi di ZZ+jets " << zzEvents << "\n"; if(wwEvents<0.) cout << "ATTENZIONE: HAI FALLITO LA NORMALIZZAZIONE DEL W+JETS, quindi ho normalizzato sugli eventi totali del campione\n"; else cout << "Il numero di eventi di WW+jets " << wwEvents << "\n"; OutputFile->Close(); return; }