CMS 3D CMS Logo

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

#include <SubjetFilterJetProducer.h>

Inheritance diagram for SubjetFilterJetProducer:
VirtualJetProducer edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

void endJob ()
 
void inputTowers ()
 
void output (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
void runAlgorithm (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
 SubjetFilterJetProducer (const edm::ParameterSet &ps)
 
template<class T >
void writeCompoundJets (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
virtual ~SubjetFilterJetProducer ()
 
- Public Member Functions inherited from VirtualJetProducer
std::string jetType () const
 
 VirtualJetProducer (const edm::ParameterSet &iConfig)
 
virtual ~VirtualJetProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Attributes

SubjetFilterAlgorithm alg_
 
std::vector< CompoundPseudoJetfjCompoundJets_
 

Additional Inherited Members

- Public Types inherited from VirtualJetProducer
typedef boost::shared_ptr
< fastjet::GhostedAreaSpec > 
ActiveAreaSpecPtr
 
typedef boost::shared_ptr
< fastjet::AreaDefinition > 
AreaDefinitionPtr
 
typedef boost::shared_ptr
< fastjet::ClusterSequence > 
ClusterSequencePtr
 
typedef boost::shared_ptr
< fastjet::JetDefinition > 
JetDefPtr
 
typedef boost::shared_ptr
< fastjet::JetDefinition::Plugin > 
PluginPtr
 
typedef boost::shared_ptr
< fastjet::RangeDefinition > 
RangeDefPtr
 
- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from VirtualJetProducer
virtual void copyConstituents (const std::vector< fastjet::PseudoJet > &fjConstituents, reco::Jet *jet)
 
virtual std::vector
< reco::CandidatePtr
getConstituents (const std::vector< fastjet::PseudoJet > &fjConstituents)
 
virtual bool isAnomalousTower (reco::CandidatePtr input)
 
bool makeBasicJet (const JetType::Type &fTag)
 
bool makeCaloJet (const JetType::Type &fTag)
 
bool makeGenJet (const JetType::Type &fTag)
 
bool makePFClusterJet (const JetType::Type &fTag)
 
bool makePFJet (const JetType::Type &fTag)
 
virtual void makeProduces (std::string s, std::string tag="")
 
bool makeTrackJet (const JetType::Type &fTag)
 
void offsetCorrectJets (std::vector< fastjet::PseudoJet > &orphanInput)
 
template<typename T >
void writeCompoundJets (edm::Event &iEvent, edm::EventSetup const &iSetup)
 function template to write out the outputs More...
 
template<typename T >
void writeJets (edm::Event &iEvent, edm::EventSetup const &iSetup)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 
- Protected Attributes inherited from VirtualJetProducer
bool doAreaDiskApprox_
 
bool doAreaFastjet_
 
bool doFastJetNonUniform_
 
bool doPUOffsetCorr_
 
bool doPVCorrection_
 
bool doRhoFastjet_
 
ActiveAreaSpecPtr fjActiveArea_
 
AreaDefinitionPtr fjAreaDefinition_
 
ClusterSequencePtr fjClusterSeq_
 
std::vector< fastjet::PseudoJet > fjInputs_
 
JetDefPtr fjJetDefinition_
 
std::vector< fastjet::PseudoJet > fjJets_
 
PluginPtr fjPlugin_
 
RangeDefPtr fjRangeDef_
 
double inputEMin_
 
double inputEtMin_
 
std::vector< edm::Ptr
< reco::Candidate > > 
inputs_
 
std::string jetAlgorithm_
 
std::string jetCollInstanceName_
 
double jetPtMin_
 
std::string jetType_
 
JetType::Type jetTypeE
 
unsigned int maxInputs_
 
unsigned int minSeed_
 
std::string moduleLabel_
 
unsigned int nExclude_
 
std::vector< double > puCenters_
 
std::string puSubtractorName_
 
double puWidth_
 
bool restrictInputs_
 
double rParam_
 
edm::InputTag src_
 
edm::InputTag srcPVs_
 
boost::shared_ptr
< PileUpSubtractor
subtractor_
 
bool useDeterministicSeed_
 
bool useExplicitGhosts_
 
reco::Particle::Point vertex_
 
double voronoiRfact_
 
bool writeCompound_
 

Detailed Description

Definition at line 25 of file SubjetFilterJetProducer.h.

Constructor & Destructor Documentation

SubjetFilterJetProducer::SubjetFilterJetProducer ( const edm::ParameterSet ps)

Definition at line 41 of file SubjetFilterJetProducer.cc.

References VirtualJetProducer::makeProduces(), and VirtualJetProducer::moduleLabel_.

42  : VirtualJetProducer(iConfig)
43  , alg_(iConfig.getParameter<string> ("@module_label"),
44  iConfig.getParameter<string> ("jetAlgorithm"),
45  iConfig.getParameter<unsigned>("nFatMax"),
46  iConfig.getParameter<double> ("rParam"),
47  iConfig.getParameter<double> ("rFilt"),
48  iConfig.getParameter<double> ("jetPtMin"),
49  iConfig.getParameter<double> ("massDropCut"),
50  iConfig.getParameter<double> ("asymmCut"),
51  iConfig.getParameter<bool> ("asymmCutLater"),
52  iConfig.getParameter<bool> ("doAreaFastjet"),
53  iConfig.getParameter<double> ("Ghost_EtaMax"),
54  iConfig.getParameter<int> ("Active_Area_Repeats"),
55  iConfig.getParameter<double> ("GhostArea"),
56  iConfig.getUntrackedParameter<bool>("verbose",false))
57 {
58  produces<reco::BasicJetCollection>("fat");
60  makeProduces(moduleLabel_,"filter");
61 }
SubjetFilterAlgorithm alg_
virtual void makeProduces(std::string s, std::string tag="")
VirtualJetProducer(const edm::ParameterSet &iConfig)
SubjetFilterJetProducer::~SubjetFilterJetProducer ( )
virtual

Definition at line 65 of file SubjetFilterJetProducer.cc.

66 {
67 
68 }

Member Function Documentation

void SubjetFilterJetProducer::endJob ( void  )
virtual

Reimplemented from edm::EDProducer.

Definition at line 84 of file SubjetFilterJetProducer.cc.

References alg_, gather_cfg::cout, and SubjetFilterAlgorithm::summary().

85 {
86  cout<<alg_.summary()<<endl;
87 }
SubjetFilterAlgorithm alg_
tuple cout
Definition: gather_cfg.py:121
std::string summary() const
void SubjetFilterJetProducer::inputTowers ( )
virtual

Reimplemented from VirtualJetProducer.

Definition at line 99 of file SubjetFilterJetProducer.cc.

References fjCompoundJets_, and VirtualJetProducer::inputTowers().

100 {
101  fjCompoundJets_.clear();
103 }
std::vector< CompoundPseudoJet > fjCompoundJets_
virtual void inputTowers()
void SubjetFilterJetProducer::output ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Reimplemented from VirtualJetProducer.

Definition at line 107 of file SubjetFilterJetProducer.cc.

References VirtualJetProducer::JetType::BasicJet, VirtualJetProducer::JetType::CaloJet, VirtualJetProducer::JetType::GenJet, iEvent, VirtualJetProducer::jetTypeE, and VirtualJetProducer::JetType::PFJet.

109 {
110  // Write jets and constitutents. Will use fjCompoundJets_.
111  switch( jetTypeE ) {
112  case JetType::CaloJet :
113  writeCompoundJets<reco::CaloJet>( iEvent, iSetup );
114  break;
115  case JetType::PFJet :
116  writeCompoundJets<reco::PFJet>( iEvent, iSetup );
117  break;
118  case JetType::GenJet :
119  writeCompoundJets<reco::GenJet>( iEvent, iSetup );
120  break;
121  case JetType::BasicJet :
122  writeCompoundJets<reco::BasicJet>( iEvent, iSetup );
123  break;
124  default:
125  edm::LogError("InvalidInput")<<" invalid jet type in SubjetFilterJetProducer\n";
126  break;
127  };
128 
129 }
JetType::Type jetTypeE
int iEvent
Definition: GenABIO.cc:243
void SubjetFilterJetProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Reimplemented from VirtualJetProducer.

Definition at line 76 of file SubjetFilterJetProducer.cc.

References VirtualJetProducer::produce().

78 {
79  VirtualJetProducer::produce(iEvent,iSetup);
80 }
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup)
void SubjetFilterJetProducer::runAlgorithm ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements VirtualJetProducer.

Definition at line 91 of file SubjetFilterJetProducer.cc.

References alg_, fjCompoundJets_, VirtualJetProducer::fjInputs_, and SubjetFilterAlgorithm::run().

93 {
95 }
std::vector< CompoundPseudoJet > fjCompoundJets_
SubjetFilterAlgorithm alg_
void run(const std::vector< fastjet::PseudoJet > &inputs, std::vector< CompoundPseudoJet > &fatJets, const edm::EventSetup &iSetup)
std::vector< fastjet::PseudoJet > fjInputs_
template<class T >
void SubjetFilterJetProducer::writeCompoundJets ( edm::Event iEvent,
const edm::EventSetup iSetup 
)

Definition at line 134 of file SubjetFilterJetProducer.cc.

References fjCompoundJets_, VirtualJetProducer::inputs_, point, edm::Event::put(), and reco::writeSpecific().

136 {
137  auto_ptr<reco::BasicJetCollection> fatJets( new reco::BasicJetCollection() );
138  auto_ptr<vector<T> > subJets( new vector<T>() );
139  auto_ptr<vector<T> > filterJets( new vector<T>() );
140 
141  edm::OrphanHandle< vector<T> > subJetsAfterPut;
142  edm::OrphanHandle< vector<T> > filterJetsAfterPut;
143 
144  vector< vector<int> > subIndices(fjCompoundJets_.size());
145  vector< vector<int> > filterIndices(fjCompoundJets_.size());
146 
147  vector<math::XYZTLorentzVector> p4FatJets;
148  vector<double> areaFatJets;
149 
150  vector<CompoundPseudoJet>::const_iterator itBegin(fjCompoundJets_.begin());
151  vector<CompoundPseudoJet>::const_iterator itEnd(fjCompoundJets_.end());
152  vector<CompoundPseudoJet>::const_iterator it(itBegin);
153 
154  for (;it!=itEnd;++it) {
155 
156  int jetIndex = it-itBegin;
157  fastjet::PseudoJet fatJet = it->hardJet();
158  p4FatJets.push_back(math::XYZTLorentzVector(fatJet.px(),fatJet.py(),
159  fatJet.pz(),fatJet.e()));
160  areaFatJets.push_back(it->hardJetArea());
161 
162  vector<CompoundPseudoSubJet>::const_iterator itSubBegin(it->subjets().begin());
163  vector<CompoundPseudoSubJet>::const_iterator itSubEnd(it->subjets().end());
164  vector<CompoundPseudoSubJet>::const_iterator itSub(itSubBegin);
165 
166  for (; itSub!=itSubEnd;++itSub) {
167  int subJetIndex = itSub-itSubBegin;
168  fastjet::PseudoJet fjSubJet = itSub->subjet();
169  math::XYZTLorentzVector p4SubJet(fjSubJet.px(),fjSubJet.py(),
170  fjSubJet.pz(),fjSubJet.e());
172 
173  vector<reco::CandidatePtr> subJetConstituents;
174  const vector<int>& subJetConstituentIndices = itSub->constituents();
175  vector<int>::const_iterator itIndexBegin(subJetConstituentIndices.begin());
176  vector<int>::const_iterator itIndexEnd(subJetConstituentIndices.end());
177  vector<int>::const_iterator itIndex(itIndexBegin);
178  for (;itIndex!=itIndexEnd;++itIndex)
179  if ((*itIndex) < static_cast<int>(inputs_.size()))
180  subJetConstituents.push_back(inputs_[*itIndex]);
181 
182  T subJet;
183  reco::writeSpecific(subJet,p4SubJet,point,subJetConstituents,iSetup);
184  subJet.setJetArea(itSub->subjetArea());
185 
186  if (subJetIndex<2) {
187  subIndices[jetIndex].push_back(subJets->size());
188  subJets->push_back(subJet);
189  }
190  else {
191  filterIndices[jetIndex].push_back(filterJets->size());
192  filterJets->push_back(subJet);
193  }
194  }
195  }
196 
197  subJetsAfterPut = iEvent.put(subJets, "sub");
198  filterJetsAfterPut = iEvent.put(filterJets,"filter");
199 
200  vector<math::XYZTLorentzVector>::const_iterator itP4Begin(p4FatJets.begin());
201  vector<math::XYZTLorentzVector>::const_iterator itP4End(p4FatJets.end());
202  vector<math::XYZTLorentzVector>::const_iterator itP4(itP4Begin);
203  for (;itP4!=itP4End;++itP4) {
204  int fatIndex = itP4-itP4Begin;
205  vector<int>& fatToSub = subIndices[fatIndex];
206  vector<int>& fatToFilter = filterIndices[fatIndex];
207 
208  vector<reco::CandidatePtr> i_fatJetConstituents;
209 
210  vector<int>::const_iterator itSubBegin(fatToSub.begin());
211  vector<int>::const_iterator itSubEnd(fatToSub.end());
212  vector<int>::const_iterator itSub(itSubBegin);
213  for(;itSub!=itSubEnd;++itSub) {
214  reco::CandidatePtr candPtr(subJetsAfterPut,(*itSub),false);
215  i_fatJetConstituents.push_back(candPtr);
216  }
217 
218  vector<int>::const_iterator itFilterBegin(fatToFilter.begin());
219  vector<int>::const_iterator itFilterEnd(fatToFilter.end());
220  vector<int>::const_iterator itFilter(itFilterBegin);
221  for(;itFilter!=itFilterEnd;++itFilter) {
222  reco::CandidatePtr candPtr(filterJetsAfterPut,(*itFilter),false);
223  i_fatJetConstituents.push_back(candPtr);
224  }
225 
227  fatJets->push_back(reco::BasicJet((*itP4),point,i_fatJetConstituents));
228  fatJets->back().setJetArea(areaFatJets[fatIndex]);
229  }
230 
231  iEvent.put(fatJets,"fat");
232 }
std::vector< CompoundPseudoJet > fjCompoundJets_
Jets made from CaloTowers.
Definition: BasicJet.h:21
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:30
std::vector< edm::Ptr< reco::Candidate > > inputs_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
math::XYZPoint Point
point in the space
Definition: Particle.h:29
long double T
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
void writeSpecific(reco::CaloJet &jet, reco::Particle::LorentzVector const &p4, reco::Particle::Point const &point, std::vector< reco::CandidatePtr > const &constituents, edm::EventSetup const &c)
Definition: JetSpecific.cc:41
std::vector< BasicJet > BasicJetCollection
collection of BasicJet objects

Member Data Documentation

SubjetFilterAlgorithm SubjetFilterJetProducer::alg_
private

Definition at line 52 of file SubjetFilterJetProducer.h.

Referenced by endJob(), and runAlgorithm().

std::vector<CompoundPseudoJet> SubjetFilterJetProducer::fjCompoundJets_
private

Definition at line 53 of file SubjetFilterJetProducer.h.

Referenced by inputTowers(), runAlgorithm(), and writeCompoundJets().