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 TriggerMenuResultObj *bitsL1, |
27 |
|
const TriggerMenuResultObj *bitsHLT) |
28 |
|
|
29 |
|
{ |
24 |
– |
if (bitsL1->names.size() != 0) namesL1=bitsL1->names; |
25 |
– |
if (bitsHLT->names.size() != 0) namesHLT=bitsHLT->names; |
30 |
|
const std::vector<unsigned int> & algosL1 = bitsL1->firedAlgos; |
31 |
|
const std::vector<unsigned int> & algosHLT = bitsHLT->firedAlgos; |
32 |
|
|
29 |
– |
|
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 |
|
} |
42 |
– |
// 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 |
|
} |
53 |
– |
// if (hasNoHLTMu) std::cout <<" HAS NO HLT MUON!" << std::endl; |
74 |
|
|
75 |
< |
//if (hasNoL1Mu && hasNoHLTMu) { |
76 |
< |
if (!hasNoL1Mu && !hasNoHLTMu) { |
77 |
< |
for (CIT it=algosL1.begin(); it != algosL1.end(); ++it) theAlgosL1[ namesL1[*it] ]++; |
58 |
< |
for (CIT it=algosHLT.begin(); it != algosHLT.end(); ++it) theAlgosHLT[ namesHLT[*it] ]++; |
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 |
< |
} |
81 |
> |
return true; |
82 |
> |
} else return false; |
83 |
|
|
65 |
– |
return false; |
84 |
|
} |
85 |
|
|
86 |
|
void AnaMenu::resume(TObjArray& histos) |