Project
Loading...
Searching...
No Matches
AlignableSensor.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
16
17#ifndef ALIGNABLESENSOR_H
18#define ALIGNABLESENSOR_H
19
20#include <TMath.h>
21#include <TObjArray.h>
24#include "Align/utils.h"
25#include <vector>
26
27namespace o2
28{
29namespace align
30{
31
32class AlignableDetector;
33class AlignmentPoint;
34
36{
37 public:
38 //
40
41 AlignableSensor() = default;
42 AlignableSensor(const char* name, int vid, int iid, Controller* ctr);
43 ~AlignableSensor() override = default;
44 //
45 void addChild(AlignableVolume*) override;
46 //
47 void setDetector(AlignableDetector* det) { mDet = det; }
48 AlignableDetector* getDetector() const { return mDet; }
49 //
50 int getSID() const { return mSID; }
51 void setSID(int s) { mSID = s; }
52 //
54 //
55 // derivatives calculation
56 virtual void dPosTraDParCalib(const AlignmentPoint* pnt, double* deriv, int calibID, const AlignableVolume* parent = nullptr) const;
57 virtual void dPosTraDParGeom(const AlignmentPoint* pnt, double* deriv, const AlignableVolume* parent = nullptr) const;
58 //
59 virtual void dPosTraDParGeomLOC(const AlignmentPoint* pnt, double* deriv) const;
60 virtual void dPosTraDParGeomTRA(const AlignmentPoint* pnt, double* deriv) const;
61 virtual void dPosTraDParGeomLOC(const AlignmentPoint* pnt, double* deriv, const AlignableVolume* parent) const;
62 virtual void dPosTraDParGeomTRA(const AlignmentPoint* pnt, double* deriv, const AlignableVolume* parent) const;
63 //
64 void getModifiedMatrixT2LmodLOC(TGeoHMatrix& matMod, const double* delta) const;
65 void getModifiedMatrixT2LmodTRA(TGeoHMatrix& matMod, const double* delta) const;
66 //
67 virtual void applyAlignmentFromMPSol();
68 //
69 void setAddError(double y, double z)
70 {
71 mAddError[0] = y;
72 mAddError[1] = z;
73 }
74 const double* getAddError() const { return mAddError; }
75 //
76 bool isSensor() const override { return true; }
77 void Print(const Option_t* opt = "") const override;
78 //
79 virtual void updatePointByTrackInfo(AlignmentPoint* pnt, const trackParam_t* t) const;
80 void updateL2GRecoMatrices(const std::vector<o2::detectors::AlignParam>& algArr, const TGeoHMatrix* cumulDelta) override;
81 //
82 int finalizeStat() override;
83 //
84 virtual void prepareMatrixClAlg();
85 virtual void prepareMatrixClAlgReco();
86 const TGeoHMatrix& getMatrixClAlg() const { return mMatClAlg; }
87 const TGeoHMatrix& getMatrixClAlgReco() const { return mMatClAlgReco; }
88 void setMatrixClAlg(const TGeoHMatrix& m) { mMatClAlg = m; }
89 void setMatrixClAlgReco(const TGeoHMatrix& m) { mMatClAlgReco = m; }
90 //
91 protected:
92 //
93 bool IsSortable() const override { return true; }
94 int Compare(const TObject* a) const override;
95 //
96 // --------- dummies -----------
99 //
100 protected:
101 //
102 int mSID = -1; // sensor id in detector
103 double mAddError[2] = {0, 0}; // additional error increment for measurement
104 AlignableDetector* mDet = nullptr; // pointer on detector
105 TGeoHMatrix mMatClAlg; // reference cluster alignment matrix in tracking frame, i.e. the matrix we want to correct
106 TGeoHMatrix mMatClAlgReco; // reco-time cluster alignment matrix in tracking frame
107
108 //
110};
111} // namespace align
112} // namespace o2
113
114#endif
Base class of alignable volume.
Collection of auxillary methods.
Timeframe settings Average distance in cm of events merged into Randomize distance around average distance of merged events Simulate correct bunch interactions instead of placing only the average number of events A value[n] sets TFlen for[n] collisions in Number of bunches per trainsort Number of bunch trains Instantaneous interaction rate Do not simulate border Total number of collisions to be placed in the interior of all time Do not select random but walk over array of events in stride steps h Event generator settings h configStandalone Use CPU for GPU Force usage of the specified GPU device no CPU fallback Continue processing after an error s
void addChild(AlignableVolume *) override
const TGeoHMatrix & getMatrixClAlg() const
virtual void updatePointByTrackInfo(AlignmentPoint *pnt, const trackParam_t *t) const
void setMatrixClAlgReco(const TGeoHMatrix &m)
void getModifiedMatrixT2LmodLOC(TGeoHMatrix &matMod, const double *delta) const
const double * getAddError() const
int Compare(const TObject *a) const override
virtual void dPosTraDParCalib(const AlignmentPoint *pnt, double *deriv, int calibID, const AlignableVolume *parent=nullptr) const
virtual void dPosTraDParGeomTRA(const AlignmentPoint *pnt, double *deriv) const
bool IsSortable() const override
AlignableDetector * getDetector() const
~AlignableSensor() override=default
void updateL2GRecoMatrices(const std::vector< o2::detectors::AlignParam > &algArr, const TGeoHMatrix *cumulDelta) override
void Print(const Option_t *opt="") const override
void setMatrixClAlg(const TGeoHMatrix &m)
bool isSensor() const override
virtual void dPosTraDParGeomLOC(const AlignmentPoint *pnt, double *deriv) const
AlignableSensor(const AlignableSensor &)
void setAddError(double y, double z)
void setDetector(AlignableDetector *det)
virtual void dPosTraDParGeom(const AlignmentPoint *pnt, double *deriv, const AlignableVolume *parent=nullptr) const
void getModifiedMatrixT2LmodTRA(TGeoHMatrix &matMod, const double *delta) const
const TGeoHMatrix & getMatrixClAlgReco() const
AlignableSensor & operator=(const AlignableSensor &)
ClassDefOverride(AlignableVolume, 2)
const GLfloat * m
Definition glcorearb.h:4066
GLuint const GLchar * name
Definition glcorearb.h:781
GLint y
Definition glcorearb.h:270
GLboolean GLboolean GLboolean GLboolean a
Definition glcorearb.h:1233
GLdouble GLdouble GLdouble z
Definition glcorearb.h:843
typename track::TrackParametrizationWithError< double > trackParam_t
Definition utils.h:29
void align(gsl::span< ElinkEncoder< BareFormat, CHARGESUM > > elinks)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...