PandaRoot
PndLmdAlignQA.h
Go to the documentation of this file.
1 /*
2  * PndLmdAlignQA.h
3  *
4  * Created on: Jul 6, 2015
5  * Author: Roman Klasen, roklasen@uni-mainz.de or klasen@kph.uni-mainz.de
6  *
7  * helper class that plots stuff, use one instance for desired plot, then delete and create new.
8  */
9 
10 #ifndef LMD_LMDSENSORALIGNMENT_PNDLMDALIGNQA_H_
11 #define LMD_LMDSENSORALIGNMENT_PNDLMDALIGNQA_H_
12 
13 #include <sstream>
14 #include <string>
15 #include <vector>
16 
17 #include "PndLmdAlignManager.h"
18 #include <PndLmdGeometryHelper.h>
19 
20 #include <TGeoMatrix.h>
21 
22 #include <matrix.h>
23 
24 struct histParams {
25  bool printCMPXinPathName = true;
26  double scaleFactor = 1.0;
27  std::string fileName, title, xtitle, ytitle, path;
28  int bins = 30;
29  double xMin = -1;
30  double xMax = -1;
31  int vectorIndex = 0;
32 };
33 
35 
36  private:
37  std::vector<std::string> _inputFiles;
38  std::string outputPath, pdfOutPath, binaryMatPath, LMDMatPath;
39  double infoMomentum;
40  bool infoAbsolute, infoRelative, byPlane, _inCentimeters;
41  bool alignOptionBool;
42  int pairsRequired;
43  PndLmdAlignManager manager;
44  PndLmdGeometryHelper *helper;
45 
46  // contains number of pairs on overlap area
47  std::map<int, int> matrixInfo;
48 
49  // set of misaligned matrices read from disk
50  std::map<std::string, TGeoHMatrix> *matricesMisaligned;
51 
52  void createHist(std::vector<std::vector<double>> &vec, histParams &parameters);
53 
54  double calculateOverlappingArea(int id1, int id2);
55 
56  int noOfPairs(int overlapID);
57 
58  public:
59  PndLmdAlignQA();
60  virtual ~PndLmdAlignQA();
61  void init();
62 
63  // ========== QA functions
64  void checkCombined();
65  // TODO: reimplement these with new geometry
66  void checkCyclicMatrices(bool inCentimeters = true);
67  void checkCombinedMatrices(bool inCentimeters = true);
68 
69  // ========== helper functions
70  std::map<std::string, TGeoHMatrix> *readRootMatrices(TString &filename);
71  TGeoHMatrix baseTransformation(TGeoHMatrix &input, TGeoHMatrix &toBaseMatrix);
72  TGeoHMatrix getMatrixSensorToSensor(int sensorOne, int sensorTwo);
73  TGeoHMatrix getOverlapMatrixLikeICP(PndLmdOverlapInfo &info);
74  TGeoHMatrix getMisalignedOverlapFromGeoManager(PndLmdOverlapInfo &info);
75  TGeoHMatrix getMisalignedOverlapFromICP(PndLmdOverlapInfo &info, std::string ICPmatrix);
76  std::vector<double> getMatrixDiffCM(PndLmdOverlapInfo &info, std::string &icpFile);
77  PndLmdOverlapInfo &getSmallOverlapInfo(std::vector<PndLmdOverlapInfo> &infos, int smallOverlap);
78 
79  void readMatrixInfo();
80  void checkIOpaths();
81  bool checkForMatrixFiles();
82  void calculateOverlapingAreas();
83 
84  // ========== settings for this QA task
85  void setInCentimeters(bool inCentimeters) { this->_inCentimeters = inCentimeters; }
86  void setLmdMatPath(const std::string &path) { LMDMatPath = path; }
87  void setBinaryMatPath(const std::string &path) { binaryMatPath = path; }
88  void setPdfOutPath(const std::string &path) { pdfOutPath = path; }
89  void setAlignedGeometry(bool aligned) { alignOptionBool = aligned; }
90  void setPairsRequired(int number) { pairsRequired = number; }
91  void setOutputPath(std::string path) { outputPath = path; }
92  void setInfoAbsolute(bool info) { infoAbsolute = info; }
93  void setInfoMomentum(double info) { infoMomentum = info; }
94  void setInfoRelative(bool info) { infoRelative = info; }
95 };
96 
97 #endif /* LMD_LMDSENSORALIGNMENT_PNDLMDALIGNQA_H_ */
void setPdfOutPath(const std::string &path)
Definition: PndLmdAlignQA.h:88
void setInfoRelative(bool info)
Definition: PndLmdAlignQA.h:94
std::string title
Definition: PndLmdAlignQA.h:27
void setInfoMomentum(double info)
Definition: PndLmdAlignQA.h:93
void setInfoAbsolute(bool info)
Definition: PndLmdAlignQA.h:92
double scaleFactor
Definition: PndLmdAlignQA.h:26
double xMin
Definition: PndLmdAlignQA.h:29
void setLmdMatPath(const std::string &path)
Definition: PndLmdAlignQA.h:86
void setInCentimeters(bool inCentimeters)
Definition: PndLmdAlignQA.h:85
void setOutputPath(std::string path)
Definition: PndLmdAlignQA.h:91
double xMax
Definition: PndLmdAlignQA.h:30
std::string ytitle
Definition: PndLmdAlignQA.h:27
void setPairsRequired(int number)
Definition: PndLmdAlignQA.h:90
void setBinaryMatPath(const std::string &path)
Definition: PndLmdAlignQA.h:87
std::string path
Definition: PndLmdAlignQA.h:27
std::string xtitle
Definition: PndLmdAlignQA.h:27
bool printCMPXinPathName
Definition: PndLmdAlignQA.h:25
void setAlignedGeometry(bool aligned)
Definition: PndLmdAlignQA.h:89
std::string fileName
Definition: PndLmdAlignQA.h:27