ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/AnaTools/plugins/OSUAnalysis.cc
(Generate patch)

Comparing UserCode/OSUT3Analysis/AnaTools/plugins/OSUAnalysis.cc (file contents):
Revision 1.65 by biliu, Fri May 24 18:49:24 2013 UTC vs.
Revision 1.73 by lantonel, Thu May 30 18:09:58 2013 UTC

# Line 57 | Line 57 | OSUAnalysis::OSUAnalysis (const edm::Par
57  
58    //always get vertex collection so we can assign the primary vertex in the event
59    objectsToGet.push_back("primaryvertexs");
60
61  //always make the plot of number of primary vertices (to check pile-up reweighting)
60    objectsToPlot.push_back("primaryvertexs");
61 +  objectsToCut.push_back("primaryvertexs");
62 +
63  
64    //always get the MC particles to do GEN-matching
65    objectsToGet.push_back("mcparticles");
# Line 108 | Line 108 | OSUAnalysis::OSUAnalysis (const edm::Par
108  
109      }
110  
111 +
112      vector<edm::ParameterSet> histogramList_  (histogramSets_.at(currentHistogramSet).getParameter<vector<edm::ParameterSet> >("histograms"));
113  
114      for(uint currentHistogram = 0; currentHistogram != histogramList_.size(); currentHistogram++){
# Line 212 | Line 213 | OSUAnalysis::OSUAnalysis (const edm::Par
213      //set triggers for this channel
214      vector<string> triggerNames;
215      triggerNames.clear();
216 +    vector<string> triggerToVetoNames;
217 +    triggerToVetoNames.clear();
218 +
219      tempChannel.triggers.clear();
220 +    tempChannel.triggersToVeto.clear();
221      if(channels_.at(currentChannel).exists("triggers")){
222        triggerNames   = channels_.at(currentChannel).getParameter<vector<string> >("triggers");
223        for(uint trigger = 0; trigger!= triggerNames.size(); trigger++)
224          tempChannel.triggers.push_back(triggerNames.at(trigger));
225        objectsToGet.push_back("triggers");
226      }
227 <
227 >    if(channels_.at(currentChannel).exists("triggersToVeto")){
228 >      triggerToVetoNames = channels_.at(currentChannel).getParameter<vector<string> >("triggersToVeto");
229 >      for(uint trigger = 0; trigger!= triggerToVetoNames.size(); trigger++)
230 >        tempChannel.triggersToVeto.push_back(triggerToVetoNames.at(trigger));
231 >      objectsToGet.push_back("triggers");
232 >    }
233  
234  
235  
# Line 229 | Line 239 | OSUAnalysis::OSUAnalysis (const edm::Par
239      vector<string> subSubDirNames;//subdirectories in each channel.
240      //get list of cuts for this channel
241      vector<edm::ParameterSet> cuts_  (channels_.at(currentChannel).getParameter<vector<edm::ParameterSet> >("cuts"));
242 <    
242 >
243  
244      //loop over and parse all cuts
245      for(uint currentCut = 0; currentCut != cuts_.size(); currentCut++){
# Line 309 | Line 319 | OSUAnalysis::OSUAnalysis (const edm::Par
319        int numberRequiredInt = atoi(numberRequiredVector.at(1).c_str());
320        tempCut.numberRequired = numberRequiredInt;// number of objects required to pass the cut
321        tempCut.eventComparativeOperator = numberRequiredVector.at(0);// comparison to make
322 <      
322 >
323        //Set up vectors to store the directories and subDIrectories for each channel.
324 <      string subSubDirName;      
324 >      string subSubDirName;
325        string tempCutName;
326        if(cuts_.at(currentCut).exists("alias")){
327          tempCutName = cuts_.at(currentCut).getParameter<string> ("alias");
# Line 325 | Line 335 | OSUAnalysis::OSUAnalysis (const edm::Par
335          tempCutName = cutName;
336          subSubDirName = "After " + numberRequiredString + " " + collectionString + " with " + cutString + " Cut Applied";
337        }
338 <      
338 >
339        subSubDirNames.push_back(subSubDirName);
340        tempCut.name = tempCutName;
341  
342        tempChannel.cuts.push_back(tempCut);
343 <      
343 >
344  
345      }//end loop over cuts
346 <    
346 >
347      vector<map<string, TH1D*>> oneDHistsTmp;
348 <    vector<map<string, TH2D*>> twoDHistsTmp;
348 >    vector<map<string, TH2D*>> twoDHistsTmp;
349      //book a directory in the output file with the name of the channel
350      TFileDirectory subDir = fs_->mkdir( channelName );
351      //loop over the cuts to set up subdirectory for each cut if GetPlotsAfterEachCut_ is true.
352      if(GetPlotsAfterEachCut_){
353 <       for( uint currentDir=0; currentDir != subSubDirNames.size(); currentDir++){  
353 >       for( uint currentDir=0; currentDir != subSubDirNames.size(); currentDir++){
354              TFileDirectory subSubDir = subDir.mkdir( subSubDirNames[currentDir] );
355              directories.push_back(subSubDir);
356              map<string, TH1D*> oneDhistoMap;
# Line 348 | Line 358 | OSUAnalysis::OSUAnalysis (const edm::Par
358              map<string, TH2D*> twoDhistoMap;
359              twoDHistsTmp.push_back(twoDhistoMap);
360        }
361 <      oneDHists_.push_back(oneDHistsTmp);    
361 >      oneDHists_.push_back(oneDHistsTmp);
362        twoDHists_.push_back(twoDHistsTmp);
363      }
364 <   //only set up directories with names of the channels if GetPlotsAfterEachCut_ is false.
364 >   //only set up directories with names of the channels if GetPlotsAfterEachCut_ is false.
365     else{
366        map<string, TH1D*> oneDhistoMap;
367        oneDHistsTmp.push_back(oneDhistoMap);
# Line 486 | Line 496 | OSUAnalysis::OSUAnalysis (const edm::Par
496        if(currentObject == "muon-muon pairs")                currentObject = "dimuonPairs";
497        else if(currentObject == "electron-electron pairs")   currentObject = "dielectronPairs";
498        else if(currentObject == "electron-muon pairs")       currentObject = "electronMuonPairs";
499 +      else if(currentObject == "secondary jets")            currentObject = "secondaryJets";
500        else if(currentObject == "jet-jet pairs")             currentObject = "dijetPairs";
501        else if(currentObject == "electron-jet pairs")        currentObject = "electronJetPairs";
502        else if(currentObject == "muon-jet pairs")            currentObject = "muonJetPairs";
# Line 498 | Line 509 | OSUAnalysis::OSUAnalysis (const edm::Par
509        else if(currentObject == "muon-secondary muon pairs") currentObject = "muonSecondaryMuonPairs";
510        else if(currentObject == "secondary muons")           currentObject = "secondaryMuons";
511        else if(currentObject == "electron-secondary electron pairs") currentObject = "electronSecondaryElectronPairs";
512 <      else if(currentObject == "secondary electrons")           currentObject = "secondaryElectrons";
512 >      else if(currentObject == "secondary electrons")       currentObject = "secondaryElectrons";
513        else if(currentObject == "electron-trigobj pairs")    currentObject = "electronTrigobjPairs";
514        else if(currentObject == "muon-trigobj pairs")        currentObject = "muonTrigobjPairs";
515  
# Line 606 | Line 617 | OSUAnalysis::analyze (const edm::Event &
617    double masterScaleFactor = 1.0;
618  
619    //get pile-up event weight
620 <  if(doPileupReweighting_ && datasetType_ != "data") masterScaleFactor *= puWeight_->at (events->at (0).numTruePV);
620 >  if (doPileupReweighting_ && datasetType_ != "data") {
621 >    //for "data" datasets, the numTruePV is always set to -1
622 >    if (events->at(0).numTruePV < 0) cout << "WARNING[OSUAnalysis::analyze]: Event has numTruePV<0.  Turning off pile-up reweighting." << endl;  
623 >    else masterScaleFactor *= puWeight_->at (events->at (0).numTruePV);  
624 >  }
625  
626    stopCTauScaleFactor_ = 1.0;
627    if (datasetType_ == "signalMC" && regex_match (dataset_, regex ("stop.*to.*_.*mm.*")))
# Line 623 | Line 638 | OSUAnalysis::analyze (const edm::Event &
638      cumulativeFlags.clear ();
639  
640      bool triggerDecision = true;
641 <    if(currentChannel.triggers.size() != 0){  //triggers specified
642 <      triggerDecision = evaluateTriggers(currentChannel.triggers,triggers.product());
641 >    if(currentChannel.triggers.size() != 0 || currentChannel.triggersToVeto.size() != 0){  //triggers specified
642 >      triggerDecision = evaluateTriggers(currentChannel.triggers, currentChannel.triggersToVeto, triggers.product());
643        cutFlows_.at(currentChannelIndex)->at ("trigger") = triggerDecision;
644      }
645  
# Line 645 | Line 660 | OSUAnalysis::analyze (const edm::Event &
660          int flagsForPairCutsIndex = max(int(currentCutIndex-1),0);
661  
662  
663 <        if(currentObject == "jets") setObjectFlags(currentCut,currentCutIndex,individualFlags,cumulativeFlags,jets.product(),"jets");
664 <        else if(currentObject == "muons") setObjectFlags(currentCut,currentCutIndex,individualFlags,cumulativeFlags,muons.product(),"muons");
665 <
663 >        if     (currentObject == "jets")            setObjectFlags(currentCut,currentCutIndex,individualFlags,cumulativeFlags,jets.product(),"jets");
664 >        else if(currentObject == "secondary jets")  setObjectFlags(currentCut,currentCutIndex,individualFlags,cumulativeFlags,jets.product(),"secondary jets");
665 >        else if(currentObject == "muons")           setObjectFlags(currentCut,currentCutIndex,individualFlags,cumulativeFlags,muons.product(),"muons");
666          else if(currentObject == "secondary muons") setObjectFlags(currentCut,currentCutIndex,individualFlags,cumulativeFlags,muons.product(),"secondary muons");
667          else if(currentObject == "secondary electrons") setObjectFlags(currentCut,currentCutIndex,individualFlags,cumulativeFlags,electrons.product(),"secondary electrons");
668          else if(currentObject == "electrons") setObjectFlags(currentCut,currentCutIndex,individualFlags,cumulativeFlags,electrons.product(),"electrons");
# Line 797 | Line 812 | OSUAnalysis::analyze (const edm::Event &
812      scaleFactor *= electronScaleFactor_;
813  
814      cutFlows_.at(currentChannelIndex)->fillCutFlow(scaleFactor);
815 <    if(!(GetPlotsAfterEachCut_ || eventPassedAllCuts)) continue;
815 >
816  
817      if (printEventInfo_) {
818        // Write information about event to screen, for testing purposes.
# Line 807 | Line 822 | OSUAnalysis::analyze (const edm::Event &
822             << "  event=" << events->at(0).evt
823             << endl;
824      }
810    //filling histograms
811    for(uint currentCut = 0; currentCut != oneDHists_.at(currentChannelIndex).size(); currentCut++){//loop over all the directories in each channel.
812        uint currentDir;
813        if(!GetPlotsAfterEachCut_){ currentDir =  currentChannel.cuts.size() - oneDHists_.at(currentChannelIndex).size();}//if GetPlotsAfterEachCut_ is true, set currentDir point to the lat cut.
814        else{
815          currentDir = currentCut;
816        }
817        if(eventPassedPreviousCuts.at(currentDir)){
818        for (uint histogramIndex = 0; histogramIndex != histograms.size(); histogramIndex++){
819          histogram currentHistogram = histograms.at(histogramIndex);
820
821      if(currentHistogram.inputVariables.size() == 1){
822        TH1D* histo;
823        histo = oneDHists_.at(currentChannelIndex).at(currentCut).at(currentHistogram.name);
824        if(currentHistogram.inputCollection == "jets") fill1DHistogram(histo,currentHistogram,jets.product(),cumulativeFlags.at("jets").at(currentDir),scaleFactor);
825        else if(currentHistogram.inputCollection == "muons") fill1DHistogram(histo,currentHistogram,muons.product(),cumulativeFlags.at("muons").at(currentDir),scaleFactor);
826        else if(currentHistogram.inputCollection == "secondary muons") fill1DHistogram(histo,currentHistogram,muons.product(),cumulativeFlags.at("secondary muons").at(currentDir),scaleFactor);
827        else if(currentHistogram.inputCollection == "secondary electrons") fill1DHistogram(histo,currentHistogram,electrons.product(),cumulativeFlags.at("secondary electrons").at(currentDir),scaleFactor);
828        else if(currentHistogram.inputCollection == "muon-muon pairs") fill1DHistogram(histo,currentHistogram,muons.product(),muons.product(), \
829                                                                                       cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("muons").at(currentDir), \
830                                                                                       cumulativeFlags.at("muon-muon pairs").at(currentDir),scaleFactor);
831        else if(currentHistogram.inputCollection == "muon-secondary muon pairs") fill1DHistogram(histo,currentHistogram,muons.product(),muons.product(), \
832                                                                                       cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("secondary muons").at(currentDir), \
833                                                                                       cumulativeFlags.at("muon-secondary muon pairs").at(currentDir),scaleFactor);
834        else if(currentHistogram.inputCollection == "electrons") fill1DHistogram(histo,currentHistogram,electrons.product(),cumulativeFlags.at("electrons").at(currentDir),scaleFactor);
835        else if(currentHistogram.inputCollection == "electron-electron pairs") fill1DHistogram(histo,currentHistogram,electrons.product(),electrons.product(),\
836                                                                                               cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("electrons").at(currentDir),\
837                                                                                               cumulativeFlags.at("electron-electron pairs").at(currentDir),scaleFactor);
838        else if(currentHistogram.inputCollection == "jet-jet pairs") fill1DHistogram(histo,currentHistogram,jets.product(),jets.product(),\
839                                                                                               cumulativeFlags.at("jets").at(currentDir),cumulativeFlags.at("jets").at(currentDir),\
840                                                                                               cumulativeFlags.at("jet-jet pairs").at(currentDir),scaleFactor);
841        else if(currentHistogram.inputCollection == "electron-secondary electron pairs") fill1DHistogram(histo,currentHistogram,electrons.product(),electrons.product(), \
842                                                                                       cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("secondary electrons").at(currentDir), \
843                                                                                       cumulativeFlags.at("electron-secondary electron pairs").at(currentDir),scaleFactor);
844        else if(currentHistogram.inputCollection == "electron-muon pairs") fill1DHistogram(histo,currentHistogram, electrons.product(),muons.product(), \
845                                                                                           cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("muons").at(currentDir),
846                                                                                           cumulativeFlags.at("electron-muon pairs").at(currentDir),scaleFactor);
847        else if(currentHistogram.inputCollection == "electron-jet pairs") fill1DHistogram(histo,currentHistogram, electrons.product(),jets.product(), \
848                                                                                           cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("jets").at(currentDir),
849                                                                                           cumulativeFlags.at("electron-jet pairs").at(currentDir),scaleFactor);
850        else if(currentHistogram.inputCollection == "muon-jet pairs") fill1DHistogram(histo,currentHistogram, muons.product(),jets.product(), \
851                                                                                           cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("jets").at(currentDir),
852                                                                                           cumulativeFlags.at("muon-jet pairs").at(currentDir),scaleFactor);
853        else if(currentHistogram.inputCollection == "electron-track pairs") fill1DHistogram(histo,currentHistogram, electrons.product(),tracks.product(),
854                                                                                            cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
855                                                                                            cumulativeFlags.at("electron-track pairs").at(currentDir),scaleFactor);
856        else if(currentHistogram.inputCollection == "muon-track pairs") fill1DHistogram(histo,currentHistogram, muons.product(),tracks.product(),
857                                                                                        cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
858                                                                                        cumulativeFlags.at("muon-track pairs").at(currentDir),scaleFactor);
859        else if(currentHistogram.inputCollection == "muon-tau pairs") fill1DHistogram(histo,currentHistogram, muons.product(),taus.product(),
860                                                                                      cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("taus").at(currentDir),
861                                                                                      cumulativeFlags.at("muon-tau pairs").at(currentDir),scaleFactor);
862        else if(currentHistogram.inputCollection == "tau-tau pairs") fill1DHistogram(histo,currentHistogram, taus.product(),taus.product(),
863                                                                                     cumulativeFlags.at("taus").at(currentDir),cumulativeFlags.at("taus").at(currentDir),
864                                                                                     cumulativeFlags.at("tau-tau pairs").at(currentDir),scaleFactor);
865        else if(currentHistogram.inputCollection == "tau-track pairs") fill1DHistogram(histo,currentHistogram, taus.product(),tracks.product(),
866                                                                                     cumulativeFlags.at("taus").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
867                                                                                     cumulativeFlags.at("tau-track pairs").at(currentDir),scaleFactor);
868        else if(currentHistogram.inputCollection == "electron-trigobj pairs") fill1DHistogram(histo,currentHistogram, electrons.product(),trigobjs.product(),
869                                                                                              cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("trigobjs").at(currentDir),
870                                                                                              cumulativeFlags.at("electron-trigobj pairs").at(currentDir),scaleFactor);
871        else if(currentHistogram.inputCollection == "muon-trigobj pairs") fill1DHistogram(histo,currentHistogram, muons.product(),trigobjs.product(),
872                                                                                          cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("trigobjs").at(currentDir),
873                                                                                          cumulativeFlags.at("muon-trigobj pairs").at(currentDir),scaleFactor);
874
875        else if(currentHistogram.inputCollection == "events") fill1DHistogram(histo,currentHistogram,events.product(),cumulativeFlags.at("events").at(currentDir),scaleFactor);
876        else if(currentHistogram.inputCollection == "taus") fill1DHistogram(histo,currentHistogram,taus.product(),cumulativeFlags.at("taus").at(currentDir),scaleFactor);
877        else if(currentHistogram.inputCollection == "mets") fill1DHistogram(histo,currentHistogram,mets.product(),cumulativeFlags.at("mets").at(currentDir),scaleFactor);
878        else if(currentHistogram.inputCollection == "tracks") fill1DHistogram(histo,currentHistogram,tracks.product(),cumulativeFlags.at("tracks").at(currentDir),scaleFactor);
879        else if(currentHistogram.inputCollection == "genjets") fill1DHistogram(histo,currentHistogram,genjets.product(),cumulativeFlags.at("genjets").at(currentDir),scaleFactor);
880        else if(currentHistogram.inputCollection == "mcparticles") fill1DHistogram(histo,currentHistogram,mcparticles.product(),cumulativeFlags.at("mcparticles").at(currentDir),scaleFactor);
881        else if(currentHistogram.inputCollection == "primaryvertexs") fill1DHistogram(histo,currentHistogram,primaryvertexs.product(),cumulativeFlags.at("primaryvertexs").at(currentDir),scaleFactor);
882        else if(currentHistogram.inputCollection == "bxlumis") fill1DHistogram(histo,currentHistogram,bxlumis.product(),cumulativeFlags.at("bxlumis").at(currentDir),scaleFactor);
883        else if(currentHistogram.inputCollection == "photons") fill1DHistogram(histo,currentHistogram,photons.product(),cumulativeFlags.at("photons").at(currentDir),scaleFactor);
884        else if(currentHistogram.inputCollection == "superclusters") fill1DHistogram(histo,currentHistogram,superclusters.product(),cumulativeFlags.at("superclusters").at(currentDir),scaleFactor);
885        else if(currentHistogram.inputCollection == "trigobjs") fill1DHistogram(histo,currentHistogram,trigobjs.product(),cumulativeFlags.at("trigobjs").at(currentDir),scaleFactor);
886        else if(currentHistogram.inputCollection == "stops" && datasetType_ == "signalMC") fill1DHistogram(histo,currentHistogram,stops.product(),cumulativeFlags.at("stops").at(currentDir),scaleFactor);
887      }
888      else if(currentHistogram.inputVariables.size() == 2){
889        TH2D* histo;
890        histo = twoDHists_.at(currentChannelIndex).at(currentCut).at(currentHistogram.name);
891        if(currentHistogram.inputCollection == "jets") fill2DHistogram(histo,currentHistogram,jets.product(),cumulativeFlags.at("jets").at(currentDir),scaleFactor);
892        else if(currentHistogram.inputCollection == "muons") fill2DHistogram(histo,currentHistogram,muons.product(),cumulativeFlags.at("muons").at(currentDir),scaleFactor);
893        else if(currentHistogram.inputCollection == "secondary muons") fill2DHistogram(histo,currentHistogram,muons.product(),cumulativeFlags.at("secondary muons").at(currentDir),scaleFactor);
894        else if(currentHistogram.inputCollection == "muon-muon pairs") fill2DHistogram(histo,currentHistogram,muons.product(),muons.product(), \
895                                                                                       cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("muons").at(currentDir), \
896                                                                                       cumulativeFlags.at("muon-muon pairs").at(currentDir),scaleFactor);
897        else if(currentHistogram.inputCollection == "muon-secondary muon pairs") fill2DHistogram(histo,currentHistogram,muons.product(),muons.product(), \
898                                                                                       cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("secondary muons").at(currentDir), \
899                                                                                       cumulativeFlags.at("muon-secondary muon pairs").at(currentDir),scaleFactor);
900        else if(currentHistogram.inputCollection == "electrons") fill2DHistogram(histo,currentHistogram,electrons.product(),cumulativeFlags.at("electrons").at(currentDir),scaleFactor);
901        else if(currentHistogram.inputCollection == "secondary electrons") fill2DHistogram(histo,currentHistogram,electrons.product(),cumulativeFlags.at("secondary electrons").at(currentDir),scaleFactor);
902        else if(currentHistogram.inputCollection == "electron-electron pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),electrons.product(), \
903                                                                                               cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("electrons").at(currentDir), \
904                                                                                               cumulativeFlags.at("electron-electron pairs").at(currentDir),scaleFactor);
905        else if(currentHistogram.inputCollection == "jet-jet pairs") fill2DHistogram(histo,currentHistogram,jets.product(),jets.product(), \
906                                                                                               cumulativeFlags.at("jets").at(currentDir),cumulativeFlags.at("jets").at(currentDir), \
907                                                                                               cumulativeFlags.at("jet-jet pairs").at(currentDir),scaleFactor);
908        else if(currentHistogram.inputCollection == "electron-secondary electron pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),electrons.product(), \
909                                                                                       cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("secondary electrons").at(currentDir), \
910                                                                                       cumulativeFlags.at("electron-secondary electron pairs").at(currentDir),scaleFactor);
911        else if(currentHistogram.inputCollection == "electron-muon pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),muons.product(), \
912                                                                                           cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("muons").at(currentDir), \
913                                                                                           cumulativeFlags.at("electron-muon pairs").at(currentDir),scaleFactor);
914        else if(currentHistogram.inputCollection == "electron-jet pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),jets.product(), \
915                                                                                           cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("jets").at(currentDir), \
916                                                                                           cumulativeFlags.at("electron-jet pairs").at(currentDir),scaleFactor);
917        else if(currentHistogram.inputCollection == "muon-jet pairs") fill2DHistogram(histo,currentHistogram,muons.product(),jets.product(), \
918                                                                                           cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("jets").at(currentDir), \
919                                                                                           cumulativeFlags.at("muon-jet pairs").at(currentDir),scaleFactor);
920        else if(currentHistogram.inputCollection == "electron-track pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),tracks.product(),
921                                                                                            cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
922                                                                                            cumulativeFlags.at("electron-track pairs").at(currentDir),scaleFactor);
923        else if(currentHistogram.inputCollection == "muon-track pairs") fill2DHistogram(histo,currentHistogram,muons.product(),tracks.product(),
924                                                                                        cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
925                                                                                        cumulativeFlags.at("muon-track pairs").at(currentDir),scaleFactor);
926        else if(currentHistogram.inputCollection == "muon-tau pairs") fill2DHistogram(histo,currentHistogram,muons.product(),taus.product(),
927                                                                                      cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("taus").at(currentDir),
928                                                                                      cumulativeFlags.at("muon-tau pairs").at(currentDir),scaleFactor);
929        else if(currentHistogram.inputCollection == "tau-tau pairs") fill2DHistogram(histo,currentHistogram,taus.product(),taus.product(),
930                                                                                     cumulativeFlags.at("taus").at(currentDir),cumulativeFlags.at("taus").at(currentDir),
931                                                                                     cumulativeFlags.at("tau-tau pairs").at(currentDir),scaleFactor);
932        else if(currentHistogram.inputCollection == "tau-track pairs") fill2DHistogram(histo,currentHistogram,taus.product(),tracks.product(),
933                                                                                     cumulativeFlags.at("taus").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
934                                                                                     cumulativeFlags.at("tau-track pairs").at(currentDir),scaleFactor);
935        else if(currentHistogram.inputCollection == "electron-trigobj pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),trigobjs.product(),
936                                                                                              cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("trigobjs").at(currentDir),
937                                                                                              cumulativeFlags.at("electron-trigobj pairs").at(currentDir),scaleFactor);
938        else if(currentHistogram.inputCollection == "muon-trigobj pairs") fill2DHistogram(histo,currentHistogram,muons.product(),trigobjs.product(),
939                                                                                          cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("trigobjs").at(currentDir),
940                                                                                          cumulativeFlags.at("muon-trigobj pairs").at(currentDir),scaleFactor);
941        else if(currentHistogram.inputCollection == "events") fill2DHistogram(histo,currentHistogram,events.product(),cumulativeFlags.at("events").at(currentDir),scaleFactor);
942        else if(currentHistogram.inputCollection == "taus") fill2DHistogram(histo,currentHistogram,taus.product(),cumulativeFlags.at("taus").at(currentDir),scaleFactor);
943        else if(currentHistogram.inputCollection == "mets") fill2DHistogram(histo,currentHistogram,mets.product(),cumulativeFlags.at("mets").at(currentDir),scaleFactor);
944        else if(currentHistogram.inputCollection == "tracks") fill2DHistogram(histo,currentHistogram,tracks.product(),cumulativeFlags.at("tracks").at(currentDir),scaleFactor);
945        else if(currentHistogram.inputCollection == "track-event pairs") fill2DHistogram(histo,currentHistogram,tracks.product(),events.product(),
946                                                                                         cumulativeFlags.at("tracks").at(currentDir),cumulativeFlags.at("events").at(currentDir),
947                                                                                         cumulativeFlags.at("track-event pairs").at(currentDir),scaleFactor);
948        else if(currentHistogram.inputCollection == "genjets") fill2DHistogram(histo,currentHistogram,genjets.product(),cumulativeFlags.at("genjets").at(currentDir),scaleFactor);
949        else if(currentHistogram.inputCollection == "mcparticles") fill2DHistogram(histo,currentHistogram,mcparticles.product(),cumulativeFlags.at("mcparticles").at(currentDir),scaleFactor);
950        else if(currentHistogram.inputCollection == "primaryvertexs") fill2DHistogram(histo,currentHistogram,primaryvertexs.product(),cumulativeFlags.at("primaryvertexs").at(currentDir),scaleFactor);
951        else if(currentHistogram.inputCollection == "bxlumis") fill2DHistogram(histo,currentHistogram,bxlumis.product(),cumulativeFlags.at("bxlumis").at(currentDir),scaleFactor);
952        else if(currentHistogram.inputCollection == "photons") fill2DHistogram(histo,currentHistogram,photons.product(),cumulativeFlags.at("photons").at(currentDir),scaleFactor);
953        else if(currentHistogram.inputCollection == "superclusters") fill2DHistogram(histo,currentHistogram,superclusters.product(),cumulativeFlags.at("superclusters").at(currentDir),scaleFactor);
954        else if(currentHistogram.inputCollection == "trigobjs") fill2DHistogram(histo,currentHistogram,trigobjs.product(),cumulativeFlags.at("trigobjs").at(currentDir),scaleFactor);
955        else if(currentHistogram.inputCollection == "stops" && datasetType_ == "signalMC") fill2DHistogram(histo,currentHistogram,stops.product(),cumulativeFlags.at("stops").at(currentDir),scaleFactor);
956      }
957    }
825  
826  
827  
828 <    //fills histograms with the sizes of collections
829 <    for (uint currentObjectIndex = 0; currentObjectIndex != objectsToPlot.size(); currentObjectIndex++){
963 <
964 <      string currentObject = objectsToPlot.at(currentObjectIndex);
965 <      string objectToPlot = "";
966 <
967 <      // Name of objectToPlot here must match the name specified in OSUAnalysis::OSUAnalysis().
968 <      if(currentObject == "muon-muon pairs")                         objectToPlot = "dimuonPairs";
969 <      else if(currentObject == "electron-electron pairs")            objectToPlot = "dielectronPairs";
970 <      else if(currentObject == "electron-muon pairs")                objectToPlot = "electronMuonPairs";
971 <      else if(currentObject == "electron-jet pairs")                 objectToPlot = "electronJetPairs";
972 <      else if(currentObject == "muon-jet pairs")                     objectToPlot = "muonJetPairs";
973 <      else if(currentObject == "jet-jet pairs")            objectToPlot = "dijetPairs";
974 <      else if(currentObject == "electron-track pairs")               objectToPlot = "electronTrackPairs";
975 <      else if(currentObject == "muon-track pairs")                   objectToPlot = "muonTrackPairs";
976 <      else if(currentObject == "muon-tau pairs")                     objectToPlot = "muonTauPairs";
977 <      else if(currentObject == "tau-tau pairs")                      objectToPlot = "ditauPairs";
978 <      else if(currentObject == "tau-track pairs")                    objectToPlot = "tauTrackPairs";
979 <      else if(currentObject == "track-event pairs")                  objectToPlot = "trackEventPairs";
980 <      else if(currentObject == "muon-secondary muon pairs")          objectToPlot = "muonSecondaryMuonPairs";
981 <      else if(currentObject == "secondary muons")                    objectToPlot = "secondaryMuons";
982 <      else if(currentObject == "electron-secondary electron pairs")  objectToPlot = "electronSecondaryElectronPairs";
983 <      else if(currentObject == "secondary electrons")                objectToPlot = "secondaryElectrons";
984 <      else if(currentObject == "electron-trigobj pairs")             objectToPlot = "electronTrigobjPairs";
985 <      else if(currentObject == "muon-trigobj pairs")                 objectToPlot = "muonTrigobjPairs";
986 <      else objectToPlot = currentObject;
987 <
988 <      string tempCurrentObject = objectToPlot;
989 <      tempCurrentObject.at(0) = toupper(tempCurrentObject.at(0));
990 <      string histoName = "num" + tempCurrentObject;
991 <
992 <      //set position of primary vertex in event, in order to calculate quantities relative to it
993 <      if(find(objectsToCut.begin(), objectsToCut.end(), currentObject) != objectsToCut.end()) {
994 <        vector<bool> lastCutFlags = cumulativeFlags.at(currentObject).at(currentDir);
995 <        int numToPlot = 0;
996 <        for (uint currentFlag = 0; currentFlag != lastCutFlags.size(); currentFlag++){
997 <          if(lastCutFlags.at(currentFlag)) numToPlot++;
998 <        }
999 <        if(objectToPlot == "primaryvertexs"){
1000 <          oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName+"BeforePileupCorrection")->Fill(primaryvertexs->size());
1001 <          oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName+"AfterPileupCorrection")->Fill(primaryvertexs->size(),scaleFactor);
1002 <        }
1003 <        else {
1004 <          oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(numToPlot,scaleFactor);
1005 <        }
1006 <      }
1007 <      else if(objectToPlot == "jets") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(jets->size(),scaleFactor);
1008 <      else if(objectToPlot == "muons") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(muons->size(),scaleFactor);
1009 <      else if(objectToPlot == "secondaryMuons") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(muons->size(),scaleFactor);
1010 <      else if(objectToPlot == "dimuonPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(muons->size()*(muons->size()-1)/2,scaleFactor);
1011 <      else if(objectToPlot == "muonSecondaryMuonPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(muons->size()*(muons->size()-1)/2,scaleFactor);
1012 <      else if(objectToPlot == "electrons") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(electrons->size(),scaleFactor);
1013 <      else if(objectToPlot == "secondaryElectrons") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(electrons->size(),scaleFactor);
1014 <      else if(objectToPlot == "dielectronPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(electrons->size()*(electrons->size()-1)/2,scaleFactor);
1015 <      else if(objectToPlot == "electronSecondaryElectronPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(electrons->size()*(electrons->size()-1)/2,scaleFactor);
1016 <      else if(objectToPlot == "electronMuonPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(electrons->size()*muons->size(),scaleFactor);
1017 <      else if(objectToPlot == "electronJetPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(electrons->size()*jets->size(),scaleFactor);
1018 <      else if(objectToPlot == "muonJetPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(muons->size()*jets->size(),scaleFactor);
1019 <      else if(objectToPlot == "electronTrackPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(electrons->size()*tracks->size(),scaleFactor);
1020 <      else if(objectToPlot == "electronTrigobjPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(electrons->size()*trigobjs->size(),scaleFactor);
1021 <      else if(objectToPlot == "muonTrigobjPairs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(muons->size()*trigobjs->size(),scaleFactor);
1022 <      else if(objectToPlot == "events") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(events->size(),scaleFactor);
1023 <      else if(objectToPlot == "taus") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(taus->size(),scaleFactor);
1024 <      else if(objectToPlot == "mets") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(mets->size(),scaleFactor);
1025 <      else if(objectToPlot == "tracks") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(tracks->size(),scaleFactor);
1026 <      else if(objectToPlot == "genjets") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(genjets->size(),scaleFactor);
1027 <      else if(objectToPlot == "mcparticles") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(mcparticles->size(),scaleFactor);
1028 <      else if(objectToPlot == "bxlumis") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(bxlumis->size(),scaleFactor);
1029 <      else if(objectToPlot == "photons") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(photons->size(),scaleFactor);
1030 <      else if(objectToPlot == "superclusters") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(superclusters->size(),scaleFactor);
1031 <      else if(objectToPlot == "trigobjs") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(trigobjs->size(),scaleFactor);
1032 <      else if(objectToPlot == "primaryvertexs"){
1033 <        oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName+"BeforePileupCorrection")->Fill(primaryvertexs->size());
1034 <        oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName+"AfterPileupCorrection")->Fill(primaryvertexs->size(),scaleFactor);
1035 <      }
1036 <      if(objectToPlot == "stops" && datasetType_ == "signalMC") oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(stops->size(),scaleFactor);
828 >    //filling histograms
829 >    for(uint currentCut = 0; currentCut != oneDHists_.at(currentChannelIndex).size(); currentCut++){//loop over all the directories in each channel.
830  
831 <     } // end for (uint currentObjectIndex = 0; currentObjectIndex != objectsToPlot.size(); currentObjectIndex++)
831 >      uint currentDir;
832 >      if(!GetPlotsAfterEachCut_){ currentDir =  currentChannel.cuts.size() - oneDHists_.at(currentChannelIndex).size();}//if GetPlotsAfterEachCut_ is true, set currentDir point to the last cut.
833 >      else currentDir = currentCut;
834 >
835 >      if(!eventPassedPreviousCuts.at(currentDir)) continue;
836 >
837 >
838 >      for (uint histogramIndex = 0; histogramIndex != histograms.size(); histogramIndex++){
839 >        histogram currentHistogram = histograms.at(histogramIndex);
840 >
841 >        if(currentHistogram.inputVariables.size() == 1){
842 >          TH1D* histo;
843 >          histo = oneDHists_.at(currentChannelIndex).at(currentCut).at(currentHistogram.name);
844 >
845 >          if     (currentHistogram.inputCollection == "jets")            fill1DHistogram(histo,currentHistogram,jets.product(),cumulativeFlags.at("jets").at(currentDir),scaleFactor);
846 >          else if(currentHistogram.inputCollection == "secondary jets")  fill1DHistogram(histo,currentHistogram,jets.product(),cumulativeFlags.at("secondary jets").at(currentDir),scaleFactor);
847 >          else if(currentHistogram.inputCollection == "muons")           fill1DHistogram(histo,currentHistogram,muons.product(),cumulativeFlags.at("muons").at(currentDir),scaleFactor);
848 >          else if(currentHistogram.inputCollection == "secondary muons") fill1DHistogram(histo,currentHistogram,muons.product(),cumulativeFlags.at("secondary muons").at(currentDir),scaleFactor);
849 >          else if(currentHistogram.inputCollection == "secondary electrons") fill1DHistogram(histo,currentHistogram,electrons.product(),cumulativeFlags.at("secondary electrons").at(currentDir),scaleFactor);
850 >          else if(currentHistogram.inputCollection == "muon-muon pairs") fill1DHistogram(histo,currentHistogram,muons.product(),muons.product(), \
851 >                                                                                         cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("muons").at(currentDir), \
852 >                                                                                         cumulativeFlags.at("muon-muon pairs").at(currentDir),scaleFactor);
853 >          else if(currentHistogram.inputCollection == "muon-secondary muon pairs") fill1DHistogram(histo,currentHistogram,muons.product(),muons.product(), \
854 >                                                                                                   cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("secondary muons").at(currentDir), \
855 >                                                                                                   cumulativeFlags.at("muon-secondary muon pairs").at(currentDir),scaleFactor);
856 >          else if(currentHistogram.inputCollection == "electrons") fill1DHistogram(histo,currentHistogram,electrons.product(),cumulativeFlags.at("electrons").at(currentDir),scaleFactor);
857 >          else if(currentHistogram.inputCollection == "electron-electron pairs") fill1DHistogram(histo,currentHistogram,electrons.product(),electrons.product(), \
858 >                                                                                                 cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("electrons").at(currentDir), \
859 >                                                                                                 cumulativeFlags.at("electron-electron pairs").at(currentDir),scaleFactor);
860 >          else if(currentHistogram.inputCollection == "jet-jet pairs") fill1DHistogram(histo,currentHistogram,jets.product(),jets.product(), \
861 >                                                                                       cumulativeFlags.at("jets").at(currentDir),cumulativeFlags.at("jets").at(currentDir), \
862 >                                                                                       cumulativeFlags.at("jet-jet pairs").at(currentDir),scaleFactor);
863 >          else if(currentHistogram.inputCollection == "electron-secondary electron pairs") fill1DHistogram(histo,currentHistogram,electrons.product(),electrons.product(), \
864 >                                                                                                           cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("secondary electrons").at(currentDir), \
865 >                                                                                                           cumulativeFlags.at("electron-secondary electron pairs").at(currentDir),scaleFactor);
866 >          else if(currentHistogram.inputCollection == "electron-muon pairs") fill1DHistogram(histo,currentHistogram, electrons.product(),muons.product(), \
867 >                                                                                             cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("muons").at(currentDir),
868 >                                                                                             cumulativeFlags.at("electron-muon pairs").at(currentDir),scaleFactor);
869 >          else if(currentHistogram.inputCollection == "electron-jet pairs") fill1DHistogram(histo,currentHistogram, electrons.product(),jets.product(), \
870 >                                                                                            cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("jets").at(currentDir),
871 >                                                                                            cumulativeFlags.at("electron-jet pairs").at(currentDir),scaleFactor);
872 >          else if(currentHistogram.inputCollection == "muon-jet pairs") fill1DHistogram(histo,currentHistogram, muons.product(),jets.product(), \
873 >                                                                                        cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("jets").at(currentDir),
874 >                                                                                        cumulativeFlags.at("muon-jet pairs").at(currentDir),scaleFactor);
875 >          else if(currentHistogram.inputCollection == "electron-track pairs") fill1DHistogram(histo,currentHistogram, electrons.product(),tracks.product(),
876 >                                                                                              cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
877 >                                                                                              cumulativeFlags.at("electron-track pairs").at(currentDir),scaleFactor);
878 >          else if(currentHistogram.inputCollection == "muon-track pairs") fill1DHistogram(histo,currentHistogram, muons.product(),tracks.product(),
879 >                                                                                          cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
880 >                                                                                          cumulativeFlags.at("muon-track pairs").at(currentDir),scaleFactor);
881 >          else if(currentHistogram.inputCollection == "muon-tau pairs") fill1DHistogram(histo,currentHistogram, muons.product(),taus.product(),
882 >                                                                                        cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("taus").at(currentDir),
883 >                                                                                        cumulativeFlags.at("muon-tau pairs").at(currentDir),scaleFactor);
884 >          else if(currentHistogram.inputCollection == "tau-tau pairs") fill1DHistogram(histo,currentHistogram, taus.product(),taus.product(),
885 >                                                                                       cumulativeFlags.at("taus").at(currentDir),cumulativeFlags.at("taus").at(currentDir),
886 >                                                                                       cumulativeFlags.at("tau-tau pairs").at(currentDir),scaleFactor);
887 >          else if(currentHistogram.inputCollection == "tau-track pairs") fill1DHistogram(histo,currentHistogram, taus.product(),tracks.product(),
888 >                                                                                         cumulativeFlags.at("taus").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
889 >                                                                                         cumulativeFlags.at("tau-track pairs").at(currentDir),scaleFactor);
890 >          else if(currentHistogram.inputCollection == "electron-trigobj pairs") fill1DHistogram(histo,currentHistogram, electrons.product(),trigobjs.product(),
891 >                                                                                                cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("trigobjs").at(currentDir),
892 >                                                                                                cumulativeFlags.at("electron-trigobj pairs").at(currentDir),scaleFactor);
893 >          else if(currentHistogram.inputCollection == "muon-trigobj pairs") fill1DHistogram(histo,currentHistogram, muons.product(),trigobjs.product(),
894 >                                                                                            cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("trigobjs").at(currentDir),
895 >                                                                                            cumulativeFlags.at("muon-trigobj pairs").at(currentDir),scaleFactor);
896 >          
897 >          else if(currentHistogram.inputCollection == "events") fill1DHistogram(histo,currentHistogram,events.product(),cumulativeFlags.at("events").at(currentDir),scaleFactor);
898 >          else if(currentHistogram.inputCollection == "taus") fill1DHistogram(histo,currentHistogram,taus.product(),cumulativeFlags.at("taus").at(currentDir),scaleFactor);
899 >          else if(currentHistogram.inputCollection == "mets") fill1DHistogram(histo,currentHistogram,mets.product(),cumulativeFlags.at("mets").at(currentDir),scaleFactor);
900 >          else if(currentHistogram.inputCollection == "tracks") fill1DHistogram(histo,currentHistogram,tracks.product(),cumulativeFlags.at("tracks").at(currentDir),scaleFactor);
901 >          else if(currentHistogram.inputCollection == "genjets") fill1DHistogram(histo,currentHistogram,genjets.product(),cumulativeFlags.at("genjets").at(currentDir),scaleFactor);
902 >          else if(currentHistogram.inputCollection == "mcparticles") fill1DHistogram(histo,currentHistogram,mcparticles.product(),cumulativeFlags.at("mcparticles").at(currentDir),scaleFactor);
903 >          else if(currentHistogram.inputCollection == "primaryvertexs") fill1DHistogram(histo,currentHistogram,primaryvertexs.product(),cumulativeFlags.at("primaryvertexs").at(currentDir),scaleFactor);
904 >          else if(currentHistogram.inputCollection == "bxlumis") fill1DHistogram(histo,currentHistogram,bxlumis.product(),cumulativeFlags.at("bxlumis").at(currentDir),scaleFactor);
905 >          else if(currentHistogram.inputCollection == "photons") fill1DHistogram(histo,currentHistogram,photons.product(),cumulativeFlags.at("photons").at(currentDir),scaleFactor);
906 >          else if(currentHistogram.inputCollection == "superclusters") fill1DHistogram(histo,currentHistogram,superclusters.product(),cumulativeFlags.at("superclusters").at(currentDir),scaleFactor);
907 >          else if(currentHistogram.inputCollection == "trigobjs") fill1DHistogram(histo,currentHistogram,trigobjs.product(),cumulativeFlags.at("trigobjs").at(currentDir),scaleFactor);
908 >          else if(currentHistogram.inputCollection == "stops" && datasetType_ == "signalMC") fill1DHistogram(histo,currentHistogram,stops.product(),cumulativeFlags.at("stops").at(currentDir),scaleFactor);
909 >        }
910 >        else if(currentHistogram.inputVariables.size() == 2){
911 >          TH2D* histo;
912 >          histo = twoDHists_.at(currentChannelIndex).at(currentCut).at(currentHistogram.name);
913 >
914 >          if     (currentHistogram.inputCollection == "jets")            fill2DHistogram(histo,currentHistogram,jets.product(),cumulativeFlags.at("jets").at(currentDir),scaleFactor);
915 >          else if(currentHistogram.inputCollection == "secondary jets")  fill2DHistogram(histo,currentHistogram,jets.product(),cumulativeFlags.at("secondary jets").at(currentDir),scaleFactor);
916 >          else if(currentHistogram.inputCollection == "muons")           fill2DHistogram(histo,currentHistogram,muons.product(),cumulativeFlags.at("muons").at(currentDir),scaleFactor);
917 >          else if(currentHistogram.inputCollection == "secondary muons") fill2DHistogram(histo,currentHistogram,muons.product(),cumulativeFlags.at("secondary muons").at(currentDir),scaleFactor);
918 >          else if(currentHistogram.inputCollection == "muon-muon pairs") fill2DHistogram(histo,currentHistogram,muons.product(),muons.product(), \
919 >                                                                                         cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("muons").at(currentDir), \
920 >                                                                                         cumulativeFlags.at("muon-muon pairs").at(currentDir),scaleFactor);
921 >          else if(currentHistogram.inputCollection == "muon-secondary muon pairs") fill2DHistogram(histo,currentHistogram,muons.product(),muons.product(), \
922 >                                                                                                   cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("secondary muons").at(currentDir), \
923 >                                                                                                   cumulativeFlags.at("muon-secondary muon pairs").at(currentDir),scaleFactor);
924 >          else if(currentHistogram.inputCollection == "electrons") fill2DHistogram(histo,currentHistogram,electrons.product(),cumulativeFlags.at("electrons").at(currentDir),scaleFactor);
925 >          else if(currentHistogram.inputCollection == "secondary electrons") fill2DHistogram(histo,currentHistogram,electrons.product(),cumulativeFlags.at("secondary electrons").at(currentDir),scaleFactor);
926 >          else if(currentHistogram.inputCollection == "electron-electron pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),electrons.product(), \
927 >                                                                                                 cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("electrons").at(currentDir), \
928 >                                                                                                 cumulativeFlags.at("electron-electron pairs").at(currentDir),scaleFactor);
929 >          else if(currentHistogram.inputCollection == "jet-jet pairs") fill2DHistogram(histo,currentHistogram,jets.product(),jets.product(), \
930 >                                                                                       cumulativeFlags.at("jets").at(currentDir),cumulativeFlags.at("jets").at(currentDir), \
931 >                                                                                       cumulativeFlags.at("jet-jet pairs").at(currentDir),scaleFactor);
932 >          else if(currentHistogram.inputCollection == "electron-secondary electron pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),electrons.product(), \
933 >                                                                                                           cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("secondary electrons").at(currentDir), \
934 >                                                                                                           cumulativeFlags.at("electron-secondary electron pairs").at(currentDir),scaleFactor);
935 >          else if(currentHistogram.inputCollection == "electron-muon pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),muons.product(), \
936 >                                                                                             cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("muons").at(currentDir), \
937 >                                                                                             cumulativeFlags.at("electron-muon pairs").at(currentDir),scaleFactor);
938 >          else if(currentHistogram.inputCollection == "electron-jet pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),jets.product(), \
939 >                                                                                            cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("jets").at(currentDir), \
940 >                                                                                            cumulativeFlags.at("electron-jet pairs").at(currentDir),scaleFactor);
941 >          else if(currentHistogram.inputCollection == "muon-jet pairs") fill2DHistogram(histo,currentHistogram,muons.product(),jets.product(), \
942 >                                                                                        cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("jets").at(currentDir), \
943 >                                                                                        cumulativeFlags.at("muon-jet pairs").at(currentDir),scaleFactor);
944 >          else if(currentHistogram.inputCollection == "electron-track pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),tracks.product(),
945 >                                                                                              cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
946 >                                                                                              cumulativeFlags.at("electron-track pairs").at(currentDir),scaleFactor);
947 >          else if(currentHistogram.inputCollection == "muon-track pairs") fill2DHistogram(histo,currentHistogram,muons.product(),tracks.product(),
948 >                                                                                          cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
949 >                                                                                          cumulativeFlags.at("muon-track pairs").at(currentDir),scaleFactor);
950 >          else if(currentHistogram.inputCollection == "muon-tau pairs") fill2DHistogram(histo,currentHistogram,muons.product(),taus.product(),
951 >                                                                                        cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("taus").at(currentDir),
952 >                                                                                        cumulativeFlags.at("muon-tau pairs").at(currentDir),scaleFactor);
953 >          else if(currentHistogram.inputCollection == "tau-tau pairs") fill2DHistogram(histo,currentHistogram,taus.product(),taus.product(),
954 >                                                                                       cumulativeFlags.at("taus").at(currentDir),cumulativeFlags.at("taus").at(currentDir),
955 >                                                                                       cumulativeFlags.at("tau-tau pairs").at(currentDir),scaleFactor);
956 >          else if(currentHistogram.inputCollection == "tau-track pairs") fill2DHistogram(histo,currentHistogram,taus.product(),tracks.product(),
957 >                                                                                         cumulativeFlags.at("taus").at(currentDir),cumulativeFlags.at("tracks").at(currentDir),
958 >                                                                                         cumulativeFlags.at("tau-track pairs").at(currentDir),scaleFactor);
959 >          else if(currentHistogram.inputCollection == "electron-trigobj pairs") fill2DHistogram(histo,currentHistogram,electrons.product(),trigobjs.product(),
960 >                                                                                                cumulativeFlags.at("electrons").at(currentDir),cumulativeFlags.at("trigobjs").at(currentDir),
961 >                                                                                                cumulativeFlags.at("electron-trigobj pairs").at(currentDir),scaleFactor);
962 >          else if(currentHistogram.inputCollection == "muon-trigobj pairs") fill2DHistogram(histo,currentHistogram,muons.product(),trigobjs.product(),
963 >                                                                                            cumulativeFlags.at("muons").at(currentDir),cumulativeFlags.at("trigobjs").at(currentDir),
964 >                                                                                            cumulativeFlags.at("muon-trigobj pairs").at(currentDir),scaleFactor);
965 >          else if(currentHistogram.inputCollection == "events") fill2DHistogram(histo,currentHistogram,events.product(),cumulativeFlags.at("events").at(currentDir),scaleFactor);
966 >          else if(currentHistogram.inputCollection == "taus") fill2DHistogram(histo,currentHistogram,taus.product(),cumulativeFlags.at("taus").at(currentDir),scaleFactor);
967 >          else if(currentHistogram.inputCollection == "mets") fill2DHistogram(histo,currentHistogram,mets.product(),cumulativeFlags.at("mets").at(currentDir),scaleFactor);
968 >          else if(currentHistogram.inputCollection == "tracks") fill2DHistogram(histo,currentHistogram,tracks.product(),cumulativeFlags.at("tracks").at(currentDir),scaleFactor);
969 >          else if(currentHistogram.inputCollection == "track-event pairs") fill2DHistogram(histo,currentHistogram,tracks.product(),events.product(),
970 >                                                                                           cumulativeFlags.at("tracks").at(currentDir),cumulativeFlags.at("events").at(currentDir),
971 >                                                                                           cumulativeFlags.at("track-event pairs").at(currentDir),scaleFactor);
972 >          else if(currentHistogram.inputCollection == "genjets") fill2DHistogram(histo,currentHistogram,genjets.product(),cumulativeFlags.at("genjets").at(currentDir),scaleFactor);
973 >          else if(currentHistogram.inputCollection == "mcparticles") fill2DHistogram(histo,currentHistogram,mcparticles.product(),cumulativeFlags.at("mcparticles").at(currentDir),scaleFactor);
974 >          else if(currentHistogram.inputCollection == "primaryvertexs") fill2DHistogram(histo,currentHistogram,primaryvertexs.product(),cumulativeFlags.at("primaryvertexs").at(currentDir),scaleFactor);
975 >          else if(currentHistogram.inputCollection == "bxlumis") fill2DHistogram(histo,currentHistogram,bxlumis.product(),cumulativeFlags.at("bxlumis").at(currentDir),scaleFactor);
976 >          else if(currentHistogram.inputCollection == "photons") fill2DHistogram(histo,currentHistogram,photons.product(),cumulativeFlags.at("photons").at(currentDir),scaleFactor);
977 >          else if(currentHistogram.inputCollection == "superclusters") fill2DHistogram(histo,currentHistogram,superclusters.product(),cumulativeFlags.at("superclusters").at(currentDir),scaleFactor);
978 >          else if(currentHistogram.inputCollection == "trigobjs") fill2DHistogram(histo,currentHistogram,trigobjs.product(),cumulativeFlags.at("trigobjs").at(currentDir),scaleFactor);
979 >          else if(currentHistogram.inputCollection == "stops" && datasetType_ == "signalMC") fill2DHistogram(histo,currentHistogram,stops.product(),cumulativeFlags.at("stops").at(currentDir),scaleFactor);
980 >        }
981 >      }
982 >
983 >      //fills histograms with the sizes of collections
984 >
985 >      for (uint currentObjectIndex = 0; currentObjectIndex != objectsToPlot.size(); currentObjectIndex++){
986 >        
987 >        string currentObject = objectsToPlot.at(currentObjectIndex);
988 >        string objectToPlot = "";
989 >        
990 >        // Name of objectToPlot here must match the name specified in OSUAnalysis::OSUAnalysis().
991 >        if(currentObject == "muon-muon pairs")                         objectToPlot = "dimuonPairs";
992 >        else if(currentObject == "electron-electron pairs")            objectToPlot = "dielectronPairs";
993 >        else if(currentObject == "electron-muon pairs")                objectToPlot = "electronMuonPairs";
994 >        else if(currentObject == "electron-jet pairs")                 objectToPlot = "electronJetPairs";
995 >        else if(currentObject == "muon-jet pairs")                     objectToPlot = "muonJetPairs";
996 >        else if(currentObject == "jet-jet pairs")                      objectToPlot = "dijetPairs";
997 >        else if(currentObject == "secondary jets")                     objectToPlot = "secondaryJets";
998 >        else if(currentObject == "electron-track pairs")               objectToPlot = "electronTrackPairs";
999 >        else if(currentObject == "muon-track pairs")                   objectToPlot = "muonTrackPairs";
1000 >        else if(currentObject == "muon-tau pairs")                     objectToPlot = "muonTauPairs";
1001 >        else if(currentObject == "tau-tau pairs")                      objectToPlot = "ditauPairs";
1002 >        else if(currentObject == "tau-track pairs")                    objectToPlot = "tauTrackPairs";
1003 >        else if(currentObject == "track-event pairs")                  objectToPlot = "trackEventPairs";
1004 >        else if(currentObject == "muon-secondary muon pairs")          objectToPlot = "muonSecondaryMuonPairs";
1005 >        else if(currentObject == "secondary muons")                    objectToPlot = "secondaryMuons";
1006 >        else if(currentObject == "electron-secondary electron pairs")  objectToPlot = "electronSecondaryElectronPairs";
1007 >        else if(currentObject == "secondary electrons")                objectToPlot = "secondaryElectrons";
1008 >        else if(currentObject == "electron-trigobj pairs")             objectToPlot = "electronTrigobjPairs";
1009 >        else if(currentObject == "muon-trigobj pairs")                 objectToPlot = "muonTrigobjPairs";
1010 >        else objectToPlot = currentObject;
1011 >        
1012 >        string tempCurrentObject = objectToPlot;
1013 >        tempCurrentObject.at(0) = toupper(tempCurrentObject.at(0));
1014 >        string histoName = "num" + tempCurrentObject;
1015 >        
1016 >
1017 >        vector<bool> lastCutFlags = cumulativeFlags.at(currentObject).at(currentDir);
1018 >
1019 >        //count the number of objects passing all cuts
1020 >        int numToPlot = 0;
1021 >        for (uint currentFlag = 0; currentFlag != lastCutFlags.size(); currentFlag++){
1022 >          if(lastCutFlags.at(currentFlag)) numToPlot++;
1023 >        }
1024 >
1025 >        if(objectToPlot == "primaryvertexs"){
1026 >          oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName+"BeforePileupCorrection")->Fill(primaryvertexs->size());
1027 >          oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName+"AfterPileupCorrection")->Fill(primaryvertexs->size(),scaleFactor);
1028 >        }
1029 >        else {
1030 >          oneDHists_.at(currentChannelIndex).at(currentCut).at(histoName)->Fill(numToPlot,scaleFactor);
1031 >        }
1032 >      } // end for (uint currentObjectIndex = 0; currentObjectIndex != objectsToPlot.size(); currentObjectIndex++)
1033      }
1034 <  }
1034 >
1035    } //end loop over channel
1036  
1037    masterCutFlow_->fillCutFlow(masterScaleFactor);
# Line 1077 | Line 1071 | OSUAnalysis::evaluateComparison (string
1071   }
1072  
1073   bool
1074 < OSUAnalysis::evaluateTriggers (vector<string> triggersToTest, const BNtriggerCollection* triggerCollection){
1074 > OSUAnalysis::evaluateTriggers (vector<string> triggersToTest, vector<string> triggersToVeto, const BNtriggerCollection* triggerCollection){
1075  
1076 +  //initialize to false until a chosen trigger is passed
1077    bool triggerDecision = false;
1078  
1079 <  for (BNtriggerCollection::const_iterator trigger = triggerCollection->begin (); trigger != triggerCollection->end (); trigger++)
1080 <    {
1081 <      if(trigger->pass != 1) continue;
1082 <      for(uint triggerName = 0; triggerName != triggersToTest.size(); triggerName++)
1083 <        {
1089 <          if(trigger->name.find(triggersToTest.at(triggerName))!=string::npos){
1090 <            triggerDecision = true;
1091 <          }
1092 <        }
1093 <    }
1094 <  return triggerDecision;
1079 >  //loop over all triggers defined in the event
1080 >  for (BNtriggerCollection::const_iterator trigger = triggerCollection->begin (); trigger != triggerCollection->end (); trigger++){
1081 >
1082 >    //we're only interested in triggers that actually passed
1083 >    if(trigger->pass != 1) continue;
1084  
1085 +    //if the event passes one of the veto triggers, exit and return false
1086 +    for(uint triggerName = 0; triggerName != triggersToVeto.size(); triggerName++){
1087 +      if(trigger->name.find(triggersToVeto.at(triggerName))!=string::npos) return false;
1088 +    }
1089 +    //if the event passes one of the chosen triggers, set triggerDecision to true
1090 +    for(uint triggerName = 0; triggerName != triggersToTest.size(); triggerName++){
1091 +      if(trigger->name.find(triggersToTest.at(triggerName))!=string::npos) triggerDecision = true;
1092 +    }  
1093 +  }
1094 +  //if none of the veto triggers fired:
1095 +  //return the OR of all the chosen triggers
1096 +  if (triggersToTest.size() != 0) return triggerDecision;
1097 +  //or if no triggers were defined return true
1098 +  else return true;
1099   }
1100  
1101 +
1102   vector<string>
1103   OSUAnalysis::splitString (string inputString){
1104  
# Line 1558 | Line 1562 | OSUAnalysis::valueLookup (const BNmuon*
1562    }
1563    else if(variable == "tightIDdisplaced"){
1564      value = object->isGlobalMuon > 0                \
1565 +      && object->isPFMuon > 0                        \
1566        && object->normalizedChi2 < 10                \
1567                                    && object->numberOfValidMuonHits > 0        \
1568        && object->numberOfMatchedStations > 1        \
# Line 2099 | Line 2104 | OSUAnalysis::valueLookup (const BNevent*
2104    else if(variable == "id2") value = object->id2;
2105    else if(variable == "evt") value = object->evt;
2106    else if(variable == "puScaleFactor"){
2107 <    if(datasetType_ != "data")
2107 >    if(doPileupReweighting_ && datasetType_ != "data")
2108        value = puWeight_->at (events->at (0).numTruePV);
2109      else
2110        value = 1.0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines