/************************************************************************************* * getKS: Searches through the histograms in the plotter output, adds the MC together * for each field, and compares the MC with the Data histogram using a KS test * input: the main() arguments array * output: writes to stdout the (human-readable) KS statistics of pairs of histograms * * Structure-wise: this is fine, can be implemented into class easily. ***********************************/ void getKS(const char* argv[]) { //open the input TFile TFile *f = new TFile(argv[2]); f->cd(); //get the filesystem information from the file TList *alokDirs = (TList*) f->GetListOfKeys(); //loop through the directories in the input file for(int idir=0; alokDirs->At(idir-1) != alokDirs->Last(); idir++) { TDirectory *cDir = (TDirectory*) f->Get(alokDirs->At(idir)->GetName()); TList *alokHistos = (TList*) cDir->GetListOfKeys(); // create the MC histogram and start collecting relevant MC histograms // from the current directory TList *aloh = new TList; // loop through keys (histograms) in current directory for(int ihisto=0; alokHistos->At(ihisto) != alokHistos->Last(); ihisto++) { if(TString(alokHistos->At(ihisto)->GetName()).Contains("MC8TeV")) { TH1F *cHisto = (TH1F*) cDir->Get(alokHistos->At(ihisto)->GetName()); aloh->Add(cHisto); } } //merge the data histograms into one histogram TH1F *MCHisto = (TH1F*) (aloh->Last())->Clone(TString(cDir->GetName()) + TString("MCHisto")); aloh->RemoveLast(); MCHisto->Merge(aloh); cout<<"-------------------- "<<cDir->GetName()<<" -----------------------"<<endl; //now create the data histogram and run the KS test TH1F *DataHisto = (TH1F*) cDir->Get(alokHistos->Last()->GetName()); cout<<" ---> KS Test: "<<cDir->GetName()<<" has probability "<<MCHisto->KolmogorovTest(DataHisto, "D")<<"\n"<<endl; } }
void CorrMatchMacro() { const int n_files = 10; const TString directory = "/nfs/dust/cms/user/multh/RunII_80X_v3/Selection/Nominal/03Feb2017_Relaunch_17Jan2018/Matching/bhad_blep/"; const TString file_name[n_files] = {"Tstar_M-700","Tstar_M-800","Tstar_M-900","Tstar_M-1000","Tstar_M-1100","Tstar_M-1200", "Tstar_M-1300", "Tstar_M-1400", "Tstar_M-1500", "Tstar_M-1600"}; TList *list_tophad = new TList; TList *list_toplep = new TList; TList *list_Tstar_M_diff = new TList; TList *list_DeltaPhi = new TList; TList *list_DeltaPhi_gluon = new TList; TList *list_Pt_TstarTstar = new TList; TH1F *h_signal_tophad[n_files]; TH1F *h_signal_toplep[n_files]; TH1F *h_signal_Tstar_M_diff[n_files]; TH1F *h_signal_DeltaPhi[n_files]; TH1F *h_signal_DeltaPhi_gluon[n_files]; TH1F *h_signal_PtTstarTstar[n_files]; TH1F *h_tophadVsMass = new TH1F("tophadVsMass","tophadVsMass", 10, 650, 1650); float tophad_mean[n_files]; for(int i = 0; i<n_files; i++){ TFile *signal = new TFile(directory+"uhh2.AnalysisModuleRunner.MC."+file_name[i]+".root"); /* h_signal_tophad[i] = (TH1F*)signal->Get("corrmatch__HypHists/M_tophad"); h_signal_toplep[i] = (TH1F*)signal->Get("corrmatch__HypHists/M_toplep"); h_signal_Tstar_M_diff[i] = (TH1F*)signal->Get("corrmatch__HypHists/M_TstarhadTstarlep_Diff_rel"); h_signal_DeltaPhi[i] = (TH1F*)signal->Get("corrmatch__HypHists/DeltaPhi_TstarhadTstarlep"); h_signal_DeltaPhi_gluon[i] = (TH1F*)signal->Get("corrmatch__HypHists/DeltaPhi_GluonhadGluonlep"); */ // h_signal_PtTstarTstar[i] = (TH1F*)signal->Get("corrmatch__HypHists/Pt_TstarTstar_Diff"); h_signal_tophad[i] = (TH1F*)signal->Get("corrmatch_ttag__HypHists/M_tophad"); h_signal_toplep[i] = (TH1F*)signal->Get("corrmatch_ttag__HypHists/M_toplep"); h_signal_Tstar_M_diff[i] = (TH1F*)signal->Get("corrmatch_ttag__HypHists/M_TstarhadTstarlep_Diff_rel"); h_signal_DeltaPhi[i] = (TH1F*)signal->Get("corrmatch_ttag__HypHists/DeltaPhi_TstarhadTstarlep"); h_signal_DeltaPhi_gluon[i] = (TH1F*)signal->Get("corrmatch_ttag__HypHists/DeltaPhi_GluonhadGluonlep"); // h_signal_PtTstarTstar[i] = (TH1F*)signal->Get("corrmatch_ttag__HypHists/Pt_TstarTstar_Diff"); /* h_signal_tophad[i]->Fit("gaus","","",150,210); TF1 *myfunc = h_signal_tophad[i]->GetFunction("gaus"); h_tophadVsMass->SetBinContent(i+1, myfunc->GetParameter(1)); h_tophadVsMass->SetBinError(i+1, myfunc->GetParError(1)); */ list_tophad->Add(h_signal_tophad[i]); list_toplep->Add(h_signal_toplep[i]); list_Tstar_M_diff->Add(h_signal_Tstar_M_diff[i]); list_DeltaPhi->Add(h_signal_DeltaPhi[i]); list_DeltaPhi_gluon->Add(h_signal_DeltaPhi_gluon[i]); // list_Pt_TstarTstar->Add(h_signal_PtTstarTstar[i]); } gStyle->SetOptStat(0); gStyle->SetOptFit(0111); int bin_up = 700; int bin_down = 500; TCanvas* c1= new TCanvas("c1","c1",bin_up,bin_down); c1->Divide(2,2); c1->cd(1); TH1F *h = (TH1F*)h_signal_tophad[0]->Clone("h_tophad"); h->Reset(); h->Merge(list_tophad); h->SetTitle(""); h->GetXaxis()->SetTitle("M_{top}^{had} [GeV/c^{2}]"); h->GetXaxis()->SetTitleSize(0.045); h->GetXaxis()->SetTitleOffset(1.1); h->GetYaxis()->SetTitle("Events"); h->GetYaxis()->SetTitleSize(0.04); h->GetYaxis()->SetTitleOffset(1.1); h->Fit("gaus","","",50,230); h->Draw(); c1->cd(2); TH1F *t = (TH1F*)h_signal_toplep[0]->Clone("h_toplep"); t->Reset(); t->Merge(list_toplep); t->SetTitle(""); t->GetXaxis()->SetTitle("M_{top}^{lep} [GeV/c^{2}]"); t->GetXaxis()->SetTitleSize(0.045); t->GetXaxis()->SetTitleOffset(1.1); t->GetYaxis()->SetTitle("Events"); t->GetYaxis()->SetTitleSize(0.04); t->GetYaxis()->SetTitleOffset(1.1); t->Fit("gaus","","",50,230); t->Draw(); c1->cd(3); TH1F *p = (TH1F*)h_signal_Tstar_M_diff[0]->Clone("h_Tstar_M_diff"); p->Reset(); p->Merge(list_Tstar_M_diff); p->SetTitle(""); p->GetXaxis()->SetTitle("#Delta M_{T*#bar{T*}}"); p->GetXaxis()->SetTitleSize(0.045); p->GetXaxis()->SetTitleOffset(1.1); p->GetYaxis()->SetTitle("Events"); p->GetYaxis()->SetTitleSize(0.04); p->GetYaxis()->SetTitleOffset(1.1); p->Fit("gaus","","",-0.2,0.2); p->Draw(); c1->cd(4); TH1F *k = (TH1F*)h_signal_DeltaPhi[0]->Clone("h_DeltaPhi"); k->Reset(); k->Merge(list_DeltaPhi); k->SetTitle(""); k->GetXaxis()->SetTitle("#Delta #Phi"); k->GetXaxis()->SetTitleSize(0.045); k->GetXaxis()->SetTitleOffset(1.1); k->GetYaxis()->SetTitle("Events"); k->GetYaxis()->SetTitleSize(0.04); k->GetYaxis()->SetTitleOffset(1.1); k->Fit("gaus","","",2.8,3.5); k->Draw(); /* TH1F *k = (TH1F*)h_signal_DeltaPhi_gluon[0]->Clone("h_DeltaPhi"); k->Reset(); k->Merge(list_DeltaPhi_gluon); k->SetTitle(""); k->GetXaxis()->SetTitle("#Delta #Phi"); k->GetXaxis()->SetTitleSize(0.045); k->GetXaxis()->SetTitleOffset(1.1); k->GetYaxis()->SetTitle("Events"); k->GetYaxis()->SetTitleSize(0.04); k->GetYaxis()->SetTitleOffset(1.1); k->Fit("gaus","","",2.8,3.5); k->Draw(); */ /* TCanvas* c2= new TCanvas("c2","c2",bin_up,bin_down); gStyle->SetOptStat(0); gStyle->SetOptFit(0111); h_tophadVsMass->SetTitle(""); h_tophadVsMass->GetXaxis()->SetTitle("T* Mass"); h_tophadVsMass->GetYaxis()->SetTitle("top_{had} mean"); h_tophadVsMass->Draw(); */ /* TCanvas* c3= new TCanvas("c3","c3",bin_up,bin_down); gStyle->SetOptStat(0); gStyle->SetOptFit(0111); h_signal_tophad[9]->Draw(); */ }