CMS 3D CMS Logo

CaloTowerFromL1TSeededCreatorForTauHLT.cc
Go to the documentation of this file.
1 // makes CaloTowerCandidates from CaloTowers
2 // original author: L.Lista INFN, modifyed by: F.Ratnikov UMd
3 // Author for regionality A. Nikitenko
4 // Modified by S. Gennai + T. Strebler
5 
13 // Math
14 #include "Math/GenVector/VectorUtil.h"
15 #include <cmath>
16 
17 using namespace edm ;
18 using namespace reco;
19 using namespace std ;
20 
22  :
23  m_verbose (p.getUntrackedParameter<int> ("verbose" , 0) ),
24  m_towers_token (consumes<CaloTowerCollection> (p.getParameter<InputTag> ("towers" ))),
25  m_cone (p.getParameter<double> ("UseTowersInCone" ) ),
26  m_tauTrigger_token (consumes<trigger::TriggerFilterObjectWithRefs> (p.getParameter<InputTag> ("TauTrigger" ))),
27  m_EtThreshold (p.getParameter<double> ("minimumEt" ) ),
28  m_EThreshold (p.getParameter<double> ("minimumE" ) )
29 {
30  produces<CaloTowerCollection>();
31 }
32 
34 
37  evt.getByToken( m_towers_token, caloTowers );
38 
39  double m_cone2 = m_cone*m_cone;
40 
41  // L1 seeds
43  evt.getByToken( m_tauTrigger_token, l1TriggeredTaus );
44 
45  auto cands = std::make_unique<CaloTowerCollection>();
46  cands->reserve( caloTowers->size() );
47 
48  l1t::TauVectorRef tauCandRefVec;
49  l1TriggeredTaus->getObjects( trigger::TriggerL1Tau,tauCandRefVec);
50 
51  for(auto const& tauCandRef: tauCandRefVec){
52 
53  for(auto const& cal: *caloTowers ){
54 
55  bool isAccepted = false;
56  if (m_verbose == 2) {
57  edm::LogInfo("JetDebugInfo") << "CaloTowerFromL1TSeededCreatorForTauHLT::produce-> tower et/eta/phi/e: "
58  << cal.et() << '/'
59  << cal.eta() << '/'
60  << cal.phi() << '/'
61  << cal.energy()
62  << " is...";
63  }
64  if (cal.et() >= m_EtThreshold && cal.energy() >= m_EThreshold ) {
65  math::PtEtaPhiELorentzVector p( cal.et(), cal.eta(), cal.phi(), cal.energy() );
66  double delta2 = deltaR2((tauCandRef->p4()).Vect(), p);
67  if(delta2 < m_cone2) {
68  isAccepted = true;
69  cands->push_back( cal );
70  }
71  }
72 
73  if (m_verbose == 2){
74  if (isAccepted) edm::LogInfo("JetDebugInfo") << "accepted \n";
75  else edm::LogInfo("JetDebugInfo") << "rejected \n";
76  }
77 
78  }
79 
80  }
81 
82  evt.put(std::move(cands));
83 
84 }
85 
87 
89 
90  aDesc.add<edm::InputTag>("TauTrigger" , edm::InputTag("hltL1sDoubleIsoTau40er"))->setComment("Name of trigger filter for L1 seeds" );
91  aDesc.add<edm::InputTag>("towers" , edm::InputTag("towerMaker" ))->setComment("Input tower collection" );
92  aDesc.add<double> ("UseTowersInCone", 0.8 )->setComment("Radius of cone around seed" );
93  aDesc.add<double> ("minimumE" , 0.8 )->setComment("Minimum tower energy" );
94  aDesc.add<double> ("minimumEt" , 0.5 )->setComment("Minimum tower ET" );
95  aDesc.addUntracked<int> ("verbose" , 0 )->setComment("Verbosity level; 0=silent" );
96 
97  desc.add ("CaloTowerFromL1TSeededCreatorForTauHLT", aDesc);
98  desc.setComment ("Produce tower collection around L1 particle seed.");
99 
100 }
const edm::EDGetTokenT< CaloTowerCollection > m_towers_token
label of source collection
void produce(edm::StreamID sid, edm::Event &evt, const edm::EventSetup &stp) const override
process one event
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:137
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
const double m_cone
use only towers in cone mCone around L1 candidate for regional jet reco
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
static void fillDescriptions(edm::ConfigurationDescriptions &desc)
CaloTowerFromL1TSeededCreatorForTauHLT(const edm::ParameterSet &)
constructor from parameter set
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void setComment(std::string const &value)
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
PtEtaPhiELorentzVectorD PtEtaPhiELorentzVector
Lorentz vector with cartesian internal representation.
Definition: LorentzVector.h:27
const edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > m_tauTrigger_token
label of tau trigger type analysis
void add(std::string const &label, ParameterSetDescription const &psetDescription)
fixed size matrix
HLT enums.
size_type size() const
std::vector< TauRef > TauVectorRef
Definition: Tau.h:15
def move(src, dest)
Definition: eostools.py:511