5 unsigned int seed = 128;
17 double sigmaX, sigmaY, sigmaZ;
25 sigmaZ =
PRNG->Gaus(mean, angleSigma);
28 shift[0] =
PRNG->Gaus(mean, shiftSigma);
29 shift[1] =
PRNG->Gaus(mean, shiftSigma);
41 result.RotateZ(sigmaZ);
42 result.SetTranslation(shift);
51 string misMatFileName =
"misalignMatrices-SensorsOnly-";
54 cout <<
"creating dummy geometry...\n";
57 TString geometryFile =
"Luminosity-Detector.root";
61 FairRunSim *
fRun =
new FairRunSim();
62 fRun->SetName(
"TGeant4");
63 fRun->SetOutputFile(simOutput);
64 fRun->SetMaterials(
"media_pnd.geo");
66 Cave->SetGeometryFileName(
"pndcave.geo");
67 fRun->AddModule(Cave);
69 Pipe->SetGeometryFileName(
"beampipe_201309.root");
70 fRun->AddModule(Pipe);
72 Magnet->SetGeometryFileName(
"FullSolenoid_V842.root");
73 fRun->AddModule(Magnet);
75 Dipole->SetGeometryFileName(
"dipole.geo");
76 fRun->AddModule(Dipole);
79 Lum->SetGeometryFileName(geometryFile);
87 vector < string > paths = helper.
getAllAlignPaths(
true,
false,
false,
false,
false);
89 cout <<
"got paths.\n";
91 std::map<std::string, TGeoHMatrix> matrices;
95 cout <<
"enter misalign parameter in um (example: 100 for 100um)\n";
96 cout <<
"don't go higher than 500u. Please enter now:\nmisalign: ";
100 cout <<
"using shift: " << misAlignParam <<
"um and rot: " << misAlignParam/40 <<
"mrad \n";
101 cout <<
"PndLmd: creating misalignment matrices.\n";
103 for (
auto &
i : paths) {
105 double shift = misAlignParam * 1e-4;
107 double rot = TMath::RadToDeg() * (shift / 4);
110 matrices[
i] = tempMat;
115 for (
auto &
i : matrices) {
116 cout <<
"\n---\n" <<
i.first <<
"\n";
121 string paramStr = std::to_string(
int(misAlignParam));
123 TFile *misalignmentMatrixRootfile =
new TFile((misMatFileName + paramStr + ext).c_str(),
"NEW");
124 if (misalignmentMatrixRootfile->IsOpen()) {
125 printf(
"File opened successfully\n");
127 gDirectory->WriteObject(&matrices,
"PndLmdMisalignMatrices");
128 misalignmentMatrixRootfile->Write();
129 misalignmentMatrixRootfile->Close();
131 cout <<
"All matrices written to file!\n";
134 cerr <<
"WARNING! Could not write to " << misMatFileName <<
"\n";
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
TGeoHMatrix createRandomMatrix(double angleSigma, double shiftSigma)
void SetExclusiveSensorType(const TString sens)
static PndLmdGeometryHelper & getInstance()
std::vector< std::string > getAllAlignPaths(bool sensors=true, bool modules=false, bool planes=false, bool halfs=false, bool detector=false)
PndLmdGeometryHelper * helper
int createPndLmdMisalignmentMatrices()