ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::GlobalChi2AlignTool Class Reference

#include <GlobalChi2AlignTool.h>

Inheritance diagram for Trk::GlobalChi2AlignTool:
Collaboration diagram for Trk::GlobalChi2AlignTool:

Public Member Functions

 GlobalChi2AlignTool (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor.
virtual ~GlobalChi2AlignTool ()
 Virtual destructor.
virtual StatusCode initialize ()
 initialize
virtual StatusCode finalize ()
 finalize
virtual StatusCode firstEventInitialize ()
 sets up matrix
virtual StatusCode solve ()
 solves for alignment parameters
bool accumulate (AlignTrack *alignTrack)
 accumulates information from an AlignTrack
bool accumulateFromFiles ()
 accumulates information from binary files
unsigned int nAccumulatedTracks ()
 returns total number of accumulated tracks
void setNtuple (TFile *ntuple)
 set ntuple
void setLogStream (std::ostream *os)
 sets the output stream for the logfile
StatusCode fillNtuple ()
 writes tree to ntuple
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Protected Attributes

std::ostream * m_logStream
 logfile output stream

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

double getMaterialOnTrack (const Trk::Track *track)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< Trk::IMatrixToolm_matrixTool
 Pointer to MatrixTool, used to write to and solve matrix.
ToolHandle< Trk::IAlignModuleToolm_alignModuleTool
 Pointer to AlignModuleTool.
std::string m_pathbin
 path binary files (in/out)
std::string m_pathtxt
 path ascii files (in/out)
std::string m_prefixName
 prefix string to filenames
unsigned int m_ntracks
 number of accumulated tracks
unsigned int m_nmeas
 number of accumulated measurements
unsigned int m_nhits
 number of accumulated hits
double m_chi2
 total chi2
unsigned int m_nDoF
 number of degrees of freedom
double m_secondDerivativeCut
bool m_doTree
bool m_writeActualSecDeriv
bool m_storeLocalDerivOnly
TFile * m_ntuple
 output ntuple
TTree * m_tree
int m_run
int m_event
double m_materialOnTrack
double m_momentum
int m_nChambers
int * m_chamberIds
int m_nMatrixIndices
int * m_matrixIndices
int m_nSecndDeriv
double * m_secndDeriv
double * m_firstDeriv
double * m_actualSecndDeriv
double m_eta
double m_phi
double m_perigee_x
double m_perigee_y
double m_perigee_z
int m_trackInfo
int m_bremFit
int m_bremFitSuccessful
int m_straightTrack
int m_slimmedTrack
int m_hardScatterOrKink
int m_lowPtTrack
bool m_fromFiles
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 39 of file GlobalChi2AlignTool.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

◆ GlobalChi2AlignTool()

GlobalChi2AlignTool::GlobalChi2AlignTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructor.

Definition at line 42 of file GlobalChi2AlignTool.cxx.

44 : AthAlgTool(type,name,parent)
45 , m_matrixTool("Trk::MatrixTool",this)
46 , m_alignModuleTool("Trk::AlignModuleTool/AlignModuleTool")
47 , m_ntracks(0)
48 , m_nmeas(0)
49 , m_nhits(0)
50 , m_chi2(0.)
51 , m_nDoF(0)
52 , m_ntuple(nullptr)
53 , m_tree(nullptr)
54 , m_run{}
55 , m_event{}
57 , m_momentum{}
58 , m_nChambers(0)
59 , m_chamberIds(new int[MAXNCHAMBERS])
62 , m_nSecndDeriv(0)
64 , m_firstDeriv(new double[MAXNINDICES])
65 , m_actualSecndDeriv(new double[MAXNINDICES])
66 , m_eta{}
67 , m_phi{}
69 , m_trackInfo{}
70 , m_bremFit{}
75 , m_lowPtTrack{}
76 , m_fromFiles(false)
77 {
78 declareInterface<IAlignTool>(this);
79
80 declareProperty("MatrixTool", m_matrixTool, "tool for storing and inverting matrix");
81 declareProperty("AlignModuleTool", m_alignModuleTool);
82
83 declareProperty("SecondDerivativeCut", m_secondDerivativeCut = -1e5);
84
85 declareProperty("DoTree", m_doTree = false);
86 declareProperty("WriteActualSecDeriv", m_writeActualSecDeriv = false);
87
88 declareProperty("StoreLocalDerivOnly", m_storeLocalDerivOnly = false);
89
90 m_logStream = nullptr;
91 }
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
unsigned int m_nhits
number of accumulated hits
TFile * m_ntuple
output ntuple
unsigned int m_ntracks
number of accumulated tracks
ToolHandle< Trk::IMatrixTool > m_matrixTool
Pointer to MatrixTool, used to write to and solve matrix.
unsigned int m_nmeas
number of accumulated measurements
ToolHandle< Trk::IAlignModuleTool > m_alignModuleTool
Pointer to AlignModuleTool.
unsigned int m_nDoF
number of degrees of freedom
std::ostream * m_logStream
logfile output stream
Definition IAlignTool.h:54
constexpr int MAXNCHAMBERS
constexpr int MAXNINDICES

◆ ~GlobalChi2AlignTool()

GlobalChi2AlignTool::~GlobalChi2AlignTool ( )
virtual

Virtual destructor.

Definition at line 94 of file GlobalChi2AlignTool.cxx.

95 {
96 ATH_MSG_DEBUG("in GlobalChi2AlignTool d'tor");
97 //delete m_tree;
98
99 delete [] m_chamberIds;
100 delete [] m_matrixIndices;
101 delete [] m_secndDeriv;
102 delete [] m_firstDeriv;
103 delete [] m_actualSecndDeriv;
104
105 ATH_MSG_DEBUG("done with GlobalChi2AlignTool d'tor");
106 }
#define ATH_MSG_DEBUG(x)

Member Function Documentation

◆ accumulate()

bool GlobalChi2AlignTool::accumulate ( AlignTrack * alignTrack)
virtual

accumulates information from an AlignTrack

Implements Trk::IAlignTool.

Definition at line 143 of file GlobalChi2AlignTool.cxx.

144 {
145 ATH_MSG_DEBUG("in GlobalChi2AlignTool::accumulate()");
146
147 // prepare ROOT tree for derivatives if it doesn't exist yet
148 // Shouldn't this be in firstEventInitialize() ?
149 if (m_doTree && !m_tree && m_ntuple) {
150
151 m_ntuple->cd();
152 m_tree=new TTree("globalChi2Deriv","globalChi2Deriv");
153 m_tree->Branch("run", &m_run, "run/I");
154 m_tree->Branch("event", &m_event, "event/I");
155 m_tree->Branch("nChambers", &m_nChambers, "nChambers/I");
156 m_tree->Branch("chamberIds", m_chamberIds, "chamberIds[nChambers]/I");
157 m_tree->Branch("nMatrixIndices", &m_nMatrixIndices, "nMatrixIndices/I");
158 m_tree->Branch("matrixIndices", m_matrixIndices, "matrixIndices[nMatrixIndices]/I");
159 m_tree->Branch("nSecndDeriv", &m_nSecndDeriv, "nSecndDeriv/I");
160 m_tree->Branch("secndDeriv", m_secndDeriv, "secndDeriv[nSecndDeriv]/D");
161 m_tree->Branch("firstDeriv", m_firstDeriv, "firstDeriv[nMatrixIndices]/D");
163 m_tree->Branch("actualSecndDeriv", m_actualSecndDeriv, "actualSecndDeriv[nMatrixIndices]/D");
164
165 m_tree->Branch("materialOnTrack", &m_materialOnTrack, "materialOnTrack/D");
166 m_tree->Branch("momentum", &m_momentum, "momentum/D");
167 m_tree->Branch("eta", &m_eta, "eta/D");
168 m_tree->Branch("phi", &m_phi, "phi/D");
169 m_tree->Branch("perigee_x", &m_perigee_x, "perigee_x/D");
170 m_tree->Branch("perigee_y", &m_perigee_y, "perigee_y/D");
171 m_tree->Branch("perigee_z", &m_perigee_z, "perigee_z/D");
172 m_tree->Branch("trackInfo", &m_trackInfo, "trackInfo/I");
173 m_tree->Branch("bremFit", &m_bremFit, "bremFit/I");
174 m_tree->Branch("bremFitSuccessful", &m_bremFitSuccessful, "bremFitSuccessful/I");
175 m_tree->Branch("straightTrack", &m_straightTrack, "straightTrack/I");
176 m_tree->Branch("slimmedTrack", &m_slimmedTrack, "slimmedTrack/I");
177 m_tree->Branch("hardScatterOrKink", &m_hardScatterOrKink, "hardScatterOrKink/I");
178 m_tree->Branch("lowPtTrack", &m_lowPtTrack, "lowPtTrack/I");
179 }
180
181
182 // check if the track belongs to a vertex. If yes, retrieve the relevant objects:
183 bool fullVertex = false;
184 AlignVertex * ptrVertex = alignTrack->getVtx();
185 const Amg::Vector3D * ptrPosition = nullptr;
186 const AmgSymMatrix(3) * ptrCovariance = nullptr;
187 const std::vector<AlignModuleVertexDerivatives> * ptrX = nullptr;
189 if( ptrVertex ) {
190 fullVertex = true;
191 ptrPosition = ptrVertex->position();
192 ptrCovariance = ptrVertex->covariance();
193 ptrX = ptrVertex->derivatives();
194 vtxType = ptrVertex->type();
195
196 // check if pointers are valid
197 if ( !ptrPosition || !ptrCovariance || !ptrX || vtxType<AlignVertex::Refitted ) {
198 msg(MSG::ERROR)<<"something missing from alignVertex!"<<endmsg;
199 if (!ptrPosition) msg(MSG::ERROR)<<"no fitted position!"<<endmsg;
200 if (!ptrCovariance) msg(MSG::ERROR)<<"no covariance!"<<endmsg;
201 if (!ptrX) msg(MSG::ERROR)<<"no link to the X object!"<<endmsg;
202 if (vtxType<AlignVertex::Refitted) msg(MSG::ERROR)<<"Vertex type = "<< vtxType << endmsg;
203 return false;
204 }
205 }
206
207
208
209 // reset tree variables
210 m_nChambers=0;
212
213 // get pointers so we can reuse them if they're valid
214 const Amg::SymMatrixX * ptrWeights = alignTrack->weightMatrix();
215 const Amg::SymMatrixX * ptrWeightsFD = alignTrack->weightMatrixFirstDeriv();
216 const Amg::VectorX * ptrResiduals = alignTrack->residualVector();
217 const std::vector<AlignModuleDerivatives> * ptrDerivs = alignTrack->derivatives();
218
219 // check if pointers are valid
220 if (!ptrWeights || !ptrWeightsFD || !ptrResiduals || !ptrDerivs) {
221 msg(MSG::ERROR)<<"something missing from alignTrack!"<<endmsg;
222 if (!ptrWeights) msg(MSG::ERROR)<<"no weights!"<<endmsg;
223 if (!ptrWeightsFD) msg(MSG::ERROR)<<"no weights for first deriv!"<<endmsg;
224 if (!ptrResiduals) msg(MSG::ERROR)<<"no residuals!"<<endmsg;
225 if (!ptrDerivs) msg(MSG::ERROR)<<"no derivatives!"<<endmsg;
226 return false;
227 }
228
229 // get weight matrices
230 const Amg::SymMatrixX& weights = *ptrWeights;
231 const Amg::SymMatrixX& weightsFirstDeriv = *ptrWeightsFD;
232 ATH_MSG_VERBOSE("weights="<<weights);
233 ATH_MSG_VERBOSE("weightsFirstDeriv="<<weightsFirstDeriv);
234
235 // get vectors
236 const Amg::VectorX& residuals = *ptrResiduals;
237 std::vector<AlignModuleDerivatives> derivatives = *ptrDerivs;
238 const std::vector<AlignModuleDerivatives>* derivativeErr = alignTrack->derivativeErr();
239 const std::vector<std::pair<AlignModule*,std::vector<double> > >* secDerivs = alignTrack->actualSecondDerivatives();
240
241
242
243 std::vector<AlignPar*> allAlignPars;
244 std::vector<Amg::VectorX*> allDerivatives;
245 std::vector<const Amg::VectorX*> allDerivativeErr;
246 std::vector<double> allActualSecDeriv;
247 int WSize(weights.cols());
248 Amg::MatrixX matrix_F(3,WSize );
249 matrix_F.setZero();
250
251 // get all alignPars and all derivatives
252 msg(MSG::DEBUG) << "accumulate: The derivative vector size is " << derivatives.size() << endmsg;
253 std::vector<AlignModuleDerivatives>::iterator derivIt = derivatives.begin();
254 std::vector<AlignModuleDerivatives>::iterator derivIt_end = derivatives.end();
255
256 std::vector<AlignModuleDerivatives>::const_iterator derivErrIt;
257 std::vector<std::pair<AlignModule*,std::vector<double> > >::const_iterator secDerivIt;
258 if (derivativeErr) derivErrIt=derivativeErr->begin();
259 if (secDerivs) secDerivIt=secDerivs->begin();
260 for ( ; derivIt!=derivIt_end ; ++derivIt) {
261
262 // get AlignModule
263 AlignModule* module=derivIt->first;
264
265 // increment track counter
266 module->addTrack();
267 ATH_MSG_DEBUG("add track to module "<<module->identify().get_identifier32().get_compact());
268 module->addNDoF(alignTrack->fitQuality()->numberDoF());
269 module->addTrackChi2(alignTrack->fitQuality()->chiSquared());
270
271 // tree variables
273 m_chamberIds[m_nChambers]=module->identify().get_identifier32().get_compact();
274 m_nChambers++;
275 }
276 else ATH_MSG_WARNING("number of chambers exceeded maximum");
277
278 // get alignment parameters
279 std::vector<Amg::VectorX>& deriv_vec = derivIt->second;
280 ATH_MSG_DEBUG( "accumulate: The deriv_vec size is " << deriv_vec.size() );
281 DataVector<AlignPar>* alignPars = m_alignModuleTool->getAlignPars(module);
282 int nModPars = alignPars->size();
283 if (nModPars != (int)deriv_vec.size() && (nModPars+3) != (int)deriv_vec.size()) {
284 ATH_MSG_ERROR("accumulate: wrong size of the deriv_vec!");
285 return false;
286 }
287 for (int i=0;i<3;i++) {
288 for (int j=0;j<WSize;j++) {
289 matrix_F(i,j) += deriv_vec[nModPars+i][j]; // in the derivIT loop the complete F matrix is built
290 }
291 }
292
293 // get derivatives and derivative errors
294 for (int i=0;i<nModPars;i++) {
295 ATH_MSG_DEBUG("align par for module "<<(*alignPars)[i]->alignModule()->identify());
296 allAlignPars.push_back((*alignPars)[i]);
297 allDerivatives.push_back(&deriv_vec[i]);
298 if (derivativeErr)
299 allDerivativeErr.push_back(&(derivErrIt->second)[i]);
300 if (secDerivs)
301 allActualSecDeriv.push_back((secDerivIt->second)[i]);
302 }
303 if (derivativeErr) ++derivErrIt;
304 if (secDerivs) ++secDerivIt;
305 }
306
307 // increment hit counters in modules
308 AlignTSOSCollection::iterator iatsos = alignTrack->firstAtsos();
309 AlignTSOSCollection::iterator iatsos_last = alignTrack->lastAtsos();
310 for (; iatsos != iatsos_last; ++iatsos)
311 if ((*iatsos)->module())
312 (*iatsos)->module()->addHit();
313
314 // determine all derivatives and set in matrix tool
315 int nAllPars = allAlignPars.size();
317 for (int ipar=0;ipar<nAllPars;ipar++) {
318
319 // calculate first derivative
320 Amg::MatrixX derivativesT = (*allDerivatives[ipar]).transpose();
321 ATH_MSG_DEBUG("derivativesT (size "<<derivativesT.cols()<<"): "<<derivativesT);
322
323 Amg::MatrixX RHM= weightsFirstDeriv * residuals;
324 ATH_MSG_DEBUG("RHM: "<<RHM);
325
326 // get global parameter index
327 int index1 = allAlignPars[ipar]->index();
328
329 Amg::MatrixX firstderivM = 2.* derivativesT * RHM;
330 ATH_MSG_DEBUG("firstderivM for i="<<index1 <<firstderivM);
331 if (firstderivM(0,0)==0.) {
332 ATH_MSG_DEBUG("firstderivM[0][0] is zero : "<<firstderivM(0,0));
333 continue;
334 }
335
336
337
338 // tree variables
341 ATH_MSG_DEBUG("ipar: "<<ipar<<", m_nMatrixIndices="<<m_nMatrixIndices);
343 ATH_MSG_DEBUG("alActualSecDeriv size: "<<allActualSecDeriv.size());
344 m_actualSecndDeriv[m_nMatrixIndices]=allActualSecDeriv[ipar];
345 }
347 }
348
349 // get module index
350 int imodule1 = allAlignPars[ipar]->alignModule()->identifyHash();
351
352 // calculate second derivatives
353 bool goodSecondDeriv = true;
354 for (int jpar=ipar;jpar<nAllPars;jpar++) {
355
356 // get global parameter index
357 int index2=allAlignPars[jpar]->index();
358
359 // get module index
360 int imodule2 = allAlignPars[jpar]->alignModule()->identifyHash();
361
362 // if only local Chi2 method is used, the 2nd derivatives (correlations)
363 // between different modules don't need to be calculated/stored
365 if (imodule1 != imodule2)
366 continue;
367
368 Amg::MatrixX RHM2 = weights * (*allDerivatives[jpar]);
369 Amg::MatrixX secondderivM = 2. * derivativesT * RHM2;
370
371 // if second derivative on diagonal is below cut
372 // ignore the whole row/column
373 if (jpar==ipar && secondderivM(0,0)<0.) {
374 ATH_MSG_WARNING("second deriv < 0 !!!");
375 }
376 if (jpar==ipar && secondderivM(0,0)<m_secondDerivativeCut) {
377 ATH_MSG_DEBUG("secondderivM[0][0] is below threshold : "<<
378 secondderivM(0,0)<<" < "<<m_secondDerivativeCut);
379 goodSecondDeriv = false;
380 break;
381 }
382
383 ATH_MSG_DEBUG("secondderivM for i "<<index1<<", j "<<index2<<": "<<secondderivM(0,0));
384 m_matrixTool->addSecondDerivative(index1, index2, secondderivM(0,0));
385
386 // store derivatives and indices for ntuple
387 m_secndDeriv[m_nSecndDeriv]=secondderivM(0,0);
389 }
390
391 // if second derivative on diagonal didn't pass the cut,
392 // ignore also the first derivative
393 if (goodSecondDeriv) {
394 m_matrixTool->addFirstDerivative(index1, firstderivM(0,0));
395 m_firstDeriv[ipar]=firstderivM(0,0);
396 }
397 else
398 m_firstDeriv[ipar]=-999.;
399 }
400
401
402
403
404 if( fullVertex ) { // this track is associated to a vertex.
405
406
407 ATH_MSG_DEBUG( "accumulate: Contribution from the fullVTX will be added " );
408
409 Amg::MatrixX RHM = (*ptrCovariance) * (matrix_F) * (weightsFirstDeriv * residuals);
410
411 std::vector<AlignPar*> vtxAlignPars;
412 std::vector<const Amg::VectorX*> vtxDerivatives;
413
414 // get all alignPars and all derivatives
415 msg(MSG::DEBUG) << "accumulate: The Vertex derivative vector size is " << ptrX->size() << endmsg;
416 std::vector<AlignModuleVertexDerivatives>::const_iterator XIt = ptrX->begin();
417 std::vector<AlignModuleVertexDerivatives>::const_iterator XIt_end = ptrX->end();
418
419 for ( ; XIt!=XIt_end ; ++XIt) {
420
421 // get AlignModule
422 const AlignModule* module=XIt->first;
423
424 // get alignment parameters
425 const std::vector<Amg::VectorX>& X_vec = XIt->second;
426 msg(MSG::DEBUG) << "accumulate: The X_vec size is " << X_vec.size() << endmsg;
427 DataVector<AlignPar>* alignPars = m_alignModuleTool->getAlignPars(module);
428 int nModPars = alignPars->size();
429 if (nModPars != (int)X_vec.size()) {
430 ATH_MSG_ERROR("accumulate: wrong size of the X_vec!");
431 return false;
432 }
433
434 // get derivatives and derivative errors
435 for (int i=0;i<nModPars;i++) {
436 ATH_MSG_DEBUG("align par for module "<<(*alignPars)[i]->alignModule()->identify());
437 vtxAlignPars.push_back((*alignPars)[i]);
438 vtxDerivatives.push_back(&X_vec[i]);
439 }
440
441 }
442
443 // bit responsible for the constraint:
444 int ierr(0);
445 AmgSymMatrix(3) Qinv;
446 Qinv.setZero();
447 Amg::Vector3D vtemp;
448 vtemp.setZero();
449 if( vtxType==AlignVertex::Refitted && ptrVertex->Constrained() && ptrVertex->Qmatrix()->determinant() > 1.0e-24 ) { // just my guess sigma>0.1 micron ???) only once per vertex!
450
451 bool invertible;
452 double determinant;
453 ptrVertex->Qmatrix()->computeInverseAndDetWithCheck(Qinv,determinant,invertible);
454
455 if(!invertible) {
456 std::cout <<"accumulate: Q inversion failed. CLHEP status flag = "<<ierr<< std::endl;
457 return false;
458 }
459 vtemp(0) = -ptrVertex->originalPosition()->x()+(*(ptrVertex->Vvector()))(0);
460 vtemp(1) = -ptrVertex->originalPosition()->y()+(*(ptrVertex->Vvector()))(1);
461 vtemp(2) = -ptrVertex->originalPosition()->z()+(*(ptrVertex->Vvector()))(2);
462 }
463
464
465 // determine all derivatives and set in matrix tool
466 int nvtxPars = vtxAlignPars.size();
467 for (int ipar=0;ipar<nvtxPars;ipar++) {
468
469 // calculate first derivative
470 Amg::MatrixX derivativesT = (*vtxDerivatives[ipar]).transpose();
471 Amg::MatrixX firstderivM = -2.* derivativesT * RHM; // -2 seems correct :)
472
473 // bit responsible for the constraint:
474 if( vtxType==AlignVertex::Refitted && ptrVertex->Constrained() && ptrVertex->Qmatrix()->determinant() > 1.0e-24 ) { // just my guess sigma>0.1 micron ???) only once per vertex!
475 firstderivM += 2.* derivativesT * ((*ptrCovariance) * Qinv) * vtemp;
476 }
477
478 // get global parameter index
479 int index1 = vtxAlignPars[ipar]->index();
480
481 ATH_MSG_DEBUG("vtx firstderivM for i="<<index1 <<firstderivM);
482
483
484 if( vtxType==AlignVertex::Refitted ) { // only once per vertex!
485 ATH_MSG_DEBUG("accumulate: Filling second derivative for this vertex... ");
486 for (int jpar=0;jpar<nvtxPars;jpar++) {
487
488 // calculate second derivative
489 Amg::MatrixX secondderivM = -1.* derivativesT * (*ptrCovariance) * (*vtxDerivatives[jpar]); // -1 is the right factor :)
490
491 // bit responsible for the constraint:
492 if( ptrVertex->Constrained() && ptrVertex->Qmatrix()->determinant() > 1.0e-24 ) { // just my guess sigma>0.1 micron ???)
493 secondderivM += 2.* derivativesT * ((*ptrCovariance) * Qinv * (*ptrCovariance)) * (*vtxDerivatives[jpar]);
494 }
495
496 // get global parameter index
497 int index2=vtxAlignPars[jpar]->index();
498
499 if( index1<=index2 ) {
500 ATH_MSG_DEBUG("vtx secondderivM for i="<<index1<<", j="<<index2<<": "<<secondderivM(0,0));
501 m_matrixTool->addSecondDerivative(index1, index2, secondderivM(0,0));
502 }
503
504 }
505 ptrVertex->setType(AlignVertex::Accumulated); // only once per vertex!
506 }
507
508 m_matrixTool->addFirstDerivative(index1, firstderivM(0,0));
509
510 }
511
512 }
513
514
515
516
517
518 // fill tree
519 if (m_tree) {
520
521 // get tree variables
522 const xAOD::EventInfo* currentEvent;
523 StatusCode sc = evtStore()->retrieve(currentEvent);
524 if (sc==StatusCode::SUCCESS) {
525 m_run = currentEvent->runNumber();
526 m_event = currentEvent->eventNumber();
527 }
528 else {
529 m_run = -999;
530 m_event = -999;
531 }
532
533 m_materialOnTrack=getMaterialOnTrack(alignTrack->originalTrack());
534 ATH_MSG_DEBUG("materialOnTrack: "<<m_materialOnTrack);
535
536 double pT=alignTrack->originalTrack()->perigeeParameters()->pT();
537 double eta=alignTrack->originalTrack()->perigeeParameters()->eta();
538 m_momentum=std::fabs(pT)*std::sqrt(1.+sinh(eta)*sinh(eta));
539 m_eta=eta;
540 m_phi=alignTrack->originalTrack()->perigeeParameters()->momentum().phi();
541
542 Amg::Vector3D pos=alignTrack->originalTrack()->perigeeParameters()->position();
543 m_perigee_x=pos.x();
544 m_perigee_y=pos.y();
545 m_perigee_z=pos.z();
546
547 const TrackInfo info=alignTrack->originalTrack()->info();
548 m_trackInfo = (int)info.trackFitter();
549 m_bremFit = (int)info.trackProperties(Trk::TrackInfo::BremFit);
554 m_lowPtTrack = (int)info.trackProperties(Trk::TrackInfo::LowPtTrack);
555
556 m_ntuple->cd();
557 m_tree->Fill();
558 }
559
560 // increment total number of accumulated tracks, hits and the total chi2
561 m_ntracks++;
562 m_nmeas += alignTrack->nAlignTSOSMeas();
563 m_nhits += alignTrack->alignTSOSCollection()->size();
564 m_chi2 += alignTrack->fitQuality()->chiSquared();
565 m_nDoF += alignTrack->fitQuality()->numberDoF();
566
567 if(m_ntracks%50==0)
568 ATH_MSG_INFO(">>>> Number of accumulated tracks: "<<m_ntracks);
569
570 return true;
571 }
Scalar eta() const
pseudorapidity method
#define endmsg
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
#define AmgSymMatrix(dim)
static Double_t sc
if(febId1==febId2)
Eigen::Matrix< double, 3, 1 > Vector3D
ServiceHandle< StoreGateSvc > & evtStore()
MsgStream & msg() const
DataModel_detail::iterator< DataVector > iterator
Definition DataVector.h:842
size_type size() const noexcept
Returns the number of elements in the collection.
@ Unknown
default type
Definition AlignVertex.h:44
@ Refitted
normally refitted, without adding any pseudo-measurement
Definition AlignVertex.h:46
@ Accumulated
accumulated by the GX algorithm.
Definition AlignVertex.h:47
double getMaterialOnTrack(const Trk::Track *track)
@ BremFit
A brem fit was performed on this track.
@ HardScatterOrKink
A track with a kink or a hard scatter.
@ BremFitSuccessful
A brem fit was performed on this track and this fit was successful.
uint32_t runNumber() const
The current event's run number.
uint64_t eventNumber() const
The current event's event number.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > SymMatrixX
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorX
Dynamic Vector - dynamic allocation.
::StatusCode StatusCode
StatusCode definition for legacy code.
EventInfo_v1 EventInfo
Definition of the latest event info version.
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.

◆ accumulateFromFiles()

bool GlobalChi2AlignTool::accumulateFromFiles ( )
virtual

accumulates information from binary files

Implements Trk::IAlignTool.

Definition at line 574 of file GlobalChi2AlignTool.cxx.

575 {
576 ATH_MSG_DEBUG("in accumulate");
577 bool success = m_matrixTool->accumulateFromFiles();
578
579 if (!success) {
580 ATH_MSG_FATAL("failure in MatrixTool accumulateFromFiles");
581 return false;
582 }
583
584 m_fromFiles = true;
585
586 return true;
587 }
#define ATH_MSG_FATAL(x)

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ 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.

◆ evtStore()

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.

◆ 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

◆ fillNtuple()

StatusCode GlobalChi2AlignTool::fillNtuple ( )
virtual

writes tree to ntuple

Reimplemented from Trk::IAlignTool.

Definition at line 630 of file GlobalChi2AlignTool.cxx.

631 {
632 ATH_MSG_DEBUG("writing tree");
633 int success=1;
634 if (m_tree) {
635 m_ntuple->cd();
636 success = m_tree->Write();
637 }
638 return success>0 ? StatusCode::SUCCESS : StatusCode::FAILURE;
639 }

◆ finalize()

StatusCode GlobalChi2AlignTool::finalize ( )
virtual

finalize

Definition at line 642 of file GlobalChi2AlignTool.cxx.

643 {
644 ATH_MSG_DEBUG("finalize() of GlobalChi2AlignTool");
645 return StatusCode::SUCCESS;
646 }

◆ firstEventInitialize()

StatusCode GlobalChi2AlignTool::firstEventInitialize ( )
virtual

sets up matrix

Implements Trk::IAlignTool.

Definition at line 126 of file GlobalChi2AlignTool.cxx.

127 {
128 ATH_MSG_DEBUG("in GlobalGhi2AlignTool::firstEventInitialize()");
129
130 int nDoF=m_alignModuleTool->nAlignParameters();
131 ATH_MSG_DEBUG("allocating matrix with "<<nDoF<<" degrees of freedom");
132
133 if( m_matrixTool->allocateMatrix(nDoF).isFailure()) {
134 msg(MSG::FATAL)<<"Problem with allocateMatrix"<<endmsg;
135 return StatusCode::FAILURE;
136 }
137 ATH_MSG_DEBUG("done with firstEventInitialize()");
138
139 return StatusCode::SUCCESS;
140 }

◆ getMaterialOnTrack()

double GlobalChi2AlignTool::getMaterialOnTrack ( const Trk::Track * track)
private

Definition at line 649 of file GlobalChi2AlignTool.cxx.

650 {
651
652 double materialOnTrack(0.);
653
654 const Trk::TrackStates* states = track->trackStateOnSurfaces();
655 if ( !states ) {
656 ATH_MSG_WARNING("no states");
657 return 0;
658 }
659
660 // loop over TSOSs, find MDT hits, and mark them as outliers:
663 ATH_MSG_DEBUG("looping over TSOS");
664
665 for ( ; tsit!=tsit_end ; ++tsit ) {
666 const Trk:: MaterialEffectsBase* materialEffects = (*tsit)->materialEffectsOnTrack();
667 if (materialEffects) {
668 const Trk::MaterialEffectsOnTrack* meot=dynamic_cast<const Trk::MaterialEffectsOnTrack*>(materialEffects);
669 if (meot) {
670 materialOnTrack += meot->thicknessInX0();
671 ATH_MSG_DEBUG("new materialOnTrack: "<<materialOnTrack);
672 }
673 else {
674 ATH_MSG_DEBUG("not material on track");
675 }
676 }
677 }
678
679 return materialOnTrack;
680 }
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
double thicknessInX0() const
returns the actually traversed material .
DataVector< const Trk::TrackStateOnSurface > TrackStates

◆ initialize()

StatusCode GlobalChi2AlignTool::initialize ( )
virtual

initialize

Definition at line 109 of file GlobalChi2AlignTool.cxx.

110 {
111 ATH_MSG_DEBUG("initialize() of GlobalChi2AlignTool");
112 // Get MatrixTool
113 ATH_CHECK( m_matrixTool.retrieve() );
114 ATH_CHECK(m_alignModuleTool.retrieve() );
115 return StatusCode::SUCCESS;
116 }
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ 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 & IAlignTool::interfaceID ( )
inlinestaticinherited

Definition at line 58 of file IAlignTool.h.

58 {
59 return IID_TRK_IAlignTool;
60 }
static const InterfaceID IID_TRK_IAlignTool("IAlignTool", 1, 0)

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ 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 }

◆ nAccumulatedTracks()

unsigned int Trk::GlobalChi2AlignTool::nAccumulatedTracks ( )
inline

returns total number of accumulated tracks

Definition at line 68 of file GlobalChi2AlignTool.h.

68{ return m_ntracks; };

◆ 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.

◆ 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();
384 }
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)

◆ 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 {
366 }

◆ setLogStream()

void GlobalChi2AlignTool::setLogStream ( std::ostream * os)
virtual

sets the output stream for the logfile

Reimplemented from Trk::IAlignTool.

Definition at line 119 of file GlobalChi2AlignTool.cxx.

120 {
121 m_logStream = os;
122 m_matrixTool->setLogStream(m_logStream);
123 }

◆ setNtuple()

void Trk::GlobalChi2AlignTool::setNtuple ( TFile * ntuple)
inlinevirtual

set ntuple

Reimplemented from Trk::IAlignTool.

Definition at line 71 of file GlobalChi2AlignTool.h.

71{ m_ntuple=ntuple; }

◆ solve()

StatusCode GlobalChi2AlignTool::solve ( )
virtual

solves for alignment parameters

Implements Trk::IAlignTool.

Definition at line 590 of file GlobalChi2AlignTool.cxx.

591 {
592 if(m_fromFiles)
593 m_nhits = m_matrixTool->nHits();
594 else {
595 m_matrixTool->setNTracks(m_ntracks);
596 m_matrixTool->setNMeasurements(m_nmeas);
597 m_matrixTool->setNHits(m_nhits);
598 }
599
600 // print statistics
601 if(m_logStream) {
602 *m_logStream<<"*************************************************************"<<std::endl;
603 *m_logStream<<"****** Global Chi2 alignment solving ******"<<std::endl;
604 *m_logStream<<"*"<<std::endl;
605 if(!m_fromFiles)
606 *m_logStream<<"* number of accumulated tracks: "<<m_ntracks<<std::endl;
607 *m_logStream<<"* number of processed hits: "<<m_nhits<<std::endl;
608 if(!m_fromFiles) {
609 *m_logStream<<"* number of used measurements: "<<m_nmeas<<std::endl;
610 *m_logStream<<"* total chi2 / nDoF: "<<m_chi2<<" / "<<m_nDoF<<std::endl;
611 }
612 *m_logStream<<"*"<<std::endl;
613 *m_logStream<<"* number of alignable objects: "<<m_alignModuleTool->alignModules1D()->size()<<std::endl;
614 *m_logStream<<"* total number of alignment DoFs: "<<m_alignModuleTool->nAlignParameters()<<std::endl;
615 *m_logStream<<"*"<<std::endl;
616 }
617
618 ATH_MSG_INFO(">>>> -----------------------------------------------");
619 ATH_MSG_INFO(">>>> Total number of accumulated tracks: "<<m_ntracks);
620 ATH_MSG_INFO(">>>> -----------------------------------------------");
621
622 ATH_MSG_DEBUG("calling matrixTool->solve()");
623 if (m_matrixTool->solve()>0)
624 return StatusCode::SUCCESS;
625
626 return StatusCode::FAILURE;
627 }

◆ 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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_actualSecndDeriv

double* Trk::GlobalChi2AlignTool::m_actualSecndDeriv
private

Definition at line 118 of file GlobalChi2AlignTool.h.

◆ m_alignModuleTool

ToolHandle<Trk::IAlignModuleTool> Trk::GlobalChi2AlignTool::m_alignModuleTool
private

Pointer to AlignModuleTool.

Definition at line 87 of file GlobalChi2AlignTool.h.

◆ m_bremFit

int Trk::GlobalChi2AlignTool::m_bremFit
private

Definition at line 125 of file GlobalChi2AlignTool.h.

◆ m_bremFitSuccessful

int Trk::GlobalChi2AlignTool::m_bremFitSuccessful
private

Definition at line 126 of file GlobalChi2AlignTool.h.

◆ m_chamberIds

int* Trk::GlobalChi2AlignTool::m_chamberIds
private

Definition at line 112 of file GlobalChi2AlignTool.h.

◆ m_chi2

double Trk::GlobalChi2AlignTool::m_chi2
private

total chi2

Definition at line 96 of file GlobalChi2AlignTool.h.

◆ 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_doTree

bool Trk::GlobalChi2AlignTool::m_doTree
private

Definition at line 100 of file GlobalChi2AlignTool.h.

◆ m_eta

double Trk::GlobalChi2AlignTool::m_eta
private

Definition at line 119 of file GlobalChi2AlignTool.h.

◆ m_event

int Trk::GlobalChi2AlignTool::m_event
private

Definition at line 108 of file GlobalChi2AlignTool.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_firstDeriv

double* Trk::GlobalChi2AlignTool::m_firstDeriv
private

Definition at line 117 of file GlobalChi2AlignTool.h.

◆ m_fromFiles

bool Trk::GlobalChi2AlignTool::m_fromFiles
private

Definition at line 132 of file GlobalChi2AlignTool.h.

◆ m_hardScatterOrKink

int Trk::GlobalChi2AlignTool::m_hardScatterOrKink
private

Definition at line 129 of file GlobalChi2AlignTool.h.

◆ m_logStream

std::ostream* Trk::IAlignTool::m_logStream
protectedinherited

logfile output stream

Definition at line 54 of file IAlignTool.h.

◆ m_lowPtTrack

int Trk::GlobalChi2AlignTool::m_lowPtTrack
private

Definition at line 130 of file GlobalChi2AlignTool.h.

◆ m_materialOnTrack

double Trk::GlobalChi2AlignTool::m_materialOnTrack
private

Definition at line 109 of file GlobalChi2AlignTool.h.

◆ m_matrixIndices

int* Trk::GlobalChi2AlignTool::m_matrixIndices
private

Definition at line 114 of file GlobalChi2AlignTool.h.

◆ m_matrixTool

ToolHandle<Trk::IMatrixTool> Trk::GlobalChi2AlignTool::m_matrixTool
private

Pointer to MatrixTool, used to write to and solve matrix.

Definition at line 84 of file GlobalChi2AlignTool.h.

◆ m_momentum

double Trk::GlobalChi2AlignTool::m_momentum
private

Definition at line 110 of file GlobalChi2AlignTool.h.

◆ m_nChambers

int Trk::GlobalChi2AlignTool::m_nChambers
private

Definition at line 111 of file GlobalChi2AlignTool.h.

◆ m_nDoF

unsigned int Trk::GlobalChi2AlignTool::m_nDoF
private

number of degrees of freedom

Definition at line 97 of file GlobalChi2AlignTool.h.

◆ m_nhits

unsigned int Trk::GlobalChi2AlignTool::m_nhits
private

number of accumulated hits

Definition at line 95 of file GlobalChi2AlignTool.h.

◆ m_nMatrixIndices

int Trk::GlobalChi2AlignTool::m_nMatrixIndices
private

Definition at line 113 of file GlobalChi2AlignTool.h.

◆ m_nmeas

unsigned int Trk::GlobalChi2AlignTool::m_nmeas
private

number of accumulated measurements

Definition at line 94 of file GlobalChi2AlignTool.h.

◆ m_nSecndDeriv

int Trk::GlobalChi2AlignTool::m_nSecndDeriv
private

Definition at line 115 of file GlobalChi2AlignTool.h.

◆ m_ntracks

unsigned int Trk::GlobalChi2AlignTool::m_ntracks
private

number of accumulated tracks

Definition at line 93 of file GlobalChi2AlignTool.h.

◆ m_ntuple

TFile* Trk::GlobalChi2AlignTool::m_ntuple
private

output ntuple

Definition at line 105 of file GlobalChi2AlignTool.h.

◆ m_pathbin

std::string Trk::GlobalChi2AlignTool::m_pathbin
private

path binary files (in/out)

Definition at line 89 of file GlobalChi2AlignTool.h.

◆ m_pathtxt

std::string Trk::GlobalChi2AlignTool::m_pathtxt
private

path ascii files (in/out)

Definition at line 90 of file GlobalChi2AlignTool.h.

◆ m_perigee_x

double Trk::GlobalChi2AlignTool::m_perigee_x
private

Definition at line 121 of file GlobalChi2AlignTool.h.

◆ m_perigee_y

double Trk::GlobalChi2AlignTool::m_perigee_y
private

Definition at line 122 of file GlobalChi2AlignTool.h.

◆ m_perigee_z

double Trk::GlobalChi2AlignTool::m_perigee_z
private

Definition at line 123 of file GlobalChi2AlignTool.h.

◆ m_phi

double Trk::GlobalChi2AlignTool::m_phi
private

Definition at line 120 of file GlobalChi2AlignTool.h.

◆ m_prefixName

std::string Trk::GlobalChi2AlignTool::m_prefixName
private

prefix string to filenames

Definition at line 91 of file GlobalChi2AlignTool.h.

◆ m_run

int Trk::GlobalChi2AlignTool::m_run
private

Definition at line 107 of file GlobalChi2AlignTool.h.

◆ m_secndDeriv

double* Trk::GlobalChi2AlignTool::m_secndDeriv
private

Definition at line 116 of file GlobalChi2AlignTool.h.

◆ m_secondDerivativeCut

double Trk::GlobalChi2AlignTool::m_secondDerivativeCut
private

Definition at line 99 of file GlobalChi2AlignTool.h.

◆ m_slimmedTrack

int Trk::GlobalChi2AlignTool::m_slimmedTrack
private

Definition at line 128 of file GlobalChi2AlignTool.h.

◆ m_storeLocalDerivOnly

bool Trk::GlobalChi2AlignTool::m_storeLocalDerivOnly
private

Definition at line 102 of file GlobalChi2AlignTool.h.

◆ m_straightTrack

int Trk::GlobalChi2AlignTool::m_straightTrack
private

Definition at line 127 of file GlobalChi2AlignTool.h.

◆ m_trackInfo

int Trk::GlobalChi2AlignTool::m_trackInfo
private

Definition at line 124 of file GlobalChi2AlignTool.h.

◆ m_tree

TTree* Trk::GlobalChi2AlignTool::m_tree
private

Definition at line 106 of file GlobalChi2AlignTool.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_writeActualSecDeriv

bool Trk::GlobalChi2AlignTool::m_writeActualSecDeriv
private

Definition at line 101 of file GlobalChi2AlignTool.h.


The documentation for this class was generated from the following files: