CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
ResonanceDecayFilterHook Class Reference

#include <ResonanceDecayFilterHook.h>

Inheritance diagram for ResonanceDecayFilterHook:

Public Member Functions

bool canVetoResonanceDecays () override
 
bool checkVetoResonanceDecays (const Pythia8::Event &process)
 
bool doVetoResonanceDecays (Pythia8::Event &process) override
 
bool initAfterBeams () override
 
 ResonanceDecayFilterHook ()
 

Private Attributes

bool allNuAsEquivalent_
 
std::vector< int > daughters_
 
bool eMuAsEquivalent_
 
bool eMuTauAsEquivalent_
 
bool exclusive_
 
bool filter_
 
std::set< int > mothers_
 
std::map< int, int > observedDaughters_
 
std::map< int, int > requestedDaughters_
 
bool udscAsEquivalent_
 
bool udscbAsEquivalent_
 
bool wzAsEquivalent_
 

Detailed Description

Definition at line 5 of file ResonanceDecayFilterHook.h.

Constructor & Destructor Documentation

ResonanceDecayFilterHook::ResonanceDecayFilterHook ( )
inline

Definition at line 10 of file ResonanceDecayFilterHook.h.

References initAfterBeams().

10 {}

Member Function Documentation

bool ResonanceDecayFilterHook::canVetoResonanceDecays ( )
inlineoverride

Definition at line 15 of file ResonanceDecayFilterHook.h.

15 { return true; }
bool ResonanceDecayFilterHook::checkVetoResonanceDecays ( const Pythia8::Event &  process)

Definition at line 54 of file ResonanceDecayFilterHook.cc.

References funct::abs(), mps_fire::i, and AlCaHLTBitMon_ParallelJobs::p.

Referenced by doVetoResonanceDecays().

54  {
55 
56  if (!filter_) return false;
57 
58  observedDaughters_.clear();
59 
60  //count decay products
61  for (int i=0; i<process.size(); ++i) {
62  const Particle &p = process[i];
63 
64  int did = std::abs(p.id());
65 
66  if ( did == 13 && (eMuAsEquivalent_ || eMuTauAsEquivalent_)) {
67  did = 11;
68  }
69  if ( did == 15 && eMuTauAsEquivalent_) {
70  did = 11;
71  }
72  if ( (did == 14 || did == 16) && allNuAsEquivalent_) {
73  did = 12;
74  }
75  if ( (did == 2 || did==3 || did==4 ) && udscAsEquivalent_) {
76  did = 1;
77  }
78  if ( (did == 2 || did==3 || did==4 || did==5 ) && udscbAsEquivalent_) {
79  did = 1;
80  }
81  if( (did == 23 || did == 24) && wzAsEquivalent_) {
82  did = 23;
83  }
84 
85  int mid = p.mother1()>0 ? std::abs(process[p.mother1()].id()) : 0;
86 
87  //if no list of mothers is provided, then all particles
88  //in hard process and resonance decays are counted together
89  if(mothers_.empty() || mothers_.count(mid) || mothers_.count(-mid))
90  ++observedDaughters_[did];
91  }
92 
93  //check if criteria is satisfied
94  //inclusive mode: at least as many decay products as requested
95  //exclusive mode: exactly as many decay products as requested
96  //(but additional particle types not appearing in the list of requested daughter id's are ignored)
97  for (const auto &reqpair : requestedDaughters_) {
98  int reqid = reqpair.first;
99  int reqcount = reqpair.second;
100 
101  int obscount = 0;
102  for (const auto &obspair : observedDaughters_) {
103  int obsid = obspair.first;
104 
105  if (obsid == reqid) {
106  obscount = obspair.second;
107  break;
108  }
109  }
110 
111  //inclusive criteria not satisfied, veto event
112  if (obscount < reqcount) return true;
113 
114  //exclusive criteria not satisfied, veto event
115  if (exclusive_ && obscount > reqcount) return true;
116 
117  }
118 
119  //all criteria satisfied, don't veto
120  return false;
121 }
std::map< int, int > requestedDaughters_
std::map< int, int > observedDaughters_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool ResonanceDecayFilterHook::doVetoResonanceDecays ( Pythia8::Event &  process)
inlineoverride

Definition at line 16 of file ResonanceDecayFilterHook.h.

References checkVetoResonanceDecays(), and LaserDQM_cfg::process.

bool checkVetoResonanceDecays(const Pythia8::Event &process)
bool ResonanceDecayFilterHook::initAfterBeams ( )
override

Definition at line 8 of file ResonanceDecayFilterHook.cc.

References funct::abs().

Referenced by ResonanceDecayFilterHook().

8  {
9  filter_ = settingsPtr->flag("ResonanceDecayFilter:filter");
10  exclusive_ = settingsPtr->flag("ResonanceDecayFilter:exclusive");
11  eMuAsEquivalent_ = settingsPtr->flag("ResonanceDecayFilter:eMuAsEquivalent");
12  eMuTauAsEquivalent_ = settingsPtr->flag("ResonanceDecayFilter:eMuTauAsEquivalent");
13  allNuAsEquivalent_ = settingsPtr->flag("ResonanceDecayFilter:allNuAsEquivalent");
14  udscAsEquivalent_ = settingsPtr->flag("ResonanceDecayFilter:udscAsEquivalent");
15  udscbAsEquivalent_ = settingsPtr->flag("ResonanceDecayFilter:udscbAsEquivalent");
16  wzAsEquivalent_ = settingsPtr->flag("ResonanceDecayFilter:wzAsEquivalent");
17  auto mothers = settingsPtr->mvec("ResonanceDecayFilter:mothers");
18  mothers_.clear();
19  mothers_.insert(mothers.begin(), mothers.end());
20  daughters_ = settingsPtr->mvec("ResonanceDecayFilter:daughters");
21 
22 
23  requestedDaughters_.clear();
24 
25  for (int id : daughters_) {
26  int did = std::abs(id);
27  if ( did == 13 && (eMuAsEquivalent_ || eMuTauAsEquivalent_)) {
28  did = 11;
29  }
30  if ( did == 15 && eMuTauAsEquivalent_) {
31  did = 11;
32  }
33  if ( (did == 14 || did == 16) && allNuAsEquivalent_) {
34  did = 12;
35  }
36  if ( (did == 2 || did==3 || did==4 ) && udscAsEquivalent_) {
37  did = 1;
38  }
39  if ( (did == 2 || did==3 || did==4 || did==5 ) && udscbAsEquivalent_) {
40  did = 1;
41  }
42  if( (did == 23 || did == 24) && wzAsEquivalent_) {
43  did = 23;
44  }
45 
47  }
48 
49  return true;
50 
51 }
std::map< int, int > requestedDaughters_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22

Member Data Documentation

bool ResonanceDecayFilterHook::allNuAsEquivalent_
private

Definition at line 26 of file ResonanceDecayFilterHook.h.

std::vector<int> ResonanceDecayFilterHook::daughters_
private

Definition at line 31 of file ResonanceDecayFilterHook.h.

bool ResonanceDecayFilterHook::eMuAsEquivalent_
private

Definition at line 24 of file ResonanceDecayFilterHook.h.

bool ResonanceDecayFilterHook::eMuTauAsEquivalent_
private

Definition at line 25 of file ResonanceDecayFilterHook.h.

bool ResonanceDecayFilterHook::exclusive_
private

Definition at line 23 of file ResonanceDecayFilterHook.h.

bool ResonanceDecayFilterHook::filter_
private

Definition at line 22 of file ResonanceDecayFilterHook.h.

std::set<int> ResonanceDecayFilterHook::mothers_
private

Definition at line 30 of file ResonanceDecayFilterHook.h.

std::map<int,int> ResonanceDecayFilterHook::observedDaughters_
private

Definition at line 34 of file ResonanceDecayFilterHook.h.

std::map<int,int> ResonanceDecayFilterHook::requestedDaughters_
private

Definition at line 33 of file ResonanceDecayFilterHook.h.

bool ResonanceDecayFilterHook::udscAsEquivalent_
private

Definition at line 27 of file ResonanceDecayFilterHook.h.

bool ResonanceDecayFilterHook::udscbAsEquivalent_
private

Definition at line 28 of file ResonanceDecayFilterHook.h.

bool ResonanceDecayFilterHook::wzAsEquivalent_
private

Definition at line 29 of file ResonanceDecayFilterHook.h.