Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 #include<iostream>
10 
11 
12 namespace Trk{
13 //
14 // Option setting for VKalVrt core via state.m_vkalFitControl object
15 //
16 
18  {
19  state.m_FitStatus = 0; // Drop all previous fit results
21 
22  //Set input particle masses
23  for(int it=0; it<NTRK; it++){
24  if( it<(int)state.m_MassInputParticles.size() ) {
26  }
27  else { state.m_vkalFitControl.vk_forcft.wm[it]=(double)(139.5702); }
28  }
29  // Set reference vertex for different pointing constraints
30  if(state.m_VertexForConstraint.size() >= 3){
34  }else {for( int i=0; i<3; i++) state.m_vkalFitControl.vk_forcft.vrt[i] = 0.; }
35  // Set covariance matrix for reference vertex
36  if(state.m_CovVrtForConstraint.size() >= 6){
37  for( int i=0; i<6; i++) { state.m_vkalFitControl.vk_forcft.covvrt[i] = (double)(state.m_CovVrtForConstraint[i]); }
38  }else{ for( int i=0; i<6; i++) { state.m_vkalFitControl.vk_forcft.covvrt[i] = 0.; } }
39 
40  // Add global mass constraint if present
42  // Add partial mass constraints if present
43  if(!state.m_partMassCnst.empty()) {
44  for(int ic=0; ic<(int)state.m_partMassCnst.size(); ic++){
46  }
47  }
48  // Set general configuration parameters
51  state.m_vkalFitControl.setUsePlaneCnst(0.,0.,0.,0.);
59 
62 
65  }
66 
67 /*
68  void TrkVKalVrtFitter::initCnstList()
69  {
70 //--- Mass constraint is restored here
71  if( m_massForConstraint>0. || m_PartMassCnst.size()>0 ) vksetUseMassCnst();
72  if( m_useAprioriVertex ) vksetUseAprioriVrt();
73  if( m_useThetaCnst ) vksetUseThetaCnst();
74  if( m_usePhiCnst ) vksetUsePhiCnst();
75  if( m_usePointingCnst ) vksetUsePointingCnst(1);
76  if( m_useZPointingCnst) vksetUsePointingCnst(2);
77  if( m_usePassNear) vksetUsePassNear(1);
78  if( m_usePassWithTrkErr) vksetUsePassNear(2);
79  }
80 */
81 //Old logics. Left here for reference to compare with previous releases of VKalVrt
82 //
84  {
85  assert(dynamic_cast<State*> (&istate)!=nullptr);
86  State& state = static_cast<State&> (istate);
87  if(TYPE>0)msg(MSG::DEBUG)<< "ConstraintType is changed at execution stage. New type="<<TYPE<< endmsg;
88  if(TYPE<0)TYPE=0;
89  if(TYPE>14)TYPE=0;
90  if( TYPE == 2) state.m_usePointingCnst = true;
91  if( TYPE == 3) state.m_useZPointingCnst = true;
92  if( TYPE == 4) state.m_usePointingCnst = true;
93  if( TYPE == 5) state.m_useZPointingCnst = true;
94  if( TYPE == 6) state.m_useAprioriVertex = true;
95  if( TYPE == 7) state.m_usePassWithTrkErr = true;
96  if( TYPE == 8) state.m_usePassWithTrkErr = true;
97  if( TYPE == 9) state.m_usePassNear = true;
98  if( TYPE == 10) state.m_usePassNear = true;
99  if( TYPE == 11) state.m_usePhiCnst = true;
100  if( TYPE == 12) { state.m_usePhiCnst = true; state.m_useThetaCnst = true;}
101  if( TYPE == 13) { state.m_usePhiCnst = true; state.m_usePassNear = true;}
102  if( TYPE == 14) { state.m_usePhiCnst = true; state.m_useThetaCnst = true; state.m_usePassNear = true;}
103  }
104 
105 //
106 // Define finctions for on-the-fly fitter configuration
107 //
108 //
109  void TrkVKalVrtFitter::setApproximateVertex(double X,double Y,double Z,
110  IVKalState& istate) const
111  {
112  assert(dynamic_cast<State*> (&istate)!=nullptr);
113  State& state = static_cast<State&> (istate);
114  state.m_ApproximateVertex.assign ({X, Y, Z});
115  }
116 
117  void TrkVKalVrtFitter::setRobustness(int IROB, IVKalState& istate) const
118  { if(IROB>0)msg(MSG::DEBUG)<< "Robustness is changed at execution stage "<<m_Robustness<<"=>"<<IROB<< endmsg;
119  assert(dynamic_cast<State*> (&istate)!=nullptr);
120  State& state = static_cast<State&> (istate);
121  state.m_Robustness = IROB;
122  if(state.m_Robustness<0)state.m_Robustness=0;
123  if(state.m_Robustness>7)state.m_Robustness=0;
124  }
125 
127  { if(Scale!=m_RobustScale)msg(MSG::DEBUG)<< "Robust Scale is changed at execution stage "<<m_RobustScale<<"=>"<<Scale<< endmsg;
128  assert(dynamic_cast<State*> (&istate)!=nullptr);
129  State& state = static_cast<State&> (istate);
130  state.m_RobustScale = Scale;
131  if(state.m_RobustScale<0.01) state.m_RobustScale=1.;
132  if(state.m_RobustScale>100.) state.m_RobustScale=1.;
133  }
134 
136  IVKalState& istate) const
137  {
138  assert(dynamic_cast<State*> (&istate)!=nullptr);
139  State& state = static_cast<State&> (istate);
140  state.m_massForConstraint = MASS;
141  }
142 
144  std::span<const int> TrkIndex,
145  IVKalState& istate) const
146  {
147  assert(dynamic_cast<State*> (&istate)!=nullptr);
148  State& state = static_cast<State&> (istate);
149  state.m_partMassCnst.push_back(MASS);
150  state.m_partMassCnstTrk.emplace_back(TrkIndex.begin(), TrkIndex.end());
151  }
152 
154  IVKalState& istate) const
155  {
156  assert(dynamic_cast<State*> (&istate)!=nullptr);
157  State& state = static_cast<State&> (istate);
158  state.m_VertexForConstraint.assign ({Vrt.position().x(),
159  Vrt.position().y(),
160  Vrt.position().z()});
161 
162  state.m_CovVrtForConstraint.assign ({
163  Vrt.covariancePosition()(Trk::x,Trk::x),
164  Vrt.covariancePosition()(Trk::x,Trk::y),
165  Vrt.covariancePosition()(Trk::y,Trk::y),
166  Vrt.covariancePosition()(Trk::x,Trk::z),
167  Vrt.covariancePosition()(Trk::y,Trk::z),
168  Vrt.covariancePosition()(Trk::z,Trk::z)});
169  }
170 
171  void TrkVKalVrtFitter::setVertexForConstraint(double X,double Y,double Z,
172  IVKalState& istate) const
173  {
174  assert(dynamic_cast<State*> (&istate)!=nullptr);
175  State& state = static_cast<State&> (istate);
176  state.m_VertexForConstraint.assign ({X, Y, Z});
177  }
178 
179  void TrkVKalVrtFitter::setCovVrtForConstraint(double XX,double XY,double YY,
180  double XZ,double YZ,double ZZ,
181  IVKalState& istate) const
182  {
183  assert(dynamic_cast<State*> (&istate)!=nullptr);
184  State& state = static_cast<State&> (istate);
185  state.m_CovVrtForConstraint.assign ({XX, XY, YY, XZ, YZ, ZZ});
186  }
187 
188  void TrkVKalVrtFitter::setMassInputParticles( const std::vector<double>& mass,
189  IVKalState& istate) const
190  {
191  assert(dynamic_cast<State*> (&istate)!=nullptr);
192  State& state = static_cast<State&> (istate);
193  state.m_MassInputParticles = mass;
194  for (double& m : state.m_MassInputParticles) {
195  m = std::abs(m);
196  }
197  }
198 
199 } //end of namespace
Trk::TrkVKalVrtFitter::State
Definition: TrkVKalVrtFitter.h:385
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:429
Trk::TrkVKalVrtFitter::m_IterationPrecision
SimpleProperty< double > m_IterationPrecision
Definition: TrkVKalVrtFitter.h:325
Trk::TrkVKalVrtFitter::State::m_refFrameZ
double m_refFrameZ
Definition: TrkVKalVrtFitter.h:393
Trk::VKalVrtControl::setUsePassNear
void setUsePassNear(int)
Definition: TrkVKalVrtCoreBase.cxx:308
Trk::TrkVKalVrtFitter::setVertexForConstraint
virtual void setVertexForConstraint(const xAOD::Vertex &, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:153
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:179
Trk::z
@ z
global position (cartesian)
Definition: ParamDefs.h:57
Trk::VKalVrtControl::m_allowUltraDisplaced
bool m_allowUltraDisplaced
Definition: TrkVKalVrtCore.h:93
Trk::TrkVKalVrtFitter::State::m_refFrameX
double m_refFrameX
Definition: TrkVKalVrtFitter.h:391
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:117
Trk::TrkVKalVrtFitter::State::m_partMassCnstTrk
std::vector< std::vector< int > > m_partMassCnstTrk
Definition: TrkVKalVrtFitter.h:439
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:307
Trk::VKalVrtControl::setUseThetaCnst
void setUseThetaCnst()
Definition: TrkVKalVrtCoreBase.cxx:305
xAOD::Vertex_v1::position
const Amg::Vector3D & position() const
Returns the 3-pos.
Trk::TrkVKalVrtFitter::m_RobustScale
SimpleProperty< double > m_RobustScale
Definition: TrkVKalVrtFitter.h:321
Trk::TrkVKalVrtFitter::State::m_FitStatus
int m_FitStatus
Definition: TrkVKalVrtFitter.h:413
Trk::TrkVKalVrtFitter::State::m_partMassCnst
std::vector< double > m_partMassCnst
Definition: TrkVKalVrtFitter.h:438
Trk::TrkVKalVrtFitter::State::m_vkalFitControl
VKalVrtControl m_vkalFitControl
Definition: TrkVKalVrtFitter.h:405
TrkVKalVrtFitter.h
Trk::TrkVKalVrtFitter::m_Robustness
SimpleProperty< int > m_Robustness
Definition: TrkVKalVrtFitter.h:320
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
Trk::ForCFT
Definition: ForCFT.h:13
Trk::ForCFT::vrt
double vrt[3]
Definition: ForCFT.h:39
Trk::TrkVKalVrtFitter::setMassForConstraint
virtual void setMassForConstraint(double Mass, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:135
Trk::TrkVKalVrtFitter::State::m_useThetaCnst
bool m_useThetaCnst
Definition: TrkVKalVrtFitter.h:426
Trk::VKalVrtControl::setUseAprioriVrt
void setUseAprioriVrt()
Definition: TrkVKalVrtCoreBase.cxx:306
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:109
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
Trk::TrkVKalVrtFitter::setCnstType
virtual void setCnstType(int, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:83
TrkVKalVrtCore.h
Trk::TrkVKalVrtFitter::State::m_allowUltraDisplaced
bool m_allowUltraDisplaced
Definition: TrkVKalVrtFitter.h:433
Trk::TrkVKalVrtFitter::State::m_useAprioriVertex
bool m_useAprioriVertex
Definition: TrkVKalVrtFitter.h:425
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::State::m_MassInputParticles
std::vector< double > m_MassInputParticles
Definition: TrkVKalVrtFitter.h:442
Trk::TrkVKalVrtFitter::State::m_frozenVersionForBTagging
bool m_frozenVersionForBTagging
Definition: TrkVKalVrtFitter.h:432
Trk::TrkVKalVrtFitter::State::m_usePhiCnst
bool m_usePhiCnst
Definition: TrkVKalVrtFitter.h:427
Trk::ForCFT::covvrt
double covvrt[6]
Definition: ForCFT.h:39
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:26
Trk::VKalVrtControl::m_frozenVersionForBTagging
bool m_frozenVersionForBTagging
Definition: TrkVKalVrtCore.h:92
Trk::VKalVrtControl::setMassCnstData
void setMassCnstData(int Ntrk, double Mass)
Definition: TrkVKalVrtCoreBase.cxx:277
Trk::TrkVKalVrtFitter::State::m_usePassNear
bool m_usePassNear
Definition: TrkVKalVrtFitter.h:430
Trk::VKalVrtControl::setUsePhiCnst
void setUsePhiCnst()
Definition: TrkVKalVrtCoreBase.cxx:299
Trk::TrkVKalVrtFitter::State::m_refFrameY
double m_refFrameY
Definition: TrkVKalVrtFitter.h:392
Trk::TrkVKalVrtFitter::State::m_Robustness
int m_Robustness
Definition: TrkVKalVrtFitter.h:440
Trk::TrkVKalVrtFitter::State::m_usePassWithTrkErr
bool m_usePassWithTrkErr
Definition: TrkVKalVrtFitter.h:431
Trk::TrkVKalVrtFitter::setRobustScale
virtual void setRobustScale(double, IVKalState &istate) const override final
Definition: SetFitOptions.cxx:126
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::m_IterationNumber
SimpleProperty< int > m_IterationNumber
Definition: TrkVKalVrtFitter.h:324
Trk::TrkVKalVrtFitter::State::m_ApproximateVertex
std::vector< double > m_ApproximateVertex
Definition: TrkVKalVrtFitter.h:423
DEBUG
#define DEBUG
Definition: page_access.h:11
Trk::TrkVKalVrtFitter::VKalVrtConfigureFitterCore
void VKalVrtConfigureFitterCore(int NTRK, State &state) const
Definition: SetFitOptions.cxx:17
Trk::TrkVKalVrtFitter::State::m_massForConstraint
double m_massForConstraint
Definition: TrkVKalVrtFitter.h:437
Trk::x
@ x
Definition: ParamDefs.h:55
Trk::VKalVrtControl::vk_forcft
ForCFT vk_forcft
Definition: TrkVKalVrtCore.h:91
Trk::TrkVKalVrtFitter::State::m_CovVrtForConstraint
std::vector< double > m_CovVrtForConstraint
Definition: TrkVKalVrtFitter.h:436
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:188
Trk::TrkVKalVrtFitter::State::m_usePointingCnst
bool m_usePointingCnst
Definition: TrkVKalVrtFitter.h:428
Trk::TrkVKalVrtFitter::State::m_VertexForConstraint
std::vector< double > m_VertexForConstraint
Definition: TrkVKalVrtFitter.h:435
Trk::TrkVKalVrtFitter::State::m_RobustScale
double m_RobustScale
Definition: TrkVKalVrtFitter.h:441
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:105