CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Static Public Member Functions
IsoDepositVetoFactory Class Reference

#include <IsoDepositVetoFactory.h>

Static Public Member Functions

static reco::isodeposit::AbsVetomake (const char *string)
 
static reco::isodeposit::AbsVetomake (const char *string, reco::isodeposit::EventDependentAbsVeto *&evdep)
 

Detailed Description

Definition at line 7 of file IsoDepositVetoFactory.h.

Member Function Documentation

reco::isodeposit::AbsVeto * IsoDepositVetoFactory::make ( const char *  string)
static

Returns a pointer to an AbsVeto defined by the string. The calling code owns the pointer, and must delete it at the end. An exception will be thrown if the resulting AbsVeto depends on the edm::Event

Definition at line 73 of file IsoDepositVetoFactory.cc.

References edm::hlt::Exception, and run_regression::ret.

Referenced by pat::helper::IsoDepositIsolator::IsoDepositIsolator(), make(), PFCandIsolatorFromDeposits::SingleDeposit::SingleDeposit(), and CandIsolatorFromDeposits::SingleDeposit::SingleDeposit().

73  {
75  std::auto_ptr<reco::isodeposit::AbsVeto> ret(make(string,evdep));
76  if (evdep != 0) {
77  throw cms::Exception("Configuration") << "The resulting AbsVeto depends on the edm::Event.\n"
78  << "Please use the two-arguments IsoDepositVetoFactory::make.\n";
79  }
80  return ret.release();
81 }
static reco::isodeposit::AbsVeto * make(const char *string)
reco::isodeposit::AbsVeto * IsoDepositVetoFactory::make ( const char *  string,
reco::isodeposit::EventDependentAbsVeto *&  evdep 
)
static

As above, but will allow also AbsVetos which depend from the edm::Event If the resulting veto is dependent on the edm::Event, the value of the second pointer will be set to non-zero Note that both pointers will point to the same object, so you have to delete it only once.

Definition at line 84 of file IsoDepositVetoFactory.cc.

References edm::hlt::Exception, first, make(), match(), run_regression::ret, AlCaHLTBitMon_QueryRunRegistry::string, and dtDQMClient_cfg::threshold.

84  {
85  using namespace reco::isodeposit;
86  static boost::regex
87  ecalSwitch("^Ecal(Barrel|Endcaps):(.*)"),
88  threshold("Threshold\\((\\d+\\.\\d+)\\)"),
89  thresholdtransverse("ThresholdFromTransverse\\((\\d+\\.\\d+)\\)"),
90  absthreshold("AbsThreshold\\((\\d+\\.\\d+)\\)"),
91  absthresholdtransverse("AbsThresholdFromTransverse\\((\\d+\\.\\d+)\\)"),
92  cone("ConeVeto\\((\\d+\\.\\d+)\\)"),
93  angleCone("AngleCone\\((\\d+\\.\\d+)\\)"),
94  angleVeto("AngleVeto\\((\\d+\\.\\d+)\\)"),
95  rectangularEtaPhiVeto("RectangularEtaPhiVeto\\(([+-]?\\d+\\.\\d+),([+-]?\\d+\\.\\d+),([+-]?\\d+\\.\\d+),([+-]?\\d+\\.\\d+)\\)"),
96  numCrystal("NumCrystalVeto\\((\\d+\\.\\d+)\\)"),
97  numCrystalEtaPhi("NumCrystalEtaPhiVeto\\((\\d+\\.\\d+),(\\d+\\.\\d+)\\)"),
98  otherCandidatesDR("OtherCandidatesByDR\\((\\w+:?\\w*:?\\w*),\\s*(\\d+\\.?|\\d*\\.\\d*)\\)"),
99  otherJetConstituentsDR("OtherJetConstituentsDeltaRVeto\\((\\w+:?\\w*:?\\w*),\\s*(\\d+\\.?|\\d*\\.\\d*),\\s*(\\w+:?\\w*:?\\w*),\\s*(\\d+\\.?|\\d*\\.\\d*)\\)"),
100  otherCand("^(.*?):(.*)"),
101  number("^(\\d+\\.?|\\d*\\.\\d*)$");
102  boost::cmatch match;
103 
104  //std::cout << "<IsoDepositVetoFactory::make>:" << std::endl;
105  //std::cout << " string = " << string << std::endl;
106 
107  evdep = 0; // by default it does not depend on this
108  if (regex_match(string, match, ecalSwitch)) {
109  return new SwitchingEcalVeto(make(match[2].first), (match[1] == "Barrel") );
110  } else if (regex_match(string, match, threshold)) {
111  return new ThresholdVeto(atof(match[1].first));
112  } else if (regex_match(string, match, thresholdtransverse)) {
113  return new ThresholdVetoFromTransverse(atof(((std::string)match[1]).c_str()));
114  } else if (regex_match(string, match, absthreshold)) {
115  return new AbsThresholdVeto(atof(match[1].first));
116  } else if (regex_match(string, match, absthresholdtransverse)) {
117  return new AbsThresholdVetoFromTransverse(atof(((std::string)match[1]).c_str()));
118  } else if (regex_match(string, match, cone)) {
119  return new ConeVeto(Direction(), atof(match[1].first));
120  } else if (regex_match(string, match, number)) {
121  return new ConeVeto(Direction(), atof(match[1].first));
122  } else if (regex_match(string, match, angleCone)) {
123  return new AngleCone(Direction(), atof(match[1].first));
124  } else if (regex_match(string, match, angleVeto)) {
125  return new AngleConeVeto(Direction(), atof(match[1].first));
126  } else if (regex_match(string, match, rectangularEtaPhiVeto)) {
127  return new RectangularEtaPhiVeto(Direction(),
128  atof(match[1].first), atof(match[2].first),
129  atof(match[3].first), atof(match[4].first));
130  } else if (regex_match(string, match, numCrystal)) {
131  return new NumCrystalVeto(Direction(), atof(match[1].first));
132  } else if (regex_match(string, match, numCrystalEtaPhi)) {
133  return new NumCrystalEtaPhiVeto(Direction(),atof(match[1].first),atof(match[2].first));
134  } else if (regex_match(string, match, otherCandidatesDR)) {
136  atof(match[2].first));
137  evdep = ret;
138  return ret;
139  } else if (regex_match(string, match, otherJetConstituentsDR)) {
141  edm::InputTag(match[1]), atof(match[2].first),
142  edm::InputTag(match[3]), atof(match[4].first));
143  evdep = ret;
144  return ret;
145  } else if (regex_match(string, match, otherCand)) {
147  make(match[2].first));
148  evdep = ret;
149  return ret;
150  } else {
151  throw cms::Exception("Not Implemented") << "Veto " << string << " not implemented yet...";
152  }
153 }
bool first
Definition: L1TdeRCT.cc:79
static reco::isodeposit::AbsVeto * make(const char *string)
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:6