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.
PublicToolHandle< 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 = 0
 number of accumulated tracks
unsigned int m_nmeas = 0
 number of accumulated measurements
unsigned int m_nhits = 0
 number of accumulated hits
double m_chi2 = 0.
 total chi2
unsigned int m_nDoF = 0
 number of degrees of freedom
Gaudi::Property< double > m_secondDerivativeCut {this, "SecondDerivativeCut", -1e5}
Gaudi::Property< bool > m_doTree {this, "DoTree", false}
Gaudi::Property< bool > m_writeActualSecDeriv {this, "WriteActualSecDeriv", false}
Gaudi::Property< bool > m_storeLocalDerivOnly {this, "StoreLocalDerivOnly", false}
TFile * m_ntuple = nullptr
 output ntuple
TTree * m_tree = nullptr
int m_run {}
int m_event {}
double m_materialOnTrack {}
double m_momentum {}
int m_nChambers = 0
int * m_chamberIds = new int[MAXNCHAMBERS]
int m_nMatrixIndices = 0
int * m_matrixIndices = new int[MAXNINDICES]
int m_nSecndDeriv = 0
double * m_secndDeriv = new double[MAXNINDICES*MAXNINDICES]
double * m_firstDeriv = new double[MAXNINDICES]
double * m_actualSecndDeriv = new double[MAXNINDICES]
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 = false
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

Static Private Attributes

static constexpr int MAXNCHAMBERS =50
static constexpr int MAXNINDICES =50*6

Detailed Description

Definition at line 38 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 37 of file GlobalChi2AlignTool.cxx.

39 : AthAlgTool(type,name,parent)
40 {
41 declareInterface<IAlignTool>(this);
42 m_logStream = nullptr;
43 }
AthAlgTool()
Default constructor:
std::ostream * m_logStream
logfile output stream
Definition IAlignTool.h:54

◆ ~GlobalChi2AlignTool()

GlobalChi2AlignTool::~GlobalChi2AlignTool ( )
virtual

Virtual destructor.

Definition at line 46 of file GlobalChi2AlignTool.cxx.

47 {
48 ATH_MSG_DEBUG("in GlobalChi2AlignTool d'tor");
49 //delete m_tree;
50
51 delete [] m_chamberIds;
52 delete [] m_matrixIndices;
53 delete [] m_secndDeriv;
54 delete [] m_firstDeriv;
55 delete [] m_actualSecndDeriv;
56
57 ATH_MSG_DEBUG("done with GlobalChi2AlignTool d'tor");
58 }
#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 95 of file GlobalChi2AlignTool.cxx.

96 {
97 ATH_MSG_DEBUG("in GlobalChi2AlignTool::accumulate()");
98
99 // prepare ROOT tree for derivatives if it doesn't exist yet
100 // Shouldn't this be in firstEventInitialize() ?
101 if (m_doTree && !m_tree && m_ntuple) {
102
103 m_ntuple->cd();
104 m_tree=new TTree("globalChi2Deriv","globalChi2Deriv");
105 m_tree->Branch("run", &m_run, "run/I");
106 m_tree->Branch("event", &m_event, "event/I");
107 m_tree->Branch("nChambers", &m_nChambers, "nChambers/I");
108 m_tree->Branch("chamberIds", m_chamberIds, "chamberIds[nChambers]/I");
109 m_tree->Branch("nMatrixIndices", &m_nMatrixIndices, "nMatrixIndices/I");
110 m_tree->Branch("matrixIndices", m_matrixIndices, "matrixIndices[nMatrixIndices]/I");
111 m_tree->Branch("nSecndDeriv", &m_nSecndDeriv, "nSecndDeriv/I");
112 m_tree->Branch("secndDeriv", m_secndDeriv, "secndDeriv[nSecndDeriv]/D");
113 m_tree->Branch("firstDeriv", m_firstDeriv, "firstDeriv[nMatrixIndices]/D");
115 m_tree->Branch("actualSecndDeriv", m_actualSecndDeriv, "actualSecndDeriv[nMatrixIndices]/D");
116
117 m_tree->Branch("materialOnTrack", &m_materialOnTrack, "materialOnTrack/D");
118 m_tree->Branch("momentum", &m_momentum, "momentum/D");
119 m_tree->Branch("eta", &m_eta, "eta/D");
120 m_tree->Branch("phi", &m_phi, "phi/D");
121 m_tree->Branch("perigee_x", &m_perigee_x, "perigee_x/D");
122 m_tree->Branch("perigee_y", &m_perigee_y, "perigee_y/D");
123 m_tree->Branch("perigee_z", &m_perigee_z, "perigee_z/D");
124 m_tree->Branch("trackInfo", &m_trackInfo, "trackInfo/I");
125 m_tree->Branch("bremFit", &m_bremFit, "bremFit/I");
126 m_tree->Branch("bremFitSuccessful", &m_bremFitSuccessful, "bremFitSuccessful/I");
127 m_tree->Branch("straightTrack", &m_straightTrack, "straightTrack/I");
128 m_tree->Branch("slimmedTrack", &m_slimmedTrack, "slimmedTrack/I");
129 m_tree->Branch("hardScatterOrKink", &m_hardScatterOrKink, "hardScatterOrKink/I");
130 m_tree->Branch("lowPtTrack", &m_lowPtTrack, "lowPtTrack/I");
131 }
132
133
134 // check if the track belongs to a vertex. If yes, retrieve the relevant objects:
135 bool fullVertex = false;
136 AlignVertex * ptrVertex = alignTrack->getVtx();
137 const Amg::Vector3D * ptrPosition = nullptr;
138 const AmgSymMatrix(3) * ptrCovariance = nullptr;
139 const std::vector<AlignModuleVertexDerivatives> * ptrX = nullptr;
141 if( ptrVertex ) {
142 fullVertex = true;
143 ptrPosition = ptrVertex->position();
144 ptrCovariance = ptrVertex->covariance();
145 ptrX = ptrVertex->derivatives();
146 vtxType = ptrVertex->type();
147
148 // check if pointers are valid
149 if ( !ptrPosition || !ptrCovariance || !ptrX || vtxType<AlignVertex::Refitted ) {
150 msg(MSG::ERROR)<<"something missing from alignVertex!"<<endmsg;
151 if (!ptrPosition) msg(MSG::ERROR)<<"no fitted position!"<<endmsg;
152 if (!ptrCovariance) msg(MSG::ERROR)<<"no covariance!"<<endmsg;
153 if (!ptrX) msg(MSG::ERROR)<<"no link to the X object!"<<endmsg;
154 if (vtxType<AlignVertex::Refitted) msg(MSG::ERROR)<<"Vertex type = "<< vtxType << endmsg;
155 return false;
156 }
157 }
158
159
160
161 // reset tree variables
162 m_nChambers=0;
164
165 // get pointers so we can reuse them if they're valid
166 const Amg::SymMatrixX * ptrWeights = alignTrack->weightMatrix();
167 const Amg::SymMatrixX * ptrWeightsFD = alignTrack->weightMatrixFirstDeriv();
168 const Amg::VectorX * ptrResiduals = alignTrack->residualVector();
169 const std::vector<AlignModuleDerivatives> * ptrDerivs = alignTrack->derivatives();
170
171 // check if pointers are valid
172 if (!ptrWeights || !ptrWeightsFD || !ptrResiduals || !ptrDerivs) {
173 msg(MSG::ERROR)<<"something missing from alignTrack!"<<endmsg;
174 if (!ptrWeights) msg(MSG::ERROR)<<"no weights!"<<endmsg;
175 if (!ptrWeightsFD) msg(MSG::ERROR)<<"no weights for first deriv!"<<endmsg;
176 if (!ptrResiduals) msg(MSG::ERROR)<<"no residuals!"<<endmsg;
177 if (!ptrDerivs) msg(MSG::ERROR)<<"no derivatives!"<<endmsg;
178 return false;
179 }
180
181 // get weight matrices
182 const Amg::SymMatrixX& weights = *ptrWeights;
183 const Amg::SymMatrixX& weightsFirstDeriv = *ptrWeightsFD;
184 ATH_MSG_VERBOSE("weights="<<weights);
185 ATH_MSG_VERBOSE("weightsFirstDeriv="<<weightsFirstDeriv);
186
187 // get vectors
188 const Amg::VectorX& residuals = *ptrResiduals;
189 std::vector<AlignModuleDerivatives> derivatives = *ptrDerivs;
190 const std::vector<AlignModuleDerivatives>* derivativeErr = alignTrack->derivativeErr();
191 const std::vector<std::pair<AlignModule*,std::vector<double> > >* secDerivs = alignTrack->actualSecondDerivatives();
192
193
194
195 std::vector<AlignPar*> allAlignPars;
196 std::vector<Amg::VectorX*> allDerivatives;
197 std::vector<const Amg::VectorX*> allDerivativeErr;
198 std::vector<double> allActualSecDeriv;
199 int WSize(weights.cols());
200 Amg::MatrixX matrix_F(3,WSize );
201 matrix_F.setZero();
202
203 // get all alignPars and all derivatives
204 msg(MSG::DEBUG) << "accumulate: The derivative vector size is " << derivatives.size() << endmsg;
205 std::vector<AlignModuleDerivatives>::iterator derivIt = derivatives.begin();
206 std::vector<AlignModuleDerivatives>::iterator derivIt_end = derivatives.end();
207
208 std::vector<AlignModuleDerivatives>::const_iterator derivErrIt;
209 std::vector<std::pair<AlignModule*,std::vector<double> > >::const_iterator secDerivIt;
210 if (derivativeErr) derivErrIt=derivativeErr->begin();
211 if (secDerivs) secDerivIt=secDerivs->begin();
212 for ( ; derivIt!=derivIt_end ; ++derivIt) {
213
214 // get AlignModule
215 AlignModule* module=derivIt->first;
216
217 // increment track counter
218 module->addTrack();
219 ATH_MSG_DEBUG("add track to module "<<module->identify().get_identifier32().get_compact());
220 module->addNDoF(alignTrack->fitQuality()->numberDoF());
221 module->addTrackChi2(alignTrack->fitQuality()->chiSquared());
222
223 // tree variables
225 m_chamberIds[m_nChambers]=module->identify().get_identifier32().get_compact();
226 m_nChambers++;
227 }
228 else ATH_MSG_WARNING("number of chambers exceeded maximum");
229
230 // get alignment parameters
231 std::vector<Amg::VectorX>& deriv_vec = derivIt->second;
232 ATH_MSG_DEBUG( "accumulate: The deriv_vec size is " << deriv_vec.size() );
233 DataVector<AlignPar>* alignPars = m_alignModuleTool->getAlignPars(module);
234 int nModPars = alignPars->size();
235 if (nModPars != (int)deriv_vec.size() && (nModPars+3) != (int)deriv_vec.size()) {
236 ATH_MSG_ERROR("accumulate: wrong size of the deriv_vec!");
237 return false;
238 }
239 for (int i=0;i<3;i++) {
240 for (int j=0;j<WSize;j++) {
241 matrix_F(i,j) += deriv_vec[nModPars+i][j]; // in the derivIT loop the complete F matrix is built
242 }
243 }
244
245 // get derivatives and derivative errors
246 for (int i=0;i<nModPars;i++) {
247 ATH_MSG_DEBUG("align par for module "<<(*alignPars)[i]->alignModule()->identify());
248 allAlignPars.push_back((*alignPars)[i]);
249 allDerivatives.push_back(&deriv_vec[i]);
250 if (derivativeErr)
251 allDerivativeErr.push_back(&(derivErrIt->second)[i]);
252 if (secDerivs)
253 allActualSecDeriv.push_back((secDerivIt->second)[i]);
254 }
255 if (derivativeErr) ++derivErrIt;
256 if (secDerivs) ++secDerivIt;
257 }
258
259 // increment hit counters in modules
260 AlignTSOSCollection::iterator iatsos = alignTrack->firstAtsos();
261 AlignTSOSCollection::iterator iatsos_last = alignTrack->lastAtsos();
262 for (; iatsos != iatsos_last; ++iatsos)
263 if ((*iatsos)->module())
264 (*iatsos)->module()->addHit();
265
266 // determine all derivatives and set in matrix tool
267 int nAllPars = allAlignPars.size();
269 for (int ipar=0;ipar<nAllPars;ipar++) {
270
271 // calculate first derivative
272 Amg::MatrixX derivativesT = (*allDerivatives[ipar]).transpose();
273 ATH_MSG_DEBUG("derivativesT (size "<<derivativesT.cols()<<"): "<<derivativesT);
274
275 Amg::MatrixX RHM= weightsFirstDeriv * residuals;
276 ATH_MSG_DEBUG("RHM: "<<RHM);
277
278 // get global parameter index
279 int index1 = allAlignPars[ipar]->index();
280
281 Amg::MatrixX firstderivM = 2.* derivativesT * RHM;
282 ATH_MSG_DEBUG("firstderivM for i="<<index1 <<firstderivM);
283 if (firstderivM(0,0)==0.) {
284 ATH_MSG_DEBUG("firstderivM[0][0] is zero : "<<firstderivM(0,0));
285 continue;
286 }
287
288
289
290 // tree variables
293 ATH_MSG_DEBUG("ipar: "<<ipar<<", m_nMatrixIndices="<<m_nMatrixIndices);
295 ATH_MSG_DEBUG("alActualSecDeriv size: "<<allActualSecDeriv.size());
296 m_actualSecndDeriv[m_nMatrixIndices]=allActualSecDeriv[ipar];
297 }
299 }
300
301 // get module index
302 int imodule1 = allAlignPars[ipar]->alignModule()->identifyHash();
303
304 // calculate second derivatives
305 bool goodSecondDeriv = true;
306 for (int jpar=ipar;jpar<nAllPars;jpar++) {
307
308 // get global parameter index
309 int index2=allAlignPars[jpar]->index();
310
311 // get module index
312 int imodule2 = allAlignPars[jpar]->alignModule()->identifyHash();
313
314 // if only local Chi2 method is used, the 2nd derivatives (correlations)
315 // between different modules don't need to be calculated/stored
317 if (imodule1 != imodule2)
318 continue;
319
320 Amg::MatrixX RHM2 = weights * (*allDerivatives[jpar]);
321 Amg::MatrixX secondderivM = 2. * derivativesT * RHM2;
322
323 // if second derivative on diagonal is below cut
324 // ignore the whole row/column
325 if (jpar==ipar && secondderivM(0,0)<0.) {
326 ATH_MSG_WARNING("second deriv < 0 !!!");
327 }
328 if (jpar==ipar && secondderivM(0,0)<m_secondDerivativeCut) {
329 ATH_MSG_DEBUG("secondderivM[0][0] is below threshold : "<<
330 secondderivM(0,0)<<" < "<<m_secondDerivativeCut);
331 goodSecondDeriv = false;
332 break;
333 }
334
335 ATH_MSG_DEBUG("secondderivM for i "<<index1<<", j "<<index2<<": "<<secondderivM(0,0));
336 m_matrixTool->addSecondDerivative(index1, index2, secondderivM(0,0));
337
338 // store derivatives and indices for ntuple
339 m_secndDeriv[m_nSecndDeriv]=secondderivM(0,0);
341 }
342
343 // if second derivative on diagonal didn't pass the cut,
344 // ignore also the first derivative
345 if (goodSecondDeriv) {
346 m_matrixTool->addFirstDerivative(index1, firstderivM(0,0));
347 m_firstDeriv[ipar]=firstderivM(0,0);
348 }
349 else
350 m_firstDeriv[ipar]=-999.;
351 }
352
353
354
355
356 if( fullVertex ) { // this track is associated to a vertex.
357
358
359 ATH_MSG_DEBUG( "accumulate: Contribution from the fullVTX will be added " );
360
361 Amg::MatrixX RHM = (*ptrCovariance) * (matrix_F) * (weightsFirstDeriv * residuals);
362
363 std::vector<AlignPar*> vtxAlignPars;
364 std::vector<const Amg::VectorX*> vtxDerivatives;
365
366 // get all alignPars and all derivatives
367 msg(MSG::DEBUG) << "accumulate: The Vertex derivative vector size is " << ptrX->size() << endmsg;
368 std::vector<AlignModuleVertexDerivatives>::const_iterator XIt = ptrX->begin();
369 std::vector<AlignModuleVertexDerivatives>::const_iterator XIt_end = ptrX->end();
370
371 for ( ; XIt!=XIt_end ; ++XIt) {
372
373 // get AlignModule
374 const AlignModule* module=XIt->first;
375
376 // get alignment parameters
377 const std::vector<Amg::VectorX>& X_vec = XIt->second;
378 msg(MSG::DEBUG) << "accumulate: The X_vec size is " << X_vec.size() << endmsg;
379 DataVector<AlignPar>* alignPars = m_alignModuleTool->getAlignPars(module);
380 int nModPars = alignPars->size();
381 if (nModPars != (int)X_vec.size()) {
382 ATH_MSG_ERROR("accumulate: wrong size of the X_vec!");
383 return false;
384 }
385
386 // get derivatives and derivative errors
387 for (int i=0;i<nModPars;i++) {
388 ATH_MSG_DEBUG("align par for module "<<(*alignPars)[i]->alignModule()->identify());
389 vtxAlignPars.push_back((*alignPars)[i]);
390 vtxDerivatives.push_back(&X_vec[i]);
391 }
392
393 }
394
395 // bit responsible for the constraint:
396 int ierr(0);
397 AmgSymMatrix(3) Qinv;
398 Qinv.setZero();
399 Amg::Vector3D vtemp;
400 vtemp.setZero();
401 if( vtxType==AlignVertex::Refitted && ptrVertex->Constrained() && ptrVertex->Qmatrix()->determinant() > 1.0e-24 ) { // just my guess sigma>0.1 micron ???) only once per vertex!
402
403 bool invertible;
404 double determinant;
405 ptrVertex->Qmatrix()->computeInverseAndDetWithCheck(Qinv,determinant,invertible);
406
407 if(!invertible) {
408 std::cout <<"accumulate: Q inversion failed. CLHEP status flag = "<<ierr<< std::endl;
409 return false;
410 }
411 vtemp(0) = -ptrVertex->originalPosition()->x()+(*(ptrVertex->Vvector()))(0);
412 vtemp(1) = -ptrVertex->originalPosition()->y()+(*(ptrVertex->Vvector()))(1);
413 vtemp(2) = -ptrVertex->originalPosition()->z()+(*(ptrVertex->Vvector()))(2);
414 }
415
416
417 // determine all derivatives and set in matrix tool
418 int nvtxPars = vtxAlignPars.size();
419 for (int ipar=0;ipar<nvtxPars;ipar++) {
420
421 // calculate first derivative
422 Amg::MatrixX derivativesT = (*vtxDerivatives[ipar]).transpose();
423 Amg::MatrixX firstderivM = -2.* derivativesT * RHM; // -2 seems correct :)
424
425 // bit responsible for the constraint:
426 if( vtxType==AlignVertex::Refitted && ptrVertex->Constrained() && ptrVertex->Qmatrix()->determinant() > 1.0e-24 ) { // just my guess sigma>0.1 micron ???) only once per vertex!
427 firstderivM += 2.* derivativesT * ((*ptrCovariance) * Qinv) * vtemp;
428 }
429
430 // get global parameter index
431 int index1 = vtxAlignPars[ipar]->index();
432
433 ATH_MSG_DEBUG("vtx firstderivM for i="<<index1 <<firstderivM);
434
435
436 if( vtxType==AlignVertex::Refitted ) { // only once per vertex!
437 ATH_MSG_DEBUG("accumulate: Filling second derivative for this vertex... ");
438 for (int jpar=0;jpar<nvtxPars;jpar++) {
439
440 // calculate second derivative
441 Amg::MatrixX secondderivM = -1.* derivativesT * (*ptrCovariance) * (*vtxDerivatives[jpar]); // -1 is the right factor :)
442
443 // bit responsible for the constraint:
444 if( ptrVertex->Constrained() && ptrVertex->Qmatrix()->determinant() > 1.0e-24 ) { // just my guess sigma>0.1 micron ???)
445 secondderivM += 2.* derivativesT * ((*ptrCovariance) * Qinv * (*ptrCovariance)) * (*vtxDerivatives[jpar]);
446 }
447
448 // get global parameter index
449 int index2=vtxAlignPars[jpar]->index();
450
451 if( index1<=index2 ) {
452 ATH_MSG_DEBUG("vtx secondderivM for i="<<index1<<", j="<<index2<<": "<<secondderivM(0,0));
453 m_matrixTool->addSecondDerivative(index1, index2, secondderivM(0,0));
454 }
455
456 }
457 ptrVertex->setType(AlignVertex::Accumulated); // only once per vertex!
458 }
459
460 m_matrixTool->addFirstDerivative(index1, firstderivM(0,0));
461
462 }
463
464 }
465
466
467
468
469
470 // fill tree
471 if (m_tree) {
472
473 // get tree variables
474 const xAOD::EventInfo* currentEvent;
475 StatusCode sc = evtStore()->retrieve(currentEvent);
476 if (sc==StatusCode::SUCCESS) {
477 m_run = currentEvent->runNumber();
478 m_event = currentEvent->eventNumber();
479 }
480 else {
481 m_run = -999;
482 m_event = -999;
483 }
484
485 m_materialOnTrack=getMaterialOnTrack(alignTrack->originalTrack());
486 ATH_MSG_DEBUG("materialOnTrack: "<<m_materialOnTrack);
487
488 double pT=alignTrack->originalTrack()->perigeeParameters()->pT();
489 double eta=alignTrack->originalTrack()->perigeeParameters()->eta();
490 m_momentum=std::fabs(pT)*std::sqrt(1.+sinh(eta)*sinh(eta));
491 m_eta=eta;
492 m_phi=alignTrack->originalTrack()->perigeeParameters()->momentum().phi();
493
494 Amg::Vector3D pos=alignTrack->originalTrack()->perigeeParameters()->position();
495 m_perigee_x=pos.x();
496 m_perigee_y=pos.y();
497 m_perigee_z=pos.z();
498
499 const TrackInfo info=alignTrack->originalTrack()->info();
500 m_trackInfo = (int)info.trackFitter();
501 m_bremFit = (int)info.trackProperties(Trk::TrackInfo::BremFit);
506 m_lowPtTrack = (int)info.trackProperties(Trk::TrackInfo::LowPtTrack);
507
508 m_ntuple->cd();
509 m_tree->Fill();
510 }
511
512 // increment total number of accumulated tracks, hits and the total chi2
513 m_ntracks++;
514 m_nmeas += alignTrack->nAlignTSOSMeas();
515 m_nhits += alignTrack->alignTSOSCollection()->size();
516 m_chi2 += alignTrack->fitQuality()->chiSquared();
517 m_nDoF += alignTrack->fitQuality()->numberDoF();
518
519 if(m_ntracks%50==0)
520 ATH_MSG_INFO(">>>> Number of accumulated tracks: "<<m_ntracks);
521
522 return true;
523 }
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(pathvar)
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
PublicToolHandle< Trk::IAlignModuleTool > m_alignModuleTool
Pointer to AlignModuleTool.
unsigned int m_nhits
number of accumulated hits
Gaudi::Property< bool > m_storeLocalDerivOnly
Gaudi::Property< bool > m_writeActualSecDeriv
TFile * m_ntuple
output ntuple
unsigned int m_ntracks
number of accumulated tracks
double getMaterialOnTrack(const Trk::Track *track)
Gaudi::Property< double > m_secondDerivativeCut
static constexpr int MAXNCHAMBERS
ToolHandle< Trk::IMatrixTool > m_matrixTool
Pointer to MatrixTool, used to write to and solve matrix.
Gaudi::Property< bool > m_doTree
unsigned int m_nmeas
number of accumulated measurements
unsigned int m_nDoF
number of degrees of freedom
@ 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.
const std::string weights
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
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 526 of file GlobalChi2AlignTool.cxx.

527 {
528 ATH_MSG_DEBUG("in accumulate");
529 bool success = m_matrixTool->accumulateFromFiles();
530
531 if (!success) {
532 ATH_MSG_FATAL("failure in MatrixTool accumulateFromFiles");
533 return false;
534 }
535
536 m_fromFiles = true;
537
538 return true;
539 }
#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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ 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 582 of file GlobalChi2AlignTool.cxx.

583 {
584 ATH_MSG_DEBUG("writing tree");
585 int success=1;
586 if (m_tree) {
587 m_ntuple->cd();
588 success = m_tree->Write();
589 }
590 return success>0 ? StatusCode::SUCCESS : StatusCode::FAILURE;
591 }

◆ finalize()

StatusCode GlobalChi2AlignTool::finalize ( )
virtual

finalize

Definition at line 594 of file GlobalChi2AlignTool.cxx.

595 {
596 ATH_MSG_DEBUG("finalize() of GlobalChi2AlignTool");
597 return StatusCode::SUCCESS;
598 }

◆ firstEventInitialize()

StatusCode GlobalChi2AlignTool::firstEventInitialize ( )
virtual

sets up matrix

Implements Trk::IAlignTool.

Definition at line 78 of file GlobalChi2AlignTool.cxx.

79 {
80 ATH_MSG_DEBUG("in GlobalGhi2AlignTool::firstEventInitialize()");
81
82 int nDoF=m_alignModuleTool->nAlignParameters();
83 ATH_MSG_DEBUG("allocating matrix with "<<nDoF<<" degrees of freedom");
84
85 if( m_matrixTool->allocateMatrix(nDoF).isFailure()) {
86 msg(MSG::FATAL)<<"Problem with allocateMatrix"<<endmsg;
87 return StatusCode::FAILURE;
88 }
89 ATH_MSG_DEBUG("done with firstEventInitialize()");
90
91 return StatusCode::SUCCESS;
92 }

◆ getMaterialOnTrack()

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

Definition at line 601 of file GlobalChi2AlignTool.cxx.

602 {
603
604 double materialOnTrack(0.);
605
606 const Trk::TrackStates* states = track->trackStateOnSurfaces();
607 if ( !states ) {
608 ATH_MSG_WARNING("no states");
609 return 0;
610 }
611
612 // loop over TSOSs, find MDT hits, and mark them as outliers:
615 ATH_MSG_DEBUG("looping over TSOS");
616
617 for ( ; tsit!=tsit_end ; ++tsit ) {
618 const Trk:: MaterialEffectsBase* materialEffects = (*tsit)->materialEffectsOnTrack();
619 if (materialEffects) {
620 const Trk::MaterialEffectsOnTrack* meot=dynamic_cast<const Trk::MaterialEffectsOnTrack*>(materialEffects);
621 if (meot) {
622 materialOnTrack += meot->thicknessInX0();
623 ATH_MSG_DEBUG("new materialOnTrack: "<<materialOnTrack);
624 }
625 else {
626 ATH_MSG_DEBUG("not material on track");
627 }
628 }
629 }
630
631 return materialOnTrack;
632 }
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 61 of file GlobalChi2AlignTool.cxx.

62 {
63 ATH_MSG_DEBUG("initialize() of GlobalChi2AlignTool");
64 // Get MatrixTool
65 ATH_CHECK( m_matrixTool.retrieve() );
66 ATH_CHECK(m_alignModuleTool.retrieve() );
67 return StatusCode::SUCCESS;
68 }
#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 67 of file GlobalChi2AlignTool.h.

67{ 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 71 of file GlobalChi2AlignTool.cxx.

72 {
74 m_matrixTool->setLogStream(m_logStream);
75 }

◆ setNtuple()

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

set ntuple

Reimplemented from Trk::IAlignTool.

Definition at line 70 of file GlobalChi2AlignTool.h.

70{ m_ntuple=ntuple; }

◆ solve()

StatusCode GlobalChi2AlignTool::solve ( )
virtual

solves for alignment parameters

Implements Trk::IAlignTool.

Definition at line 542 of file GlobalChi2AlignTool.cxx.

543 {
544 if(m_fromFiles)
545 m_nhits = m_matrixTool->nHits();
546 else {
547 m_matrixTool->setNTracks(m_ntracks);
548 m_matrixTool->setNMeasurements(m_nmeas);
549 m_matrixTool->setNHits(m_nhits);
550 }
551
552 // print statistics
553 if(m_logStream) {
554 *m_logStream<<"*************************************************************"<<std::endl;
555 *m_logStream<<"****** Global Chi2 alignment solving ******"<<std::endl;
556 *m_logStream<<"*"<<std::endl;
557 if(!m_fromFiles)
558 *m_logStream<<"* number of accumulated tracks: "<<m_ntracks<<std::endl;
559 *m_logStream<<"* number of processed hits: "<<m_nhits<<std::endl;
560 if(!m_fromFiles) {
561 *m_logStream<<"* number of used measurements: "<<m_nmeas<<std::endl;
562 *m_logStream<<"* total chi2 / nDoF: "<<m_chi2<<" / "<<m_nDoF<<std::endl;
563 }
564 *m_logStream<<"*"<<std::endl;
565 *m_logStream<<"* number of alignable objects: "<<m_alignModuleTool->alignModules1D()->size()<<std::endl;
566 *m_logStream<<"* total number of alignment DoFs: "<<m_alignModuleTool->nAlignParameters()<<std::endl;
567 *m_logStream<<"*"<<std::endl;
568 }
569
570 ATH_MSG_INFO(">>>> -----------------------------------------------");
571 ATH_MSG_INFO(">>>> Total number of accumulated tracks: "<<m_ntracks);
572 ATH_MSG_INFO(">>>> -----------------------------------------------");
573
574 ATH_MSG_DEBUG("calling matrixTool->solve()");
575 if (m_matrixTool->solve()>0)
576 return StatusCode::SUCCESS;
577
578 return StatusCode::FAILURE;
579 }

◆ 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 >, and AthCheckedComponent<::AthAlgTool >.

◆ 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 = new double[MAXNINDICES]
private

Definition at line 122 of file GlobalChi2AlignTool.h.

◆ m_alignModuleTool

PublicToolHandle<Trk::IAlignModuleTool> Trk::GlobalChi2AlignTool::m_alignModuleTool
private
Initial value:
{this,
"AlignModuleTool", "Trk::AlignModuleTool/AlignModuleTool"}

Pointer to AlignModuleTool.

Definition at line 87 of file GlobalChi2AlignTool.h.

87 {this,
88 "AlignModuleTool", "Trk::AlignModuleTool/AlignModuleTool"};

◆ m_bremFit

int Trk::GlobalChi2AlignTool::m_bremFit {}
private

Definition at line 129 of file GlobalChi2AlignTool.h.

129{};

◆ m_bremFitSuccessful

int Trk::GlobalChi2AlignTool::m_bremFitSuccessful {}
private

Definition at line 130 of file GlobalChi2AlignTool.h.

130{};

◆ m_chamberIds

int* Trk::GlobalChi2AlignTool::m_chamberIds = new int[MAXNCHAMBERS]
private

Definition at line 116 of file GlobalChi2AlignTool.h.

◆ m_chi2

double Trk::GlobalChi2AlignTool::m_chi2 = 0.
private

total chi2

Definition at line 97 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

Gaudi::Property<bool> Trk::GlobalChi2AlignTool::m_doTree {this, "DoTree", false}
private

Definition at line 101 of file GlobalChi2AlignTool.h.

101{this, "DoTree", false};

◆ m_eta

double Trk::GlobalChi2AlignTool::m_eta {}
private

Definition at line 123 of file GlobalChi2AlignTool.h.

123{};

◆ m_event

int Trk::GlobalChi2AlignTool::m_event {}
private

Definition at line 112 of file GlobalChi2AlignTool.h.

112{};

◆ 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 = new double[MAXNINDICES]
private

Definition at line 121 of file GlobalChi2AlignTool.h.

◆ m_fromFiles

bool Trk::GlobalChi2AlignTool::m_fromFiles = false
private

Definition at line 136 of file GlobalChi2AlignTool.h.

◆ m_hardScatterOrKink

int Trk::GlobalChi2AlignTool::m_hardScatterOrKink {}
private

Definition at line 133 of file GlobalChi2AlignTool.h.

133{};

◆ 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 134 of file GlobalChi2AlignTool.h.

134{};

◆ m_materialOnTrack

double Trk::GlobalChi2AlignTool::m_materialOnTrack {}
private

Definition at line 113 of file GlobalChi2AlignTool.h.

113{};

◆ m_matrixIndices

int* Trk::GlobalChi2AlignTool::m_matrixIndices = new int[MAXNINDICES]
private

Definition at line 118 of file GlobalChi2AlignTool.h.

◆ m_matrixTool

ToolHandle<Trk::IMatrixTool> Trk::GlobalChi2AlignTool::m_matrixTool
private
Initial value:
{this, "MatrixTool", "Trk::MatrixTool",
"tool for storing and inverting matrix"}

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

Definition at line 83 of file GlobalChi2AlignTool.h.

83 {this, "MatrixTool", "Trk::MatrixTool",
84 "tool for storing and inverting matrix"};

◆ m_momentum

double Trk::GlobalChi2AlignTool::m_momentum {}
private

Definition at line 114 of file GlobalChi2AlignTool.h.

114{};

◆ m_nChambers

int Trk::GlobalChi2AlignTool::m_nChambers = 0
private

Definition at line 115 of file GlobalChi2AlignTool.h.

◆ m_nDoF

unsigned int Trk::GlobalChi2AlignTool::m_nDoF = 0
private

number of degrees of freedom

Definition at line 98 of file GlobalChi2AlignTool.h.

◆ m_nhits

unsigned int Trk::GlobalChi2AlignTool::m_nhits = 0
private

number of accumulated hits

Definition at line 96 of file GlobalChi2AlignTool.h.

◆ m_nMatrixIndices

int Trk::GlobalChi2AlignTool::m_nMatrixIndices = 0
private

Definition at line 117 of file GlobalChi2AlignTool.h.

◆ m_nmeas

unsigned int Trk::GlobalChi2AlignTool::m_nmeas = 0
private

number of accumulated measurements

Definition at line 95 of file GlobalChi2AlignTool.h.

◆ m_nSecndDeriv

int Trk::GlobalChi2AlignTool::m_nSecndDeriv = 0
private

Definition at line 119 of file GlobalChi2AlignTool.h.

◆ m_ntracks

unsigned int Trk::GlobalChi2AlignTool::m_ntracks = 0
private

number of accumulated tracks

Definition at line 94 of file GlobalChi2AlignTool.h.

◆ m_ntuple

TFile* Trk::GlobalChi2AlignTool::m_ntuple = nullptr
private

output ntuple

Definition at line 109 of file GlobalChi2AlignTool.h.

◆ m_pathbin

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

path binary files (in/out)

Definition at line 90 of file GlobalChi2AlignTool.h.

◆ m_pathtxt

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

path ascii files (in/out)

Definition at line 91 of file GlobalChi2AlignTool.h.

◆ m_perigee_x

double Trk::GlobalChi2AlignTool::m_perigee_x {}
private

Definition at line 125 of file GlobalChi2AlignTool.h.

125{};

◆ m_perigee_y

double Trk::GlobalChi2AlignTool::m_perigee_y {}
private

Definition at line 126 of file GlobalChi2AlignTool.h.

126{};

◆ m_perigee_z

double Trk::GlobalChi2AlignTool::m_perigee_z {}
private

Definition at line 127 of file GlobalChi2AlignTool.h.

127{};

◆ m_phi

double Trk::GlobalChi2AlignTool::m_phi {}
private

Definition at line 124 of file GlobalChi2AlignTool.h.

124{};

◆ m_prefixName

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

prefix string to filenames

Definition at line 92 of file GlobalChi2AlignTool.h.

◆ m_run

int Trk::GlobalChi2AlignTool::m_run {}
private

Definition at line 111 of file GlobalChi2AlignTool.h.

111{};

◆ m_secndDeriv

double* Trk::GlobalChi2AlignTool::m_secndDeriv = new double[MAXNINDICES*MAXNINDICES]
private

Definition at line 120 of file GlobalChi2AlignTool.h.

◆ m_secondDerivativeCut

Gaudi::Property<double> Trk::GlobalChi2AlignTool::m_secondDerivativeCut {this, "SecondDerivativeCut", -1e5}
private

Definition at line 100 of file GlobalChi2AlignTool.h.

100{this, "SecondDerivativeCut", -1e5};

◆ m_slimmedTrack

int Trk::GlobalChi2AlignTool::m_slimmedTrack {}
private

Definition at line 132 of file GlobalChi2AlignTool.h.

132{};

◆ m_storeLocalDerivOnly

Gaudi::Property<bool> Trk::GlobalChi2AlignTool::m_storeLocalDerivOnly {this, "StoreLocalDerivOnly", false}
private

Definition at line 103 of file GlobalChi2AlignTool.h.

103{this, "StoreLocalDerivOnly", false};

◆ m_straightTrack

int Trk::GlobalChi2AlignTool::m_straightTrack {}
private

Definition at line 131 of file GlobalChi2AlignTool.h.

131{};

◆ m_trackInfo

int Trk::GlobalChi2AlignTool::m_trackInfo {}
private

Definition at line 128 of file GlobalChi2AlignTool.h.

128{};

◆ m_tree

TTree* Trk::GlobalChi2AlignTool::m_tree = nullptr
private

Definition at line 110 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

Gaudi::Property<bool> Trk::GlobalChi2AlignTool::m_writeActualSecDeriv {this, "WriteActualSecDeriv", false}
private

Definition at line 102 of file GlobalChi2AlignTool.h.

102{this, "WriteActualSecDeriv", false};

◆ MAXNCHAMBERS

int Trk::GlobalChi2AlignTool::MAXNCHAMBERS =50
staticconstexprprivate

Definition at line 105 of file GlobalChi2AlignTool.h.

◆ MAXNINDICES

int Trk::GlobalChi2AlignTool::MAXNINDICES =50*6
staticconstexprprivate

Definition at line 106 of file GlobalChi2AlignTool.h.


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