ATLAS Offline Software
SetFitOptions.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Header include
8 
9 //-------------------------------------------------
10 #include<iostream>
11 
12 
13 namespace Trk{
14 //
15 // Option setting for VKalVrt core via state.m_vkalFitControl object
16 //
17 
19  {
20  state.m_FitStatus = 0; // Drop all previous fit results
21  state.m_globalFirstHit = nullptr;
23 
24  //Set input particle masses
25  for(int it=0; it<NTRK; it++){
26  if( it<(int)state.m_MassInputParticles.size() ) {
28  }
30  }
31  // Set reference vertex for different pointing constraints
32  if(state.m_VertexForConstraint.size() >= 3){
36  }else {for( int i=0; i<3; i++) state.m_vkalFitControl.vk_forcft.vrt[i] = 0.; }
37  // Set covariance matrix for reference vertex
38  if(state.m_CovVrtForConstraint.size() >= 6){
39  for( int i=0; i<6; i++) { state.m_vkalFitControl.vk_forcft.covvrt[i] = (double)(state.m_CovVrtForConstraint[i]); }
40  }else{ for( int i=0; i<6; i++) { state.m_vkalFitControl.vk_forcft.covvrt[i] = 0.; } }
41 
42  // Add global mass constraint if present
44  // Add partial mass constraints if present
45  if(!state.m_partMassCnst.empty()) {
46  for(int ic=0; ic<(int)state.m_partMassCnst.size(); ic++){
48  }
49  }
50  // Set general configuration parameters
55  state.m_parPlaneCnst[2],state.m_parPlaneCnst[3]);
64 
67 
70 
71  }
72 
73 /*
74  void TrkVKalVrtFitter::initCnstList()
75  {
76 //--- Mass constraint is restored here
77  if( m_massForConstraint>0. || m_PartMassCnst.size()>0 ) vksetUseMassCnst();
78  if( m_useAprioriVertex ) vksetUseAprioriVrt();
79  if( m_useThetaCnst ) vksetUseThetaCnst();
80  if( m_usePhiCnst ) vksetUsePhiCnst();
81  if( m_usePointingCnst ) vksetUsePointingCnst(1);
82  if( m_useZPointingCnst) vksetUsePointingCnst(2);
83  if( m_usePassNear) vksetUsePassNear(1);
84  if( m_usePassWithTrkErr) vksetUsePassNear(2);
85  }
86 */
87 //Old logics. Left here for reference to compare with previous releases of VKalVrt
88 //
90  {
91  assert(dynamic_cast<State*> (&istate)!=nullptr);
92  State& state = static_cast<State&> (istate);
93  if(TYPE>0)msg(MSG::DEBUG)<< "ConstraintType is changed at execution stage. New type="<<TYPE<< endmsg;
94  if(TYPE<0)TYPE=0;
95  if(TYPE>14)TYPE=0;
96  if( TYPE == 2) state.m_usePointingCnst = true;
97  if( TYPE == 3) state.m_useZPointingCnst = true;
98  if( TYPE == 4) state.m_usePointingCnst = true;
99  if( TYPE == 5) state.m_useZPointingCnst = true;
100  if( TYPE == 6) state.m_useAprioriVertex = true;
101  if( TYPE == 7) state.m_usePassWithTrkErr = true;
102  if( TYPE == 8) state.m_usePassWithTrkErr = true;
103  if( TYPE == 9) state.m_usePassNear = true;
104  if( TYPE == 10) state.m_usePassNear = true;
105  if( TYPE == 11) state.m_usePhiCnst = true;
106  if( TYPE == 12) { state.m_usePhiCnst = true; state.m_useThetaCnst = true;}
107  if( TYPE == 13) { state.m_usePhiCnst = true; state.m_usePassNear = true;}
108  if( TYPE == 14) { state.m_usePhiCnst = true; state.m_useThetaCnst = true; state.m_usePassNear = true;}
109  }
110 
111 //
112 // Define finctions for on-the-fly fitter configuration
113 //
114 //
115  void TrkVKalVrtFitter::setApproximateVertex(double X,double Y,double Z,
116  IVKalState& istate) const
117  {
118  assert(dynamic_cast<State*> (&istate)!=nullptr);
119  State& state = static_cast<State&> (istate);
120  state.m_ApproximateVertex.assign ({X, Y, Z});
121  }
122 
123  void TrkVKalVrtFitter::setRobustness(int IROB, IVKalState& istate) const
124  { if(IROB>0)msg(MSG::DEBUG)<< "Robustness is changed at execution stage "<<m_Robustness<<"=>"<<IROB<< endmsg;
125  assert(dynamic_cast<State*> (&istate)!=nullptr);
126  State& state = static_cast<State&> (istate);
127  state.m_Robustness = IROB;
128  if(state.m_Robustness<0)state.m_Robustness=0;
129  if(state.m_Robustness>7)state.m_Robustness=0;
130  }
131 
133  { if(Scale!=m_RobustScale)msg(MSG::DEBUG)<< "Robust Scale is changed at execution stage "<<m_RobustScale<<"=>"<<Scale<< endmsg;
134  assert(dynamic_cast<State*> (&istate)!=nullptr);
135  State& state = static_cast<State&> (istate);
136  state.m_RobustScale = Scale;
137  if(state.m_RobustScale<0.01) state.m_RobustScale=1.;
138  if(state.m_RobustScale>100.) state.m_RobustScale=1.;
139  }
140 
142  IVKalState& istate) const
143  {
144  assert(dynamic_cast<State*> (&istate)!=nullptr);
145  State& state = static_cast<State&> (istate);
146  state.m_massForConstraint = MASS;
147  }
148 
150  std::span<const int> TrkIndex,
151  IVKalState& istate) const
152  {
153  assert(dynamic_cast<State*> (&istate)!=nullptr);
154  State& state = static_cast<State&> (istate);
155  state.m_partMassCnst.push_back(MASS);
156  state.m_partMassCnstTrk.emplace_back(TrkIndex.begin(), TrkIndex.end());
157  }
158 
160  IVKalState& istate) const
161  {
162  assert(dynamic_cast<State*> (&istate)!=nullptr);
163  State& state = static_cast<State&> (istate);
164  state.m_VertexForConstraint.assign ({Vrt.position().x(),
165  Vrt.position().y(),
166  Vrt.position().z()});
167 
168  state.m_CovVrtForConstraint.assign ({
169  Vrt.covariancePosition()(Trk::x,Trk::x),
170  Vrt.covariancePosition()(Trk::x,Trk::y),
171  Vrt.covariancePosition()(Trk::y,Trk::y),
172  Vrt.covariancePosition()(Trk::x,Trk::z),
173  Vrt.covariancePosition()(Trk::y,Trk::z),
174  Vrt.covariancePosition()(Trk::z,Trk::z)});
175  }
176 
177  void TrkVKalVrtFitter::setVertexForConstraint(double X,double Y,double Z,
178  IVKalState& istate) const
179  {
180  assert(dynamic_cast<State*> (&istate)!=nullptr);
181  State& state = static_cast<State&> (istate);
182  state.m_VertexForConstraint.assign ({X, Y, Z});
183  }
184 
185  void TrkVKalVrtFitter::setCovVrtForConstraint(double XX,double XY,double YY,
186  double XZ,double YZ,double ZZ,
187  IVKalState& istate) const
188  {
189  assert(dynamic_cast<State*> (&istate)!=nullptr);
190  State& state = static_cast<State&> (istate);
191  state.m_CovVrtForConstraint.assign ({XX, XY, YY, XZ, YZ, ZZ});
192  }
193 
194  void TrkVKalVrtFitter::setMassInputParticles( const std::vector<double>& mass,
195  IVKalState& istate) const
196  {
197  assert(dynamic_cast<State*> (&istate)!=nullptr);
198  State& state = static_cast<State&> (istate);
199  state.m_MassInputParticles = mass;
200  for (double& m : state.m_MassInputParticles) {
201  m = std::abs(m);
202  }
203  }
204 
205 } //end of namespace
Trk::TrkVKalVrtFitter::m_IterationNumber
Gaudi::Property< int > m_IterationNumber
Definition: TrkVKalVrtFitter.h:324
Trk::TrkVKalVrtFitter::State
Definition: TrkVKalVrtFitter.h:387
Trk::TrkVKalVrtFitter::State::m_globalFirstHit
const TrackParameters * m_globalFirstHit
Definition: TrkVKalVrtFitter.h:411
Trk::VKalVrtControl::setUseRadiusCnst
void setUseRadiusCnst(double R, double RefP[2])
Definition: TrkVKalVrtCoreBase.cxx:305
Trk::TrkVKalVrtFitter::State::m_cnstRadius
double m_cnstRadius
Definition: TrkVKalVrtFitter.h:446
Trk::y
@ y
Definition: ParamDefs.h:56
Trk::VKalVrtControl::setUsePlaneCnst
void setUsePlaneCnst(double a, double b, double c, double d)
Definition: TrkVKalVrtCoreBase.cxx:300
Trk::TrkVKalVrtFitter::State::m_useZPointingCnst
bool m_useZPointingCnst
Definition: TrkVKalVrtFitter.h:431
Trk::TrkVKalVrtFitter::State::m_refFrameZ
double m_refFrameZ
Definition: TrkVKalVrtFitter.h:395
Trk::VKalVrtControl::setUsePassNear
void setUsePassNear(int)
Definition: TrkVKalVrtCoreBase.cxx:315
Trk::TrkVKalVrtFitter::setVertexForConstraint
virtual void setVertexForConstraint(const xAOD::Vertex &, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:159
Trk::TrkVKalVrtFitter::setCovVrtForConstraint
virtual void setCovVrtForConstraint(double XX, double XY, double YY, double XZ, double YZ, double ZZ, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:185
Trk::z
@ z
global position (cartesian)
Definition: ParamDefs.h:57
Trk::VKalVrtControl::m_allowUltraDisplaced
bool m_allowUltraDisplaced
Definition: TrkVKalVrtCore.h:94
Trk::TrkVKalVrtFitter::State::m_refFrameX
double m_refFrameX
Definition: TrkVKalVrtFitter.h:393
Base_Fragment.mass
mass
Definition: Sherpa_i/share/common/Base_Fragment.py:59
Trk::TrkVKalVrtFitter::setRobustness
virtual void setRobustness(int, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:123
Trk::TrkVKalVrtFitter::State::m_partMassCnstTrk
std::vector< std::vector< int > > m_partMassCnstTrk
Definition: TrkVKalVrtFitter.h:441
Trk::VKalVrtControl::setIterationPrec
void setIterationPrec(double Prec)
Definition: TrkVKalVrtCoreBase.cxx:257
skel.it
it
Definition: skel.GENtoEVGEN.py:407
Trk::VKalVrtControl::setRobustScale
void setRobustScale(double Scale)
Definition: TrkVKalVrtCoreBase.cxx:264
Trk::VKalVrtControl::setUsePointingCnst
void setUsePointingCnst(int)
Definition: TrkVKalVrtCoreBase.cxx:314
Trk::VKalVrtControl::setUseThetaCnst
void setUseThetaCnst()
Definition: TrkVKalVrtCoreBase.cxx:312
xAOD::Vertex_v1::position
const Amg::Vector3D & position() const
Returns the 3-pos.
Trk::TrkVKalVrtFitter::State::m_cnstRadiusRef
double m_cnstRadiusRef[2]
Definition: TrkVKalVrtFitter.h:447
Trk::TrkVKalVrtFitter::State::m_FitStatus
int m_FitStatus
Definition: TrkVKalVrtFitter.h:415
Trk::TrkVKalVrtFitter::m_Robustness
Gaudi::Property< int > m_Robustness
Definition: TrkVKalVrtFitter.h:320
Trk::TrkVKalVrtFitter::State::m_partMassCnst
std::vector< double > m_partMassCnst
Definition: TrkVKalVrtFitter.h:440
Trk::TrkVKalVrtFitter::State::m_parPlaneCnst
double m_parPlaneCnst[4]
Definition: TrkVKalVrtFitter.h:445
Trk::TrkVKalVrtFitter::State::m_vkalFitControl
VKalVrtControl m_vkalFitControl
Definition: TrkVKalVrtFitter.h:407
TrkVKalVrtFitter.h
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
Trk::ForCFT
Definition: ForCFT.h:13
ParticleConstants::PDG2011::chargedPionMassInMeV
constexpr double chargedPionMassInMeV
the mass of the charged pion (in MeV)
Definition: ParticleConstants.h:41
Trk::ForCFT::vrt
double vrt[3]
Definition: ForCFT.h:45
Trk::TrkVKalVrtFitter::setMassForConstraint
virtual void setMassForConstraint(double Mass, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:141
Trk::TrkVKalVrtFitter::State::m_useThetaCnst
bool m_useThetaCnst
Definition: TrkVKalVrtFitter.h:428
Trk::VKalVrtControl::setUseAprioriVrt
void setUseAprioriVrt()
Definition: TrkVKalVrtCoreBase.cxx:313
lumiFormat.i
int i
Definition: lumiFormat.py:85
Trk::TrkVKalVrtFitter::setApproximateVertex
virtual void setApproximateVertex(double X, double Y, double Z, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:115
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
Trk::TrkVKalVrtFitter::m_IterationPrecision
Gaudi::Property< double > m_IterationPrecision
Definition: TrkVKalVrtFitter.h:325
Trk::TrkVKalVrtFitter::setCnstType
virtual void setCnstType(int, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:89
TrkVKalVrtCore.h
Trk::TrkVKalVrtFitter::State::m_allowUltraDisplaced
bool m_allowUltraDisplaced
Definition: TrkVKalVrtFitter.h:435
Trk::TrkVKalVrtFitter::State::m_useAprioriVertex
bool m_useAprioriVertex
Definition: TrkVKalVrtFitter.h:427
Trk::VKalVrtControl::setRobustness
void setRobustness(int Rob)
Definition: TrkVKalVrtCoreBase.cxx:271
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
Scale
void Scale(TH1 *h, double d=1)
Definition: comparitor.cxx:79
Trk::TrkVKalVrtFitter::m_firstMeasuredRadiusLimit
Gaudi::Property< bool > m_firstMeasuredRadiusLimit
Definition: TrkVKalVrtFitter.h:343
Trk::TrkVKalVrtFitter::State::m_MassInputParticles
std::vector< double > m_MassInputParticles
Definition: TrkVKalVrtFitter.h:444
Trk::TrkVKalVrtFitter::State::m_frozenVersionForBTagging
bool m_frozenVersionForBTagging
Definition: TrkVKalVrtFitter.h:434
Trk::TrkVKalVrtFitter::State::m_usePhiCnst
bool m_usePhiCnst
Definition: TrkVKalVrtFitter.h:429
Trk::ForCFT::covvrt
double covvrt[6]
Definition: ForCFT.h:45
Trk::VKalVrtControl::setIterationNum
void setIterationNum(int Iter)
Definition: TrkVKalVrtCoreBase.cxx:250
grepfile.ic
int ic
Definition: grepfile.py:33
Monitored::Y
@ Y
Definition: HistogramFillerUtils.h:24
TYPE
#define TYPE(CODE, TYP, IOTYP)
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::ForCFT::wm
double wm[vkalNTrkM]
Definition: ForCFT.h:27
Trk::VKalVrtControl::m_frozenVersionForBTagging
bool m_frozenVersionForBTagging
Definition: TrkVKalVrtCore.h:93
Trk::VKalVrtControl::setMassCnstData
void setMassCnstData(int Ntrk, double Mass)
Definition: TrkVKalVrtCoreBase.cxx:277
Trk::TrkVKalVrtFitter::State::m_usePassNear
bool m_usePassNear
Definition: TrkVKalVrtFitter.h:432
Trk::VKalVrtControl::setUsePhiCnst
void setUsePhiCnst()
Definition: TrkVKalVrtCoreBase.cxx:299
Trk::TrkVKalVrtFitter::State::m_refFrameY
double m_refFrameY
Definition: TrkVKalVrtFitter.h:394
Trk::TrkVKalVrtFitter::State::m_Robustness
int m_Robustness
Definition: TrkVKalVrtFitter.h:442
Trk::TrkVKalVrtFitter::State::m_usePassWithTrkErr
bool m_usePassWithTrkErr
Definition: TrkVKalVrtFitter.h:433
Trk::TrkVKalVrtFitter::m_firstMeasuredPointLimit
Gaudi::Property< bool > m_firstMeasuredPointLimit
Definition: TrkVKalVrtFitter.h:342
Trk::TrkVKalVrtFitter::setRobustScale
virtual void setRobustScale(double, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:132
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
Trk::IVKalState
Definition: IVKalState.h:21
Trk::TrkVKalVrtFitter::State::m_ApproximateVertex
std::vector< double > m_ApproximateVertex
Definition: TrkVKalVrtFitter.h:425
DEBUG
#define DEBUG
Definition: page_access.h:11
Trk::TrkVKalVrtFitter::VKalVrtConfigureFitterCore
void VKalVrtConfigureFitterCore(int NTRK, State &state) const
Definition: SetFitOptions.cxx:18
Trk::TrkVKalVrtFitter::m_RobustScale
Gaudi::Property< double > m_RobustScale
Definition: TrkVKalVrtFitter.h:321
Trk::TrkVKalVrtFitter::State::m_massForConstraint
double m_massForConstraint
Definition: TrkVKalVrtFitter.h:439
Trk::x
@ x
Definition: ParamDefs.h:55
Trk::VKalVrtControl::vk_forcft
ForCFT vk_forcft
Definition: TrkVKalVrtCore.h:92
Trk::TrkVKalVrtFitter::State::m_CovVrtForConstraint
std::vector< double > m_CovVrtForConstraint
Definition: TrkVKalVrtFitter.h:438
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
Trk::TrkVKalVrtFitter::setMassInputParticles
virtual void setMassInputParticles(const std::vector< double > &, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:194
Trk::TrkVKalVrtFitter::State::m_usePointingCnst
bool m_usePointingCnst
Definition: TrkVKalVrtFitter.h:430
Trk::TrkVKalVrtFitter::State::m_VertexForConstraint
std::vector< double > m_VertexForConstraint
Definition: TrkVKalVrtFitter.h:437
Trk::TrkVKalVrtFitter::State::m_RobustScale
double m_RobustScale
Definition: TrkVKalVrtFitter.h:443
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106