ATLAS Offline Software
Public Member Functions | Protected Attributes | List of all members
VP1CC_LArFCAL Class Reference

#include <VP1CaloCells.h>

Inheritance diagram for VP1CC_LArFCAL:
Collaboration diagram for VP1CC_LArFCAL:

Public Member Functions

 VP1CC_LArFCAL (const CaloCell *caloCell, const VP1CC_SeparatorMap *separators)
 
virtual ~VP1CC_LArFCAL ()
 
virtual void build3DObjects (VP1CC_SoNode2CCMap *node2cc, bool useEt, const QPair< bool, double > &scale, bool outline, const VP1CC_GlobalCuts &)
 
std::vector< std::string > ToString (const CaloCell_ID *calo_id, const std::string &extrainfos="")
 
virtual void remove3DObjects (VP1CC_SoNode2CCMap *node2cc)
 
double energyToTransverse (const double &) const
 
bool cutPassed (const VP1CC_GlobalCuts &globalCuts)
 
const CaloCellgetCaloCell ()
 
Identifier getID ()
 
void updateScene (VP1CC_SoNode2CCMap *node2cc, bool useEt, const QPair< bool, double > &scale, bool outline, const VP1CC_GlobalCuts &globalCuts)
 
double cellDepth (const QPair< bool, double > &scale, const double &energy)
 
virtual bool isInsideClipVolume (const VP1CC_GlobalCuts &globalCuts)
 

Protected Attributes

SoGenericBoxm_hit
 
VP1ExtraSepLayerHelperm_helper
 
const CaloCellm_caloCell
 

Detailed Description

Definition at line 272 of file VP1CaloCells.h.

Constructor & Destructor Documentation

◆ VP1CC_LArFCAL()

VP1CC_LArFCAL::VP1CC_LArFCAL ( const CaloCell caloCell,
const VP1CC_SeparatorMap separators 
)

Definition at line 355 of file VP1CaloCells.cxx.

356  :
357  VP1CC_LAr(caloCell)
358 {
359  if(!separators)
360  throw std::runtime_error("VP1CC_LArFCAL: 0 pointer to VP1CC Separator Map");
361 
362  // define Separator type depending on Cell energy
363  VP1CC_SeparatorTypes mySeparatorType;
364 
365  if(m_caloCell->energy()<0)
366  mySeparatorType = VP1CC_SepLArFCALNeg;
367  else
368  mySeparatorType = VP1CC_SepLArFCALPos;
369 
370  VP1CC_SeparatorMap::const_iterator it = separators->find(mySeparatorType);
371  if(it ==separators->end())
372  throw std::runtime_error("VP1CC_LArFCAL: Missing separator in the map");
373 
374  m_helper = it->second;
375 
376  if(!m_helper)
377  throw std::runtime_error("VP1CC_LArFCAL: Wrong 0 pointer to the separator helper");
378 }

◆ ~VP1CC_LArFCAL()

VP1CC_LArFCAL::~VP1CC_LArFCAL ( )
virtual

Definition at line 380 of file VP1CaloCells.cxx.

381 {
382 }

Member Function Documentation

◆ build3DObjects()

void VP1CC_LArFCAL::build3DObjects ( VP1CC_SoNode2CCMap node2cc,
bool  useEt,
const QPair< bool, double > &  scale,
bool  outline,
const VP1CC_GlobalCuts globalCuts 
)
virtual

Implements VP1CaloCell.

Definition at line 414 of file VP1CaloCells.cxx.

419 {
420  bool createNewHit = false;
421  if(!m_hit) {
422  m_hit = new SoGenericBox();
423  createNewHit = true;
424  }
425 
426  // Build new Hit object
427  const CaloDetDescrElement* ddElement = m_caloCell->caloDDE();
428 
429  // auxiliary variables
430  double x = ddElement->x();
431  double dx = ddElement->dx()*0.5;
432  double y = ddElement->y();
433  double dy = ddElement->dy()*0.5;
434  double z = ddElement->z();
435  double dz = ddElement->dz()*0.5;
436  double energy = (useEt ? energyToTransverse(m_caloCell->energy()) : m_caloCell->energy());
437 
438  double halfdepth(0.5*cellDepth(scale,energy));
439  halfdepth = std::min(halfdepth, std::fabs(0.5 * (globalCuts.clipRadius - std::fabs(z))));
440  // std::cout<<"cellDepth: "<<0.5*cellDepth(scale,energy)<<"\t halfdepth: "<<halfdepth<<"\t z "<<z<<"\t dz "<<dz<<std::endl;
441  if(z>0){
442  m_hit->setParametersForBox( dx*0.9, dy*0.9, halfdepth,x,y,z-dz+halfdepth);
443  } else {
444  m_hit->setParametersForBox( dx*0.9, dy*0.9, halfdepth,x,y,z+dz-halfdepth);
445  }
446  m_hit->drawEdgeLines = outline;
447 
448  if(createNewHit) {
450  (*node2cc)[m_hit] = this;
451  }
452 }

◆ cellDepth()

double VP1CaloCell::cellDepth ( const QPair< bool, double > &  scale,
const double &  energy 
)
inlineinherited

Definition at line 189 of file VP1CaloCells.h.

190  { return std::max(1.0*Gaudi::Units::mm,scale.second*(scale.first?log(1+fabs(energy)):fabs(energy))); }

◆ cutPassed()

bool VP1CaloCell::cutPassed ( const VP1CC_GlobalCuts globalCuts)
inherited

Definition at line 63 of file VP1CaloCells.cxx.

64 {
65  // only do this if it's something significant
66  if (globalCuts.clipRadius<10e8){
67  if (!isInsideClipVolume(globalCuts)) return false;
68  // double radius = sqrt(m_caloCell->x()*m_caloCell->x() + m_caloCell->y()*m_caloCell->y() + m_caloCell->z()*m_caloCell->z());
69 
70  }
71 
72  // Check side and Eta cut
73  bool passed = (m_caloCell->eta()>=0 && globalCuts.sideA)
74  || (m_caloCell->eta()<0 && globalCuts.sideC);
75  passed = passed && globalCuts.allowedEta.contains(m_caloCell->eta());
76  if(!passed) return false;
77  // Check Phi Cut
78  passed = false;
79  for(const VP1Interval& i : globalCuts.allowedPhi){
80  if(i.contains(m_caloCell->phi())
81  ||i.contains(m_caloCell->phi()+2*M_PI)
82  ||i.contains(m_caloCell->phi()-2*M_PI)) {
83  passed = true;
84  break;
85  }
86  }
87  return passed;
88 }

◆ energyToTransverse()

double VP1CaloCell::energyToTransverse ( const double &  e) const
inherited

Definition at line 58 of file VP1CaloCells.cxx.

59 {
60  return m_caloCell->sinTh()*e;
61 }

◆ getCaloCell()

const CaloCell * VP1CaloCell::getCaloCell ( )
inherited

Definition at line 48 of file VP1CaloCells.cxx.

49 {
50  return m_caloCell;
51 }

◆ getID()

Identifier VP1CaloCell::getID ( )
inherited

Definition at line 53 of file VP1CaloCells.cxx.

54 {
55  return m_caloCell->ID();
56 }

◆ isInsideClipVolume()

bool VP1CaloCell::isInsideClipVolume ( const VP1CC_GlobalCuts globalCuts)
virtualinherited

Reimplemented in VP1CC_TileCrack, and VP1CC_TileBarEc.

Definition at line 90 of file VP1CaloCells.cxx.

90  {
91  const CaloDetDescrElement* ddElement = m_caloCell->caloDDE();
92  double radius = ddElement->r();
93  double z = ddElement->z();
94  double radialDistance = sqrt(radius*radius + z*z);
95  if (radialDistance < globalCuts.clipRadius ) return true;
96  return false;
97 }

◆ remove3DObjects()

void VP1CC_LAr::remove3DObjects ( VP1CC_SoNode2CCMap node2cc)
virtualinherited

Implements VP1CaloCell.

Definition at line 127 of file VP1CaloCells.cxx.

128 {
129  if(m_hit) {
130  node2cc->erase(m_hit);
132  m_hit = 0;
133  }
134 }

◆ ToString()

std::vector< std::string > VP1CC_LArFCAL::ToString ( const CaloCell_ID calo_id,
const std::string &  extrainfos = "" 
)
virtual

Implements VP1CaloCell.

Definition at line 384 of file VP1CaloCells.cxx.

385 {
386  std::vector<std::string> result;
387  const CaloDetDescrElement* ddElement = m_caloCell->caloDDE();
388  std::ostringstream msg, msg1, msg2, msg3;
389 
390  std::string stars("***");
391  result.push_back(stars);
392 
393  msg << "LAr FCAL. ID = " << m_caloCell->ID().getString() << " " << extrainfos;
394 
395  msg1 << " Eta = " << ddElement->eta()
396  << " Phi = " << ddElement->phi();
397 
398  msg2 << " Energy = " << m_caloCell->energy() << " (Mev)"
399  << " Gain " << m_caloCell->gain();
400 
401  msg3 << "Time = " << m_caloCell->time()
402  << " Quality = " << m_caloCell->quality()
403  << " Provenance = " << m_caloCell->provenance();
404 
405  result.push_back(msg.str());
406  result.push_back(msg1.str());
407  result.push_back(msg2.str());
408  result.push_back(msg3.str());
409 
410  result.push_back(stars);
411  return result;
412 }

◆ updateScene()

void VP1CaloCell::updateScene ( VP1CC_SoNode2CCMap node2cc,
bool  useEt,
const QPair< bool, double > &  scale,
bool  outline,
const VP1CC_GlobalCuts globalCuts 
)
inherited

Definition at line 99 of file VP1CaloCells.cxx.

104 {
105  if(cutPassed(globalCuts))
106  build3DObjects(node2cc,useEt,scale,outline, globalCuts);
107  else
108  remove3DObjects(node2cc);
109 }

Member Data Documentation

◆ m_caloCell

const CaloCell* VP1CaloCell::m_caloCell
protectedinherited

Definition at line 204 of file VP1CaloCells.h.

◆ m_helper

VP1ExtraSepLayerHelper* VP1CC_LAr::m_helper
protectedinherited

Definition at line 221 of file VP1CaloCells.h.

◆ m_hit

SoGenericBox* VP1CC_LAr::m_hit
protectedinherited

Definition at line 220 of file VP1CaloCells.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
VP1CC_GlobalCuts::allowedEta
VP1Interval allowedEta
Definition: VP1CaloCells.h:57
VP1CC_LAr::VP1CC_LAr
VP1CC_LAr(const CaloCell *caloCell)
Definition: VP1CaloCells.cxx:112
VP1CaloCell::build3DObjects
virtual void build3DObjects(VP1CC_SoNode2CCMap *node2cc, bool useEt, const QPair< bool, double > &scale, bool outline, const VP1CC_GlobalCuts &)=0
CaloCell::phi
virtual double phi() const override final
get phi (through CaloDetDescrElement)
Definition: CaloCell.h:359
VP1ExtraSepLayerHelper::removeNode
void removeNode(SoNode *)
Definition: VP1ExtraSepLayerHelper.cxx:95
get_generator_info.result
result
Definition: get_generator_info.py:21
max
#define max(a, b)
Definition: cfImp.cxx:41
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
CaloDetDescrElement::y
float y() const
cell y
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:365
VP1CC_LAr::m_hit
SoGenericBox * m_hit
Definition: VP1CaloCells.h:220
VP1CC_SepLArFCALPos
@ VP1CC_SepLArFCALPos
Definition: VP1CaloCells.h:94
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
skel.it
it
Definition: skel.GENtoEVGEN.py:396
M_PI
#define M_PI
Definition: ActiveFraction.h:11
VP1CC_GlobalCuts::allowedPhi
QList< VP1Interval > allowedPhi
Definition: VP1CaloCells.h:58
VP1CaloCell::isInsideClipVolume
virtual bool isInsideClipVolume(const VP1CC_GlobalCuts &globalCuts)
Definition: VP1CaloCells.cxx:90
CaloCell::provenance
uint16_t provenance() const
get provenance (data member)
Definition: CaloCell.h:338
CaloCell::time
float time() const
get time (data member)
Definition: CaloCell.h:352
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
x
#define x
CaloCell::energy
double energy() const
get energy (data member)
Definition: CaloCell.h:311
VP1CC_GlobalCuts::sideA
bool sideA
Definition: VP1CaloCells.h:55
CaloDetDescrElement::dz
float dz() const
cell dz
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:379
VP1CC_LAr::m_helper
VP1ExtraSepLayerHelper * m_helper
Definition: VP1CaloCells.h:221
VP1CaloCell::remove3DObjects
virtual void remove3DObjects(VP1CC_SoNode2CCMap *node2cc)=0
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
lumiFormat.i
int i
Definition: lumiFormat.py:85
z
#define z
CaloCell::caloDDE
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition: CaloCell.h:305
VP1CaloCell::energyToTransverse
double energyToTransverse(const double &) const
Definition: VP1CaloCells.cxx:58
VP1CC_SepLArFCALNeg
@ VP1CC_SepLArFCALNeg
Definition: VP1CaloCells.h:98
SoGenericBox::setParametersForBox
void setParametersForBox(float dx, float dy, float dz, float xcenter=0.0, float ycenter=0.0, float zcenter=0.0)
Definition: SoGenericBox.cxx:179
VP1CC_GlobalCuts::clipRadius
double clipRadius
Definition: VP1CaloCells.h:59
CaloCell::quality
uint16_t quality() const
get quality (data member)
Definition: CaloCell.h:332
min
#define min(a, b)
Definition: cfImp.cxx:40
VP1CaloCell::cellDepth
double cellDepth(const QPair< bool, double > &scale, const double &energy)
Definition: VP1CaloCells.h:189
VP1Interval::contains
bool contains(const double &x) const
VP1CaloCell::cutPassed
bool cutPassed(const VP1CC_GlobalCuts &globalCuts)
Definition: VP1CaloCells.cxx:63
CaloCell::gain
CaloGain::CaloGain gain() const
get gain (data member )
Definition: CaloCell.h:345
CaloCell::ID
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition: CaloCell.h:279
VP1ExtraSepLayerHelper::addNode
void addNode(SoNode *)
Definition: VP1ExtraSepLayerHelper.cxx:54
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
CaloDetDescrElement::x
float x() const
cell x
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:363
VP1CaloCell::m_caloCell
const CaloCell * m_caloCell
Definition: VP1CaloCells.h:204
SoGenericBox::drawEdgeLines
SoSFBool drawEdgeLines
Definition: SoGenericBox.h:33
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
Identifier::getString
std::string getString() const
Provide a string form of the identifier - hexadecimal.
Definition: Identifier.cxx:25
VP1Interval
Definition: VP1Interval.h:23
y
#define y
VP1CC_GlobalCuts::sideC
bool sideC
Definition: VP1CaloCells.h:56
CaloDetDescrElement::dx
float dx() const
cell dx
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:375
CaloDetDescrElement::z
float z() const
cell z
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:367
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
SoGenericBox
Definition: SoGenericBox.h:26
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
ITkPixelChargeCalibration.separators
separators
Definition: ITkPixelChargeCalibration.py:99
CaloDetDescrElement::eta
float eta() const
cell eta
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:344
CaloDetDescrElement::phi
float phi() const
cell phi
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:346
CaloDetDescrElement::r
float r() const
cell r
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:348
CaloDetDescrElement::dy
float dy() const
cell dy
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:377
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
VP1CC_SeparatorTypes
VP1CC_SeparatorTypes
Definition: VP1CaloCells.h:90
CaloCell::sinTh
virtual double sinTh() const override final
get sin(theta) (through CaloDetDescrElement)
Definition: CaloCell.h:373
CaloCell::eta
virtual double eta() const override final
get eta (through CaloDetDescrElement)
Definition: CaloCell.h:366