ATLAS Offline Software
Loading...
Searching...
No Matches
TrigMissingET.cxx File Reference
#include "TrigMissingEtEvent/TrigMissingET.h"
#include "TrigMissingEtEvent/TrigMissingEtComponent.h"
#include "CxxUtils/StrFormat.h"
#include "GaudiKernel/MsgStream.h"
#include <stdio.h>
#include <string.h>
Include dependency graph for TrigMissingET.cxx:

Go to the source code of this file.

Functions

bool operator== (const TrigMissingET &a, const TrigMissingET &b)
 Operator comparing two objects for equality.
std::string str (const TrigMissingET &a)
 conversion to formatted string: multi-line!
MsgStream & operator<< (MsgStream &m, const TrigMissingET &d)
void diff (const TrigMissingET &a, const TrigMissingET &b, std::map< std::string, double > &variableChange)
 Comparison with feedback.

Function Documentation

◆ diff()

void diff ( const TrigMissingET & a,
const TrigMissingET & b,
std::map< std::string, double > & variableChange )

Comparison with feedback.

Definition at line 335 of file TrigMissingET.cxx.

336 {
337
338 const double DELTA=1e-3; // distance used to compare floats
339
340 int Na = a.getNumOfComponents();
341 int Nb = b.getNumOfComponents();
342 if( Na != Nb )
343 variableChange[ "NumOfComponents" ] = Na - Nb;
344
345 unsigned aFlag = (unsigned) a.getFlag();
346 unsigned bFlag = (unsigned) b.getFlag();
347 if( aFlag != bFlag )
348 variableChange[ "FlagsXOR" ] = aFlag ^ bFlag;
349
350 unsigned long aRoI = (unsigned long) a.RoIword();
351 unsigned long bRoI = (unsigned long) b.RoIword();
352 if( aRoI != bRoI )
353 variableChange[ "RoIwordsXOR" ] = aRoI ^ bRoI;
354
355 float aEx = a.ex();
356 float bEx = b.ex();
357 if( fabsf(aEx - bEx) > DELTA )
358 variableChange[ "Ex" ] = aEx - bEx;
359
360 float aEy = a.ey();
361 float bEy = b.ey();
362 if( fabsf(aEy - bEy) > DELTA )
363 variableChange[ "Ey" ] = aEy - bEy;
364
365 float aEz = a.ez();
366 float bEz = b.ez();
367 if( fabsf(aEz - bEz) > DELTA )
368 variableChange[ "Ez" ] = aEz - bEz;
369
370 float aSumEt = a.sumEt();
371 float bSumEt = b.sumEt();
372 if( fabsf(aSumEt - bSumEt) > DELTA )
373 variableChange[ "sumEt" ] = aSumEt - bSumEt;
374
375 float aSumE = a.sumE();
376 float bSumE = b.sumE();
377 if( fabsf(aSumE - bSumE) > DELTA )
378 variableChange[ "sumE" ] = aSumE - bSumE;
379
380 for (unsigned u=0; u<a.getNumOfComponents(); ++u) {
381 std::string num = CxxUtils::strformat("%02u", u);
382 std::string key;
383
384 if( a.getNameOfComponent(u) != b.getNameOfComponent(u) ) {
385 key="CompNameStrCmp"; key+=num;
386 variableChange[ key.c_str() ] =
387 strcmp(a.getNameOfComponent(u).c_str(),
388 b.getNameOfComponent(u).c_str());
389 }
390
391 unsigned aFlag = (unsigned) a.getStatus(u);
392 unsigned bFlag = (unsigned) b.getStatus(u);
393 if( aFlag != bFlag ) {
394 key="CompStatusXOR"; key+=num;
395 variableChange[ key.c_str() ] = aFlag ^ bFlag;
396 }
397
398 int aSigns = a.getSumOfSigns(u);
399 int bSigns = b.getSumOfSigns(u);
400 if( aSigns != bSigns ) {
401 key="CompSumSigns"; key+=num;
402 variableChange[ key.c_str() ] = aSigns - bSigns;
403 }
404
405 int aChans = a.getUsedChannels(u);
406 int bChans = b.getUsedChannels(u);
407 if( aChans != bChans ) {
408 key="CompUsedChans"; key+=num;
409 variableChange[ key.c_str() ] = aChans - bChans;
410 }
411
412 float aEx = a.getExComponent(u);
413 float bEx = b.getExComponent(u);
414 if( fabsf(aEx - bEx) > DELTA ) {
415 key="CompEx"; key+=num;
416 variableChange[ key.c_str() ] = aEx - bEx;
417 }
418
419 float aEy = a.getEyComponent(u);
420 float bEy = b.getEyComponent(u);
421 if( fabsf(aEy - bEy) > DELTA ) {
422 key="CompEy"; key+=num;
423 variableChange[ key.c_str() ] = aEy - bEy;
424 }
425
426 float aEz = a.getEzComponent(u);
427 float bEz = b.getEzComponent(u);
428 if( fabsf(aEz - bEz) > DELTA ) {
429 key="CompEz"; key+=num;
430 variableChange[ key.c_str() ] = aEz - bEz;
431 }
432
433 float aSumEt = a.getSumEtComponent(u);
434 float bSumEt = b.getSumEtComponent(u);
435 if( fabsf(aSumEt - bSumEt) > DELTA ) {
436 key="CompSumEt"; key+=num;
437 variableChange[ key.c_str() ] = aSumEt - bSumEt;
438 }
439
440 float aSumE = a.getSumEComponent(u);
441 float bSumE = b.getSumEComponent(u);
442 if( fabsf(aSumE - bSumE) > DELTA ) {
443 key="CompSumE"; key+=num;
444 variableChange[ key.c_str() ] = aSumE - bSumE;
445 }
446
447 float aCalib0 = a.getComponentCalib0(u);
448 float bCalib0 = b.getComponentCalib0(u);
449 if( fabsf(aCalib0 - bCalib0) > DELTA ) {
450 key="CompCalib0_"; key+=num;
451 variableChange[ key.c_str() ] = aCalib0 - bCalib0;
452 }
453
454 float aCalib1 = a.getComponentCalib1(u);
455 float bCalib1 = b.getComponentCalib1(u);
456 if( fabsf(aCalib1 - bCalib1) > DELTA ) {
457 key="CompCalib1_"; key+=num;
458 variableChange[ key.c_str() ] = aCalib1 - bCalib1;
459 }
460 }
461
462 return;
463}
static const double DELTA
static Double_t a
std::string strformat(const char *fmt,...)
return a std::string according to a format fmt and varargs
Definition StrFormat.cxx:49
@ u
Enums for curvilinear frames.
Definition ParamDefs.h:77

◆ operator<<()

MsgStream & operator<< ( MsgStream & m,
const TrigMissingET & d )

Definition at line 329 of file TrigMissingET.cxx.

329 {
330 return ( m << str( d ) );
331}

◆ operator==()

bool operator== ( const TrigMissingET & a,
const TrigMissingET & b )

Operator comparing two objects for equality.

Definition at line 234 of file TrigMissingET.cxx.

234 {
235
236 const double DELTA=1e-3; // distance used to compare floats
237
238 if( a.getNumOfComponents() != b.getNumOfComponents() )
239 return false;
240 if( a.getFlag() != b.getFlag() )
241 return false;
242 if( a.RoIword() != b.RoIword() )
243 return false;
244
245 if( fabsf(a.ex() - b.ex()) > DELTA )
246 return false;
247 if( fabsf(a.ey() - b.ey()) > DELTA )
248 return false;
249 if( fabsf(a.ez() - b.ez()) > DELTA )
250 return false;
251 if( fabsf(a.sumEt() - b.sumEt()) > DELTA )
252 return false;
253 if( fabsf(a.sumE() - b.sumE()) > DELTA )
254 return false;
255
256 for (unsigned u=0; u<a.getNumOfComponents(); ++u) {
257 if( a.getNameOfComponent(u) != b.getNameOfComponent(u) )
258 return false;
259 if( a.getStatus(u) != b.getStatus(u) )
260 return false;
261 if( a.getSumOfSigns(u) != b.getSumOfSigns(u) )
262 return false;
263 if( a.getUsedChannels(u) != b.getUsedChannels(u) )
264 return false;
265 if( fabsf(a.getExComponent(u) - b.getExComponent(u)) > DELTA )
266 return false;
267 if( fabsf(a.getEyComponent(u) - b.getEyComponent(u)) > DELTA )
268 return false;
269 if( fabsf(a.getEzComponent(u) - b.getEzComponent(u)) > DELTA )
270 return false;
271 if( fabsf(a.getSumEtComponent(u) - b.getSumEtComponent(u)) > DELTA )
272 return false;
273 if( fabsf(a.getSumEComponent(u) - b.getSumEComponent(u)) > DELTA )
274 return false;
275 if( fabsf(a.getComponentCalib0(u) - b.getComponentCalib0(u)) > DELTA )
276 return false;
277 if( fabsf(a.getComponentCalib1(u) - b.getComponentCalib1(u)) > DELTA )
278 return false;
279 }
280
281 return true;
282}

◆ str()

std::string str ( const TrigMissingET & a)

conversion to formatted string: multi-line!

Definition at line 285 of file TrigMissingET.cxx.

285 {
286 std::string s="";
287
289
290 s += strformat("MEx = %10.2f MeV\n", a.ex());
291 s += strformat("MEy = %10.2f MeV\n", a.ey());
292 s += strformat("MEz = %10.2f MeV\n", a.ez());
293
294 float et = std::sqrt(a.ex()*a.ex()+a.ey()*a.ey());
295 s += strformat("MEt = %10.2f MeV\n", et);
296 s += strformat("SumEt = %10.2f MeV\n", a.sumEt());
297 s += strformat("SumE = %10.2f MeV\n", a.sumE());
298
299 s += strformat("Event status = 0x%08x\n", (unsigned)a.getFlag());
300 unsigned int N = a.getNumOfComponents();
301 s += strformat("Auxiliary components = %4u\n", N);
302
303 if (N==0) return s; // basic info only
304
305 // header
306 s += "__name_____status__usedCh.__sumOfSigns__calib1_calib0";
307 s += "/MeV___Ex/MeV_____Ey/MeV_____Ez/MeV___SumE/MeV__SumEt/MeV\n";
308
309 for (unsigned int i=0; i<N; ++i){
310 s += strformat(
311 "%10s 0x%04x %8d %11d %7.2f %8.2f %10.2f %10.2f %10.2f %10.2f %10.2f\n",
312 a.getNameOfComponent(i).c_str(),
313 (unsigned)a.getStatus(i),
314 a.getUsedChannels(i),
315 a.getSumOfSigns(i),
316 a.getComponentCalib1(i),
317 a.getComponentCalib0(i),
318 a.getExComponent(i),
319 a.getEyComponent(i),
320 a.getEzComponent(i),
321 a.getSumEComponent(i),
322 a.getSumEtComponent(i));
323 }
324
325 return s;
326}
std::string strformat(const char *fmt,...)
return a std::string according to a format fmt and varargs
Definition StrFormat.cxx:49
Extra patterns decribing particle interation process.