FairRoot/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{
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 
38  std::vector<std::string> _inputFiles;
40  double infoMomentum;
46 
47  //contains number of pairs on overlap area
48  std::map<int, int> matrixInfo;
49 
50  //set of misaligned matrices read from disk
51  std::map<std::string, TGeoHMatrix> *matricesMisaligned;
52 
53  void createHist(std::vector<std::vector<double> > &vec, histParams &parameters);
54 
55  double calculateOverlappingArea(int id1, int id2);
56 
57  int noOfPairs(int overlapID);
58 
59 public:
60 
61  PndLmdAlignQA();
62  virtual ~PndLmdAlignQA();
63  void init();
64 
65  // ========== QA functions
66  void checkCombined();
67  //TODO: reimplement these with new geometry
68  void checkCyclicMatrices(bool inCentimeters=true);
69  void checkCombinedMatrices(bool inCentimeters=true);
70 
71  // ========== helper functions
72  std::map<std::string, TGeoHMatrix> * readRootMatrices(TString &filename);
73  TGeoHMatrix baseTransformation(TGeoHMatrix &input, TGeoHMatrix &toBaseMatrix);
74  TGeoHMatrix getMatrixSensorToSensor(int sensorOne, int sensorTwo);
75  TGeoHMatrix getOverlapMatrixLikeICP(PndLmdOverlapInfo &info);
77  TGeoHMatrix getMisalignedOverlapFromICP(PndLmdOverlapInfo &info, std::string ICPmatrix);
78  std::vector<double> getMatrixDiffCM(PndLmdOverlapInfo &info, std::string &icpFile);
79  PndLmdOverlapInfo& getSmallOverlapInfo(std::vector<PndLmdOverlapInfo> &infos, int smallOverlap);
80 
81  void readMatrixInfo();
82  void checkIOpaths();
83  bool checkForMatrixFiles();
85 
86 
87  // ========== settings for this QA task
88  void setInCentimeters(bool inCentimeters) { this->_inCentimeters = inCentimeters; }
89  void setLmdMatPath(const std::string& path) { LMDMatPath = path; }
90  void setBinaryMatPath(const std::string& path) { binaryMatPath = path; }
91  void setPdfOutPath(const std::string& path) { pdfOutPath = path; }
92  void setAlignedGeometry(bool aligned) { alignOptionBool = aligned; }
93  void setPairsRequired(int number) { pairsRequired = number; }
94  void setOutputPath(std::string path){ outputPath = path; }
95  void setInfoAbsolute(bool info) { infoAbsolute = info; }
96  void setInfoMomentum(double info) { infoMomentum = info; }
97  void setInfoRelative(bool info) { infoRelative = info; }
98 };
99 
100 #endif /* LMD_LMDSENSORALIGNMENT_PNDLMDALIGNQA_H_ */
double infoMomentum
Definition: PndLmdAlignQA.h:40
std::map< std::string, TGeoHMatrix > * matricesMisaligned
Definition: PndLmdAlignQA.h:51
PndLmdOverlapInfo & getSmallOverlapInfo(std::vector< PndLmdOverlapInfo > &infos, int smallOverlap)
std::vector< std::string > _inputFiles
Definition: PndLmdAlignQA.h:38
void setPdfOutPath(const std::string &path)
Definition: PndLmdAlignQA.h:91
double calculateOverlappingArea(int id1, int id2)
void setInfoRelative(bool info)
Definition: PndLmdAlignQA.h:97
TGeoHMatrix getMisalignedOverlapFromICP(PndLmdOverlapInfo &info, std::string ICPmatrix)
std::string title
Definition: PndLmdAlignQA.h:27
void setInfoMomentum(double info)
Definition: PndLmdAlignQA.h:96
virtual ~PndLmdAlignQA()
void setInfoAbsolute(bool info)
Definition: PndLmdAlignQA.h:95
TGeoHMatrix getOverlapMatrixLikeICP(PndLmdOverlapInfo &info)
bool checkForMatrixFiles()
PndLmdAlignManager manager
Definition: PndLmdAlignQA.h:44
void calculateOverlapingAreas()
std::string LMDMatPath
Definition: PndLmdAlignQA.h:39
double scaleFactor
Definition: PndLmdAlignQA.h:26
int noOfPairs(int overlapID)
std::map< int, int > matrixInfo
Definition: PndLmdAlignQA.h:48
double xMin
Definition: PndLmdAlignQA.h:29
void setLmdMatPath(const std::string &path)
Definition: PndLmdAlignQA.h:89
std::string pdfOutPath
Definition: PndLmdAlignQA.h:39
void checkCyclicMatrices(bool inCentimeters=true)
void setInCentimeters(bool inCentimeters)
Definition: PndLmdAlignQA.h:88
void setOutputPath(std::string path)
Definition: PndLmdAlignQA.h:94
double xMax
Definition: PndLmdAlignQA.h:30
std::string ytitle
Definition: PndLmdAlignQA.h:27
TGeoHMatrix getMatrixSensorToSensor(int sensorOne, int sensorTwo)
PndLmdGeometryHelper * helper
Definition: PndLmdAlignQA.h:45
void setPairsRequired(int number)
Definition: PndLmdAlignQA.h:93
void checkIOpaths()
void readMatrixInfo()
void setBinaryMatPath(const std::string &path)
Definition: PndLmdAlignQA.h:90
TGeoHMatrix baseTransformation(TGeoHMatrix &input, TGeoHMatrix &toBaseMatrix)
std::string path
Definition: PndLmdAlignQA.h:27
bool alignOptionBool
Definition: PndLmdAlignQA.h:42
std::vector< double > getMatrixDiffCM(PndLmdOverlapInfo &info, std::string &icpFile)
std::string outputPath
Definition: PndLmdAlignQA.h:39
std::string xtitle
Definition: PndLmdAlignQA.h:27
void checkCombinedMatrices(bool inCentimeters=true)
void createHist(std::vector< std::vector< double > > &vec, histParams &parameters)
std::string binaryMatPath
Definition: PndLmdAlignQA.h:39
TGeoHMatrix getMisalignedOverlapFromGeoManager(PndLmdOverlapInfo &info)
bool printCMPXinPathName
Definition: PndLmdAlignQA.h:25
dble_vec_t vec[12]
Definition: ranlxd.cxx:380
void setAlignedGeometry(bool aligned)
Definition: PndLmdAlignQA.h:92
std::map< std::string, TGeoHMatrix > * readRootMatrices(TString &filename)
std::string fileName
Definition: PndLmdAlignQA.h:27
const string filename