ATLAS Offline Software
TrigTauCluster.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 /*******************************************************
7 
8 NAME: TrigTauCluster.cxx
9 PACKAGE: Trigger/TrigEvent/TrigCaloEvent
10 AUTHORS: Denis O. Damazio, Carlos Osuna, Xin Wu
11 
12 PURPOSE: Keep the important output variables
13  from the Calorimeter LVL2 Tau Trigger.
14  Optionally seed ID Trigger and EF.
15  Variables here should be RAW variables
16  not corrected.
17 INHERITFROM: TrigCaloCluster
18 DATE: October 17th, 2005
19 
20 ******************************************************/
21 
22 
24 #include <cmath>
25 
26 TrigTauCluster::TrigTauCluster(float energy, float eta, float phi, long roi_word) :
27  TrigCaloCluster(energy, eta, phi), m_valid(false)
28 {
29  setRoIword(roi_word);
30  m_EMenergy = 0;
31  m_HADenergy = 0;
32  m_eCalib = 0;
33  m_EMRadius2 = 0;
34  m_CaloRadius = 0;
35  m_IsoFrac = 0;
36  m_numStripCells = 0;
37  m_numTotCells = 0;
38  m_stripWidth = 0;
40  m_EMRadius3S = 0;
41  m_CoreFrac = 0;
42  m_EMFrac = 0;
43  m_HadRadius = 0;
45 }
46 
47 
49  unsigned int details_index, float energy,
50  float eta, float phi, long roi_word) :
51  TrigCaloCluster(energy, eta, phi), m_valid(false)
52 {
53  setRoIword(roi_word);
54  m_EMenergy = 0;
55  m_HADenergy = 0;
56  m_eCalib = 0;
57  m_EMRadius2 = 0;
58  m_CaloRadius = 0;
59  m_IsoFrac = 0;
60  m_numStripCells = 0;
61  m_numTotCells = 0;
62  m_stripWidth = 0;
64  m_EMRadius3S = 0;
65  m_CoreFrac = 0;
66  m_EMFrac = 0;
67  m_HadRadius = 0;
68 
70  if(details_cont != NULL && details_cont->size() > details_index)
71  {
72  m_clusterDetails.toIndexedElement(*details_cont, details_index);
74  {
76  m_valid=false;
77  }
78  }
79 }
80 
81 // Destructor
83 {
84 }
85 
86 // Copy constructor (Note that also the base class is copied)
88  m_EMenergy(ttc->EMenergy()),
89  m_HADenergy(ttc->HADenergy()),
90  m_eCalib(ttc->eCalib()),
91  m_EMRadius2(ttc->EMRadius2()),
92  m_CaloRadius(ttc->CaloRadius()),
93  m_IsoFrac(ttc->IsoFrac()),
94  m_numStripCells(ttc->numStripCells()),
95  m_numTotCells(ttc->numTotCells()),
96  m_stripWidth(ttc->stripWidth()),
97  m_stripWidthOffline(ttc->stripWidthOffline()),
98  m_EMRadius3S(ttc->EMRadius3S()),
99  m_CoreFrac(ttc->CoreFrac()),
100  m_EMFrac(ttc->EMFrac()),
101  m_HadRadius(ttc->HadRadius()),
102  m_valid(false)
103 {
104  //set ElementLink to cluster
106  {
108  }
109  else
110  {
112  }
113 }
114 
115 // Simple debug method using MsgStream
116 void TrigTauCluster::print(void) const
117 {
119  std::cout << "m_EMenergy : " << m_EMenergy << "; ";
120  std::cout << "m_HADenergy : " << m_HADenergy << "; ";
121  std::cout << "m_eCalib : " << m_eCalib << "; ";
122  std::cout << "Eta : " << eta() << "; ";
123  std::cout << "Phi : " << phi() << "; ";
124  std::cout << "m_numStripCells : " << m_numStripCells << "; ";
125  std::cout << "m_numTotCells : " << m_numTotCells << "; ";
126 /* std::cout << "m_EMenergyNarrow: ";
127  for ( int i = 0 ; i < NUMEMSAMP ; i++ )
128  std::cout << trigtauDetails->EMenergyNarrow(i) << "; ";
129  std::cout << std::endl;
130  std::cout << "m_HADenergyNarrow: ";
131  for ( int i = 0 ; i < NUMHADSAMP ; i++ )
132  std::cout << trigtauDetails->HADenergyNarrow(i) << "; ";
133  std::cout << std::endl; */
134 }
135 
136 // Simple debug method using MsgStream
137 void TrigTauCluster::print ( MsgStream& log ) const
138 {
140  log << MSG::DEBUG << "mEMenergy : " << m_EMenergy << "; ";
141  log << MSG::DEBUG << "m_HADenergy : " << m_HADenergy << "; ";
142  log << MSG::DEBUG << "m_eCalib : " << m_eCalib << "; ";
143  log << MSG::DEBUG << "Eta : " << eta() << "; ";
144  log << MSG::DEBUG << "Phi : " << phi() << "; ";
145  log << MSG::DEBUG << "m_numStripCells : " << m_numStripCells << "; ";
146  log << MSG::DEBUG << "m_numTotCells : " << m_numTotCells << "; ";
147 /* log <<MSG::DEBUG<< "m_EMenergyNarrow : ";
148  for ( int i = 0 ; i < NUMEMSAMP ; i++ )
149  log <<MSG::DEBUG<< trigtauDetails->EMenergyNarrow(i) << "; ";
150  log << endmsg;
151  log <<MSG::DEBUG<< "m_HADenergyNarrow : ";
152  for ( int i = 0 ; i < NUMHADSAMP ; i++ )
153  log <<MSG::DEBUG<< trigtauDetails->HADenergyNarrow(i) << "; ";
154  log << endmsg; */
155 }
156 
158 {
160  {
161  return (*m_clusterDetails);
162  }
163  else
164  {
165  return NULL;
166  }
167 }
168 
171 {
172  return m_clusterDetails;
173 }
174 
176 {
178 }
179 
180 
181 bool operator== (const TrigTauCluster& clus1, const TrigTauCluster& clus2 )
182 {
183  if(static_cast<const TrigCaloCluster&>(clus1) != static_cast<const TrigCaloCluster&>(clus2))
184  {
185  return false;
186  }
187 
188  double epsilon=0.001;
189  if(std::fabs(clus1.EMenergy() - clus2.EMenergy()) > epsilon) return false;
190  if(std::fabs(clus1.HADenergy() - clus2.HADenergy()) > epsilon) return false;
191  if(std::fabs(clus1.eCalib() - clus2.eCalib()) > epsilon) return false;
192  if(std::fabs(clus1.EMRadius2() - clus2.EMRadius2()) > epsilon) return false;
193  if(std::fabs(clus1.CaloRadius() - clus2.CaloRadius()) > epsilon) return false;
194  if(std::fabs(clus1.IsoFrac() - clus2.IsoFrac()) > epsilon) return false;
195  if(std::abs(clus1.numStripCells() - clus2.numStripCells()) > epsilon) return false;
196  if(std::abs(clus1.numTotCells() - clus2.numTotCells()) > epsilon) return false;
197  if(std::fabs(clus1.stripWidth() - clus2.stripWidth()) > epsilon) return false;
198  if(std::fabs(clus1.stripWidthOffline() - clus2.stripWidthOffline() ) > epsilon) return false;
199  if(std::fabs(clus1.EMRadius3S() - clus2.EMRadius3S()) > epsilon) return false;
200  if(std::fabs(clus1.CoreFrac() - clus2.CoreFrac()) > epsilon) return false;
201  if(std::fabs(clus1.EMFrac() - clus2.EMFrac()) > epsilon) return false;
202  if(std::fabs(clus1.HadRadius() - clus2.HadRadius()) > epsilon) return false;
203 
204  if(clus1.clusterDetails() != 0 && clus2.clusterDetails() != 0 && clus1.clusterDetails() != clus2.clusterDetails())
205  {
206  return false;
207  }
208 
209  return true;
210 }
211 
212 std::string str(const TrigTauCluster& tau)
213 {
214  std::stringstream stream;
215  stream << str(static_cast<const TrigCaloCluster&>(tau))
216  << "; EMenergy:" << tau.EMenergy()
217  << "; HADenergy:" << tau.HADenergy()
218  << "; eCalib:" << tau.eCalib()
219  << "; EMRadius2:" << tau.EMRadius2()
220  << "; CaloRadius:" << tau.CaloRadius()
221  << "; IsoFrac:" << tau.IsoFrac()
222  << "; numStripCells:" << tau.numStripCells()
223  << "; numTotCells:" << tau.numTotCells()
224  << "; stripWidth:" << tau.stripWidth()
225  << "; stripWidthOffline:" << tau.stripWidthOffline()
226  << "; EMRadius3S:" << tau.EMRadius3S()
227  << "; CoreFrac:" << tau.CoreFrac()
228  << "; EMFrac:" << tau.EMFrac()
229  << "; HadRadius:" << tau.HadRadius();
230  if(tau.clusterDetails() != 0)
231  {
232  stream << "; " << str(*tau.clusterDetails());
233  }
234 
235  return stream.str();
236 }
237 
238 MsgStream& operator<< (MsgStream& m, const TrigTauCluster& tau)
239 {
240  return (m << str(tau));
241 }
242 
243 
244 void diff(const TrigTauCluster& clus1, const TrigTauCluster& clus2, std::map< std::string, double >& varChange)
245 {
246  const double epsilon = 0.001;
247  diff(static_cast<const TrigCaloCluster&>(clus1), static_cast<const TrigCaloCluster&>(clus2), varChange);
248 
249  if(std::fabs(clus1.EMenergy() - clus2.EMenergy()) > epsilon)
250  {
251  varChange["EMEnergy"] = clus1.EMenergy() - clus2.EMenergy();
252  }
253  if(std::fabs(clus1.HADenergy() - clus2.HADenergy()) > epsilon)
254  {
255  varChange["HADenergy"] = clus1.HADenergy() - clus2.HADenergy();
256  }
257  if(std::fabs(clus1.eCalib() - clus2.eCalib()) > epsilon)
258  {
259  varChange["eCalib"] = clus1.eCalib() - clus2.eCalib();
260  }
261  if(std::fabs(clus1.EMRadius2() - clus2.EMRadius2()) > epsilon)
262  {
263  varChange["EMRadius2"] = clus1.EMRadius2() - clus2.EMRadius2();
264  }
265  if(std::fabs(clus1.CaloRadius() - clus2.CaloRadius()) > epsilon)
266  {
267  varChange["CaloRadius"] = clus1.CaloRadius() - clus2.CaloRadius();
268  }
269  if(std::fabs(clus1.IsoFrac() - clus2.IsoFrac()) > epsilon)
270  {
271  varChange["IsoFrac"] = clus1.IsoFrac() - clus2.IsoFrac();
272  }
273  if(std::abs(clus1.numStripCells() - clus2.numStripCells()) > epsilon)
274  {
275  varChange["numStripCells"] = clus1.numStripCells() - clus2.numStripCells();
276  }
277  if(std::abs(clus1.numTotCells() - clus2.numTotCells()) > epsilon)
278  {
279  varChange["numTotCells"] = clus1.numTotCells() - clus2.numTotCells();
280  }
281  if(std::fabs(clus1.stripWidth() - clus2.stripWidth()) > epsilon)
282  {
283  varChange["stripWidth"] = clus1.stripWidth() - clus2.stripWidth();
284  }
285  if(std::fabs(clus1.stripWidthOffline() - clus2.stripWidthOffline()) > epsilon)
286  {
287  varChange["stripWidthOffline"] = clus1.stripWidthOffline() - clus2.stripWidthOffline();
288  }
289  if(std::fabs(clus1.EMRadius3S() - clus2.EMRadius3S()) > epsilon)
290  {
291  varChange["EMRadius3S"] = clus1.EMRadius3S() - clus2.EMRadius3S();
292  }
293  if(std::fabs(clus1.CoreFrac() - clus2.CoreFrac()) > epsilon)
294  {
295  varChange["CoreFrac"] = clus1.CoreFrac() - clus2.CoreFrac();
296  }
297  if(std::fabs(clus1.EMFrac() - clus2.EMFrac()) > epsilon)
298  {
299  varChange["EMFrac"] = clus1.EMFrac() - clus2.EMFrac();
300  }
301  if(std::fabs(clus1.HadRadius() - clus2.HadRadius()) > epsilon)
302  {
303  varChange["HadRadius"] = clus1.HadRadius() - clus2.HadRadius();
304  }
305 
306  if(clus1.clusterDetails() != 0 && clus2.clusterDetails() == 0)
307  {
308  varChange["clusterDetails "] = 1;
309  }
310  else if(clus1.clusterDetails() == 0 && clus2.clusterDetails() != 0)
311  {
312  varChange["clusterDetails "] = -1;
313  }
314  else if(clus1.clusterDetails() != 0 && clus2.clusterDetails() != 0 && clus1.clusterDetails() != clus2.clusterDetails())
315  {
316  diff(clus1.clusterDetails(), clus2.clusterDetails(), varChange);
317  }
318  return;
319 }
320 // End of file TrigTauCluster.cxx
operator<<
MsgStream & operator<<(MsgStream &m, const TrigTauCluster &tau)
Helper operator for printing the object.
Definition: TrigTauCluster.cxx:238
TrigTauCluster::EMenergy
float EMenergy() const
get EM Energy
Definition: TrigTauCluster.h:108
TrigTauCluster::m_EMRadius3S
float m_EMRadius3S
EM Radius 3S.
Definition: TrigTauCluster.h:195
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
TrigTauCluster::phi
float phi() const
get Phi of the cluster
Definition: TrigTauCluster.h:118
TrigTauCluster::clusterDetails
const TrigTauClusterDetails * clusterDetails() const
accessor to TrigTauClusterDetails*
Definition: TrigTauCluster.cxx:157
TrigTauCluster::EMRadius3S
float EMRadius3S() const
get EM Radius 3S
Definition: TrigTauCluster.h:144
TrigTauCluster::IsoFrac
float IsoFrac() const
get Isolation Fraction
Definition: TrigTauCluster.h:126
TrigTauCluster::m_EMFrac
float m_EMFrac
EM Fraction.
Definition: TrigTauCluster.h:199
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
TrigTauCluster::m_stripWidth
float m_stripWidth
Width in the strip sampling.
Definition: TrigTauCluster.h:191
TrigTauCluster::m_CaloRadius
float m_CaloRadius
Total Calo Radius.
Definition: TrigTauCluster.h:183
TrigTauCluster::CaloRadius
float CaloRadius() const
get Total Calo Radius
Definition: TrigTauCluster.h:122
TrigTauCluster::m_valid
bool m_valid
Definition: TrigTauCluster.h:203
TrigTauCluster::stripWidth
float stripWidth() const
get Width in the strip sampling
Definition: TrigTauCluster.h:136
TrigTauCluster
Class with calibrated variables for tau clustering.
Definition: TrigTauCluster.h:32
AthenaPoolTestWrite.stream
string stream
Definition: AthenaPoolTestWrite.py:12
TrigCaloCluster::setRoIword
void setRoIword(long roiword)
set RoI Word
Definition: Trigger/TrigEvent/TrigCaloEvent/TrigCaloEvent/TrigCaloCluster.h:81
TrigTauCluster::m_IsoFrac
float m_IsoFrac
Isolation Fraction.
Definition: TrigTauCluster.h:185
TrigTauClusterDetailsContainer
Container from TrigTauClusterDetails type objects.
Definition: TrigTauClusterDetailsContainer.h:28
TrigTauCluster::m_EMRadius2
float m_EMRadius2
EM Radius.
Definition: TrigTauCluster.h:181
TrigTauCluster::m_eCalib
float m_eCalib
Calibrated Energy.
Definition: TrigTauCluster.h:179
diff
void diff(const TrigTauCluster &clus1, const TrigTauCluster &clus2, std::map< std::string, double > &varChange)
Comparison with feedback.
Definition: TrigTauCluster.cxx:244
TrigTauCluster.h
str
std::string str(const TrigTauCluster &tau)
Helper function for printing the object.
Definition: TrigTauCluster.cxx:212
TrigTauCluster::TrigTauCluster
TrigTauCluster(float energy=0.0, float eta=-10.0, float phi=-10.0, long roi_word=0)
Constructors, please note the default values
Definition: TrigTauCluster.cxx:26
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
TrigTauCluster::print
void print(void) const
Prints out cluster variables to std::cout
Definition: TrigTauCluster.cxx:116
TrigTauCluster::~TrigTauCluster
~TrigTauCluster()
Destructor
Definition: TrigTauCluster.cxx:82
TrigTauCluster::numTotCells
int numTotCells() const
get Number of total cells in the cluster
Definition: TrigTauCluster.h:134
TrigTauCluster::m_CoreFrac
float m_CoreFrac
Core Fraction.
Definition: TrigTauCluster.h:197
TrigCaloCluster
Base Cluster Class.
Definition: Trigger/TrigEvent/TrigCaloEvent/TrigCaloEvent/TrigCaloCluster.h:39
TrigTauCluster::setClusterDetails
void setClusterDetails(const ElementLink< TrigTauClusterDetailsContainer > &clusterDetailsLink)
Definition: TrigTauCluster.cxx:175
TrigTauCluster::m_HADenergy
float m_HADenergy
HAD Energy.
Definition: TrigTauCluster.h:177
TrigTauCluster::m_numStripCells
int m_numStripCells
Number of fired strips.
Definition: TrigTauCluster.h:187
TrigTauCluster::m_stripWidthOffline
float m_stripWidthOffline
Width calculated as in Offline tauRec.
Definition: TrigTauCluster.h:193
TrigTauCluster::EMFrac
float EMFrac() const
get EM Fraction
Definition: TrigTauCluster.h:148
TrigCaloCluster::print
void print(void) const
Prints out cluster variables to std::cout
Definition: TrigCaloCluster.cxx:57
TrigTauCluster::HadRadius
float HadRadius() const
get Hadronic Radius
Definition: TrigTauCluster.h:150
TrigTauCluster::m_HadRadius
float m_HadRadius
Hadronic Radius.
Definition: TrigTauCluster.h:201
TrigTauCluster::eta
float eta() const
get Eta of the cluster
Definition: TrigTauCluster.h:116
operator==
bool operator==(const TrigTauCluster &clus1, const TrigTauCluster &clus2)
Operator comparing two TrigTauCluster objects for equality.
Definition: TrigTauCluster.cxx:181
TrigTauCluster::eCalib
float eCalib() const
get Calibrated Energy
Definition: TrigTauCluster.h:140
TrigTauCluster::EMRadius2
float EMRadius2() const
get EM Radius
Definition: TrigTauCluster.h:120
TrigTauCluster::stripWidthOffline
float stripWidthOffline() const
get Width as in offline
Definition: TrigTauCluster.h:138
DEBUG
#define DEBUG
Definition: page_access.h:11
TrigTauCluster::HADenergy
float HADenergy() const
get HAD Energy
Definition: TrigTauCluster.h:110
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
TrigTauCluster::m_clusterDetails
ElementLink< TrigTauClusterDetailsContainer > m_clusterDetails
ElementLink to TrigTauClusterDetailsContainer.
Definition: TrigTauCluster.h:205
TrigTauClusterDetails
Definition: TrigTauClusterDetails.h:30
TrigTauCluster::numStripCells
int numStripCells() const
get Number of fired strips
Definition: TrigTauCluster.h:132
TrigTauCluster::clusterDetailsLink
const ElementLink< TrigTauClusterDetailsContainer > & clusterDetailsLink() const
Definition: TrigTauCluster.cxx:170
TrigTauCluster::CoreFrac
float CoreFrac() const
get Core Fraction
Definition: TrigTauCluster.h:146
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
TrigTauCluster::m_numTotCells
int m_numTotCells
Total number of cells in the cluster.
Definition: TrigTauCluster.h:189
TrigTauCluster::m_EMenergy
float m_EMenergy
EM Energy.
Definition: TrigTauCluster.h:175
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106