ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
InDet::TRT_SeededSpacePointFinder_ATL Class Reference

#include <TRT_SeededSpacePointFinder_ATL.h>

Inheritance diagram for InDet::TRT_SeededSpacePointFinder_ATL:
Collaboration diagram for InDet::TRT_SeededSpacePointFinder_ATL:

Classes

struct  bypass_struct
 
class  EventData
 
struct  invar_bypass_struct
 

Public Member Functions

 TRT_SeededSpacePointFinder_ATL (const std::string &, const std::string &, const IInterface *)
 Standard tool methods
More...
 
virtual ~TRT_SeededSpacePointFinder_ATL ()
 
virtual StatusCode initialize ()
 
virtual StatusCode finalize ()
 
std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventDatanewEvent () const
 Method to initialize tool for new event
More...
 
std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventDatanewRegion (const std::vector< IdentifierHash > &, const std::vector< IdentifierHash > &) const
 
std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > find2Sp (const EventContext &ctx, const Trk::TrackParameters &, ITRT_SeededSpacePointFinder::IEventData &event_data) const
 Main method of seed production
More...
 
const SiSpacePointsSeednext (ITRT_SeededSpacePointFinder::IEventData &event_data) const
 Iterator through seed collection.Not used in this implementation. More...
 
MsgStream & dump (MsgStream &out) const
 Print internal tool parameters and status
More...
 
std::ostream & dump (std::ostream &out) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

MsgStream & dumpConditions (MsgStream &out) const
 Protected methods
More...
 
MsgStream & dumpEvent (MsgStream &out, InDet::TRT_SeededSpacePointFinder_ATL::EventData &event_data) const
 
void fillLists (std::vector< std::vector< const Trk::SpacePoint * > > &r_Sorted, InDet::TRT_SeededSpacePointFinder_ATL::EventData &event_data) const
 Fill the space point container lists at beginning of each event. More...
 
void production2Spb (const EventContext &ctx, const Trk::TrackParameters &, int, std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > &outputListBuffer, InDet::TRT_SeededSpacePointFinder_ATL::EventData &event_data) const
 Form possible space point combinations within allowed radial and pseudorapidity ranges. More...
 
void geoInfo (const Trk::SpacePoint *, int &, int &) const
 Obtain geo model info for a specific space point
More...
 
void magneticFieldInit ()
 Get magnetic field properties
More...
 
bool cutTPb (const invar_bypass_struct &invar_bypass, const std::vector< bypass_struct > &prod_bypass, long, long, double) const
 Cut on chi2 based on TRT segment qOverP, theta and phi track parameters. More...
 
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Protected Attributes

StringProperty m_fieldmode
 Protected data and methods
More...
 
Trk::MagneticFieldProperties m_fieldprop
 
const SCT_IDm_sctId = nullptr
 Magnetic field properties
More...
 
DoubleProperty m_ptmin {this, "pTmin", 500., "Minimum pT cut"}
 Seed selection criteria
More...
 
DoubleProperty m_xiC {this, "Xi2C", 100., "qOverP based chi2 cut"}
 Max R-z direction cut
More...
 
DoubleProperty m_xiTC {this, "Xi2TC", 100., "theta based chi2 cut"}
 
DoubleProperty m_xiFC {this, "Xi2FC", 100., "phi based chi2 cut"}
 
BooleanProperty m_search {this, "NeighborSearch", true, "Do full neighbor search"}
 
BooleanProperty m_loadFull
 
BooleanProperty m_doCosmics
 
SG::ReadHandleKey< SpacePointContainerm_spacepointsPixname {this,"SpacePointsPixelName","PixelSpacePoints","RHK to retrieve Pixel SpacePointContainer"}
 Space points containers
More...
 
SG::ReadHandleKey< SpacePointContainerm_spacepointsSCTname {this,"SpacePointsSCTName","SCT_SpacePoints","RHK to retrieve SCT SpacePointContainer"}
 
SG::ReadHandleKey< SpacePointOverlapCollectionm_spacepointsOverlapname {this,"SpacePointsOverlapName","OverlapSpacePoints","RHK to retrieve OverlapCollection"}
 
SG::ReadHandleKey< Trk::PRDtoTrackMapm_prdToTrackMap {this,"PRDtoTrackMap",""}
 
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCondObjInputKey
 

Static Protected Attributes

static constexpr double m_r_rmin = 0.
 
static constexpr double m_r_rmax = 600.
 Minimum SCT radius to be searched
More...
 
static constexpr double m_r_rstep = 10.
 Maximum STC radius to be searched
More...
 
static constexpr double m_r1max = 560.
 Step size for space point storage
More...
 
static constexpr double m_r12min = 400.
 Max radius of last SCT layer
More...
 
static constexpr double m_r2min = 340.
 Min radius of last SCT layer
More...
 
static constexpr double m_dzdrmin = -4.
 Min radius to search for SP pairs
More...
 
static constexpr double m_dzdrmax = 4.
 Min R-z direction cut
More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

InDet::TRT_SeededSpacePointFinderATL is a tool which produces Si track seeds using pairs of space points in the last 3 layers of the SCT.

Author
Thoma.nosp@m.s.Ko.nosp@m.ffas@.nosp@m.cern.nosp@m..ch

Definition at line 66 of file TRT_SeededSpacePointFinder_ATL.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TRT_SeededSpacePointFinder_ATL()

InDet::TRT_SeededSpacePointFinder_ATL::TRT_SeededSpacePointFinder_ATL ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Standard tool methods

Definition at line 43 of file TRT_SeededSpacePointFinder_ATL.cxx.

45  : AthAlgTool(t,n,p)
46 {
47  declareInterface<ITRT_SeededSpacePointFinder>(this);
48 }

◆ ~TRT_SeededSpacePointFinder_ATL()

InDet::TRT_SeededSpacePointFinder_ATL::~TRT_SeededSpacePointFinder_ATL ( )
virtualdefault

Member Function Documentation

◆ cutTPb()

bool InDet::TRT_SeededSpacePointFinder_ATL::cutTPb ( const invar_bypass_struct invar_bypass,
const std::vector< bypass_struct > &  prod_bypass,
long  bSP1,
long  bSP2,
double  H 
) const
protected

Cut on chi2 based on TRT segment qOverP, theta and phi track parameters.

Definition at line 891 of file TRT_SeededSpacePointFinder_ATL.cxx.

894 {
895 
896  double inv_r2 = tmp_prod_bypass[bSP2].invR;
897  double inv_r1 = tmp_prod_bypass[bSP1].invR; // == u1 in original cutTP
898  double r1 = tmp_prod_bypass[bSP1].R;
899 
900  double inv_rr2 = inv_r2*inv_r2;
901  double x2 = tmp_prod_bypass[bSP2].X;
902  double y2 = tmp_prod_bypass[bSP2].Y;
903  double a1 = tmp_prod_bypass[bSP1].a;
904  double b1 = tmp_prod_bypass[bSP1].b;
905 
906  double u2 = (a1*x2 + b1*y2)*inv_rr2;
907  double v2 = (a1*y2 - b1*x2)*inv_rr2;
908 
909  double A = v2/(u2 - inv_r1);
910  double B = 2.0*(v2 - A*u2);
911  double CC = B*B/(1.0 + A*A);
912  double rcrc = CC*r1*r1;
913  double z1 = tmp_prod_bypass[bSP1].Z;
914  double T = -z1/(r1*(1.0 + 0.04*rcrc));
915 
916  if(H==0.) return false;
917 
918  double invpSignature = B*H;
919 
920  double invP2 = CC/(0.03*0.03*H*H*(1.0 + T*T));
921 
922  if (invpSignature >= 0 && invP2*0.9*0.9*m_ptmin*m_ptmin > 1.0) {
923  return false;
924  }
925 
926  double invp_min = tmp_invar_bypass.invp_min;
927  double invp_max = tmp_invar_bypass.invp_max;
928 
929  double invp_min2 = tmp_invar_bypass.invp_min2;
930  double invp_max2 = tmp_invar_bypass.invp_max2;
931 
932  if (invp_min >= 0) {
933  if (invpSignature < 0 || invP2 < invp_min2) {
934  return false;
935  }
936  }
937  else {
938  if (invpSignature < 0 && invP2 > invp_min2) {
939  return false;
940  }
941  }
942  if (invp_max >= 0) {
943  if (invpSignature >= 0 && invP2 > invp_max2) {
944  return false;
945  }
946  }
947  else {
948  if (invpSignature >= 0 || invP2 < invp_max2) {
949  return false;
950  }
951  }
952 
953  //Estimate the seed polar angle. Make a chi2 cut based on that suggested by the TRT segment
954 
955  double theta_rating = rotrating(1.0, T);
956  double tmin = tmp_invar_bypass.min_theta;
957  double tmax = tmp_invar_bypass.max_theta;
958 
959  if (tmin > tmax) {
960 #ifndef ANGLE_DISCO_COMPAT
961  // correct math but incompatible with old version
962  if (theta_rating >= 0) {
963  tmax += 4.0;
964  }
965  else {
966  tmin -= 4.0;
967  }
968 #else
969  // compatibility mode
970  if (tmin + tmax <= 0) {
971  // center in "+" (YES, "+") range; any negative theta_rating => false
972  tmax = 2.0; // forcing range into all positive
973  }
974  else {
975  // center in "-" (YES, "-") range; any positive theta_rating => false
976  tmin = -2.0; // forcing range into all negative
977  }
978 #endif
979  }
980 
981  if (theta_rating < tmin || theta_rating > tmax) {
982  return false;
983  }
984 
985  double phi_rating = rotrating(-(b1 + a1*A), -(a1 - b1*A));
986  double pmin = tmp_invar_bypass.min_phi;
987  double pmax = tmp_invar_bypass.max_phi;
988 
989  if (pmin > pmax) {
990 #ifndef ANGLE_DISCO_COMPAT
991  // correct math but incompatible with old version
992  if (phi_rating >= 0) {
993  pmax += 4.0;
994  }
995  else {
996  pmin -= 4.0;
997  }
998 #else
999  // compatibility mode
1000  if (pmin + pmax <= 0) {
1001  // center in "+" (YES, "+") range; any negative phi_rating => false
1002  pmax = 2.0; // forcing range into all positive
1003  }
1004  else {
1005  // center in "-" (YES, "-") range; any positive phi_rating => false
1006  pmin = -2.0; // forcing range into all negative
1007  }
1008 #endif
1009  }
1010 
1011  return phi_rating >= pmin && phi_rating <= pmax;
1012 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ dump() [1/2]

MsgStream & InDet::TRT_SeededSpacePointFinder_ATL::dump ( MsgStream &  out) const
virtual

Print internal tool parameters and status

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 482 of file TRT_SeededSpacePointFinder_ATL.cxx.

483 {
484  return dumpConditions(out);
485 }

◆ dump() [2/2]

std::ostream & InDet::TRT_SeededSpacePointFinder_ATL::dump ( std::ostream &  out) const
virtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 487 of file TRT_SeededSpacePointFinder_ATL.cxx.

488 {
489  return out;
490 }

◆ dumpConditions()

MsgStream & InDet::TRT_SeededSpacePointFinder_ATL::dumpConditions ( MsgStream &  out) const
protected

Protected methods

Definition at line 346 of file TRT_SeededSpacePointFinder_ATL.cxx.

347 {
348  int n = 42-m_fieldCondObjInputKey.key().size();
349  std::string s1; for(int i=0; i<n; ++i) s1.append(" "); s1.append("|");
350  n = 42-m_spacepointsSCTname.key().size();
351  std::string s3; for(int i=0; i<n; ++i) s3.append(" "); s3.append("|");
352  n = 42-m_spacepointsOverlapname.key().size();
353  std::string s4; for(int i=0; i<n; ++i) s4.append(" "); s4.append("|");
354 
355  std::string fieldmode[9] ={"NoField" ,"ConstantField","SolenoidalField",
356  "ToroidalField" ,"Grid3DField" ,"RealisticField" ,
357  "UndefinedField","AthenaField" , "?????" };
358 
360  if(mode<0 || mode>8 ) mode = 8;
361 
362  n = 62-fieldmode[mode].size();
363  std::string s5; for(int i=0; i<n; ++i) s5.append(" "); s5.append("|");
364 
365  out<<"|---------------------------------------------------------------------|"
366  <<std::endl;
367  out<<"| Key of magentic field condition Object | "<<m_fieldCondObjInputKey.key()<<s1
368  <<std::endl;
369  out<<"| SCT space points | "<<m_spacepointsSCTname.key()<<s3
370  <<std::endl;
371  out<<"| Overlap space points | "<<m_spacepointsOverlapname.key()<<s4
372  <<std::endl;
373  out<<"| Magnetic field mode | "<<fieldmode[mode]<<s5
374  <<std::endl;
375  out<<"| pTmin (mev) | "
376  <<std::setw(12)<<std::setprecision(5)<<m_ptmin
377  <<" |"<<std::endl;
378  out<<"| max radius SP | "
379  <<std::setw(12)<<std::setprecision(5)<<m_r_rmax
380  <<" |"<<std::endl;
381  out<<"| radius step | "
382  <<std::setw(12)<<std::setprecision(5)<<m_r_rstep
383  <<" |"<<std::endl;
384  out<<"| min radius second SP(3) | "
385  <<std::setw(12)<<std::setprecision(5)<<m_r2min
386  <<" |"<<std::endl;
387  out<<"| min radius first SP(3) | "
388  <<std::setw(12)<<std::setprecision(5)<<m_r12min
389  <<" |"<<std::endl;
390  out<<"| max radius first SP(3) | "
391  <<std::setw(12)<<std::setprecision(4)<<m_r1max
392  <<" |"<<std::endl;
393  out<<"| min seeds dZ/dR | "
394  <<std::setw(12)<<std::setprecision(5)<<m_dzdrmin
395  <<" |"<<std::endl;
396  out<<"| max seeds dZ/dR | "
397  <<std::setw(12)<<std::setprecision(5)<<m_dzdrmax
398  <<" |"<<std::endl;
399  out<<"| momentum chi2 cut | "
400  <<std::setw(12)<<std::setprecision(5)<<m_xiC
401  <<" |"<<std::endl;
402  out<<"| polar angle chi2 cut | "
403  <<std::setw(12)<<std::setprecision(5)<<m_xiTC
404  <<" |"<<std::endl;
405  out<<"| azimuthal angle chi2 cut | "
406  <<std::setw(12)<<std::setprecision(5)<<m_xiFC
407  <<" |"<<std::endl;
408  out<<"|---------------------------------------------------------------------|"
409  <<std::endl;
410  return out;
411 }

◆ dumpEvent()

MsgStream & InDet::TRT_SeededSpacePointFinder_ATL::dumpEvent ( MsgStream &  out,
InDet::TRT_SeededSpacePointFinder_ATL::EventData event_data 
) const
protected

Definition at line 436 of file TRT_SeededSpacePointFinder_ATL.cxx.

437 {
438  const double pi2 = 2.*M_PI;
439  out<<"|---------------------------------------------------------------------|"
440  <<"\n";
441  out<<"| m_ns | "
442  <<std::setw(12)<<event_data.m_ns
443  <<" |"<<"\n";
444  out<<"|---------------------------------------------------------------------|"
445  <<"\n";
446 
447  if(msgLvl(MSG::DEBUG)) return out;
448 
449  out<<"|-------------|--------|-------|-------|-------|-------|-------|";
450  out<<"-------|-------|-------|-------|-------|-------|"
451  <<"\n";
452 
453  out<<"| Azimuthal | n | z[ 0] | z[ 1] | z[ 2] | z[ 3] | z[4] |";
454  out<<" z[ 5] | z[ 6] | z[ 7] | z[ 8] | z[ 9] | z[10] |"
455  <<"\n";
456  out<<"|-------------|--------|-------|-------|-------|-------|-------|";
457  out<<"-------|-------|-------|-------|-------|-------|"
458  <<"\n";
459 
460  double sF1 = pi2/double(event_data.m_fNmax+1);
461 
462  //StreamState restore_precision(out);
463  auto prec(out.precision());
464  for(int f=0; f<=event_data.m_fNmax; ++f) {
465  out<<"| "
466  <<std::setw(10)<<std::setprecision(4)<<sF1*double(f)<<" | "
467  <<std::setw(6)<<event_data.m_rf_map[f]<<" |";
468  out<<"\n";
469  }
470  out<<"|-------------|--------|-------|-------|-------|-------|-------|";
471  out<<"-------|-------|-------|-------|-------|-------|"
472  <<"\n";
473  out<<endmsg;
474  out.precision(prec);
475  return out;
476 }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ fillLists()

void InDet::TRT_SeededSpacePointFinder_ATL::fillLists ( std::vector< std::vector< const Trk::SpacePoint * > > &  r_Sorted,
InDet::TRT_SeededSpacePointFinder_ATL::EventData event_data 
) const
protected

Fill the space point container lists at beginning of each event.

Definition at line 523 of file TRT_SeededSpacePointFinder_ATL.cxx.

525 {
526  assert( static_cast<size_t>(event_data.m_r_size) == r_Sorted.size());
527  const double pi2 = 2.*M_PI;
528 
529  for(int i=0; i!= event_data.m_r_size; ++i) {
530  if(!event_data.m_r_map[i]) continue;
531  for(const Trk::SpacePoint *space_point : r_Sorted[i]) {
532 
533  // Azimuthal angle sort
534  //
535  double F = space_point->phi(); if(F<0.) F+=pi2;
536  int f = int(F*event_data.m_sF);
537  if (f < 0)
538  f += event_data.m_fNmax;
539  else if (f > event_data.m_fNmax)
540  f -= event_data.m_fNmax;
541  int isBRL = 1000; int isLYR = 1000; int DD = 1000;
542 
543  geoInfo(space_point,isBRL,isLYR);
544 
545  // Use 4 lower bits (Mask == ((2^4 -1) == 15)) for isLYR
546  // the upper 28 bits for isBRL (including sign)
547  DD = ((isBRL+3) << 4) + (isLYR & 15);
548 
549  event_data.m_rf_Sorted[f].emplace_back(space_point,DD);
550  if(!event_data.m_rf_map[f]++) event_data.m_rf_index[event_data.m_nrf++] = f;
551 
552  }
553  event_data.m_r_map[i] = 0;
554  }
555 
556  event_data.m_nr = 0;
557 }

◆ finalize()

StatusCode InDet::TRT_SeededSpacePointFinder_ATL::finalize ( )
virtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 92 of file TRT_SeededSpacePointFinder_ATL.cxx.

93 {
95 
96 }

◆ find2Sp()

std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > InDet::TRT_SeededSpacePointFinder_ATL::find2Sp ( const EventContext &  ctx,
const Trk::TrackParameters tP,
ITRT_SeededSpacePointFinder::IEventData event_data 
) const
virtual

Main method of seed production

List of produced space point seeds

Get the phi segment index to use

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 306 of file TRT_SeededSpacePointFinder_ATL.cxx.

309 {
311 
312  const double pi2 = 2.*M_PI;
313 
315  std::list<std::pair<const Trk::SpacePoint*,const Trk::SpacePoint*> > outputListBuffer;
316 
318  double F = 0.;
319  double GPx=tP.position().x(); double GPy=tP.position().y();
320  F=atan2(GPy,GPx); if(F<0.) F+=pi2;
321  int f = int(F*event_data.m_sF);
322  if (f < 0)
323  f += event_data.m_fNmax;
324  else if (f > event_data.m_fNmax)
325  f -= event_data.m_fNmax;
326 
327 
328  production2Spb (ctx, tP,f, outputListBuffer,event_data); //Get a list of SP pairs.
329 
330  if(msgLvl(MSG::DEBUG)) {
331  dumpEvent( msg(MSG::DEBUG), event_data);
333  msg(MSG::DEBUG) << endmsg;
334  }
335 
336  if(outputListBuffer.size()>10000.) outputListBuffer.clear();
337 
338  return outputListBuffer;
339 }

◆ geoInfo()

void InDet::TRT_SeededSpacePointFinder_ATL::geoInfo ( const Trk::SpacePoint SP,
int &  isB,
int &  ld 
) const
protected

Obtain geo model info for a specific space point

Definition at line 1022 of file TRT_SeededSpacePointFinder_ATL.cxx.

1023 {
1024  const Trk::PrepRawData* p1;
1025  const InDet::SCT_Cluster* c1;
1026  Identifier id;
1027 
1028  p1 = SP->clusterList().first;
1029  if(p1){
1030  c1=dynamic_cast<const InDet::SCT_Cluster*>(p1);
1031  if(c1){
1032  id=c1->detectorElement()->identify();
1033  isB = m_sctId->barrel_ec(id);
1034  ld = m_sctId->layer_disk(id);
1035  }
1036  }
1037 
1038 }

◆ initialize()

StatusCode InDet::TRT_SeededSpacePointFinder_ATL::initialize ( )
virtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 61 of file TRT_SeededSpacePointFinder_ATL.cxx.

62 {
64 
65  // PRD-to-track association (optional)
68  StatusCode sc = detStore()->retrieve(m_sctId, "SCT_ID");
69  if (sc.isFailure()){
70  msg(MSG::FATAL) << "Could not get SCT_ID helper !" << endmsg;
71  return StatusCode::FAILURE;
72  }
73 
74  // Build framework
75  //
76 
77  // Get output print level
78  //
80 
84 
85  return sc;
86 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & InDet::ITRT_SeededSpacePointFinder::interfaceID ( )
inlinestaticinherited

Definition at line 108 of file ITRT_SeededSpacePointFinder.h.

109  {
110  return IID_ITRT_SeededSpacePointFinder;
111  }

◆ magneticFieldInit()

void InDet::TRT_SeededSpacePointFinder_ATL::magneticFieldInit ( )
protected

Get magnetic field properties

Definition at line 1044 of file TRT_SeededSpacePointFinder_ATL.cxx.

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ newEvent()

std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventData > InDet::TRT_SeededSpacePointFinder_ATL::newEvent ( ) const
virtual

Method to initialize tool for new event

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 103 of file TRT_SeededSpacePointFinder_ATL.cxx.

104 {
105  std::unique_ptr<InDet::TRT_SeededSpacePointFinder_ATL::EventData> event_data_p = std::make_unique<InDet::TRT_SeededSpacePointFinder_ATL::EventData>();
106  event_data_p->buildFrameWork(m_r_rmax, m_r_rstep, m_ptmin);
107  // @TODO remove m_r_Sorted and directly fill m_rf_Sorted ?
108 
109  double irstep = 1./m_r_rstep;
110 
111  std::vector< std::vector<const Trk::SpacePoint*> > r_Sorted;
112  r_Sorted.resize(event_data_p->m_r_size);
113 
114  if(m_loadFull){
115  // Get pixel space points containers from store gate
116  //
118  if (spacepointsPix.isValid()) {
119  SpacePointContainer::const_iterator spc = spacepointsPix->begin ();
120  SpacePointContainer::const_iterator spce = spacepointsPix->end ();
121 
122  for(; spc != spce; ++spc) {
123 
124  SpacePointCollection::const_iterator sp = (*spc)->begin();
125  SpacePointCollection::const_iterator spe = (*spc)->end ();
126  for(; sp != spe; ++sp) {
127 
128  double r = (*sp)->r(); if(r<0. || r>=m_r_rmax) continue;
129  int ir = int(r*irstep);
130  const Trk::SpacePoint* sps = (*sp);
131  r_Sorted[ir].push_back(sps);
132  ++event_data_p->m_r_map[ir];
133  if(event_data_p->m_r_map[ir]==1) event_data_p->m_r_index[event_data_p->m_nr++] = ir;
134  ++event_data_p->m_ns;
135  }
136  }
137  }
138  }
139 
140  SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
141  if (!m_prdToTrackMap.key().empty()) {
143  if (!prd_to_track_map.isValid()) {
144  ATH_MSG_ERROR("Failed to read PRD to track association map.");
145  }
146  }
147  // Get sct space points containers from store gate
148  //
150  if (spacepointsSCT.isValid()) {
151 
152  SpacePointContainer::const_iterator spc = spacepointsSCT->begin();
153  SpacePointContainer::const_iterator spce = spacepointsSCT->end ();
154 
155  double r_rmin = (!m_loadFull) ? m_r2min : m_r_rmin;
156  for(; spc != spce; ++spc) {
157 
158  SpacePointCollection::const_iterator sp = (*spc)->begin();
159  SpacePointCollection::const_iterator spe = (*spc)->end ();
160  for(; sp != spe; ++sp) {
161 
162  if(prd_to_track_map.cptr()){
163  bool u1=false; bool u2=false;
164  const Trk::PrepRawData* p1=(*sp)->clusterList().first; u1=prd_to_track_map->isUsed(*p1);
165  const Trk::PrepRawData* p2=(*sp)->clusterList().second;u2=prd_to_track_map->isUsed(*p2);
166  if(u1 || u2){continue;}
167  }
168 
169  double r = (*sp)->r(); if(r<r_rmin || r>=m_r_rmax) continue;
170  int ir = int(r*irstep);
171  const Trk::SpacePoint* sps = (*sp);
172  r_Sorted[ir].push_back(sps); ++event_data_p->m_r_map[ir];
173  if(event_data_p->m_r_map[ir]==1) event_data_p->m_r_index[event_data_p->m_nr++] = ir;
174  ++event_data_p->m_ns;
175  }
176  }
177  }
178 
179  // Get sct overlap space points containers from store gate
180  //
182  if (spacepointsOverlap.isValid()) {
183  SpacePointOverlapCollection::const_iterator sp = spacepointsOverlap->begin();
184  SpacePointOverlapCollection::const_iterator spe = spacepointsOverlap->end ();
185 
186  for (; sp!=spe; ++sp) {
187 
188  if(prd_to_track_map.cptr()){
189  bool u1=false; bool u2=false;
190  const Trk::PrepRawData* p1=(*sp)->clusterList().first; u1=prd_to_track_map->isUsed(*p1);
191  const Trk::PrepRawData* p2=(*sp)->clusterList().second;u2=prd_to_track_map->isUsed(*p2);
192  if(u1 || u2){continue;}
193  }
194 
195  double r = (*sp)->r(); if(r<0. || r>=m_r_rmax) continue;
196  int ir = int(r*irstep);
197  const Trk::SpacePoint* sps = (*sp);
198  r_Sorted[ir].push_back(sps); ++event_data_p->m_r_map[ir];
199  if(event_data_p->m_r_map[ir]==1) event_data_p->m_r_index[event_data_p->m_nr++] = ir;
200  ++event_data_p->m_ns;
201  }
202  }
203 
204  fillLists(r_Sorted, *event_data_p); //Fill the R-phi sectors with the corresponding space points
205  return std::unique_ptr<InDet::ITRT_SeededSpacePointFinder::IEventData>(event_data_p.release());
206 }

◆ newRegion()

std::unique_ptr< InDet::ITRT_SeededSpacePointFinder::IEventData > InDet::TRT_SeededSpacePointFinder_ATL::newRegion ( const std::vector< IdentifierHash > &  vPixel,
const std::vector< IdentifierHash > &  vSCT 
) const
virtual

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 212 of file TRT_SeededSpacePointFinder_ATL.cxx.

214 {
215  std::unique_ptr<InDet::TRT_SeededSpacePointFinder_ATL::EventData> event_data_p = std::make_unique<InDet::TRT_SeededSpacePointFinder_ATL::EventData>();
216  event_data_p->buildFrameWork(m_r_rmax, m_r_rstep, m_ptmin);
217 
218  std::vector< std::vector<const Trk::SpacePoint*> > r_Sorted;
219  r_Sorted.resize(event_data_p->m_r_size);
220 
221  double irstep = 1./m_r_rstep;
222 
223  if(m_loadFull && !vPixel.empty()){
224  // Get pixel space points containers from store gate
225  //
227  if (spacepointsPix.isValid()) {
228  std::vector<IdentifierHash>::const_iterator l = vPixel.begin(), le = vPixel.end();
229 
230  // Loop through all trigger collections
231  //
232  for(; l!=le; ++l) {
233 
234  const SpacePointCollection *w = spacepointsPix->indexFindPtr(*l);
235  if(w==nullptr) continue;
238  for(; sp != spe; ++sp) {
239 
240  double r = (*sp)->r(); if(r<0. || r>=m_r_rmax) continue;
241  int ir = int(r*irstep);
242  const Trk::SpacePoint* sps = (*sp);
243  r_Sorted[ir].push_back(sps); ++event_data_p->m_r_map[ir];
244  if(event_data_p->m_r_map[ir]==1) event_data_p->m_r_index[event_data_p->m_nr++] = ir;
245  ++event_data_p->m_ns;
246  }
247  }
248  }
249  }
250 
251  // Get sct space points containers from store gate
252  //
253  if(!vSCT.empty()) {
254 
256  if (spacepointsSCT.isValid()) {
257 
258  SG::ReadHandle<Trk::PRDtoTrackMap> prd_to_track_map;
259  if (!m_prdToTrackMap.key().empty()) {
261  if (!prd_to_track_map.isValid()) {
262  ATH_MSG_ERROR("Failed to read PRD to track association map.");
263  }
264  }
265  std::vector<IdentifierHash>::const_iterator l = vSCT.begin(), le = vSCT.end();
266 
267  // Loop through all trigger collections
268  //
269  double r_rmin = (!m_loadFull) ? m_r2min : m_r_rmin;
270  for(; l!=le; ++l) {
271 
272  const SpacePointCollection *w = spacepointsSCT->indexFindPtr(*l);
273  if(w==nullptr) continue;
276  for(; sp != spe; ++sp) {
277 
278  if(prd_to_track_map.cptr()){
279  bool u1=false; bool u2=false;
280  const Trk::PrepRawData* p1=(*sp)->clusterList().first; u1=prd_to_track_map->isUsed(*p1);
281  const Trk::PrepRawData* p2=(*sp)->clusterList().second;u2=prd_to_track_map->isUsed(*p2);
282  if(u1 || u2){continue;}
283  }
284 
285  double r = (*sp)->r(); if(r<r_rmin || r>=m_r_rmax) continue;
286  int ir = int(r*irstep);
287  const Trk::SpacePoint* sps = (*sp);
288  r_Sorted[ir].push_back(sps); ++event_data_p->m_r_map[ir];
289  if(event_data_p->m_r_map[ir]==1) event_data_p->m_r_index[event_data_p->m_nr++] = ir;
290  ++event_data_p->m_ns;
291  }
292  }
293  }
294  }
295 
296  fillLists(r_Sorted,*event_data_p); //Fill the R-phi sectors with the corresponding space points
297  return std::unique_ptr<InDet::ITRT_SeededSpacePointFinder::IEventData>(event_data_p.release());
298 }

◆ next()

const SiSpacePointsSeed * InDet::TRT_SeededSpacePointFinder_ATL::next ( ITRT_SeededSpacePointFinder::IEventData event_data) const
inlinevirtual

Iterator through seed collection.Not used in this implementation.

Inline methods

Method to iterate through seeds.Not implemented

Implements InDet::ITRT_SeededSpacePointFinder.

Definition at line 267 of file TRT_SeededSpacePointFinder_ATL.h.

268  {
269  return 0;
270  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ production2Spb()

void InDet::TRT_SeededSpacePointFinder_ATL::production2Spb ( const EventContext &  ctx,
const Trk::TrackParameters tP,
int  phi,
std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > &  outputListBuffer,
InDet::TRT_SeededSpacePointFinder_ATL::EventData event_data 
) const
protected

Form possible space point combinations within allowed radial and pseudorapidity ranges.

Get the momentum information from the track parameters

Set up the azimuthal width to look for SPs

Fill a list with the SP in the azimuthal region indicated by the TRT track segment

Fill a list with the SP in the azimuthal region indicated by the TRT track segment

Definition at line 640 of file TRT_SeededSpacePointFinder_ATL.cxx.

645 {
646  uint64_t spcount = 0;
647  // // // // // // <Fill the invar_bypass // // // // // // //
648 
649  //const Trk::MeasuredAtaStraightLine &ntP =
650  //dynamic_cast<const Trk::MeasuredAtaStraightLine&>(tP);
651  const AmgVector(5)& pTS=tP.parameters();
652  const AmgSymMatrix(5)* vCM = tP.covariance();
653 
654  double sPhi = (*vCM)(2,2) ; //Sigma on TRT segment azimuthal angle
655  double sTheta = (*vCM)(3,3); //Sigma on TRT segment polar angle
656  double sp = (*vCM)(4,4) ; //Sigma on TRT segment inverse momentum estimate
657 
658  double ipdelta = sqrt(m_xiC*sp);
659 
660  invar_bypass_struct tmp_invar_bypass{};
661  tmp_invar_bypass.invp_min = pTS[4] - ipdelta;
662  tmp_invar_bypass.invp_max = pTS[4] + ipdelta;
663 
664  tmp_invar_bypass.invp_min2 = tmp_invar_bypass.invp_min*tmp_invar_bypass.invp_min;
665  tmp_invar_bypass.invp_max2 = tmp_invar_bypass.invp_max*tmp_invar_bypass.invp_max;
666 
667  double theta_center = pTS[3];
668  double theta_delta = sqrt(m_xiTC*sTheta);
669 
670  double phi_center = pTS[2];
671  double phi_delta = sqrt(m_xiFC*sPhi);
672 
673  bracket_angle(theta_center, theta_delta,
674  &(tmp_invar_bypass.min_theta), &(tmp_invar_bypass.max_theta));
675  bracket_angle(phi_center, phi_delta,
676  &(tmp_invar_bypass.min_phi), &(tmp_invar_bypass.max_phi));
677 
678  // // // // // // Fill the invar_bypass> // // // // // // //
679 
681  double x0=tP.position().x() ;
682  double y0=tP.position().y() ;
683  double z0=tP.position().z() ;
684  double H[3]; double gP[3] = {x0,y0,z0};
685 
686  // Get field cache object
688  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
689  if (fieldCondObj == nullptr) {
690  ATH_MSG_ERROR("TRT_SeededSpacePointFinder_ATL: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCondObjInputKey.key());
691  return;
692  }
693  MagField::AtlasFieldCache fieldCache;
694  fieldCondObj->getInitializedCache (fieldCache);
695  fieldCache.getField (gP, H);
696 
697  //need conversion kilotesla -> kilogauss - Previously used getMagneticFiledKiloGauss, whereas new function returns value in kiloTesla...
698  H[0] *= 10000;
699  H[1] *= 10000;
700  H[2] *= 10000;
701 
702  std::list<std::pair<const Trk::SpacePoint*,int> >::iterator r0,r0e,r,re, rb;
703  const Trk::SpacePoint* SpToPair = nullptr;
704 
705 
707  //
708  int fmin=phi; int fmax=phi;
709  if(m_search){fmin = phi-1; fmax = phi+1;}
710  for(int f=fmin; f<=fmax; ++f) {
711  int j=0; f<0 ? j=f+event_data.m_fNmax+1 : f>event_data.m_fNmax ? j=f-event_data.m_fNmax-1 : j=f;
712  if(!event_data.m_rf_map[j]){
713  continue;
714  }
715  r0 = event_data.m_rf_Sorted[j].begin();
716  r0e = event_data.m_rf_Sorted[j].end();
717 
719  for(; r0!=r0e; ++r0){
720  if((((*r0).first)->r() > m_r1max) ||
721  (((*r0).first)->r() < m_r2min)) {
722  continue; //Fill only the SCT SPs
723  }
724  event_data.m_newRfi_Sorted.push_back(*r0);
725  }
726  }
727 
728  if(event_data.m_newRfi_Sorted.size()>5000 && event_data.m_newRfi_Sorted.size()<=10000) {
729  event_data.m_newRfi_Sorted.erase(event_data.m_newRfi_Sorted.begin(),event_data.m_newRfi_Sorted.end());
730  int fmin=phi; int fmax=phi;
731  for(int f=fmin; f<=fmax; ++f) {
732  int j=0; f<0 ? j=f+event_data.m_fNmax+1 : f>event_data.m_fNmax ? j=f-event_data.m_fNmax-1 : j=f;
733  if(!event_data.m_rf_map[j]){
734  continue;
735  }
736  r0 = event_data.m_rf_Sorted[j].begin();
737  r0e = event_data.m_rf_Sorted[j].end();
738 
740  for(; r0!=r0e; ++r0){
741  if((((*r0).first)->r()>m_r1max) || (((*r0).first)->r()<m_r2min)) {
742  continue; //Fill only the SCT SPs
743  }
744  event_data.m_newRfi_Sorted.push_back(*r0);
745  }
746  }
747  }
748  if(event_data.m_newRfi_Sorted.size()>10000) {
749  event_data.m_newRfi_Sorted.erase(event_data.m_newRfi_Sorted.begin(),event_data.m_newRfi_Sorted.end());
750  return;
751  }
752 
753  event_data.m_newRfi_Sorted.sort(MyNewDataSortPredicate());
754 
755  spcount = event_data.m_newRfi_Sorted.size();
756 
757  r = event_data.m_newRfi_Sorted.begin();
758  re = event_data.m_newRfi_Sorted.end();
759 
760  std::vector<bypass_struct> tmp_prod_bypass;
761  std::vector<const Trk::SpacePoint *> vrp;
762  std::vector<double> rk;
763  std::vector<long> geo_info;
764  std::vector<double> zSP;
765  tmp_prod_bypass.reserve(spcount);
766  vrp.reserve(spcount);
767  rk.reserve(spcount);
768  geo_info.reserve(spcount);
769  zSP.reserve(spcount);
770 
771  // // // // // // <Fill m_prod_bypass and the local array // // // //
772  for (; r != re; ++r) {
773  const Trk::SpacePoint *vrpi = (*r).first;
774 
775  geo_info.push_back((*r).second);
776  vrp.push_back(vrpi);
777  rk.push_back(vrpi->r());
778 
779  double X = vrpi->globalPosition().x() - x0;
780  double Y = vrpi->globalPosition().y() - y0;
781  double zSPi = vrpi->globalPosition().z();
782  zSP.push_back(zSPi);
783  double Z = zSPi - z0;
784 
785  double RR = X*X + Y*Y;
786  double R = sqrt(RR);
787  double invR = 1.0/R;
788 
789  double a = X*invR;
790  double b = Y*invR;
791 
792  tmp_prod_bypass.emplace_back();
793  tmp_prod_bypass.back().X = X;
794  tmp_prod_bypass.back().Y = Y;
795  tmp_prod_bypass.back().Z = Z;
796 
797  tmp_prod_bypass.back().R = R;
798  tmp_prod_bypass.back().invR = invR;
799 
800  tmp_prod_bypass.back().a = a;
801  tmp_prod_bypass.back().b = b;
802  }
803 
804  // // // // // // Fill m_prod_bypass and the local array> // // // //
805 
807 
808  if (m_doCosmics) { // no need to check this every time in the loop
809  for (long i = 0; i < (long)spcount; i++) {
810  SpToPair = nullptr;
811  const Trk::SpacePoint *up = vrp[i];
812  for (long j = i + 1; j < (long)spcount; j++) {
813  const Trk::SpacePoint *bp = vrp[j];
814  SpToPair = bp;
815  outputListBuffer.emplace_back(up, SpToPair);
816  }
817  if(!SpToPair) {
818  outputListBuffer.emplace_back(up, up);
819  }
820  }
821  }
822  else { // (!m_doCosmics)
823  for (long i = 0; i < (long)spcount; i++) {
824  SpToPair = nullptr;
825  const Trk::SpacePoint *up = vrp[i];
826  double R = rk[i];
827  if(R<m_r12min) {
828  continue;
829  }
830  double Z = zSP[i];
831  long geoi = geo_info[i];
832  int isBU = (geoi >> 4)-3;
833  int eleU = geoi & 15;
834 
835  for (long j = i + 1; j < (long)spcount; j++) {
836  const Trk::SpacePoint *bp = vrp[j];
837  double Zb = zSP[j];
838  double Rb = rk[j];
839  long geoj = geo_info[j];
840  int isBB = (geoj >> 4)-3;
841  int eleB = geoj & 15;
842  // // // // // // // // // // // // // // // // // // // // // //
843 
844  // Equivalent to {
845  // if ((isBU == 0) && (isBB != isBU)) continue;
846  // if((isBU == isBB) && (eleU <= eleB)) continue;
847  // }
848  // Rather cryptic but 2 to 3 times faster
849  // than the 4 branches above...
850 
851  int Bd = (isBU - isBB) | (isBB - isBU);
852  int Ed = (eleB - eleU);
853  int BUzero = (isBU | -isBU);
854  if (((BUzero | ~Bd) & (Bd | Ed) & (((unsigned)(-1) >> 1) + 1))
855  == 0) {
856  continue;
857  }
858 
859  // // // // // // // // // // // // // // // // // // // // // //
860  double dR = R - Rb;
861  double dZ = Z - Zb;
862  double dz_min = m_dzdrmin*dR;
863  double dz_max = m_dzdrmax*dR;
864  if (dZ < dz_min || dZ > dz_max) {
865  continue;//Should be within the +-2.5 pseudorapidity range
866  }
867  if(fieldCache.solenoidOn()) {
868  if(!cutTPb(tmp_invar_bypass, tmp_prod_bypass,i, j, H[2])) {
869  continue;
870  }
871  }
872  SpToPair = bp;
873  outputListBuffer.emplace_back(up, SpToPair);
874  }
875  if(!SpToPair) {
876  outputListBuffer.emplace_back(up, up);
877  }
878  }
879  }
880 
881  event_data.m_newRfi_Sorted.erase(event_data.m_newRfi_Sorted.begin(),event_data.m_newRfi_Sorted.end());
882 }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doCosmics

BooleanProperty InDet::TRT_SeededSpacePointFinder_ATL::m_doCosmics
protected
Initial value:
{this, "DoCosmics", false,
"Disable seed selection cuts during reconstruction of cosmics tracks"}

Definition at line 151 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_dzdrmax

constexpr double InDet::TRT_SeededSpacePointFinder_ATL::m_dzdrmax = 4.
staticconstexprprotected

Min R-z direction cut

Definition at line 143 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_dzdrmin

constexpr double InDet::TRT_SeededSpacePointFinder_ATL::m_dzdrmin = -4.
staticconstexprprotected

Min radius to search for SP pairs

Definition at line 142 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fieldCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> InDet::TRT_SeededSpacePointFinder_ATL::m_fieldCondObjInputKey
protected
Initial value:
{this, "AtlasFieldCacheCondObj",
"fieldCondObj", "Name of the Magnetic Field conditions object key"}

Definition at line 206 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_fieldmode

StringProperty InDet::TRT_SeededSpacePointFinder_ATL::m_fieldmode
protected
Initial value:
{this, "MagneticFieldMode", "MapSolenoid",
"Magnetic field mode"}

Protected data and methods

Definition at line 121 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_fieldprop

Trk::MagneticFieldProperties InDet::TRT_SeededSpacePointFinder_ATL::m_fieldprop
protected

Definition at line 124 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_loadFull

BooleanProperty InDet::TRT_SeededSpacePointFinder_ATL::m_loadFull
protected
Initial value:
{this, "LoadFull", true,
"Load full Si space point container"}

Definition at line 149 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_prdToTrackMap

SG::ReadHandleKey<Trk::PRDtoTrackMap> InDet::TRT_SeededSpacePointFinder_ATL::m_prdToTrackMap {this,"PRDtoTrackMap",""}
protected

Definition at line 202 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_ptmin

DoubleProperty InDet::TRT_SeededSpacePointFinder_ATL::m_ptmin {this, "pTmin", 500., "Minimum pT cut"}
protected

Seed selection criteria

Definition at line 134 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_r12min

constexpr double InDet::TRT_SeededSpacePointFinder_ATL::m_r12min = 400.
staticconstexprprotected

Max radius of last SCT layer

Definition at line 140 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_r1max

constexpr double InDet::TRT_SeededSpacePointFinder_ATL::m_r1max = 560.
staticconstexprprotected

Step size for space point storage

Definition at line 139 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_r2min

constexpr double InDet::TRT_SeededSpacePointFinder_ATL::m_r2min = 340.
staticconstexprprotected

Min radius of last SCT layer

Definition at line 141 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_r_rmax

constexpr double InDet::TRT_SeededSpacePointFinder_ATL::m_r_rmax = 600.
staticconstexprprotected

Minimum SCT radius to be searched

Definition at line 137 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_r_rmin

constexpr double InDet::TRT_SeededSpacePointFinder_ATL::m_r_rmin = 0.
staticconstexprprotected

Definition at line 136 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_r_rstep

constexpr double InDet::TRT_SeededSpacePointFinder_ATL::m_r_rstep = 10.
staticconstexprprotected

Maximum STC radius to be searched

Definition at line 138 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_sctId

const SCT_ID* InDet::TRT_SeededSpacePointFinder_ATL::m_sctId = nullptr
protected

Magnetic field properties

ID SCT helper

Definition at line 128 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_search

BooleanProperty InDet::TRT_SeededSpacePointFinder_ATL::m_search {this, "NeighborSearch", true, "Do full neighbor search"}
protected

Definition at line 148 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_spacepointsOverlapname

SG::ReadHandleKey<SpacePointOverlapCollection> InDet::TRT_SeededSpacePointFinder_ATL::m_spacepointsOverlapname {this,"SpacePointsOverlapName","OverlapSpacePoints","RHK to retrieve OverlapCollection"}
protected

Definition at line 201 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_spacepointsPixname

SG::ReadHandleKey<SpacePointContainer> InDet::TRT_SeededSpacePointFinder_ATL::m_spacepointsPixname {this,"SpacePointsPixelName","PixelSpacePoints","RHK to retrieve Pixel SpacePointContainer"}
protected

Space points containers

Definition at line 199 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_spacepointsSCTname

SG::ReadHandleKey<SpacePointContainer> InDet::TRT_SeededSpacePointFinder_ATL::m_spacepointsSCTname {this,"SpacePointsSCTName","SCT_SpacePoints","RHK to retrieve SCT SpacePointContainer"}
protected

Definition at line 200 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_xiC

DoubleProperty InDet::TRT_SeededSpacePointFinder_ATL::m_xiC {this, "Xi2C", 100., "qOverP based chi2 cut"}
protected

Max R-z direction cut

Definition at line 145 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_xiFC

DoubleProperty InDet::TRT_SeededSpacePointFinder_ATL::m_xiFC {this, "Xi2FC", 100., "phi based chi2 cut"}
protected

Definition at line 147 of file TRT_SeededSpacePointFinder_ATL.h.

◆ m_xiTC

DoubleProperty InDet::TRT_SeededSpacePointFinder_ATL::m_xiTC {this, "Xi2TC", 100., "theta based chi2 cut"}
protected

Definition at line 146 of file TRT_SeededSpacePointFinder_ATL.h.


The documentation for this class was generated from the following files:
Trk::SpacePoint::clusterList
const std::pair< const PrepRawData *, const PrepRawData * > & clusterList() const
return the pair of cluster pointers by reference
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:127
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
InDet::TRT_SeededSpacePointFinder_ATL::m_xiC
DoubleProperty m_xiC
Max R-z direction cut
Definition: TRT_SeededSpacePointFinder_ATL.h:145
Trk::SpacePoint
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:35
beamspotman.r
def r
Definition: beamspotman.py:676
InDet::TRT_SeededSpacePointFinder_ATL::m_spacepointsOverlapname
SG::ReadHandleKey< SpacePointOverlapCollection > m_spacepointsOverlapname
Definition: TRT_SeededSpacePointFinder_ATL.h:201
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:50
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
InDet::TRT_SeededSpacePointFinder_ATL::m_search
BooleanProperty m_search
Definition: TRT_SeededSpacePointFinder_ATL.h:148
InDet::TRT_SeededSpacePointFinder_ATL::m_fieldmode
StringProperty m_fieldmode
Protected data and methods
Definition: TRT_SeededSpacePointFinder_ATL.h:121
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
InDet::TRT_SeededSpacePointFinder_ATL::m_spacepointsPixname
SG::ReadHandleKey< SpacePointContainer > m_spacepointsPixname
Space points containers
Definition: TRT_SeededSpacePointFinder_ATL.h:199
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_nrf
int m_nrf
Definition: TRT_SeededSpacePointFinder_ATL.h:190
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_sF
double m_sF
Definition: TRT_SeededSpacePointFinder_ATL.h:191
Trk::SpacePoint::globalPosition
virtual const Amg::Vector3D & globalPosition() const override final
Interface method to get the global Position.
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:146
WriteCellNoiseToCool.rb
rb
Definition: WriteCellNoiseToCool.py:229
InDet::TRT_SeededSpacePointFinder_ATL::m_r_rstep
static constexpr double m_r_rstep
Maximum STC radius to be searched
Definition: TRT_SeededSpacePointFinder_ATL.h:138
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
SG::ReadHandle< SpacePointContainer >
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Monitored::Z
@ Z
Definition: HistogramFillerUtils.h:24
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
extractSporadic.c1
c1
Definition: extractSporadic.py:134
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
InDet::TRT_SeededSpacePointFinder_ATL::m_xiFC
DoubleProperty m_xiFC
Definition: TRT_SeededSpacePointFinder_ATL.h:147
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
python.PhysicalConstants.pi2
float pi2
Definition: PhysicalConstants.py:52
M_PI
#define M_PI
Definition: ActiveFraction.h:11
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_ns
int m_ns
Definition: TRT_SeededSpacePointFinder_ATL.h:187
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_rf_index
int m_rf_index[530]
Definition: TRT_SeededSpacePointFinder_ATL.h:190
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDet::TRT_SeededSpacePointFinder_ATL::fillLists
void fillLists(std::vector< std::vector< const Trk::SpacePoint * > > &r_Sorted, InDet::TRT_SeededSpacePointFinder_ATL::EventData &event_data) const
Fill the space point container lists at beginning of each event.
Definition: TRT_SeededSpacePointFinder_ATL.cxx:523
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
ReadCellNoiseFromCoolCompare.s4
s4
Definition: ReadCellNoiseFromCoolCompare.py:381
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDet::TRT_SeededSpacePointFinder_ATL::EventData::buildFrameWork
void buildFrameWork(double r_rmax, double r_rstep, double ptmin)
Definition: TRT_SeededSpacePointFinder_ATL.cxx:496
Trk::SpacePoint::r
double r() const
returns the r value of the SpacePoint's position (in cylindrical coordinates).
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:137
InDet::TRT_SeededSpacePointFinder_ATL::m_sctId
const SCT_ID * m_sctId
Magnetic field properties
Definition: TRT_SeededSpacePointFinder_ATL.h:128
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:50
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
InDet::TRT_SeededSpacePointFinder_ATL::m_dzdrmin
static constexpr double m_dzdrmin
Min radius to search for SP pairs
Definition: TRT_SeededSpacePointFinder_ATL.h:142
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
InDet::TRT_SeededSpacePointFinder_ATL::m_r_rmin
static constexpr double m_r_rmin
Definition: TRT_SeededSpacePointFinder_ATL.h:136
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
InDet::TRT_SeededSpacePointFinder_ATL::cutTPb
bool cutTPb(const invar_bypass_struct &invar_bypass, const std::vector< bypass_struct > &prod_bypass, long, long, double) const
Cut on chi2 based on TRT segment qOverP, theta and phi track parameters.
Definition: TRT_SeededSpacePointFinder_ATL.cxx:891
Trk::FastField
@ FastField
call the fast field access method of the FieldSvc
Definition: MagneticFieldMode.h:20
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_rf_map
int m_rf_map[530]
Definition: TRT_SeededSpacePointFinder_ATL.h:190
InDet::TRT_SeededSpacePointFinder_ATL::m_r2min
static constexpr double m_r2min
Min radius of last SCT layer
Definition: TRT_SeededSpacePointFinder_ATL.h:141
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
A
H
#define H(x, y, z)
Definition: MD5.cxx:114
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
InDet::TRT_SeededSpacePointFinder_ATL::m_fieldprop
Trk::MagneticFieldProperties m_fieldprop
Definition: TRT_SeededSpacePointFinder_ATL.h:124
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_r_index
int * m_r_index
Definition: TRT_SeededSpacePointFinder_ATL.h:189
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:731
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_rf_Sorted
std::list< std::pair< const Trk::SpacePoint *, int > > m_rf_Sorted[530]
Definition: TRT_SeededSpacePointFinder_ATL.h:184
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
python.selector.AtlRunQuerySelectorDQ.DD
DD
Definition: AtlRunQuerySelectorDQ.py:15
InDet::TRT_SeededSpacePointFinder_ATL::m_dzdrmax
static constexpr double m_dzdrmax
Min R-z direction cut
Definition: TRT_SeededSpacePointFinder_ATL.h:143
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_r_map
int * m_r_map
Definition: TRT_SeededSpacePointFinder_ATL.h:189
CalibCoolCompareRT.up
up
Definition: CalibCoolCompareRT.py:109
TRT_PAI_physicsConstants::r0
const double r0
electron radius{cm}
Definition: TRT_PAI_physicsConstants.h:20
InDet::TRT_SeededSpacePointFinder_ATL::m_spacepointsSCTname
SG::ReadHandleKey< SpacePointContainer > m_spacepointsSCTname
Definition: TRT_SeededSpacePointFinder_ATL.h:200
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
InDet::TRT_SeededSpacePointFinder_ATL::m_xiTC
DoubleProperty m_xiTC
Definition: TRT_SeededSpacePointFinder_ATL.h:146
Preparation.mode
mode
Definition: Preparation.py:94
hist_file_dump.f
f
Definition: hist_file_dump.py:135
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:79
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_fNmax
int m_fNmax
Definition: TRT_SeededSpacePointFinder_ATL.h:188
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
MuonR4::SegmentFit::ParamDefs::x0
@ x0
InDet::SCT_Cluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SCT_Cluster.h:34
Trk::PRDtoTrackMap::isUsed
bool isUsed(const PrepRawData &prd) const
does this PRD belong to at least one track?
MagField::AtlasFieldCache::solenoidOn
bool solenoidOn() const
status of the magnets
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
InDet::TRT_SeededSpacePointFinder_ATL::m_prdToTrackMap
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
Definition: TRT_SeededSpacePointFinder_ATL.h:203
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
bracket_angle
void bracket_angle(double angle, double delta, double *min, double *max)
Definition: TRT_SeededSpacePointFinder_ATL.cxx:611
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::PrepRawData
Definition: PrepRawData.h:62
Monitored::Y
@ Y
Definition: HistogramFillerUtils.h:24
Trk::NoField
@ NoField
Field is set to 0., 0., 0.,.
Definition: MagneticFieldMode.h:18
MuonR4::SegmentFit::ParamDefs::y0
@ y0
InDet::TRT_SeededSpacePointFinder_ATL::geoInfo
void geoInfo(const Trk::SpacePoint *, int &, int &) const
Obtain geo model info for a specific space point
Definition: TRT_SeededSpacePointFinder_ATL.cxx:1022
ReadCellNoiseFromCoolCompare.s3
s3
Definition: ReadCellNoiseFromCoolCompare.py:380
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
InDet::TRT_SeededSpacePointFinder_ATL::m_r_rmax
static constexpr double m_r_rmax
Minimum SCT radius to be searched
Definition: TRT_SeededSpacePointFinder_ATL.h:137
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
InDet::TRT_SeededSpacePointFinder_ATL::m_loadFull
BooleanProperty m_loadFull
Definition: TRT_SeededSpacePointFinder_ATL.h:149
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
Trk::MagneticFieldProperties::magneticFieldMode
MagneticFieldMode magneticFieldMode() const
Returns the MagneticFieldMode as specified.
InDet::TRT_SeededSpacePointFinder_ATL::magneticFieldInit
void magneticFieldInit()
Get magnetic field properties
Definition: TRT_SeededSpacePointFinder_ATL.cxx:1044
ReadCellNoiseFromCoolCompare.v2
v2
Definition: ReadCellNoiseFromCoolCompare.py:364
ir
int ir
counter of the current depth
Definition: fastadd.cxx:49
InDet::TRT_SeededSpacePointFinder_ATL::dumpConditions
MsgStream & dumpConditions(MsgStream &out) const
Protected methods
Definition: TRT_SeededSpacePointFinder_ATL.cxx:346
InDet::TRT_SeededSpacePointFinder_ATL::m_doCosmics
BooleanProperty m_doCosmics
Definition: TRT_SeededSpacePointFinder_ATL.h:151
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_newRfi_Sorted
std::list< std::pair< const Trk::SpacePoint *, int > > m_newRfi_Sorted
Definition: TRT_SeededSpacePointFinder_ATL.h:185
InDet::TRT_SeededSpacePointFinder_ATL::m_fieldCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
Definition: TRT_SeededSpacePointFinder_ATL.h:206
a
TList * a
Definition: liststreamerinfos.cxx:10
InDet::TRT_SeededSpacePointFinder_ATL::m_r1max
static constexpr double m_r1max
Step size for space point storage
Definition: TRT_SeededSpacePointFinder_ATL.h:139
h
InDet::TRT_SeededSpacePointFinder_ATL::m_ptmin
DoubleProperty m_ptmin
Seed selection criteria
Definition: TRT_SeededSpacePointFinder_ATL.h:134
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_r_size
int m_r_size
Definition: TRT_SeededSpacePointFinder_ATL.h:183
SpacePointCollection
Definition: SpacePointCollection.h:40
re
const boost::regex re(r_e)
DEBUG
#define DEBUG
Definition: page_access.h:11
F
#define F(x, y, z)
Definition: MD5.cxx:112
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: AtlasFieldCache.h:43
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
InDet::TRT_SeededSpacePointFinder_ATL::production2Spb
void production2Spb(const EventContext &ctx, const Trk::TrackParameters &, int, std::list< std::pair< const Trk::SpacePoint *, const Trk::SpacePoint * > > &outputListBuffer, InDet::TRT_SeededSpacePointFinder_ATL::EventData &event_data) const
Form possible space point combinations within allowed radial and pseudorapidity ranges.
Definition: TRT_SeededSpacePointFinder_ATL.cxx:640
MagField::AtlasFieldCache::getField
void getField(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field value at given position xyz[3] is in mm, bxyz[3] is in kT if deriv[9] is given,...
Definition: AtlasFieldCache.cxx:42
InDet::TRT_SeededSpacePointFinder_ATL::dumpEvent
MsgStream & dumpEvent(MsgStream &out, InDet::TRT_SeededSpacePointFinder_ATL::EventData &event_data) const
Definition: TRT_SeededSpacePointFinder_ATL.cxx:436
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
jobOptions.prec
prec
Definition: jobOptions.Superchic_UPC_yyMuMu.py:20
InDet::TRT_SeededSpacePointFinder_ATL::EventData::m_nr
int m_nr
Definition: TRT_SeededSpacePointFinder_ATL.h:189
Trk::EventDataBase< EventData, InDet::ITRT_SeededSpacePointFinder::IEventData >::getPrivateEventData
static EventData & getPrivateEventData(InDet::ITRT_SeededSpacePointFinder::IEventData &virt_event_data)
Definition: EventDataBase.h:19
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
MCP::ScaleSmearParam::r1
@ r1
InDet::TRT_SeededSpacePointFinder_ATL::EventData
Definition: TRT_SeededSpacePointFinder_ATL.h:160
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
geometry_dat_to_json.ld
ld
Definition: geometry_dat_to_json.py:32
Analysis::CC
@ CC
Definition: JpsiFinder.h:36
rotrating
double rotrating(double y, double x)
Definition: TRT_SeededSpacePointFinder_ATL.cxx:628
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
fitman.k
k
Definition: fitman.py:528
InDet::TRT_SeededSpacePointFinder_ATL::m_r12min
static constexpr double m_r12min
Max radius of last SCT layer
Definition: TRT_SeededSpacePointFinder_ATL.h:140
Identifier
Definition: IdentifierFieldParser.cxx:14