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