#include #include #include "CMS2.h" #include "goodrun.h" #include "electronSelections.h" #include "eventSelections.h" #include #include using namespace std; using namespace tas; using namespace wp2012; int main(int argc, char** argv) { //void ElectronLooper(TString inputList) { // PassAllWP2012Cuts enum Classification { UNKNOWN=-1, GOLDEN=0, BIGBREM=1, BADTRACK=2, SHOWERING=3, GAP=4 } ; TString reader; ifstream fileReader(argv[1]); //TString dirout = argv[2]; // gSystem->Exec("mkdir -p " + dirout ); // TFile* outputFile = TFile::Open(TString::Format("%s/%s.root",argv[2],argv[3]), "recreate"); TFile* outputFile = TFile::Open("testNtuple2.root", "recreate"); TTree* redTree = new TTree ("redTree","a small Tree"); /*------------------------------ this is for the mass---------------------------------------------------------------------------------------------*/ //Float_t dielectron_mass; // Float_t dielectron_mass,dielectron_mass_lowfbrem,dielectron_mass_onecluster,dielectron_mass_golden; // RCLSA: this is a tree, not a histogram LorentzVector dielectron_p4; float dielectron_mass; float dielectron_pt; float scale1fb; int run; int event; int lumi; //-----------------------------------------------------electron0----------------------------------------------------------------------// LorentzVector electron0_p4In; LorentzVector electron0_p4Out; LorentzVector electron0_trk_p4; LorentzVector electron0_vrtx_p4; LorentzVector electron0_p4; int electron0_class; float electron0_fbrem; float electron0_eSC; float electron0_z0; float electron0_lostHits; Bool_t electron0_pass[4]; float electron0_ecalEnergy; float electron0_eSCPresh; float electron0_HoE; float electron0_dEtaIn; float electron0_dEtaOut; float electron0_dPhiIn; float electron0_dPhiOut; float electron0_r9; LorentzVector supercluster0_p4; LorentzVector supercluster0_pos_p4; LorentzVector supercluster0_vtx_p4; float supercluster0_clustersSize; float supercluster0_crystalsSize; float supercluster0_e1x3; LorentzVector electron1_p4In; LorentzVector electron1_p4Out; LorentzVector electron1_trk_p4; LorentzVector electron1_vrtx_p4; LorentzVector electron1_p4; int electron1_class; float electron1_fbrem; float electron1_eSC; float electron1_z0; float electron1_lostHits; Bool_t electron1_pass[4]; float electron1_ecalEnergy; float electron1_eSCPresh; float electron1_HoE; float electron1_dEtaIn; float electron1_dEtaOut; float electron1_dPhiIn; float electron1_dPhiOut; float electron1_r9; LorentzVector supercluster1_p4; LorentzVector supercluster1_pos_p4; LorentzVector supercluster1_vtx_p4; float supercluster1_clustersSize; float supercluster1_crystalsSize; float supercluster1_e1x3; redTree->Branch("dielectron_p4", &dielectron_p4); redTree->Branch("dielectron_mass", &dielectron_mass); redTree->Branch("dielectron_pt", &dielectron_pt); redTree->Branch("scale1fb", &scale1fb); redTree->Branch("run", &run); redTree->Branch("event", &event); redTree->Branch("lumi", &lumi); //------------------------------------electron0-------------------------------------------------------// redTree->Branch("electron0_p4In", &electron0_p4In); redTree->Branch("electron0_p4Out", &electron0_p4Out); redTree->Branch("electron0_trk_p4", &electron0_trk_p4); redTree->Branch("electron0_vrtx_p4", &electron0_vrtx_p4); redTree->Branch("electron0_p4", &electron0_p4); redTree->Branch("electron0_class", &electron0_class); redTree->Branch("electron0_fbrem", &electron0_fbrem); redTree->Branch("electron0_eSC", &electron0_eSC); redTree->Branch("electron0_z0", &electron0_z0); redTree->Branch("electron0_lostHits", &electron0_lostHits); redTree->Branch("electron0_pass", electron0_pass, "electron0_pass[4]/O"); redTree->Branch("electron0_ecalEnergy", &electron0_ecalEnergy); redTree->Branch("electron0_eSCPresh", &electron0_eSCPresh); redTree->Branch("electron0_HoE", &electron0_HoE); redTree->Branch("electron0_dEtaIn", &electron0_dEtaIn); redTree->Branch("electron0_dEtaOut", &electron0_dEtaOut); redTree->Branch("electron0_dPhiIn", &electron0_dPhiIn); redTree->Branch("electron0_dPhiOut", &electron0_dPhiOut); redTree->Branch("electron0_r9", &electron0_r9); redTree->Branch("supercluster0_p4", &supercluster0_p4); redTree->Branch("supercluster0_pos_p4", &supercluster0_p4); redTree->Branch("supercluster0_vtx_p4", &supercluster0_p4); redTree->Branch("supercluster0_clustersSize", &supercluster0_clustersSize); redTree->Branch("supercluster0_crystalsSize", &supercluster0_crystalsSize); redTree->Branch("supercluster0_e1x3", &supercluster0_e1x3); redTree->Branch("electron1_p4In", &electron1_p4In); redTree->Branch("electron1_p4Out", &electron1_p4Out); redTree->Branch("electron1_trk_p4", &electron1_trk_p4); redTree->Branch("electron1_vrtx_p4", &electron1_vrtx_p4); redTree->Branch("electron1_p4", &electron1_p4); redTree->Branch("electron1_class", &electron1_class); redTree->Branch("electron1_fbrem", &electron1_fbrem); redTree->Branch("electron1_eSC", &electron1_eSC); redTree->Branch("electron1_z0", &electron1_z0); redTree->Branch("electron1_lostHits", &electron1_lostHits); redTree->Branch("electron1_pass", electron1_pass, "electron1_pass[4]/O"); redTree->Branch("electron1_ecalEnergy", &electron1_ecalEnergy); redTree->Branch("electron1_eSCPresh", &electron1_eSCPresh); redTree->Branch("electron1_HoE", &electron1_HoE); redTree->Branch("electron1_dEtaIn", &electron1_dEtaIn); redTree->Branch("electron1_dEtaOut", &electron1_dEtaOut); redTree->Branch("electron1_dPhiIn", &electron1_dPhiIn); redTree->Branch("electron1_dPhiOut", &electron1_dPhiOut); redTree->Branch("electron1_r9", &electron1_r9); redTree->Branch("supercluster1_p4", &supercluster1_p4); redTree->Branch("supercluster1_pos_p4", &supercluster1_p4); redTree->Branch("supercluster1_vtx_p4", &supercluster1_p4); redTree->Branch("supercluster1_clustersSize", &supercluster1_clustersSize); redTree->Branch("supercluster1_crystalsSize", &supercluster1_crystalsSize); redTree->Branch("supercluster1_e1x3", &supercluster1_e1x3); set_goodrun_file("goodruns.txt"); TChain *treeHandle = new TChain("Events"); while (!fileReader.eof()) { reader.ReadLine(fileReader); if( reader.Length() < 2 ) continue; cout << " Adding " << reader << endl; treeHandle->Add( reader ); } Long64_t nentries = treeHandle->GetEntries(); cout << " Number of Entries : " << nentries << endl; // nentries = 1000; cms2.Init(treeHandle); for (Long64_t ientry = 0; ientry < nentries; ientry++) { CMS2::progress(ientry, nentries); cms2.GetEntry(ientry); // clean up data if (!cleaning_goodVertexApril2011()) continue; if (evt_isRealData() && !goodrun(evt_run(), evt_lumiBlock())) continue; dielectron_p4 = LorentzVector(0, 0, 0, 0); dielectron_mass = -999.; dielectron_pt = -999.; scale1fb = -999.; run = -999; event = -999; lumi = -999; //--------------------------------------electron0----------------------------------------// electron0_p4In = LorentzVector(0,0,0,0); electron0_p4Out = LorentzVector(0,0,0,0); electron0_trk_p4 = LorentzVector(0,0,0,0); electron0_vrtx_p4 = LorentzVector(0,0,0,0); electron0_p4 = LorentzVector(0, 0, 0, 0); electron0_class = -999; electron0_fbrem = -999.; electron0_z0 = -999.; electron0_eSC = -999.; electron0_lostHits = -999.; electron0_ecalEnergy = -999.; electron0_eSCPresh = -999.; electron0_HoE = -999.; electron0_dEtaIn = -999.; electron0_dEtaOut = -999.; electron0_dPhiIn = -999.; electron0_dPhiOut = -999.; electron0_r9 = -999.; supercluster0_p4 = LorentzVector(0,0,0,0); supercluster0_pos_p4 = LorentzVector(0,0,0,0); supercluster0_vtx_p4 = LorentzVector(0,0,0,0); supercluster0_clustersSize =-999.; supercluster0_crystalsSize =-999.; supercluster0_e1x3 =-999.; electron1_p4In = LorentzVector(0,0,0,0); electron1_p4Out = LorentzVector(0,0,0,0); electron1_trk_p4 = LorentzVector(0,0,0,0); electron1_vrtx_p4 = LorentzVector(0,0,0,0); electron1_p4 = LorentzVector(0, 0, 0, 0); electron1_class = -999; electron1_fbrem = -999.; electron1_z0 = -999.; electron1_eSC = -999.; electron1_lostHits = -999.; electron1_ecalEnergy = -999.; electron1_eSCPresh = -999.; electron1_HoE = -999.; electron1_dEtaIn = -999.; electron1_dEtaOut = -999.; electron1_dPhiIn = -999.; electron1_dPhiOut = -999.; electron1_r9 = -999.; supercluster1_p4 = LorentzVector(0,0,0,0); supercluster1_pos_p4 = LorentzVector(0,0,0,0); supercluster1_vtx_p4 = LorentzVector(0,0,0,0); supercluster1_clustersSize =-999.; supercluster1_crystalsSize =-999.; supercluster1_e1x3 =-999.; int electron0_idx = -1; int electron1_idx = -1; // Analysis selection for (int ielec = 2; ielec < els_p4().size(); ielec++) { float pt0; float pt1; // cout << els_p4().size() << endl; if (electron0_idx == -1) { // first loop electron0_idx = 0; // the higher PT electron1_idx = 1; // the samller PT pt0 = els_p4().at(electron0_idx).pt(); pt1 = els_p4().at(electron1_idx).pt(); if (pt0 < pt1) swap(electron0_idx, electron0_idx); } float pt_current = els_p4().at(ielec).pt(); if (pt_current < pt1) // nothing to do continue; if (pt_current > pt1 && pt_current <= pt0) { // between the two values electron1_idx = ielec; pt1 = els_p4().at(electron1_idx).pt(); } else { // greater than both values electron1_idx = electron0_idx; pt1 = pt0; electron0_idx = ielec; pt0 = pt_current; } if (electron0_idx != -1 && electron1_idx != -1 && electronId_WP2012_v3(electron0_idx, TIGHT) == PassAllWP2012Cuts && electronId_WP2012_v3(electron1_idx, TIGHT) == PassAllWP2012Cuts) { electron0_pass[0] = true; electron1_pass[0] = true; } else { electron0_pass[0] = false; electron1_pass[0] = false; } if (electron0_idx != -1 && electron1_idx != -1 && electronId_WP2012_v3(electron0_idx, MEDIUM) == PassAllWP2012Cuts && electronId_WP2012_v3(electron1_idx, MEDIUM) == PassAllWP2012Cuts) { electron0_pass[1] = true; electron1_pass[1] = true; } else { electron0_pass[1] = false; electron1_pass[1] = false; } if (electron0_idx != -1 && electron1_idx != -1 && electronId_WP2012_v3(electron0_idx, LOOSE) == PassAllWP2012Cuts && electronId_WP2012_v3(electron1_idx, LOOSE) == PassAllWP2012Cuts) { electron0_pass[2] = true; electron1_pass[2] = true; } else { electron0_pass[2] = false; electron1_pass[2] = false; } if (electron0_idx != -1 && electron1_idx != -1 && electronId_WP2012_v3(electron0_idx, VETO) == PassAllWP2012Cuts && electronId_WP2012_v3(electron1_idx, VETO) == PassAllWP2012Cuts) { electron0_pass[3] = true; electron1_pass[3] = true; } else { electron0_pass[3] = false; electron1_pass[3] = false; } } if (electron0_idx < 0 || electron1_idx < 0) continue; scale1fb = evt_scale1fb(); run = evt_run(); event = evt_event(); lumi = evt_lumiBlock(); //------------------------------------------electron0-----------------------------------------------------// electron0_p4In = els_p4In().at(electron0_idx); electron0_p4Out = els_p4Out().at(electron0_idx); electron0_trk_p4 = els_trk_p4().at(electron0_idx); electron0_vrtx_p4 = els_vertex_p4().at(electron0_idx); electron0_p4 = els_p4().at(electron0_idx); electron0_class = els_class().at(electron0_idx); electron0_fbrem = els_fbrem().at(electron0_idx); electron0_eSC = els_eSC().at(electron0_idx); electron0_z0 = els_z0().at(electron0_idx); electron0_lostHits = els_lostHits().at(electron0_idx); electron0_ecalEnergy = els_ecalEnergy().at(electron0_idx); electron0_eSCPresh = els_eSCPresh().at(electron0_idx); electron0_HoE = els_hOverE().at(electron0_idx); electron0_dEtaIn = els_dEtaIn().at(electron0_idx); electron0_dEtaOut = els_dEtaOut().at(electron0_idx); electron0_dPhiIn = els_dPhiIn().at(electron0_idx); electron0_dPhiOut = els_dPhiOut().at(electron0_idx); electron0_r9 = els_r9().at(electron0_idx); // supercluster0_p4 =scs_p4().at(electron0_idx); // supercluster0_pos_p4 =scs_pos_p4().at(electron0_idx); // supercluster0_vtx_p4 =scs_vtx_p4().at(electron0_idx); // supercluster0_clustersSize =scs_clustersSize().at(electron0_idx); // supercluster0_crystalsSize =scs_crystalsSize().at(electron0_idx); // supercluster0_e1x3 =scs_e1x3().at(electron0_idx); //---------------------------------------electron1-------------------------------------------------------// electron1_p4In = els_p4In().at(electron1_idx); electron1_p4Out = els_p4Out().at(electron1_idx); electron1_trk_p4 = els_trk_p4().at(electron1_idx); electron1_vrtx_p4 = els_vertex_p4().at(electron1_idx); electron1_p4 = els_p4().at(electron1_idx); electron1_class = els_class().at(electron1_idx); electron1_fbrem = els_fbrem().at(electron1_idx); electron1_eSC = els_eSC().at(electron1_idx); electron1_z0 = els_z0().at(electron1_idx); electron1_lostHits = els_lostHits().at(electron1_idx); electron1_ecalEnergy = els_ecalEnergy().at(electron1_idx); electron1_eSCPresh = els_eSCPresh().at(electron1_idx); electron1_HoE = els_hOverE().at(electron1_idx); electron1_dEtaIn = els_dEtaIn().at(electron1_idx); electron1_dEtaOut = els_dEtaOut().at(electron1_idx); electron1_dPhiIn = els_dPhiIn().at(electron1_idx); electron1_dPhiOut = els_dPhiOut().at(electron1_idx); electron1_r9 = els_r9().at(electron1_idx); //supercluster1_p4 =scs_p4().at(electron1_idx); //supercluster1_pos_p4 =scs_pos_p4().at(electron1_idx); // supercluster1_vtx_p4 =scs_vtx_p4().at(electron1_idx); // supercluster1_clustersSize =scs_clustersSize().at(electron1_idx); // supercluster1_crystalsSize =scs_crystalsSize().at(electron1_idx); // supercluster1_e1x3 =scs_e1x3().at(electron1_idx); dielectron_p4 = electron0_p4+electron1_p4; dielectron_mass = dielectron_p4.mass(); dielectron_pt = dielectron_p4.pt(); redTree->Fill(); } outputFile->cd(); redTree->Write(); outputFile->Close(); }