ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/L1RpcTriggerAnalysis/src/AnaMenu.cc
(Generate patch)

Comparing UserCode/L1RpcTriggerAnalysis/src/AnaMenu.cc (file contents):
Revision 1.1 by konec, Mon Oct 29 12:46:00 2012 UTC vs.
Revision 1.7 by konec, Wed Apr 24 19:54:35 2013 UTC

# Line 5 | Line 5
5   #include "TGraphErrors.h"
6   #include "UserCode/L1RpcTriggerAnalysis/interface/MuonObj.h"
7   #include "UserCode/L1RpcTriggerAnalysis/interface/EventObj.h"
8 + #include "UserCode/L1RpcTriggerAnalysis/interface/Utilities.h"
9 + #include "UserCode/L1RpcTriggerAnalysis/interface/TriggerMenuResultObj.h"
10   #include <sstream>
11   #include <iostream>
12 + #include <cmath>
13  
14   namespace {
15 + TH1D *hMuonPt_MEN, *hMuonEta_MEN, *hMuonPhi_MEN;
16   }
17  
18  
19 + void  AnaMenu::updateMenu(const std::vector<std::string> & menuL1, const std::vector<std::string> & menuHLT)
20 + {
21 +  if (menuL1.size() != 0) theMenuL1 = menuL1;
22 +  if (menuHLT.size() != 0) theMenuHLT = menuHLT;
23 + }
24 +
25   bool AnaMenu::filter( const EventObj* ev, const MuonObj* muon,
26 <                  const  std::vector<std::string> & namesL1,
27 <                  const std::vector<unsigned int> & algosL1,
28 <                  const std::vector<std::string> &  namesHLT,
19 <                  const std::vector<unsigned int> & algosHLT)
26 >                      const TriggerMenuResultObj *bitsL1,
27 >                      const TriggerMenuResultObj *bitsHLT)
28 >
29   {
30 +  const std::vector<unsigned int> & algosL1 = bitsL1->firedAlgos;
31 +  const std::vector<unsigned int> & algosHLT = bitsHLT->firedAlgos;
32 +
33    typedef std::vector<unsigned int>::const_iterator CIT;
34  
35 < //  static int count = 0;
36 < //  std::cout <<"----------"<<std::endl;
37 <  bool hasNoL1Mu= false;
35 >
36 >  bool okL1 = false;
37 >  
38 > //  debug = true;
39 >  if (debug) std::cout <<"--------------------------------------------------------------"<<std::endl;
40 >  if (debug) std::cout << "================== L1 names: "<< std::endl;
41 >  std::vector<std::string> acceptL1_Names = theConfig.exists("acceptL1_Names") ?  theConfig.getParameter<std::vector<std::string> >("acceptL1_Names") : std::vector<std::string>();
42    for (CIT it=algosL1.begin(); it != algosL1.end(); ++it) {
43 <    std::string nameAlgo = namesL1[*it];
44 < //    std::cout <<nameAlgo << std::endl;
43 >    bool aokL1 = false;
44 >    std::string nameAlgo = theMenuL1[*it];
45      if (theAlgosL1.find(nameAlgo) == theAlgosL1.end()) theAlgosL1[nameAlgo]=0;    
46      bool isMu = ( nameAlgo.find("Mu") != std::string::npos);
47 <    if (!isMu) hasNoL1Mu = true;
47 >    if (theConfig.getParameter<bool>("acceptL1_OtherThanMu") && !isMu ) aokL1 = true;
48 >    if (theConfig.getParameter<bool>("acceptL1_Mu") &&  isMu) aokL1 = true;
49 >    for ( std::vector<std::string>::const_iterator is=acceptL1_Names.begin(); is != acceptL1_Names.end(); ++is) if (nameAlgo==(*is)) aokL1 = true;
50 >    if (debug) {std::cout <<nameAlgo; if (aokL1) std::cout <<" <--"; std::cout << std::endl; }
51 >    if (aokL1) okL1=true;
52    }
33 // if (hasNoL1Mu) std::cout <<" HAS NO L1 MUON!: " <<++count<< std::endl;
53  
54 <  bool hasNoHLTMu= false;
54 >  bool okHLT = false;
55 >  if (debug) std::cout << "================== L1 names: "<< std::endl;
56    for (CIT it=algosHLT.begin(); it != algosHLT.end(); ++it) {
57 <    std::string nameAlgo = namesHLT[*it];
58 < //    std::cout <<nameAlgo << std::endl;
57 >    bool aokHLT = false;
58 >    std::string nameAlgo = theMenuHLT[*it];
59      if (theAlgosHLT.find(nameAlgo) == theAlgosHLT.end()) theAlgosHLT[nameAlgo]=0;    
60 <    if (nameAlgo.find("Physic") != std::string::npos) continue;
61 <    bool isMu = ( (nameAlgo.find("Mu") != std::string::npos) && (nameAlgo.find("Multi") == std::string::npos) );
62 <    if (!isMu) hasNoHLTMu = true;
60 >    bool isMu = (    (    (nameAlgo.find("Mu") != std::string::npos   )
61 >                       && (nameAlgo.find("Multi") == std::string::npos) )
62 >                  || (     nameAlgo.find("muon") != std::string::npos   )  );
63 >    if ( theConfig.getParameter<bool>("acceptHLT_OtherThanMuPhysicsAlCa")
64 >         && !isMu
65 >         && (nameAlgo.find("Physics") == std::string::npos)
66 >         && (nameAlgo.find("AlCa") == std::string::npos) ) aokHLT = true;
67 >    if (theConfig.getParameter<bool>("acceptHLT_Mu") && isMu) aokHLT = true;
68 >    if (theConfig.getParameter<bool>("acceptHLT_L1")       && (nameAlgo.find("HLT_L1")   != std::string::npos) ) aokHLT = true;
69 >    if (theConfig.getParameter<bool>("acceptHLT_Physics")  && (nameAlgo.find("Physics")  != std::string::npos) ) aokHLT = true;
70 >    if (theConfig.getParameter<bool>("acceptHLT_ZeroBias") && (nameAlgo.find("ZeroBias") != std::string::npos) ) aokHLT = true;
71 >    if (debug) {std::cout <<nameAlgo; if (aokHLT) std::cout <<" <--"; std::cout << std::endl; }
72 >    if (aokHLT) okHLT=true;
73    }
44 //  if (hasNoHLTMu) std::cout <<" HAS NO HLT MUON!" << std::endl;
74  
75 <  if (hasNoL1Mu && hasNoHLTMu) {
76 < //  if (hasNoL1Mu ) {
77 <    for (CIT it=algosL1.begin();  it != algosL1.end();  ++it)  theAlgosL1[ namesL1[*it] ]++;
78 <    for (CIT it=algosHLT.begin(); it != algosHLT.end(); ++it) theAlgosHLT[ namesHLT[*it] ]++;
79 <    return true;
80 <  }
75 >  if (okL1  && okHLT) {
76 >    for (CIT it=algosL1.begin();  it != algosL1.end();  ++it)  theAlgosL1[ theMenuL1[*it] ]++;
77 >    for (CIT it=algosHLT.begin(); it != algosHLT.end(); ++it) theAlgosHLT[ theMenuHLT[*it] ]++;
78 >    if (hMuonPt_MEN)  hMuonPt_MEN->Fill(muon->pt());
79 >    if (hMuonEta_MEN) hMuonEta_MEN->Fill(muon->eta());
80 >    if (hMuonPhi_MEN) hMuonPhi_MEN->Fill(muon->phi());
81 >    return true;
82 >  } else return  false;
83  
53  return  false;
84   }
85  
86   void AnaMenu::resume(TObjArray& histos)
# Line 65 | Line 95 | void AnaMenu::resume(TObjArray& histos)
95      ibin++;
96      hMenuAlgosL1->GetXaxis()->SetBinLabel(ibin, (*it).first.c_str());
97      hMenuAlgosL1->SetBinContent(ibin, (*it).second);
98 <    std::cout <<" BIN "<<ibin<<" LABEL: "<<(*it).first.c_str()<<" ENTRIES:"<<(*it).second<<std::endl;
98 > //    std::cout <<" BIN "<<ibin<<" LABEL: "<<(*it).first.c_str()<<" ENTRIES:"<<(*it).second<<std::endl;
99    }
100    ibin = 0;
101    for (CIM it=theAlgosHLT.begin(); it != theAlgosHLT.end(); ++it) {
102      ibin++;
103      hMenuAlgosHLT->GetXaxis()->SetBinLabel(ibin, (*it).first.c_str());
104      hMenuAlgosHLT->SetBinContent(ibin, (*it).second);
105 <    std::cout <<" BIN "<<ibin<<" LABEL: "<<(*it).first.c_str()<<" ENTRIES:"<<(*it).second<<std::endl;
105 > //    std::cout <<" BIN "<<ibin<<" LABEL: "<<(*it).first.c_str()<<" ENTRIES:"<<(*it).second<<std::endl;
106    }
107   }
108  
109  
110   void AnaMenu::init(TObjArray& histos)
111   {
112 < /*
113 < hClu_SizeDigi = new TH1D( "hClu_SizeDigi", "hClu_SizeDigi", 97, -0.5, 96.5);  histos.Add( hClu_SizeDigi);
114 < hClu_SizeRHit = new TH1D( "hClu_SizeRHit", "hClu_SizeRHit", 97, -0.5, 96.5);  histos.Add( hClu_SizeRHit);
85 < hClu_DigiRHit = new TH2D( "hClu_DigiRHit","hClu_DigiRHit", 97, -0.5, 96.5, 97, -0.5, 96.5);  histos.Add(hClu_DigiRHit);
86 < */
112 >  hMuonPt_MEN  = new TH1D("hMuonPt_MEN","All global muons Pt;Glb.muon p_{T} [GeV];Muons / bin",L1PtScale::nPtBins,L1PtScale::ptBins); histos.Add(hMuonPt_MEN);
113 >  hMuonEta_MEN = new TH1D("hMuonEta_MEN","All global muons Eta;Glb.muon #eta;Muons / bin",96, -2.4, 2.4);  histos.Add(hMuonEta_MEN);
114 >  hMuonPhi_MEN = new TH1D("hMuonPhi_MEN","All global muons Phi;Glb.muon #phi [rad];Muons / bin",90,-M_PI,M_PI);  histos.Add(hMuonPhi_MEN);
115   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines