Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "NtupleTools3.h"
- #include <fstream>
- #include <iostream>
- #include <vector>
- #include <TLorentzVector.h>
- #include <TCanvas.h>
- #include <TH1F.h>
- #include <TFile.h>
- using namespace std;
- void JackreaderSummerStd(TString list, TString outname,bool useW=true){
- TObjArray* arr = list.Tokenize(" ");
- int size=arr->GetEntries();
- if(size%2!=0) {
- cout<<"unbalance file/weight list: "<<list<<endl;
- exit(0);
- }
- vector<TString> files;
- vector<double> weights;
- for(int i=0;i<size;i+=2){
- files.push_back( arr->At(i)->GetName() );
- weights.push_back( atof( arr->At(i+1)->GetName() ) );
- }
- // here is the place for histograms --- learn how to determine ranges
- TH1F * hHT = new TH1F("hHT","H_{T} [GeV]",100,0,5000);
- TH1F * hNel = new TH1F("hNel","Number of Electrons",5,0.5,5.5);
- TH1F * hNmu = new TH1F("hNmu","Number of Muons",5,0.5,5.5);
- TH1F * hNlep = new TH1F("hNlep","Lepton Multiplicity",5,0.5,5.5);
- TH1F * hNjet = new TH1F("hNjet","Jet Multiplicity",14,0.5,14.5);
- TH1F * hMET = new TH1F("hMET", "E_{T}^{miss} [GeV]", 40,0,1000);
- TH1F * hDphi = new TH1F("hDphi", "#Delta#phi", 40,0,4);
- TH1F * hLep1Pt = new TH1F("hLep1Pt","Leading Lepton P_{T} [GeV]",100,0,600);
- TH1F * hLep2Pt = new TH1F("hLep2Pt","2^{nd} Leading Lepton P_{T} [GeV]",50,0,600);
- TH1F * hLep3Pt = new TH1F("hLep3Pt","3^{nd} Leading Lepton P_{T} [GeV]",50,0,600);
- TH1F * hJet1Pt = new TH1F("hJet1Pt","1^{st} Leading Jet P_{T} [GeV]",50,0,1000);
- TH1F * hJet2Pt = new TH1F("hJet2Pt","2^{nd} Leading Jet P_{T} [GeV]",50,0,1000);
- TH1F * hJet3Pt = new TH1F("hJet3Pt","3^{rd} Leading Jet P_{T} [GeV]",50,0,1000);
- TH1F * hDiLMass = new TH1F("hDiLMass","Lepton Mass [GeV]",25,0,250);
- // TH1F * hDiLMass2 = new TH1F("hDiLMass2","OS DiLepton mass",30,0,450);
- TH1F * hMultiLMassSF12 = new TH1F("hMultiLMassSF12","Lepton mass [GeV]",30,0,450);
- TH1F * hMETMeff = new TH1F("hMETMeff","E^{miss}_{T}/E^{miss}_{T}+H_{T}", 30,0,1);
- TH1F * hMETLep = new TH1F("hMETLep", "E^{miss}_{T}/Lepton P_{T}", 100, 0, 1);
- // TH1F * hMassDifMT = new TH1F("hMassDifMT","MW-MT/MT",100,0,1);
- // TH1F * hMassDifMET = new TH1F("hMassDifMET","E^{miss}_{T}-M_{T}/M_{T}",100,0,1);
- TH1F * hBelowZ = new TH1F("hBelowZ", "Lepton mass Below-Z region [GeV]",25,10,80);
- TH1F * hAboveZ = new TH1F("hAboveZ", "Lepton Mass Above-Z region [GeV]",35,100,400);
- // TH1F * hTopMass = new TH1F("hTopmass", "Top Mass",100,400,3000);
- // TH1F * hWMass = new TH1F("hWMass", "W mass", 100,0,2000);
- // TH1F * hMT3 = new TH1F("hMT3", "M_{T} [GeV]", 100,0,200);
- TH1F * hMeff = new TH1F("hMeff", "M_{eff} [GeV]", 50,0,5000);
- TH1F * h1LepEta = new TH1F("h1LepEta", "Leading Lepton #eta", 50,-5,5);
- TH1F * h2LepEta = new TH1F("h2LepEta", "2^{nd} Leading Lepton #eta", 50,-5,5);
- TH1F * h3LepEta = new TH1F("h3LepEta", "3^{rd} Leading Lepton #eta", 50,-5,5);
- TH1F * h1JetEta = new TH1F("h1JetEta", "Leading Jet #eta", 50,-5,5);
- TH1F * h2JetEta = new TH1F("h2JetEta", "2^{nd} Leading Jet #eta", 50,-5,5);
- TH1F * h3JetEta = new TH1F("h3JetEta", "3^{rd} Leading Jet #eta", 50,-5,5);
- // TH1F * hMuIso = new TH1F("hMuIso", "Isolation", 20,0,1);
- // TH1F * hMuIso = new TH1F("hMuIso", "Isolation", 20,0,1);
- TH1F * hST = new TH1F("hST","S_{T} [GeV]",100,0,5000);
- // TH1F * hMTpre = new TH1F("hMTpre","M_{T} pre [GeV]",100,0,200);
- ////////////////////// first check plots
- TH1F * hHT1 = new TH1F("hHT1","H_{T} first check [GeV]",100,0,5000);
- TH1F * hNel1 = new TH1F("hNel1","Number of Electrons first check",5,0.5,5.5);
- TH1F * hNmu1 = new TH1F("hNmu1","Number of Muons first check",5,0.5,5.5);
- TH1F * hNlep1 = new TH1F("hNlep1","Number of leptons first check",5,0.5,5.5);
- TH1F * hNjet1 = new TH1F("hNjet1","Number of Jet first check",14,0.5,14.5);
- TH1F * hMET1 = new TH1F("hMET1", "E^{miss}_{T} first check", 40,0,2000);
- TH1F * hDphi1 = new TH1F("hDphi1", "#Delta#phi first check", 40,0,4);
- TH1F * hLep1Pt1 = new TH1F("hLep1Pt1","Leading lepton P_{T} first check",50,0,600);
- TH1F * hMultiLMassSF1 = new TH1F("hMultiLMassSF1","Lepton mass first check",30,0,450);
- TH1F * hLep2Pt1 = new TH1F("hLep2Pt1","2^{nd} Leading Lepton P_{T} first check",50,0,600);
- TH1F * hLep3Pt1 = new TH1F("hLep3Pt1","3^{nd} Leading Lepton P_{T} first check",50,0,600);
- TH1F * hJet1Pt1 = new TH1F("hJet1Pt1","1^{st} Leading Jet P_{T} first check",50,0,1000);
- TH1F * hJet2Pt1 = new TH1F("hJet2Pt1","2^{nd} Leading Jet P_{T} first check",50,0,1000);
- TH1F * hJet3Pt1 = new TH1F("hJet3Pt1","3^{rd} Leading Jet P_{T} first check",50,0,1000);
- TH1F * hDiLMass1 = new TH1F("hDiLMass1","OS DiLepton mass first check",25,0,250);
- TH1F * hMETMeff1 = new TH1F("hMETMeff1","E^{miss}_{T}/E^{miss}_{T}+H_{T} first check", 30,0,1);
- TH1F * hMeff1 = new TH1F("hMeff1", "M_{eff} first check", 50,0,5000);
- TH1F * h1LepEta1 = new TH1F("h1LepEta1", "#eta_{1lep} first check", 50,-5,5);
- TH1F * h2LepEta1 = new TH1F("h2LepEta1", "#eta_{2lep} first check", 50,-5,5);
- TH1F * h3LepEta1 = new TH1F("h3LepEta1", "#eta_{3lep} first check", 50,-5,5);
- TH1F * h1JetEta1 = new TH1F("h1JetEta1", "#eta_{1jet} first check", 50,-5,5);
- TH1F * h2JetEta1 = new TH1F("h2JetEta1", "#eta_{2jet} first check", 50,-5,5);
- TH1F * h3JetEta1 = new TH1F("h3JetEta1", "#eta_{3jet} first check", 50,-5,5);
- TH1F * hMuIso1 = new TH1F("hMuIso1", "IsoMu first check", 20,0,1);
- TH1F * hST1 = new TH1F("hST1","S_{T} first check",100,0,5000);
- TH1F * hBjet = new TH1F("hBjet","Bjet multiplicity",10,0.5,10.5);
- TH1F * hMuiso = new TH1F("hMuiso","isolation mu",20,-1.5,1.5);
- TH1F * hEliso = new TH1F("hEliso","isolation el",20,-1.5,1.5);
- // TH1F * hMT31 = new TH1F("hMT31", "M_{T} first check", 100,0,200);
- /////////////////// end of first check histos
- ////////////////// second check histos
- TH1F * hHT2 = new TH1F("hHT2","H_{T} second check [GeV]",100,0,5000);
- TH1F * hNel2 = new TH1F("hNel2","Number of Electrons second check",5,0.5,5.5);
- TH1F * hNmu2 = new TH1F("hNmu2","Number of muons second check",5,0.5,5.5);
- TH1F * hNlep2 = new TH1F("hNlep2","Number of leptons second check",5,0.5,5.5);
- TH1F * hNjet2 = new TH1F("hNjet2","Number of Jet second check",14,0.5,14.5);
- TH1F * hMET2 = new TH1F("hMET2", "E^{miss}_{T} second check [GeV]", 40,0,2000);
- TH1F * hDphi2 = new TH1F("hDphi2", "#Delta#phi second check ", 40,0,4);
- TH1F * hLep1Pt2 = new TH1F("hLep1Pt2","Leading lepton P_{T} second check",50,0,600);
- TH1F * hMultiLMassSF2 = new TH1F("hMultiLMassSF2","Lepton mass second check [GeV]",25,0,250);
- TH1F * hLep2Pt2 = new TH1F("hLep2Pt2","2^{nd} Leading Lepton P_{T} second check",50,0,600);
- TH1F * hLep3Pt2 = new TH1F("hLep3Pt2","3^{nd} Leading Lepton P_{T} second check",50,0,600);
- TH1F * hJet1Pt2 = new TH1F("hJet1Pt2","1^{st} Leading Jet P_{T} second check",50,0,1000);
- TH1F * hJet2Pt2 = new TH1F("hJet2Pt2","2^{nd} Leading Jet P_{T} second check",50,0,1000);
- TH1F * hJet3Pt2 = new TH1F("hJet3Pt2","3^{rd} Leading Jet P_{T} second check",50,0,1000);
- TH1F * hDiLMass2 = new TH1F("hDiLMass2","Lepton mass second check [GeV]",30,0,250);
- TH1F * hMETMeff2 = new TH1F("hMETMeff2","E^{miss}_{T}/E^{miss}_{T}+H_{T} second check", 100,0,1);
- TH1F * hMeff2 = new TH1F("hMeff2", "M_{eff} second check [GeV]", 100,0,5000);
- TH1F * h1LepEta2 = new TH1F("h1LepEta2", "#eta_{1lep} second check", 50,-5,5);
- TH1F * h2LepEta2 = new TH1F("h2LepEta2", "#eta_{2lep}second check", 50,-5,5);
- TH1F * h3LepEta2 = new TH1F("h3LepEta2", "#eta_{3lep}second check", 50,-5,5);
- TH1F * h1JetEta2 = new TH1F("h1JetEta2", "#eta_{1jet}second check", 50,-5,5);
- TH1F * h2JetEta2 = new TH1F("h2JetEta2", "#eta_{2jet}second check", 50,-5,5);
- TH1F * h3JetEta2 = new TH1F("h3JetEta2", "#eta_{3jet}second check", 50,-5,5);
- // TH1F * hMuIso2 = new TH1F("hMuIso2", "IsoMu second check", 20,0,1);
- TH1F * hST2 = new TH1F("hST2","S_{T} second check",100,0,5000);
- // TH1F * hMT32 = new TH1F("hMT32", "M_{T} second check", 100,0,200);
- ///////////////// end of second check histos
- EasyChain* tree = new EasyChain("delphTree");
- for(unsigned i=0;i<files.size();i++){
- tree->AddSmartW(files[i],weights[i]);
- cout<<"add: "<<files[i]<<" "<<weights[i]<<endl;
- }
- int Nevents=tree->GetEntries();
- cout<<">>>>>>>>>>>>>>>>>>>>>>> total number of events:\t" << Nevents <<endl;
- // Text counter
- const int CutNumb = 8;
- const char * CutList[CutNumb] = {"Preselection", "Trigger", "N#mu=3", "SMZcut"/*, "JetMultiplicity>4"*/, "BJetMultip>4", "dPhi>0.3", "MET>250", "MET>250HT>1000"};
- // Counter start here:
- double CFCounter[CutNumb];
- int iCFCounter[CutNumb];
- for (int i=0;i < CutNumb; i++){
- CFCounter[i] = 0;
- iCFCounter[i] = 0;
- }
- // Histogram counter
- const int CutNumb1 = 7;
- const char * CutList1[CutNumb1] = {"Preselect.","Trigger", "N#mu = 3", "SM Z Req."/*, "Jet Cleaning & Multip."*/, "Numb. BJets > 4", "#phi > 0.3", "H_{T}>750 E^{miss}_{T}>250"};
- double CFCounter1[CutNumb1];
- int iCFCounter1[CutNumb1];
- for (int i=0;i < CutNumb1; i++){
- CFCounter1[i] = 0;
- iCFCounter1[i] = 0;
- }
- TH1D * CutFlow = new TH1D("CutFlow","",CutNumb1,0.5,CutNumb1+0.5);
- TH1D * CutFlow1 = new TH1D("CutFlow1","",CutNumb,0.5,CutNumb+0.5);
- // label bins
- for(int cj = 0; cj < CutNumb1; cj++)
- CutFlow->GetXaxis()->SetBinLabel(cj+1,CutList1[cj]);
- for(int cj = 0; cj < CutNumb; cj++)
- CutFlow1->GetXaxis()->SetBinLabel(cj+1,CutList[cj]);
- for(int entry=0; entry < Nevents; entry+=1)
- {
- progressT();
- double fw = tree->GetEntryW(entry); // the applied with AddSmartW for the current file/dir
- double EvWeight = 1;
- if(useW) EvWeight = tree->Get(EvWeight,"EventWeight");
- EvWeight *= fw * 1000; // 1000 for 1/pb->1/fb
- // 0. CF presel
- CFCounter[0]+= EvWeight;
- iCFCounter[0]++;
- CFCounter1[0]+= EvWeight;
- iCFCounter1[0]++;
- // vectors::::
- std::vector<TLorentzVector> Test;// = new vector<TLorentzVector>;
- std::vector<TLorentzVector> &Electrons = tree->Get(&Electrons,"Electrons");
- std::vector<int> &ElCh = tree->Get(&ElCh,"ElectronCh");
- std::vector<TLorentzVector> &Muons = tree->Get(&Muons,"Muons");
- std::vector<int> &MuCh = tree->Get(&MuCh,"MuonCh");
- std::vector<double> &ElIso = tree->Get(&ElIso,"ElectronIso");
- std::vector<double> &MuIso = tree->Get(&MuIso,"MuonIso");
- std::vector<TLorentzVector> &Jets = tree->Get(&Jets,"Jets");
- std::vector<int> &JetB = tree->Get(&JetB, "JetB");
- std::vector<TLorentzVector> Lepton;// = new vector<TLorentzVector>;
- std::vector<double> &JetMETdPhi = tree->Get(&JetMETdPhi, "JetMETdPhi");
- std::vector<TLorentzVector> newJets;
- vector<int> LepFlavour;
- int Nel = tree->Get( Nel, "Nel");
- int Nmu = tree->Get( Nmu, "Nmu");
- int Nlept = Nel + Nmu;
- bool vetoE[100];for(int ie=0;ie<Nel;ie++)vetoE[ie]=0;
- bool vetoM[100];for(int im=0;im<Nmu;im++)vetoM[im]=0;
- // EWKino leptons
- int nlept=0;
- for(int ie=0;ie<Nel;ie++) {
- vetoE[ie]|=(Electrons[ie].Pt()<10)||(fabs(Electrons[ie].Eta())>2.4);
- nlept++;
- }
- for(int im=0;im<Nmu;im++) {
- vetoM[im]|=(Muons[im].Pt()<10)||(fabs(Muons[im].Eta())>2.4);
- nlept++;
- }
- vector<bool> veto;
- for(int elid = 0; elid < Nel; elid++)
- { veto.push_back(vetoE[elid]);
- Lepton.push_back(Electrons[elid]);
- LepFlavour.push_back(11*ElCh[elid]);
- }
- for(int muid = 0; muid < Nmu; muid++)
- { veto.push_back(vetoM[muid]);
- Lepton.push_back(Muons[muid]);
- LepFlavour.push_back(13*MuCh[muid]);
- }
- double LeadPt = 0;
- TLorentzVector lv_sum;
- int hasSF = 1; // has same flavour Multilepton (muon)
- int hasZ = 0; // has Z like pair
- double m=0;
- for(int lid = 0; lid < Nlept; lid++)
- {
- if(veto[lid]) continue;
- for(int sid = 0; (sid < Nlept) && (lid != sid); sid++)
- {
- if(veto[sid]) continue;
- {
- int sumflvr = LepFlavour[lid] + LepFlavour[sid]; // summ of lepton flavour, possible comb: SS: 22,24,26 OS: 0,2 *********
- if(abs(sumflvr) == 26) {
- hasSF++;
- m=lv_sum.M();
- if(m>0)hMultiLMassSF12->Fill(m,EvWeight);
- }
- if(sumflvr == 0) // may be Z decay ****************
- {
- lv_sum = Lepton[lid] + Lepton[sid];
- if(abs(lv_sum.M()-90.) < 15) hasZ++;
- }
- }
- }
- if(Lepton[lid].Pt() > LeadPt)
- LeadPt = Lepton[lid].Pt();
- }
- /////////////////// lepton requirement
- bool trigger = true;
- for (int i = 0; i < Nlept; i++)
- if((Lepton[i].Pt() < 10.) || (fabs(Lepton[i].Eta()) > 2.4) /*&& (Lepton[0].Pt() < 20.)*/) trigger = false;
- if(!trigger) continue;
- for(int i=0; i<Nel;i++)
- {
- if(Electrons[i].Pt()>10)hEliso->Fill(ElIso[0],EvWeight);
- }
- for(int i=0; i<Nmu;i++)
- {
- if(Muons[i].Pt()>10)hMuiso->Fill(MuIso[0],EvWeight);
- }
- //////////////////// Isolation
- bool isomu = false, isoel = false;
- for(int i=0; i<Nmu; i++)
- {
- if(MuIso[i]/*/Muons[i].Pt()*/ > 0.15) isomu = true;
- }
- for(int i=0; i<Nel; i++)
- {
- if(ElIso[i]/*/Electrons[i].Pt()*/ > 0.15) isoel = true;
- }
- if(isoel || isomu) continue;
- int trigger_btag[50];
- int bind = 0;
- ////////////////////// jet requirement
- std::vector<TLorentzVector> triggerJets;
- int Njet_loose = tree-> Get(Njet_loose,"Njet");
- for(int i=0; i<Njet_loose;i++)
- {
- if((Jets[i].Pt()>40.) && (fabs(Jets[i].Eta())<2.4))
- { triggerJets.push_back(Jets[i]); trigger_btag[bind]=JetB.at(i); bind++;}
- }
- bind = 0;
- int clean_btag[50];
- //////////////////// jet cleaning
- bool clean = true;
- for ( int s=0; s<triggerJets.size(); s++)
- {
- clean = true;
- for ( int i=0;i<Lepton.size();++i)
- {
- if (triggerJets[s].DeltaR(Lepton[i]) <= 0.4)
- {
- clean = false;
- continue;
- }
- }
- if(clean == true) {newJets.push_back(triggerJets[s]); clean_btag[bind]=trigger_btag[s];bind++;}
- }
- ///////////////////// HT
- ///////////////////// NOTE: HTnew <= HT40 <= HTold, HTold40 = HT40
- double HT = tree->Get(HT,"HT40");
- double HTnew = 0;
- double HTold = 0;
- double HTold40 = 0;
- for(int i=0; i<Jets.size(); i++)
- {
- HTold += Jets[i].Pt();
- if ( Jets[i].Pt() > 40 ) HTold40+= Jets[i].Pt();
- }
- for (int i=0; i<newJets.size(); i++)
- {
- HTnew+=newJets[i].Pt();
- }
- // cout << "HT40:\t " << HT << "\t newHT:\t " << HTnew << "\t HTold40: \t" << HTold40 << endl;
- double MET = tree->Get(MET,"DelphMET");
- double Meff = MET + HTnew;
- double LepPt = 0;
- for(int i=0; i<Nlept; i++)
- LepPt +=Lepton[i].Pt();
- double ST = LepPt + MET;
- int Nbjet = 0;
- vector<int> BJetInd;
- for(int i = 0; i < newJets.size(); ++i)
- {
- if((clean_btag[i] & (1 << 1)) && (newJets[i].Pt() > 50.) && (fabs(newJets[i].Eta()) < 1.8))
- {
- Nbjet++;
- BJetInd.push_back(i);
- }
- }
- hBjet->Fill(Nbjet,EvWeight);
- CFCounter[1]+= EvWeight;
- iCFCounter[1]++;
- CFCounter1[1]+= EvWeight;
- iCFCounter1[1]++;
- // TH1F * hNbjet = new TH1F("hNbjet","Bjet multiplicity",15,0.5,15.5);
- // TH1F * hHTnew = new TH1F("hHTnew","HT with cleaned jets",15,0.5,15.5);
- // TH1F * hHT40 = new TH1F("hHT40","normal HT",15,0.5,15.5);
- // hNbjet->Fill(Nbjet,EvWeight);
- // hHTnew->Fill(HTnew,EvWeight);
- // hHT40->Fill(HT,EvWeight);
- // hNbjet->Write();
- // hHTnew->Write();
- // hHT40->Write();
- //////////////////////
- // Start of CutFlow //
- //////////////////////
- // 1. nLeptons
- if (Nmu != 3) continue;
- if (Nel != 0) continue;
- //if(Nlept != 3) continue;
- if ((Lepton[0].Pt()<25.) || (Lepton[1].Pt()<15.) || (Lepton[2].Pt()<10.)) continue;
- CFCounter[2]+= EvWeight;
- iCFCounter[2]++;
- CFCounter1[2]+= EvWeight;
- iCFCounter1[2]++;
- /////////////////////// MT Definition
- // double MET_Phi = tree->Get(MET_Phi,"DelphMET_Phi");
- // double MT = sqrt(2*MET*Lepton[2].Pt()*(1-cos(fabs(MET_Phi - Lepton[2].Phi()))));
- // hMTpre -> Fill(MT,EvWeight);
- ////////////////////// MT Definition
- // hasZ cut
- if(lv_sum.M() < 15) continue;
- if (hasZ > 0) continue;
- CFCounter[3]+= EvWeight;
- iCFCounter[3]++;
- CFCounter1[3]+= EvWeight;
- iCFCounter1[3]++;
- // jet multiplicity
- //if(newJets.size() < 4) continue;
- // CFCounter[4]+=EvWeight;
- // iCFCounter[4]++;
- // CFCounter1[4]+=EvWeight;
- // iCFCounter1[4]++;
- // b selection
- if (Nbjet < 4) continue;
- //if (BJetInd.size() < 4) continue;
- // bool bjet = true;
- // //for(int i=0; i< newJets.size(); i++)
- // if (JetB.size() > 0) bjet = false;
- // if(!bjet) continue;
- CFCounter[4]+=EvWeight;
- iCFCounter[4]++;
- CFCounter1[4]+=EvWeight;
- iCFCounter1[4]++;
- /////////// first chek
- double dPhi01 = TMath::Min(JetMETdPhi[0],JetMETdPhi[1]);
- double dPhi23 = TMath::Min(JetMETdPhi[2],JetMETdPhi[3]);
- double dPhi = TMath::Min(dPhi01,dPhi23);
- hDphi1 -> Fill(dPhi01, EvWeight);
- if(Nel>0)hNel1 -> Fill(Nel, EvWeight);
- hHT1 -> Fill(HTnew,EvWeight);
- hMET1 -> Fill(MET,EvWeight);
- hNjet1 -> Fill(newJets.size(),EvWeight);
- hNlep1 -> Fill(Nlept, EvWeight);
- if(Nmu>0)hNmu1 -> Fill(Nmu, EvWeight);
- if(m>0)hMultiLMassSF1->Fill(m,EvWeight);
- hLep1Pt1 -> Fill(Lepton[0].Pt(), EvWeight);
- hLep2Pt1 -> Fill(Lepton[1].Pt(),EvWeight);
- hLep3Pt1 -> Fill(Lepton[2].Pt(),EvWeight);
- if(newJets.size()>2) hJet1Pt1 -> Fill(newJets[0].Pt(),EvWeight);
- if(newJets.size()>2) hJet2Pt1 -> Fill(newJets[1].Pt(),EvWeight);
- if(newJets.size()>2) hJet3Pt1 -> Fill(newJets[2].Pt(),EvWeight);
- hDiLMass1 -> Fill(lv_sum.M(),EvWeight);
- hMETMeff1 -> Fill(MET/Meff,EvWeight);
- hMeff1 -> Fill(Meff,EvWeight);
- if(Nmu>0)h1LepEta1 -> Fill(Muons[0].Eta(),EvWeight);
- if(Nmu>0)h2LepEta1 -> Fill(Muons[1].Eta(),EvWeight);
- if(Nmu>0)h3LepEta1 -> Fill(Muons[2].Eta(),EvWeight);
- if(newJets.size()>2)h1JetEta1 -> Fill(newJets[0].Eta(),EvWeight);
- if(newJets.size()>2)h2JetEta1 -> Fill(newJets[1].Eta(),EvWeight);
- if(newJets.size()>2)h3JetEta1 -> Fill(newJets[2].Eta(),EvWeight);
- // if(Nmu>0)hMuIso1 -> Fill(MuIso[0], EvWeight);
- hST1->Fill(ST,EvWeight);
- // hMT31->Fill(MT, EvWeight);
- ////////// end of the first check
- //del phi cut > 0.3
- // if (dPhi01 < 0.3) continue;
- // if (dPhi23 < 0.3) continue;
- if (dPhi < 0.3) continue;
- CFCounter[5]+=EvWeight;
- iCFCounter[5]++;
- CFCounter1[5]+=EvWeight;
- iCFCounter1[5]++;
- // HT cut
- // if (HT < 500) continue;
- // CFCounter[8]+=EvWeight;
- // iCFCounter[8]++;
- // CFCounter1[7]+=EvWeight;
- // iCFCounter1[7]++;
- //Medium MET-HT
- if(MET < 250 /*|| HTnew < 750*/) continue;
- CFCounter1[6]+=EvWeight;
- iCFCounter1[6]++;
- CFCounter[6]+=EvWeight;
- iCFCounter[6]++;
- // MET-HT
- if(MET>250 && HTnew>750) {
- CFCounter[7]+=EvWeight;
- iCFCounter[7]++;
- }
- // CFCounter1[7]+=EvWeight;
- // iCFCounter1[7]++;
- // double HT_cut = 500.;
- // double MET_cut = 250.;
- // for(HT_cut = 500.; HT_cut<1201 ; HT_cut+=50)
- // {
- // for(MET_cut = 250.; MET_cut<751 ; MET_cut+=50)
- // {
- // if(MET>MET_cut && HT>HT_cut)
- //{
- //
- // }
- // }
- // }
- // MET cut
- // if (MET < 500) continue; //////////// <<<<<<<<<<<<
- // CFCounter[11]+=EvWeight;
- // iCFCounter[11]++;
- // CFCounter1[8]+=EvWeight;
- // iCFCounter1[8]++;
- ////////////////////// second check
- // hMT32->Fill(MT, EvWeight);
- hDphi2 -> Fill(dPhi01, EvWeight);
- if(Nel>0)hNel2 -> Fill(Nel, EvWeight);
- hHT2 -> Fill(HTnew,EvWeight);
- hMET2 -> Fill(MET,EvWeight);
- hNjet2 -> Fill(newJets.size(),EvWeight);
- hNlep2 -> Fill(Nlept, EvWeight);
- if(Nmu>0)hNmu2 -> Fill(Nmu, EvWeight);
- if(m>0)hMultiLMassSF2->Fill(m,EvWeight);
- hLep1Pt2 -> Fill(Lepton[0].Pt(), EvWeight);
- hLep2Pt2 -> Fill(Lepton[1].Pt(),EvWeight);
- hLep3Pt2 -> Fill(Lepton[2].Pt(),EvWeight);
- if(newJets.size()>2)hJet1Pt2 -> Fill(newJets[0].Pt(),EvWeight);
- if(newJets.size()>2)hJet2Pt2 -> Fill(newJets[1].Pt(),EvWeight);
- if(newJets.size()>2)hJet3Pt2 -> Fill(newJets[2].Pt(),EvWeight);
- hDiLMass2 -> Fill(lv_sum.M(),EvWeight);
- hMETMeff2 -> Fill(MET/Meff,EvWeight);
- hMeff2 -> Fill(Meff,EvWeight);
- if(Nmu>0)h1LepEta2 -> Fill(Muons[0].Eta(),EvWeight);
- if(Nmu>0)h2LepEta2 -> Fill(Muons[1].Eta(),EvWeight);
- if(Nmu>0)h3LepEta2 -> Fill(Muons[2].Eta(),EvWeight);
- if(newJets.size()>2)h1JetEta2 -> Fill(newJets[0].Eta(),EvWeight);
- if(newJets.size()>2)h2JetEta2 -> Fill(newJets[1].Eta(),EvWeight);
- if(newJets.size()>2)h3JetEta2 -> Fill(newJets[2].Eta(),EvWeight);
- // if(Nmu>0)hMuIso2 -> Fill(MuIso[0], EvWeight);
- hST2->Fill(ST,EvWeight);
- ///////////////////// end of the second check
- //missing trans energy / effective mass
- // if (MET/Meff < 0.2) continue;
- // CFCounter[10]+= EvWeight;
- // iCFCounter[10]++;
- // CFCounter1[8]+= EvWeight;
- // iCFCounter1[8]++;
- // double LeadBPt = 0;
- // for (int iJet = 0; iJet < BJetInd.size(); iJet++)
- // {
- // if (newJets[BJetInd[iJet]].Pt() > LeadBPt)
- // LeadBPt = newJets[BJetInd[iJet]].Pt();
- // }
- // double MWmass = MET + Lepton[3].Pt();
- // double MTopmass = MET + Lepton[3].Pt() + LeadBPt;
- // double MassDifMT = MWmass - MT3;
- // double MassDifMET = MET - MT3;
- // hMT3 ->Fill(MT, EvWeight);
- // hWMass ->Fill(MWmass,EvWeight);
- // hTopMass ->Fill(MTopmass,EvWeight);
- // hMassDifMT ->Fill(MassDifMT/MT3,EvWeight);
- hMETMeff ->Fill(MET/Meff, EvWeight);
- // hMETLep ->Fill(MWmass/ST,EvWeight);
- // hMassDifMET ->Fill(MassDifMET/MT3,EvWeight);
- hNjet ->Fill(newJets.size(),EvWeight);
- hBelowZ ->Fill(lv_sum.M(),EvWeight);
- hAboveZ ->Fill(lv_sum.M(),EvWeight);
- hDiLMass ->Fill(lv_sum.M(),EvWeight);
- hHT ->Fill(HTnew,EvWeight);
- hDphi ->Fill(dPhi01,EvWeight);
- hMET ->Fill(MET,EvWeight);
- if(Nel>0)hNel ->Fill(Nel,EvWeight);
- if(Nmu>0)hNmu ->Fill(Nmu,EvWeight);
- if(Nmu>0 && Nel>0)hNlep ->Fill(Nel + Nmu,EvWeight);
- hLep1Pt ->Fill(Lepton[0].Pt(),EvWeight);
- hLep2Pt ->Fill(Lepton[1].Pt(),EvWeight);
- hLep3Pt ->Fill(Lepton[2].Pt(),EvWeight);
- if(newJets.size()>2)hJet1Pt ->Fill(newJets[0].Pt(),EvWeight);
- if(newJets.size()>2)hJet2Pt ->Fill(newJets[1].Pt(),EvWeight);
- if(newJets.size()>2) hJet3Pt ->Fill(newJets[2].Pt(),EvWeight);
- hMeff ->Fill(Meff,EvWeight);
- if(Nmu>0)h1LepEta -> Fill(Muons[0].Eta(),EvWeight);
- if(Nmu>0)h2LepEta -> Fill(Muons[1].Eta(),EvWeight);
- if(Nmu>0)h3LepEta -> Fill(Muons[2].Eta(),EvWeight);
- if(newJets.size()>2)h1JetEta -> Fill(newJets[0].Eta(),EvWeight);
- if(newJets.size()>2)h2JetEta -> Fill(newJets[1].Eta(),EvWeight);
- if(newJets.size()>2)h3JetEta -> Fill(newJets[2].Eta(),EvWeight);
- // if(Nmu>0)hMuIso -> Fill(MuIso[0], EvWeight);
- hST->Fill(ST,EvWeight);
- // End of Selection
- }
- // ^loop end^
- ofstream tfile;
- tfile.open("sunum_140PU_3000fb/SummerStd_"+outname+".txt");
- tfile << "########################################" << endl;
- tfile << "Cut efficiency numbers:" << endl;
- for(int ci = 0; ci < CutNumb; ci++)
- {
- tfile << "After cut " << CutList[ci] << "\t\t\t"
- << CFCounter[ci] << "\t events left\t"<< iCFCounter[ci] <<" cnt\t"<< endl;
- CutFlow->SetBinContent(1+ci,CFCounter1[ci]);
- CutFlow1->SetBinContent(1+ci,CFCounter[ci]);
- }
- TFile * outf = new TFile("sunum_140PU_3000fb/SummerStd_"+outname+"_his.root","RECREATE");
- CutFlow ->Write();
- CutFlow1 ->Write();
- hBjet->Write();
- hMuiso->Write();
- hEliso->Write();
- ////////////////// first check
- hNel1 ->Write();
- hNmu1 ->Write();
- hNlep1 ->Write();
- hNjet1 ->Write();
- hMultiLMassSF1 ->Write();
- hHT1 ->Write();
- hLep1Pt1 -> Write();
- hLep2Pt1 -> Write();
- hLep3Pt1 -> Write();
- hJet1Pt1 -> Write();
- hJet2Pt1 -> Write();
- hJet3Pt1 -> Write();
- hDiLMass1 -> Write();
- hMETMeff1 -> Write();
- hMeff1 -> Write();
- hMET1 -> Write();
- hDphi1 -> Write();
- h1LepEta1 -> Write();
- h2LepEta1 -> Write();
- h3LepEta1 -> Write();
- h1JetEta1 -> Write();
- h2JetEta1 -> Write();
- h3JetEta1 -> Write();
- // hMuIso1 -> Write();
- hST1-> Write();
- ///////////////// second check
- hDphi2 -> Write();
- hNel2 -> Write();
- hHT2 -> Write();
- hMET2 -> Write();
- hNjet2 -> Write();
- hNlep2 -> Write();
- hNmu2 -> Write();
- hLep1Pt2 -> Write();
- hMultiLMassSF2-> Write();
- hLep2Pt2 -> Write();
- hLep3Pt2 -> Write();
- hJet1Pt2 -> Write();
- hJet2Pt2 -> Write();
- hJet3Pt2 -> Write();
- hDiLMass2 -> Write();
- hMETMeff2 -> Write();
- hMeff2 -> Write();
- hDiLMass2 -> Write();
- h1LepEta2 -> Write();
- h2LepEta2 -> Write();
- h3LepEta2 -> Write();
- h1JetEta2 -> Write();
- h2JetEta2 -> Write();
- h3JetEta2 -> Write();
- // hMuIso2 -> Write();
- hST2-> Write();
- /////////////// full requirements
- hNel ->Write();
- hNmu ->Write();
- hNlep ->Write();
- hNjet ->Write();
- hLep1Pt -> Write();
- hLep2Pt -> Write();
- hLep3Pt -> Write();
- hJet1Pt -> Write();
- hJet2Pt -> Write();
- hJet3Pt -> Write();
- hMultiLMassSF12 ->Write();
- hDiLMass ->Write();
- hBelowZ ->Write();
- hAboveZ ->Write();
- hHT ->Write();
- hMET ->Write();
- hDphi ->Write();
- // hMassDifMT ->Write();
- // hMassDifMET ->Write();
- hMETLep ->Write();
- hMETMeff ->Write();
- hMeff ->Write();
- h1LepEta -> Write();
- h2LepEta -> Write();
- h3LepEta -> Write();
- h1JetEta -> Write();
- h2JetEta -> Write();
- h3JetEta -> Write();
- // hMuIso -> Write();
- hST-> Write();
- // hBjet->Write();
- // hTopMass ->Write();
- // hWMass ->Write();
- // hMT3 ->Write();
- // hMT31 ->Write();
- // hMT32 ->Write();
- // hMTpre->Write();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement