diff --git a/analysis/bin/BuildFile.xml b/analysis/bin/BuildFile.xml
index 8eb0ff43..5a456ca9 100644
--- a/analysis/bin/BuildFile.xml
+++ b/analysis/bin/BuildFile.xml
@@ -22,6 +22,7 @@
+
diff --git a/analysis/bin/slmassAnalyser.cc b/analysis/bin/slmassAnalyser.cc
index 544bfd9a..c974663f 100644
--- a/analysis/bin/slmassAnalyser.cc
+++ b/analysis/bin/slmassAnalyser.cc
@@ -9,31 +9,73 @@ using namespace std;
slmassAnalyser::slmassAnalyser(TTree *tree, TTree *had, TTree *hadTruth, Bool_t isMC, Bool_t sle, Bool_t slm) : topEventSelectionSL(tree, had, hadTruth, isMC, sle, slm)
{
+SetCutValues();
}
-
-
slmassAnalyser::~slmassAnalyser()
{
}
+int slmassAnalyser::SetCutValues(){
+ topEventSelectionSL::SetCutValues();
+
+ cut_ElectronPt = 34;
+ cut_ElectronEta = 2.1;
+ cut_ElectronIDType = Electron_cutBased;
+ cut_ElectronIDCut = 3;
+ cut_ElectronSCEtaLower = 1.4442;
+ cut_ElectronSCEtaUpper = 1.566;
+ cut_ElectronRelIso03All = 0.1;
+
+ cut_MuonIDType = Muon_tightId;
+ cut_MuonPt = 26;
+ cut_MuonEta = 2.4;
+ cut_MuonRelIso04All = 0.15;
+
+ cut_VetoElectronPt = 15;
+ cut_VetoElectronEta = 2.4;
+ cut_VetoElectronIDType = Electron_cutBased;
+ cut_VetoElectronIDCut = 1;
+ cut_VetoElectronSCEtaLower = 1.4442;
+ cut_VetoElectronSCEtaUpper = 1.566;
+ cut_VetoElectronRelIso03All = 0.26;
+
+ cut_VetoMuonIDType = NULL;
+ cut_VetoMuonPt = 15;
+ cut_VetoMuonEta = 2.4;
+ cut_VetoMuonRelIso04All = 0.26;
+
+ cut_JetID = 1;
+ cut_JetPt = 30;
+ cut_JetEta = 2.4;
+ cut_JetConeSizeOverlap = 0.4;
+
+ cut_BJetID = 1;
+ cut_BJetPt = 30;
+ cut_BJetEta = 2.4;
+ cut_BJetConeSizeOverlap = 0.4;
+ cut_BJetTypeBTag = Jet_btagCSVV2;
+ cut_BJetBTagCut = 0.8484;
+
+ return 0;
+
+}
void slmassAnalyser::Loop() {
if (fChain == 0) return;
Long64_t nentries = fChain->GetEntries();
-
+ std::cout << "# of input entries: " << nentries << std::endl;
// Events loop
for (Long64_t iev=0; ievGetEntry(iev);
int keep = EventSelection();
- cmesonSelection();
if (keep != 0) {
- collectTMVAvalues();
- m_tree->Fill();
+ cmesonSelection();
+ m_tree->Fill();
}
}
}
+
int main(int argc, char* argv[]) {
string env = getenv("CMSSW_BASE");
string username = getenv("USER");
@@ -55,25 +97,29 @@ int main(int argc, char* argv[]) {
if (found == std::string::npos) isMC = true;
for(Int_t i = 3; i < argc; i++) {
- TFile *f = TFile::Open(argv[i], "read");
- TTree *tree;
- f->GetObject("Events", tree);
-
- temp = argv[i];
- found = temp.find_last_of('/');
- std::string outPutName = dirName + temp.substr(found);
- slmassAnalyser t(tree, tree, 0, isMC, isSL_e, isSL_m);
-
- t.setOutput(outPutName);
- t.Loop();
+ TFile *f = TFile::Open(argv[i], "read");
+ TTree *tree;
+ f->GetObject("Events", tree);
+
+ temp = argv[i];
+ found = temp.find_last_of('/');
+ std::string outPutName = dirName + temp.substr(found);
+ slmassAnalyser t(tree, tree, 0, isMC, isSL_e, isSL_m);
+
+ t.setOutput(outPutName);
+ t.Loop();
}
}
else {
- TFile *f = TFile::Open("/xrootd/store/group/nanoAOD/run2_2016v4/TT_TuneCUETP8M2T4_13TeV-powheg-pythia8/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/180430_152541/0000/nanoAOD_256.root", "read");
- //TFile *f = TFile::Open("/cms/scratch/jdj0715/nanoAOD/src/nano/nanoAOD/prod/nanoAOD.root", "read");
+ TFile *f = TFile::Open("/xrootd/store/group/nanoAOD/run2_2016v5/TT_TuneCUETP8M2T4_13TeV-powheg-pythia8/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/180607_115926/0000/nanoAOD_256.root", "read");
+ //TFile *f = TFile::Open("/xrootd/store/group/nanoAOD/run2_2016v5/ST_t-channel_antitop_4f_inclusiveDecays_13TeV-powhegV2-madspin-pythia8_TuneCUETP8M1/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/180610_143635/0000/nanoAOD_256.root", "read");
+ //TFile *f = TFile::Open("/xrootd/store/group/nanoAOD/run2_2016v5/SingleMuon/Run2016B-07Aug17_ver2-v1/180607_085033/0000/nanoAOD_430.root");
+ //TFile *f = TFile::Open("/xrootd/store/group/nanoAOD/run2_2016v4/TT_TuneCUETP8M2T4_13TeV-powheg-pythia8/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/180430_152541/0000/nanoAOD_256.root", "read");
+ //TFile *f = TFile::Open("/xrootd/store/group/nanoAOD/run2_2016v5/WW_TuneCUETP8M1_13TeV-pythia8/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/180610_143956/0000/nanoAOD_2.ro
+
TTree *tree;
f->GetObject("Events", tree);
-
+ cout <<"out"<5) break;
+ }
+
+
m_tree = new TTree("event", "event");
MakeBranch(m_tree);
-
+
+ bdtg = new TMVA::Reader();
+ bdtg->AddVariable("cme_l3DE", &tmp_l3DE);
+ bdtg->AddVariable("cme_jetDR", &tmp_jetDR);
+ bdtg->AddVariable("cme_legDR", &tmp_legDR);
+ bdtg->AddVariable("cme_dca", &tmp_dca);
+ bdtg->AddVariable("cme_chi2", &tmp_chi2);
+ bdtg->AddVariable("cme_jet_btagCSVV2", &tmp_jet_btagCSVV2);
+ bdtg->AddSpectator("cme_mass", &tmp_mass);
+ bdtg->BookMVA("BDTG", "./Had_928.weights.xml");
+
h_nevents = new TH1D("nevents", "nevents", 1, 0, 1);
h_genweights = new TH1D("genweight", "genweight", 1, 0, 1);
h_weights = new TH1D("weight", "weight", 1, 0, 1);
@@ -96,18 +159,21 @@ void slmassAnalyser::setOutput(std::string outputName) {
void slmassAnalyser::MakeBranch(TTree* t) {
+
t->Branch("nvertex", &b_nvertex, "nvertex/I");
t->Branch("step", &b_step, "step/I");
t->Branch("channel", &b_channel, "channel/I");
t->Branch("njet", &b_njet, "njet/I");
t->Branch("nbjet", &b_nbjet, "nbjet/I");
- m_tree->Branch("lep", "TLorentzVector", &b_lep);
- t->Branch("had", "TLorentzVector", &b_had);
+ t->Branch("lep_pid", &b_lep_pid, "lep_pid/I");
+ t->Branch("lep", "TLorentzVector", &b_lep);
+ t->Branch("had", "TLorentzVector", &b_had);
+ t->Branch("mass_sum", &b_cme_sum, "mass_sum/F");
t->Branch("tri", &b_tri, "tri/F");
t->Branch("tri_up", &b_tri_up, "tri_up/F");
t->Branch("tri_dn", &b_tri_dn, "tri_dn/F");
t->Branch("met", &b_met, "met/F");
- t->Branch("nhad", &nhad, "nhad/i");
+ t->Branch("nhad", &nhad, "nhad/I");
t->Branch("weight", &b_weight, "weight/F");
t->Branch("puweight", &b_puweight, "puweight/F");
t->Branch("genweight", &b_genweight, "genweight/F");
@@ -118,90 +184,197 @@ void slmassAnalyser::MakeBranch(TTree* t) {
t->Branch("PV_npvs", &PV_npvs, "PV_npvs/I");
t->Branch("trig_m", &b_trig_m, "trig_m/O");
t->Branch("trig_e", &b_trig_e, "trig_e/O");
-
- t->Branch("had_vecSumDMLep", "TLoremtzVector", &b_had_vecSumDMLep);
- t->Branch("had_sumM", &b_had_sumM, "had_sumM/F");
-
+ //t->Branch("cme_nMatched", &b_cme_nMatched, "cme_nMatched/I");
+ //t->Branch("cme_nTrueDau", &b_cme_nTrueDau, "cme_nTrueDau/I");
+ t->Branch("cme_diffMass", &b_cme_diffMass, "cme_diffMass/F");
+ t->Branch("cme_tmva", &b_cme_tmva, "cme_tmva/F");
+ //t->Branch("cme_tmva_Jpsi", &b_cme_tmva_Jpsi, "cme_tmva_Jpsi/F");
t->Branch("cme_mass", &b_cme_mass, "cme_mass/F");
- t->Branch("cme_lxy", &b_cme_lxy, "cme_lxy/F");
- t->Branch("cme_lxyE", &b_cme_lxyE, "cme_lxyE/F");
- t->Branch("cme_x", &b_cme_x, "cme_x/F");
- t->Branch("cme_y", &b_cme_y, "cme_y/F");
- t->Branch("cme_z", &b_cme_z, "cme_z/F");
- t->Branch("cme_pt", &b_cme_pt, "cme_pt/F");
t->Branch("cme_pdgId", &b_cme_pdgId, "cme_pdgId/I");
+ //t->Branch("cme_jet_btagDeepB", &b_cme_jet_btagDeepB,"cme_jet_btagDeepB/F");
+ //t->Branch("cme_jet_btagDeepC", &b_cme_jet_btagDeepC,"cme_jet_btagDeepC/F");
+ //t->Branch("cme_jet_btagCMVA", &b_cme_jet_btagCMVA,"cme_jet_btagCMVA/F");
+ t->Branch("cme_jet_btagCSVV2", &b_cme_jet_btagCSVV2,"cme_jet_btagCSVV2/F");
+ t->Branch("cme_l3DE", &b_cme_l3DE, "cme_l3DE/F");
+ //t->Branch("cme_l3D", &b_cme_l3D,"cme_l3D/F");
+ //t->Branch("cme_l3DErr", &b_cme_l3DErr, "cme_l3DErr/F");
+ //t->Branch("cme_lxy", &b_cme_lxy, "cme_lxy/F");
+ //t->Branch("cme_lxyE", &b_cme_lxyE,"cme_lxyE/F");
+ t->Branch("cme_jetDR", &b_cme_jetDR, "cme_jetDR/F");
+ t->Branch("cme_legDR", &b_cme_legDR, "cme_legDR/F");
+ t->Branch("cme_dca", &b_cme_dca, "cme_dca/F");
+ t->Branch("cme_chi2", &b_cme_chi2, "cme_chi2/F");
+ t->Branch("cme_charge", &b_cme_charge, "cme_charge/I");
+ t->Branch("cme_cut", &b_cme_cut, "cme_cut/I");
+ //t->Branch("cme_nJet", &b_cme_nJet, "cme_nJet/I");
+
+ t->Branch("cme_dau1_chi2", &b_cme_dau1_chi2,"cme_dau1_chi2/F");
+ t->Branch("cme_dau1_nHits", &b_cme_dau1_nHits,"cme_dau1_nHits/F");
+ t->Branch("cme_dau1_pt", &b_cme_dau1_pt,"cme_dau1_pt/F");
+ t->Branch("cme_dau2_chi2", &b_cme_dau2_chi2,"cme_dau2_chi2/F");
+ t->Branch("cme_dau2_nHits", &b_cme_dau2_nHits,"cme_dau2_nHits/F");
+ t->Branch("cme_dau2_pt", &b_cme_dau2_pt,"cme_dau2_pt/F");
+ ////t->Branch("cme_dau1_ipsigXY", &b_cme_dau1_ipsigXY,"cme_dau1_ipsigXY/F");
+ ////t->Branch("cme_dau1_ipsigZ", &b_cme_dau1_ipsigZ,"cme_dau1_ipsigZ/F");
+ //t->Branch("cme_dau2_ipsigXY", &b_cme_dau2_ipsigXY,"cme_dau2_ipsigXY/F");
+ //t->Branch("cme_dau2_ipsigZ", &b_cme_dau2_ipsigZ,"cme_dau2_ipsigZ/F");
+ //t->Branch("cme_jet_btagDeepC", &b_cme_jet_btagDeepC, "cme_jet_btagDeepC/I");
+ //t->Branch("cme_pt", &b_cme_pt,"cme_pt/F");
+ //t->Branch("cme_eta", &b_cme_eta,"cme_eta/F");
+ //t->Branch("cme_phi", &b_cme_phi,"cme_phi/F");
+ //t->Branch("cme_angleXYZ", &b_cme_angleXYZ, "cme_angleXYZ/F");
+ //t->Branch("cme_angleXY", &b_cme_angleXY,"cme_angleXY/F");
+ //t->Branch("cme_x", &b_cme_x, "cme_x/F");
+ ///t->Branch("cme_y", &b_cme_y, "cme_y/F");
+ //t->Branch("cme_z", &b_cme_z, "cme_z/F");
+
}
void slmassAnalyser::resetBranch() {
- hads.clear();
- b_cme_pdgId = 0;
- b_cme_mass = -999;
- b_cme_lxy = -999;
- b_cme_lxyE = -999;
- b_cme_x = -999;
- b_cme_y = -999;
- b_cme_z = -999;
- b_cme_pt = -999;
-}
+ Reset();
+ b_had.SetPtEtaPhiM(0,0,0,0);
+ b_cme_cut = 0;
+ b_cme_charge = 0;
+ b_cme_pdgId = 0;
+
+ b_cme_tmva = -1;
+ b_cme_diffMass = -88;
+ b_cme_mass = -88;
+ b_cme_sum = -88;
+
+ b_cme_dau1_chi2 = -88;
+ b_cme_dau1_nHits = -88;
+ b_cme_dau1_pt = -88;
+ b_cme_dau2_chi2 = -88;
+ b_cme_dau2_nHits = -88;
+ b_cme_dau2_pt = -88;
+ b_cme_l3DE = -88;
+ b_cme_dca = -88;
+ b_cme_jetDR = -88;
+ b_cme_legDR = -88;
+ b_cme_chi2 = -88;
+ b_cme_jet_btagCSVV2 = -88;
+
-void slmassAnalyser::collectTMVAvalues() {
- for (UInt_t i = 0; i 4) continue;
+ if (had_dau1_nHits[k] <3) continue;
+ if (had_dau1_pt[k] <0.5) continue;
+ if (had_dau2_chi2[k] >3) continue;
+ if (had_dau2_nHits[k] <3) continue;
+ if (had_dau2_pt[k] <0.5) continue;
+ if (std::fabs(had_angleXY[k]) <0.95) continue;
+ if (std::hypot(had_x[k], had_y[k]) >8) continue;
+ if (std::fabs(had_z[k]) >20) continue;
- for (UInt_t i = 0; i b.Pt();});
- hads.erase(hads.begin()+1, hads.end());
- b_had = hads[0];
+ if (had_l3DErr[k] <= 0) continue;
+ tmp_l3DE = had_l3D[k] / had_l3DErr[k];
+ if (TMath::IsNaN(tmp_l3DE)or tmp_l3DE>200) continue;
+
+ tmp_jetDR = had_jetDR[k];
+ if (had_jetDR[k] >0.3) continue;
+
+ tmp_legDR = had_legDR[k];
+ if (had_legDR[k] >0.6) continue;
+
+ tmp_dca = had_dca[k];
+ if (had_dca[k] >1) continue;
- b_had_vecSumDMLep = b_lep + b_had;
- b_had_sumM = b_had_vecSumDMLep.M();
+ tmp_chi2 = had_chi2[k];
+ if (had_chi2[k] >10) continue;
+ tmp_jet_btagCSVV2 = had_jet_btagCSVV2[k];
+ if (had_jet_btagCSVV2[k] <0.05) continue;
+
+ tmp_mass = had_mass[k];
+ tmp_tmva = bdtg->EvaluateMVA("BDTG");
+ //cout <<"-----Cut Pass----"<
class slmassAnalyser : public topEventSelectionSL {
private:
- //Varialbes
- float b_cme_dca, b_cme_angleXY, b_cme_angleXYZ, b_cme_jetDR, b_cme_legDR;
- float b_cme_lxy, b_cme_lxyE, b_cme_l3D, b_cme_l3DE;
- float b_cme_x, b_cme_y, b_cme_z, b_cme_pt, b_cme_chi2, b_cme_eta, b_cme_phi;
- float b_cme_dau1_chi2, b_cme_dau1_nHits, b_cme_dau1_pt, b_cme_dau1_ipsigXY, b_cme_dau1_ipsigZ;
- float b_cme_dau2_chi2, b_cme_dau2_nHits, b_cme_dau2_pt, b_cme_dau2_ipsigXY, b_cme_dau2_ipsigZ;
- float b_cme_jet_btagCMVA, b_cme_jet_btagCSVV2, b_cme_jet_btagDeepB, b_cme_jet_btagDeepC;
- float b_cme_mass;
- float b_cme_tmva_bdtg;
- int b_cme_pdgId;
- int b_cme_nMatched;
+ // Varialbes
+
+
+ float b_cme_dau1_chi2, b_cme_dau1_nHits, b_cme_dau1_pt;
+ float b_cme_dau2_chi2, b_cme_dau2_nHits, b_cme_dau2_pt;
+ float b_cme_l3DE, b_cme_dca, b_cme_jetDR, b_cme_legDR, b_cme_chi2, b_cme_jet_btagCSVV2;
+ float b_cme_tmva, b_cme_diffMass, b_cme_mass, b_cme_sum;
+ int b_cme_pdgId,b_cme_cut,b_cme_charge;
+ float b_cme_x, b_cme_y, b_cme_z, b_cme_angleXY;
float b_bdtg;
- int b_maxbIdx;
+ int hadnum;
+
+ float tmp_l3DE;
+ float tmp_jetDR;
+ float tmp_legDR;
+ float tmp_dca;
+ float tmp_chi2;
+ float tmp_jet_btagCSVV2;
+ float tmp_mass;
+ float tmp_tmva;
+
//For C meson
std::vector hads;
- TLorentzVector b_had, b_had_vecSumDMLep;
- float b_had_sumM;
- //std::vector b_d0_lepSV_lowM;
- //std::vector b_d0_lepSV_correctM;
- //std::vector b_d0_lepSV_dRM;
+ TClonesArray *b_hads;
+ TLorentzVector b_had;
//Making output branch
void MakeBranch(TTree* t);
void resetBranch();
@@ -32,11 +38,9 @@ class slmassAnalyser : public topEventSelectionSL {
//TMVA
TMVA::Reader* bdtg;
-
public :
//set output file
void setOutput(std::string outputName);
- void collectTMVAvalues();
void cmesonSelection();
slmassAnalyser(TTree *tree=0, TTree *had=0, TTree *hadTruth=0, Bool_t isMC = false, Bool_t sle = false, Bool_t slm = false);
@@ -44,6 +48,9 @@ public :
~slmassAnalyser();
virtual void Loop();
+ int SetCutValues();
+
+
};
#endif