|
|
#include "../GlobalFunctions.hh"
using namespace std; using namespace RooFit ;
class factor{ private: public: string Channel; bool MagUp; Int_t year; Int_t nEvents; Double_t OtherScale;
factor(){ Channel = ""; MagUp = false; nEvents = 0; OtherScale = 1.0; } //empty constructor
factor(string Channel_tmp, bool MagUp_tmp, Int_t year_tmp, Int_t nEvents_tmp); //default constructor with no other scales
factor(string Channel_tmp, bool MagUp_tmp, Int_t year, Int_t nEvents_tmp, Double_t OtherScale_tmp); //default constructor
~factor(); //destuctor
};
factor::factor(string Channel_tmp, bool MagUp_tmp, Int_t year_tmp, Int_t nEvents_tmp){ Channel = Channel_tmp; MagUp = MagUp_tmp; year = year_tmp; nEvents = nEvents_tmp; OtherScale = 1.0; return; }
factor::factor(string Channel_tmp, bool MagUp_tmp, Int_t year_tmp, Int_t nEvents_tmp, Double_t OtherScale_tmp){ Channel = Channel_tmp; MagUp = MagUp_tmp; year = year_tmp; nEvents = nEvents_tmp; OtherScale = OtherScale_tmp; return; }
factor::~factor(){ Channel = ""; MagUp = false; year = 0; nEvents = 0; OtherScale = 1.0; return; }
class oneChannelFactors{ //factors just for one channel, including the lenght, for easier handling
private: public: string Channel = ""; vector<factor> factorsVec; int VecSize = 0; oneChannelFactors(){ Channel = ""; VecSize = 0; factorsVec.clear(); } //empty constructor
oneChannelFactors(vector<factor> factorsVec_tmp); //default constructor
~oneChannelFactors(); //destuctor
};
oneChannelFactors::~oneChannelFactors(){ factorsVec.empty(); Channel = ""; VecSize = 0; }
oneChannelFactors::oneChannelFactors(vector<factor> factorsVec_tmp){ Channel = factorsVec_tmp.at(0).Channel; //todo, check if they are all the same
factorsVec = factorsVec_tmp; VecSize = factorsVec_tmp.size(); return; }
class allFactors{ private: public: vector<oneChannelFactors> factorsChannelVec; int NoChannels = 0;
allFactors(){ NoChannels = 0; factorsChannelVec.clear(); } //empty constructor
allFactors(int Run, bool RefChan); //default constructor
~allFactors(); //destuctor
};
allFactors::allFactors(int Run, bool RefChan){
oneChannelFactors one_channel_factors_tmp; factor factor_tmp; vector<factor> factorsVec_tmp;
if (!RefChan){ //--------------------------------------------------------------------
// KplusPi0
//--------------------------------------------------------------------
//Run I
if (Run == 1){ factor_tmp = factor("KplusPi0", false, 2011, 507551 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("KplusPi0", true, 2011, 502787 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("KplusPi0", false, 2012, 514015 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("KplusPi0", true, 2012, 500458 ); factorsVec_tmp.push_back(factor_tmp); }
// Run II
if (Run == 2){ factor_tmp = factor("KplusPi0", false, 2015, 500320 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("KplusPi0", true, 2015, 507272 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("KplusPi0", false, 2016, 999419 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("KplusPi0", true, 2016, 1000151 ); factorsVec_tmp.push_back(factor_tmp); }
one_channel_factors_tmp = oneChannelFactors(factorsVec_tmp); factorsChannelVec.push_back(one_channel_factors_tmp); factorsVec_tmp.clear();
//--------------------------------------------------------------------
// B0toKstMuMu
//--------------------------------------------------------------------
//Run I
if (Run == 1){ factor_tmp = factor("B0toKstMuMu", false, 2011, 525851, 1.5 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstMuMu", true, 2011, 506402, 1.5 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstMuMu", false, 2012, 257748, 1.5 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstMuMu", true, 2012, 260000, 1.5 ); factorsVec_tmp.push_back(factor_tmp); }
// Run II
if (Run == 2){ factor_tmp = factor("B0toKstMuMu", false, 2015, 502704, 1.5* 13.0/(13.0-4.0) ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstMuMu", true, 2015, 503254, 1.5* 12.0/(12.0-1.0) ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstMuMu", false, 2016, 657410, 1.5* 5.0/(5.0-4.0) ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstMuMu", true, 2016, 707852, 1.5* 5.0/(5.0-1.0) ); factorsVec_tmp.push_back(factor_tmp); }
one_channel_factors_tmp = oneChannelFactors(factorsVec_tmp); factorsChannelVec.push_back(one_channel_factors_tmp); factorsVec_tmp.clear(); } else{ //--------------------------------------------------------------------
// RefKplusPi0
//--------------------------------------------------------------------
//Run I
if (Run == 1){ factor_tmp = factor("RefKplusPi0", false, 2011, 1011831 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("RefKplusPi0", true, 2011, 1007920 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("RefKplusPi0", false, 2012, 1003888 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("RefKplusPi0", true, 2012, 1000278 ); factorsVec_tmp.push_back(factor_tmp); }
// Run II
if (Run == 2){ factor_tmp = factor("RefKplusPi0", false, 2015, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("RefKplusPi0", true, 2015, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("RefKplusPi0", false, 2016, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("RefKplusPi0", true, 2016, -1 ); factorsVec_tmp.push_back(factor_tmp); }
one_channel_factors_tmp = oneChannelFactors(factorsVec_tmp); factorsChannelVec.push_back(one_channel_factors_tmp); factorsVec_tmp.clear();
//--------------------------------------------------------------------
// B0toKstJpsi
//--------------------------------------------------------------------
//Run I
if (Run == 1){ factor_tmp = factor("B0toKstJpsi", false, 2011, 3081998, 1.5 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstJpsi", true, 2011, 3076566, 1.5 * 13.0/(13.0-1.0) ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstJpsi", false, 2012, 4435958, 1.5 * 15.0/(15.0-1.0) ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstJpsi", true, 2012, 4425822, 1.5 ); factorsVec_tmp.push_back(factor_tmp); }
// Run II
if (Run == 2){ factor_tmp = factor("B0toKstJpsi", false, 2015, 874037 , 1.5 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstJpsi", true, 2015, 502444 , 1.5 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstJpsi", false, 2016, 5033743 , 1.5*125.0/(125.0-2.0) ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("B0toKstJpsi", true, 2016, 4991624 , 1.5*133.0/(133.0-2.0) ); factorsVec_tmp.push_back(factor_tmp); }
one_channel_factors_tmp = oneChannelFactors(factorsVec_tmp); factorsChannelVec.push_back(one_channel_factors_tmp); factorsVec_tmp.clear();
//--------------------------------------------------------------------
// BtoXJpsi
//--------------------------------------------------------------------
//Run I
if (Run == 1){ factor_tmp = factor("BtoXJpsi", false, 2011, -1);//2508491);
factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoXJpsi", true, 2011,-1);// 2514495);
factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoXJpsi", false, 2012, -1);//2504990);
factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoXJpsi", true, 2012,-1);// 2535488);
factorsVec_tmp.push_back(factor_tmp); }
// Run II
if (Run == 2){ factor_tmp = factor("BtoXJpsi", false, 2015, -1); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoXJpsi", true, 2015, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoXJpsi", false, 2016, 5090001 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoXJpsi", true, 2016, 6055765 ); factorsVec_tmp.push_back(factor_tmp); }
one_channel_factors_tmp = oneChannelFactors(factorsVec_tmp); factorsChannelVec.push_back(one_channel_factors_tmp); factorsVec_tmp.clear();
//--------------------------------------------------------------------
// BtoK1MuMu
//--------------------------------------------------------------------
/*
//Run I
if (Run == 1){ factor_tmp = factor("BtoK1MuMu", false, 2011, 1038809 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1MuMu", true, 2011, 1027740 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1MuMu", false, 2012, 2003930 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1MuMu", true, 2012, 2008883 ); factorsVec_tmp.push_back(factor_tmp); }
// Run II
if (Run == 2){ factor_tmp = factor("BtoK1MuMu", false, 2015, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1MuMu", true, 2015, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1MuMu", false, 2016, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1MuMu", true, 2016, -1 ); factorsVec_tmp.push_back(factor_tmp); }
one_channel_factors_tmp = oneChannelFactors(factorsVec_tmp); factorsChannelVec.push_back(one_channel_factors_tmp); factorsVec_tmp.clear(); */
//--------------------------------------------------------------------
// BtoK1Jpsi
//--------------------------------------------------------------------
//Run I
if (Run == 1){ factor_tmp = factor("BtoK1Jpsi", false, 2011, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1Jpsi", true, 2011, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1Jpsi", false, 2012, 250249, 2.0 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1Jpsi", true, 2012, 265250, 2.0 ); factorsVec_tmp.push_back(factor_tmp); }
// Run II
if (Run == 2){ factor_tmp = factor("BtoK1Jpsi", false, 2015, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1Jpsi", true, 2015, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1Jpsi", false, 2016, -1 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("BtoK1Jpsi", true, 2016, -1 ); factorsVec_tmp.push_back(factor_tmp); }
one_channel_factors_tmp = oneChannelFactors(factorsVec_tmp); factorsChannelVec.push_back(one_channel_factors_tmp); factorsVec_tmp.clear();
} //--------------------------------------------------------------------
// PHSP
//--------------------------------------------------------------------
/*
//Run I
if (Run == 1){ factor_tmp = factor("PHSP", false, 2011, 94529 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("PHSP", true, 2011, 91600 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("PHSP", false, 2012, 175028 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("PHSP", true, 2012, 203760 ); factorsVec_tmp.push_back(factor_tmp); }
// Run II
if (Run == 2){ factor_tmp = factor("PHSP", false, 2015, 76712 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("PHSP", true, 2015, 72037 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("PHSP", false, 2016, 214587 ); factorsVec_tmp.push_back(factor_tmp); factor_tmp = factor("PHSP", true, 2016, 216923 ); factorsVec_tmp.push_back(factor_tmp); }
one_channel_factors_tmp = oneChannelFactors(factorsVec_tmp); factorsChannelVec.push_back(one_channel_factors_tmp); factorsVec_tmp.clear(); */
NoChannels = factorsChannelVec.size();
}
allFactors::~allFactors(){ factorsChannelVec.empty(); NoChannels = 0; }
//void allFactors::print(){ //TODO
/*
cout << "[INFO]\t\tUsing " << NoVariables << " variables." << endl; cout << "[INFO]\t\tBranchName \t\t LaTeXName \t\t Unit \t\t DataType" << endl; for (vector<MVA_def>::iterator tracksIter1 = AllVariables.begin(); tracksIter1 !=AllVariables.end();++tracksIter1){ cout<< "[INFO]\t\t" << (*tracksIter1).ReaderName << "\t\t" << (*tracksIter1).LaTeXName << "\t\t" << (*tracksIter1).Unit << "\t\t" << (*tracksIter1).DataType << endl; } */ //}
oneChannelFactors SignalFactors(int Run =1){
factor factorSig; vector<factor> factorsSigVec;
//--------------------------------------------------------------------
// KplusPi0
//--------------------------------------------------------------------
//Run I
if (Run ==1){ factorSig = factor("KplusPi0", false, 2011, 507551 ); factorsSigVec.push_back(factorSig); factorSig = factor("KplusPi0", true, 2011, 502787 ); factorsSigVec.push_back(factorSig); factorSig = factor("KplusPi0", false, 2012, 514015 ); factorsSigVec.push_back(factorSig); factorSig = factor("KplusPi0", true, 2012, 500458 ); factorsSigVec.push_back(factorSig); } // Run II
else{ factorSig = factor("KplusPi0", false, 2015, 500320 ); factorsSigVec.push_back(factorSig); factorSig = factor("KplusPi0", true, 2015, 507272 ); factorsSigVec.push_back(factorSig); factorSig = factor("KplusPi0", false, 2016, 999419 ); factorsSigVec.push_back(factorSig); factorSig = factor("KplusPi0", true, 2016, 1000151 ); factorsSigVec.push_back(factorSig); } return oneChannelFactors(factorsSigVec);
}
oneChannelFactors SignalRefFactors(int Run =1){
factor factorSig; vector<factor> factorsSigVec;
//--------------------------------------------------------------------
// RefKplusPi0
//--------------------------------------------------------------------
//Run I
if (Run ==1){ factorSig = factor("RefKplusPi0", false, 2011, 1011831 ); factorsSigVec.push_back(factorSig); factorSig = factor("RefKplusPi0", true, 2011, 1007920 ); factorsSigVec.push_back(factorSig); factorSig = factor("RefKplusPi0", false, 2012, 1003888 ); factorsSigVec.push_back(factorSig); factorSig = factor("RefKplusPi0", true, 2012, 1000278 ); factorsSigVec.push_back(factorSig);
} // Run II
else{ factorSig = factor("RefKplusPi0", false, 2015, -1 ); factorsSigVec.push_back(factorSig); factorSig = factor("RefKplusPi0", true, 2015, -1 ); factorsSigVec.push_back(factorSig); factorSig = factor("RefKplusPi0", false, 2016, -1 ); factorsSigVec.push_back(factorSig); factorSig = factor("RefKplusPi0", true, 2016, -1 ); factorsSigVec.push_back(factorSig); } return oneChannelFactors(factorsSigVec);
}
string HistName(string channel, int year, bool MagUp, bool preselected, bool TM){ if (preselected) return channel + "_KGammaGammaMuMu_mass_after_preselection_" + (TM ? "TM_" : "") + to_string(year) + (MagUp ? "MagUp" : "MagDown"); else return channel + "_KGammaGammaMuMu_mass_before_preselection_" + (TM ? "TM_" : "") + to_string(year) + (MagUp ? "MagUp" : "MagDown"); }
void designCanvas(TCanvas* canvas){ canvas->SetRightMargin(0.04); canvas->SetTopMargin(0.04); canvas->SetLeftMargin(0.12); canvas->SetBottomMargin(0.12); return;
}
void designPlots(TH1F *hist, int color){ hist->SetLineWidth(2); hist->SetLineColor(color); hist->GetYaxis()->SetTitleOffset(1.7); hist->GetXaxis()->SetTitleOffset(1.0); hist->SetTitle(""); }
//the function to loop over all events and merge them into one file; apply cut-based selection while merging
int PlotMasses(int Run =1, bool RefChan=true, bool TruthMatched = false, bool Stripped = false) {
if (!Kst2Kpluspi0Resolved){ cout << "Only applicable for KplusPi0 channel! Fix GlobalFunctions.hh" << endl; return 0; }
if (Stripped && TruthMatched){ cout << "[ERROR]\t Stripped data cannot be truthmatched, setting TruthMatched to false" << endl; TruthMatched = false; } TFile *tmpFile = 0; // TFile *outputFile = new TFile(Form("%s/data/MC/tmp%s.root",path_to_output_KplusPizero.c_str(), (smallSample ? "_small":"")),"RECREATE");
TFile *outputFile = new TFile(Form("%s/data/MC/pi0Resolved_background_histos%s.root",path_to_output_KplusPizero.c_str(), (smallSample ? "_small":"")),"RECREATE");
//std::vector<TH1F*> StrippedMasses;
//std::vector<TH1F*> PreselectedMasses;
TH1F *tmp = new TH1F("tmp" , "tmp", 100, cut_B_plus_M_low, cut_B_plus_M_high);
//tmp variables
string decay = ""; string year_str = "";
//Data
allFactors ChannelFactors = allFactors(Run, RefChan); //the boolean is just to differentiate it form the defaul constructor
factor fac = factor(); oneChannelFactors SigFac = SignalFactors(Run); oneChannelFactors SigRefFac = SignalRefFactors(Run); Double_t scaling_factor = 0.0; TTree * treeMC, *treeMCold; //if (TruthMatched) treeMC = new TTree("DecayTreeTruthMatched");
//else treeMC = new TTree("DecayTree");
TCanvas* CanvasPreselectedVec[2][2]; //Create 8 canvases for each year and polarity
TPaveText *legend[2][2]; //This would be so much nicer in python...
gStyle->SetOptStat(0);
for (int c = 0; c < 2; c++){ CanvasPreselectedVec[0][c] = new TCanvas(Form("cPD%i", (Run==1) ? 2011+c : 2015+c), "", 10,10,600,600); CanvasPreselectedVec[1][c] = new TCanvas(Form("cPU%i",(Run==1) ? 2011+c : 2015+c), "", 10,10,600,600); designCanvas(CanvasPreselectedVec[0][c]); designCanvas(CanvasPreselectedVec[1][c]); CanvasPreselectedVec[0][c]->SetName( Form("BkgPresel_%idown", (Run==1) ? 2011+c : 2015+c) ); CanvasPreselectedVec[1][c]->SetName( Form("BkgPresel_%iup", (Run==1) ? 2011+c : 2015+c) );
legend[0][c] =new TPaveText ( 0.68 , ( RefChan ? 0.7 : 0.8), 0.93, 0.93, "NDC"); legend[0][c]->SetFillColor(kWhite); legend[1][c] =new TPaveText ( 0.68 , ( RefChan ? 0.7 : 0.8), 0.93, 0.93, "NDC"); legend[1][c]->SetFillColor(kWhite);
}
//I'm pretty sure there is a nicer way to do that, but 9 mod year-2009 gets 1,0,3,2
oneChannelFactors facIter; //for (auto i : ChannelFactors.factorsChannelVec){ //Loop over decay channels
for (int ch = 0; ch < ChannelFactors.NoChannels; ch++){ //Loop over decay channels: better to have a number for colors and saving the histograms
facIter = ChannelFactors.factorsChannelVec.at(ch); decay = facIter.Channel; cout << decay << endl; //cout << ChannelFactors.NoChannels << endl;
for (int pos = 0; pos < facIter.VecSize; pos++ ){ //Loop over years and polarities in given decay channel
//get the mass histograms
fac = facIter.factorsVec.at(pos); year_str = to_string(fac.year); if (fac.nEvents == -1) continue;
if (TruthMatched){ tmpFile = new TFile(Form("%s/data/MC/%s/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), fac.Channel.c_str(), year_str.c_str(), fac.MagUp ? "up" : "down", year_str.c_str(),fac.MagUp ? "up" : "down",(smallSample ? "_small":""))); if (TruthMatched) treeMCold = (TTree *)tmpFile->Get("DecayTreeTruthMatched"); else treeMCold = (TTree *)tmpFile->Get("DecayTree"); treeMCold->SetBranchStatus("*",0); treeMCold->SetBranchStatus("B_plus_DTF_M",1); outputFile->cd(); treeMC = treeMCold->CloneTree(); treeMC->Draw(Form("B_plus_DTF_M>>tmp%i",pos), Form("B_plus_DTF_M>%f && B_plus_DTF_M<%f", cut_B_plus_M_low, cut_B_plus_M_high) ); tmp = (TH1F *)gDirectory->Get(Form("tmp%i",pos));
} else{ tmpFile = new TFile(Form("%s/data/MC/%s/%s%s/%s%s_pi0Resolved_histos%s.root",path_to_output_KplusPizero.c_str(), fac.Channel.c_str(), year_str.c_str(), fac.MagUp ? "up" : "down", year_str.c_str(),fac.MagUp ? "up" : "down",(smallSample ? "_small":"")),"READ"); if (Stripped) tmp = (TH1F *) tmpFile->Get("h_KGammaGammaMuMu_mass_before_preselection")->Clone(); else tmp = (TH1F *) tmpFile->Get("h_KGammaGammaMuMu_mass_after_preselection")->Clone(); }
//Calcualte the needed scale
if (RefChan) scaling_factor = double((SigRefFac.factorsVec.at(pos)).nEvents)/double(fac.nEvents); else scaling_factor = double((SigFac.factorsVec.at(pos)).nEvents)/double(fac.nEvents); scaling_factor = scaling_factor*fac.OtherScale;
cout << fac.year << (fac.MagUp ? "up " : "down") << "\t Scaling factor: " << scaling_factor << endl; tmp->Scale(scaling_factor);
cout << "\t\tIntegral: " << tmp->Integral() << endl; //Save the scaled histograms
outputFile->cd(); tmp ->SetName(HistName(fac.Channel,fac.year,fac.MagUp,0,TruthMatched).c_str()); tmp ->SetTitle(HistName(fac.Channel,fac.year,fac.MagUp,0,TruthMatched).c_str()); designPlots(tmp,ch+1); tmp->Write(HistName(fac.Channel,fac.year,fac.MagUp,0,TruthMatched).c_str()); CanvasPreselectedVec[int(fac.MagUp)][fac.year-((Run==1) ? 2011 : 2015)]->cd(); //boolean is dangerous there but f* it
legend[int(fac.MagUp)][fac.year-((Run==1) ? 2011 : 2015)]->AddText(decay.c_str()); ((TText*)legend[int(fac.MagUp)][fac.year-((Run==1) ? 2011 : 2015)]->GetListOfLines()->Last())->SetTextColor(ch+1); if ( fac.Channel == "KplusPi0" || fac.Channel == "RefKplusPi0" ){ tmp->DrawCopy(); } else{ tmp->DrawCopy("same"); } CanvasPreselectedVec[int(fac.MagUp)][fac.year-((Run==1) ? 2011 : 2015)]->Modified(); CanvasPreselectedVec[int(fac.MagUp)][fac.year-((Run==1) ? 2011 : 2015)]->Update(); //CanvasPreselectedVec[int(fac.MagUp)][fac.year-((Run==1) ? 2011 : 2015)]->Write();
tmpFile->Close(); } }
cout << "Drawing legend " << endl; //Draw legends
for (int c = 0; c < 2; c++){ CanvasPreselectedVec[0][c]->cd(); legend[0][c]->Draw(); CanvasPreselectedVec[1][c]->cd(); legend[1][c]->Draw(); }
cout << "Saving histos " << endl; for (int c = 0; c < 2; c++){ CanvasPreselectedVec[0][c]->SaveAs( Form("%s/data/MC/BackgroundComparisons/BkgSamples_%s_%idown%s%s.pdf",path_to_output_KplusPizero.c_str(), (Stripped ? "Stripped" : "Preselected"), (Run==1) ? 2011+c : 2015+c, RefChan ? "_Ref" : "", TruthMatched ? "_TM" : "") ,"jpg"); CanvasPreselectedVec[1][c]->SaveAs( Form("%s/data/MC/BackgroundComparisons/BkgSamples_%s_%iup%s%s.pdf", path_to_output_KplusPizero.c_str(), (Stripped ? "Stripped" : "Preselected"), (Run==1) ? 2011+c : 2015+c, RefChan ? "_Ref" : "", TruthMatched ? "_TM" : "") ,"jpg"); }
CanvasPreselectedVec[int(fac.MagUp)][fac.year-((Run==1) ? 2011 : 2015)]->Write();
outputFile->Close();
return 1;
}
int PlotAllMasses(){ if (PlotMasses(1,0,0,0) == 0) return 0; if (PlotMasses(1,0,0,1) == 0) return 0; if (PlotMasses(1,1,0,0) == 0) return 0; if (PlotMasses(1,1,0,1) == 0) return 0; if (PlotMasses(2,0,0,0) == 0) return 0; if (PlotMasses(2,0,0,1) == 0) return 0; return 1; }
|