CbmRoot
CbmMvdGeoHandler.cxx
Go to the documentation of this file.
1 
7 #include "CbmMvdGeoHandler.h"
8 
9 
10 #include "FairLogger.h"
11 
12 #include "TGeoBBox.h"
13 #include "TGeoManager.h"
14 #include "TGeoMatrix.h"
15 #include "TGeoNode.h"
16 #include "TGeoVolume.h"
17 #include "TString.h"
18 #include "TVirtualMC.h"
19 
20 #include "CbmMvdDetector.h"
21 #include "CbmMvdStationPar.h"
22 
26 
27 #include <cstdlib>
28 using std::atoi;
29 
30 
31 //--------------------------------------------------------------------------
33  : TObject()
34  , fSensorTyp(CbmMvdSensorTyp::MIMOSA26)
35  , fDetector(NULL)
36  , fStationPar(NULL)
37  , fStationMap()
38  , fIsSimulation(kFALSE)
39  , fGeoPathHash()
40  ,
41  fCurrentVolume()
42  ,
43  fVolumeShape()
44  ,
45  fGlobal()
46  ,
47  fGlobalMatrix()
48  ,
49  fLayerId(-1)
50  ,
51  fModuleId(-1)
52  ,
53  fModuleType(-1)
54  ,
55  fStation(-1)
56  ,
57  fMother("")
58  , fGeoTyp()
59  , fVolId()
60  , fStationNumber(-1)
61  , fWidth(0.)
62  , fHeight(0.)
63  , fRadLength(0.)
64  , fBeamwidth(0.)
65  , fBeamheight(0.)
66  , fThickness(0.)
67  , fXres(0.)
68  , fYres(0.)
69  , fStationName("")
70  , fDetectorName("")
71  , fSectorName("")
72  , fQuadrantName("")
73  , fSensorHolding("")
74  , fSensorName("")
75  , fnodeName("") {}
76 //--------------------------------------------------------------------------
77 
78 //--------------------------------------------------------------------------
80 
81 //--------------------------------------------------------------------------
82 
83 //--------------------------------------------------------------------------
84 void CbmMvdGeoHandler::Init(Bool_t isSimulation) {
85 
86 
87  fIsSimulation = isSimulation;
88  GetPipe();
90 
91 
92  if (!isSimulation) {
94  LOG(info) << "Using Mimosis style sensor";
95  else
96  LOG(info) << "Using Mimosa style sensor";
100  switch (fGeoTyp) {
101  case scripted:
102  case FourStation:
104  case ThreeStation: fStationPar->SetNofStations(3); break;
105  case MiniCbm: fStationPar->SetNofStations(2); break;
106  default: fStationPar->SetNofStations(0);
107  }
108  fStationPar->Init();
109  }
110 }
111 //--------------------------------------------------------------------------
112 
113 //--------------------------------------------------------------------------
115  // In the simulation we can not rely on the TGeoManager information
116  // In the simulation we get the correct information only from gMC
117 
118  return 1;
119 }
120 //--------------------------------------------------------------------------
121 
122 //--------------------------------------------------------------------------
123 Int_t CbmMvdGeoHandler::GetSensorAddress(const TString& path) {
124  if (fGeoPathHash != path.Hash()) { NavigateTo(path); }
125  return GetSensorAddress();
126 }
127 //--------------------------------------------------------------------------
128 
129 //--------------------------------------------------------------------------
130 Double_t CbmMvdGeoHandler::GetSizeX(const TString& path) {
131  if (fGeoPathHash != path.Hash()) { NavigateTo(path); }
132  return fVolumeShape->GetDX();
133 }
134 //--------------------------------------------------------------------------
135 
136 //--------------------------------------------------------------------------
137 Double_t CbmMvdGeoHandler::GetSizeY(const TString& path) {
138  if (fGeoPathHash != path.Hash()) { NavigateTo(path); }
139  return fVolumeShape->GetDY();
140 }
141 //--------------------------------------------------------------------------
142 
143 //--------------------------------------------------------------------------
144 Double_t CbmMvdGeoHandler::GetSizeZ(const TString& path) {
145  if (fGeoPathHash != path.Hash()) { NavigateTo(path); }
146  return fVolumeShape->GetDZ();
147 }
148 //--------------------------------------------------------------------------
149 
150 //--------------------------------------------------------------------------
151 Double_t CbmMvdGeoHandler::GetZ(const TString& path) {
152  if (fGeoPathHash != path.Hash()) { NavigateTo(path); }
153  return fGlobal[2];
154 }
155 //--------------------------------------------------------------------------
156 
157 //--------------------------------------------------------------------------
158 Double_t CbmMvdGeoHandler::GetY(const TString& path) {
159  if (fGeoPathHash != path.Hash()) { NavigateTo(path); }
160  return fGlobal[1];
161 }
162 //--------------------------------------------------------------------------
163 
164 //--------------------------------------------------------------------------
165 Double_t CbmMvdGeoHandler::GetX(const TString& path) {
166  if (fGeoPathHash != path.Hash()) { NavigateTo(path); }
167  return fGlobal[0];
168 }
169 //--------------------------------------------------------------------------
170 
171 
172 //--------------------------------------------------------------------------
173 Int_t CbmMvdGeoHandler::GetStation(const TString& path) {
174  if (fGeoPathHash != path.Hash()) { NavigateTo(path); }
175  return fStation;
176 }
177 //--------------------------------------------------------------------------
178 
179 
180 //--------------------------------------------------------------------------
181 void CbmMvdGeoHandler::NavigateTo(const TString& path) {
182  // cout << "path : " << path.Data() << endl;
183  if (fIsSimulation) {
184  LOG(fatal) << "This method is not supported in simulation mode";
185  } else {
186  gGeoManager->cd(path.Data());
187  fGeoPathHash = path.Hash();
188  fCurrentVolume = gGeoManager->GetCurrentVolume();
189  TString name = fCurrentVolume->GetName();
190  LOG(debug2) << "this volume is " << name;
191  fVolumeShape = (TGeoBBox*) fCurrentVolume->GetShape();
192  Double_t local[3] = {0., 0., 0.}; // Local center of volume
193  gGeoManager->LocalToMaster(local, fGlobal);
194  fGlobalMatrix = gGeoManager->GetCurrentMatrix();
195  if (path.Contains("-S0-") || path.Contains("_S0_"))
196  fStationNumber = 0;
197  else if (path.Contains("-S1-") || path.Contains("_S1_"))
198  fStationNumber = 1;
199  else if (path.Contains("-S2-") || path.Contains("_S2_"))
200  fStationNumber = 2;
201  else if (path.Contains("-S3-") || path.Contains("_S3_"))
202  fStationNumber = 3;
203  else
204  LOG(fatal)
205  << "couldn't find Station in volume name, something seems fishy ";
206 
207  LOG(debug2) << "I am in path: " << path;
208  LOG(debug2) << "I am: " << name;
209  LOG(debug2) << "I am on station: " << fStationNumber;
210  LOG(debug2) << "I am at X: " << fGlobal[0];
211  LOG(debug2) << "I am at Y: " << fGlobal[1];
212  LOG(debug2) << "I am at Z: " << fGlobal[2];
213 
214  local[0] = fVolumeShape->GetDX();
215  local[1] = fVolumeShape->GetDY();
216  Double_t fGlobalMax[3];
217  gGeoManager->LocalToMaster(local, fGlobalMax);
218 
219  local[0] = -1 * fVolumeShape->GetDX();
220  local[1] = -1 * fVolumeShape->GetDY();
221  Double_t fGlobalMin[3];
222  gGeoManager->LocalToMaster(local, fGlobalMin);
223 
224  if (fGlobalMax[0] > fGlobalMin[0]) {
225  fWidth = fGlobalMax[0];
226  fBeamwidth = fGlobalMin[0];
227  } else {
228  fWidth = fGlobalMin[0];
229  fBeamwidth = fGlobalMax[0];
230  }
231  if (fGlobalMax[1] > fGlobalMin[1]) {
232  fHeight = fGlobalMax[1];
233  fBeamheight = fGlobalMin[1];
234  } else {
235  fHeight = fGlobalMin[1];
236  fBeamheight = fGlobalMax[1];
237  }
238 
239  // TODO: hard coded numbers, find other way only for Mvd_v14a / v14b / v15a
240  if (fStationNumber == 0)
241  fRadLength = 0.24;
242  else if (fStationNumber == 1)
243  fRadLength = 0.31;
244  else if (fStationNumber == 2)
245  fRadLength = 0.47;
246  else
247  fRadLength = 0.49;
248 
249  fXres = 3.8; // TODO: pixelSizeX / sqrt{12}
250  fYres = 3.8; // TODO: pixelSizeY / sqrt{12}
251  }
252 }
253 //--------------------------------------------------------------------------
254 
255 //--------------------------------------------------------------------------
257  TString pipeName = "pipe";
258  TString motherName;
259  Bool_t fail = kTRUE;
260 
261  TObjArray* nodes = gGeoManager->GetTopNode()->GetNodes();
262 
263  for (Int_t iNode = 0; iNode < nodes->GetEntriesFast(); iNode++) {
264  TGeoNode* node = (TGeoNode*) nodes->At(iNode);
265  if (TString(node->GetName())
266  .Contains(pipeName, TString::ECaseCompare::kIgnoreCase)) {
267  motherName = node->GetName();
268  fMother = Form("cave_1/%s/pipevac1_0", motherName.Data());
269  LOG(debug) << "MvdGeoHandler found Mother: " << fMother;
270  fail = kFALSE;
271  break;
272  } else
273  continue;
274  }
275  if (fail) {
276  LOG(debug) << "Check for MVD outside of pipe";
277 
278  for (Int_t iNode = 0; iNode < nodes->GetEntriesFast(); iNode++) {
279  TGeoNode* node = (TGeoNode*) nodes->At(iNode);
280  if (TString(node->GetName())
281  .Contains("mvd", TString::ECaseCompare::kIgnoreCase)) {
282  motherName = node->GetName();
283  fMother = "cave_1";
284  LOG(debug) << "MvdGeoHandler found Mother: " << fMother;
285  LOG(warn)
286  << "Mvd found outside of pipe, use this setup only in testing";
287  fail = kFALSE;
288  break;
289  } else
290  continue;
291  }
292  }
293  if (fail)
294  LOG(fatal)
295  << "MVD Geometry included, but pipe not found please check your setup";
296 }
297 //--------------------------------------------------------------------------
298 
299 //--------------------------------------------------------------------------
300 
302  if (gGeoManager->CheckPath(fMother + "/Beamtimeosetupoobgnum_0")) {
303  LOG(info) << "Found Beamtimesetupy";
304  fGeoTyp = beamtest;
305  } else if (gGeoManager->CheckPath(
306  fMother + "/MVDoMistraloquero012oStationo150umodigi_0")) {
307  LOG(debug) << "Found MVD with 3 Stations";
309  } else if (gGeoManager->CheckPath(fMother
310  + "/MVDo0123ohoFPCoextoHSoSo0123_0")) {
311  LOG(debug) << "Found MVD with 4 Stations";
313  fDetectorName = "/MVDo0123ohoFPCoextoHSoSo0123_0";
314  } else if (gGeoManager->CheckPath(fMother
315  + "/MVDo1123ohoFPCoextoHSoSo1123_0")) {
316  LOG(debug) << "Found shifted MVD with 4 Stations";
318  fDetectorName = "/MVDo1123ohoFPCoextoHSoSo1123_0";
319  } else if (gGeoManager->CheckPath(fMother + "/MVDomCBM_0")) {
320  LOG(debug) << "Found mCBM MVD configuration";
321  fDetectorName = "/MVDomCBM_0";
322  fGeoTyp = MiniCbm;
323  } else if (gGeoManager->CheckPath(fMother + "/MVDomCBMorotated_0")) {
324  LOG(debug) << "Found mCBM MVD rotated configuration";
325  fDetectorName = "/MVDomCBMorotated_0";
326  fGeoTyp = MiniCbm;
327  } else if (gGeoManager->CheckPath(fMother + "/MVDscripted_0")) {
328  LOG(debug) << "Found scripted MVD configuration";
329  fDetectorName = "/MVDscripted_0";
330  fGeoTyp = scripted;
331  } else {
332  LOG(info) << "Try standard Geometry";
333  fGeoTyp = Default;
334  }
335 }
336 //--------------------------------------------------------------------------
337 
338 //--------------------------------------------------------------------------
339 Int_t CbmMvdGeoHandler::GetIDfromPath(TString path) {
340  // path is build as: cave_1/*pipe/MVDscripted_0/quadrant_S*_*/sensor_*/sensorActive
341  Int_t id = 0;
342  TString sensorName;
343 
344  TString quadrantName;
345  TString stationName;
346 
347  gGeoManager->cd(path.Data());
348 
349  sensorName = gGeoManager->GetMother(1)->GetName();
350  sensorName.Remove(0, 7);
351  Int_t sensorNumber = sensorName.Atoi();
352 
353  quadrantName = gGeoManager->GetMother(2)->GetName();
354  stationName = quadrantName(10);
355  quadrantName.Remove(0, 12);
356  Int_t quadNumber = quadrantName.Atoi();
357  Int_t stationNumber = stationName.Atoi();
358 
359  id = 1000 * stationNumber + 100 * quadNumber + sensorNumber;
360 
361  // LOG(debug) << "We are on Station: " << stationNumber << " in Quadrant: " << quadNumber << " and Sensor: " << sensorNumber;
362  // LOG(debug) << "This ID is: " << id;
363 
364 
365  return id;
366 }
367 //--------------------------------------------------------------------------
368 
369 
370 //--------------------------------------------------------------------------
372  if (fIsSimulation)
373  FillStationMap();
374  else
375  FillDetector();
376 }
377 //--------------------------------------------------------------------------
378 
379 //--------------------------------------------------------------------------
381  if (fGeoTyp == Default)
382  LOG(error)
383  << "Using old Geometry files within the new Digitizer is not supported, "
384  << "please use CbmMvdDigitizeL if you want to use this Geometry";
385 
387 
388  if (!fDetector)
389  LOG(fatal) << "GeometryHandler couldn't find a valid Detector";
390 
391  Int_t iStation = 0;
392  for (Int_t StatNr = 0; StatNr < 4; StatNr++) {
393  fStationNumber = StatNr;
394  if (StatNr == 0 && fGeoTyp == FourStation)
395  fStationName = "/MVDo0ohoFPCoHSoS_1";
396  else
397  fStationName = Form("/MVDo%iohoFPCoextoHSoS_1", StatNr);
398  for (Int_t QuadNr = 0; QuadNr < 4; QuadNr++) {
399  if (StatNr == 0 && fGeoTyp == 4)
400  fQuadrantName = Form("/St0Q%iohoFPC_1", QuadNr);
401  else
402  fQuadrantName = Form("/St%iQ%iohoFPCoext_1", StatNr, QuadNr);
403  for (Int_t Layer = 0; Layer < 2; Layer++) {
404 
405  for (Int_t SensNr = 0; SensNr < 50; SensNr++) {
406  fSensorHolding = Form("/MVD-S%i-Q%i-L%i-C%02i-P0oPartAss_1",
407  StatNr,
408  QuadNr,
409  Layer,
410  SensNr);
411  fSensorName =
412  Form("MVD-S%i-Q%i-L%i-C%02i-P0", StatNr, QuadNr, Layer, SensNr);
413  fVolId = gGeoManager->GetUID(fSensorName);
414  if (fVolId > -1)
415  for (Int_t SegmentNr = 0; SegmentNr < 50; SegmentNr++) {
416  fSectorName = Form("/S%iQ%iS%i_1", StatNr, QuadNr, SegmentNr);
419  + fSensorName + "_1";
420  LOG(debug) << "looking for " << fnodeName;
421  Bool_t nodeFound = gGeoManager->CheckPath(fnodeName.Data());
422  if (nodeFound) {
424  fSensorName,
425  fnodeName,
426  new CbmMvdMimosa26AHR,
427  iStation,
428  fVolId,
429  0.0,
430  StatNr);
431  iStation++;
432  FillParameter();
433  }
434  }
435  }
436  }
437  }
438  }
439  }
440 
441  else if (fGeoTyp == scripted) {
442  fSensorName = "sensorActive";
443  if (!fDetector)
444  LOG(fatal) << "GeometryHandler couldn't find a valid Detector";
445 
446  Int_t iStation = 0;
447  for (Int_t StatNr = 0; StatNr < 4; StatNr++) {
448  fStationNumber = StatNr;
449  fStationName = Form("/station_S%d_1", StatNr);
450  for (Int_t QuadNr = 0; QuadNr < 4; QuadNr++) {
451  fQuadrantName = Form("/quadrant_S%d_%d", StatNr, QuadNr);
452  for (Int_t SensNr = 0; SensNr < 50; SensNr++) {
453  fSensorHolding = Form("/sensor_%d", SensNr);
455  + fSensorHolding + "/" + fSensorName + "_1";
456  LOG(debug1) << "looking for " << fnodeName;
457  Bool_t nodeFound = gGeoManager->CheckPath(fnodeName.Data());
458  if (nodeFound) {
459  gGeoManager->cd(fnodeName);
461 
464  fSensorName,
465  fnodeName,
466  new CbmMvdMimosis,
467  iStation,
468  fVolId,
469  0.0,
470  StatNr);
471  else
473  fSensorName,
474  fnodeName,
475  new CbmMvdMimosa26AHR,
476  iStation,
477  fVolId,
478  0.0,
479  StatNr);
480  iStation++;
481  FillParameter();
482  LOG(debug1) << "found " << fSensorHolding + "/" + fSensorName
483  << " number: " << fVolId
484  << " and added to MVD Detector";
485  } else
486  break;
487  }
488  }
489  }
490  }
491 
492 
493  else if (fGeoTyp == MiniCbm) {
494 
495  if (!fDetector)
496  LOG(fatal) << "GeometryHandler couldn't find a valid mCBM Detector";
497 
498  Int_t iStation = 0;
499  for (Int_t StatNr = 0; StatNr < 2; StatNr++) {
500  fStationNumber = StatNr;
501  fStationName = Form("/MVDomCBMoS%i_1", StatNr);
502 
503  for (Int_t Layer = 0; Layer < 2; Layer++) {
504  for (Int_t SensNr = 0; SensNr < 50; SensNr++) {
505  fQuadrantName =
506  Form("/MVD-S%i-Q0-L%i-C%02i_1", StatNr, Layer, SensNr);
508  Form("/MVD-S%i-Q0-L%i-C%02i-P0oPartAss_1", StatNr, Layer, SensNr);
509  fSensorName = Form("MVD-S%i-Q0-L%i-C%02i-P0", StatNr, Layer, SensNr);
510  fVolId = gGeoManager->GetUID(fSensorName);
511  if (fVolId > -1) {
513  + fSensorHolding + "/" + fSensorName + "_1";
514  Bool_t nodeFound = gGeoManager->CheckPath(fnodeName.Data());
515  if (nodeFound) {
517  fSensorName,
518  fnodeName,
519  new CbmMvdMimosa26AHR,
520  iStation,
521  fVolId,
522  0.0,
523  StatNr);
524  iStation++;
525  FillParameter();
526  }
527  }
528  }
529  }
530  }
531  } else {
532  LOG(error) << "Tried to load an unsupported MVD Geometry";
533  }
534 }
535 //--------------------------------------------------------------------------
536 
537 //--------------------------------------------------------------------------
539 
540 
541  if (fGeoPathHash != fnodeName.Hash()) { NavigateTo(fnodeName); }
551 }
552 //--------------------------------------------------------------------------
553 
554 //--------------------------------------------------------------------------
556 //--------------------------------------------------------------------------
557 
558 //--------------------------------------------------------------------------
561  Int_t iStation = 0;
562  for (Int_t StatNr = 0; StatNr < 4; StatNr++) {
563  if (StatNr == 0 && fGeoTyp == FourStation)
564  fStationName = "/MVDo0ohoFPCoHSoS_1";
565  else
566  fStationName = Form("/MVDo%iohoFPCoextoHSoS_1", StatNr);
567  for (Int_t QuadNr = 0; QuadNr < 4; QuadNr++) {
568  if (StatNr == 0 && fGeoTyp == 4)
569  fQuadrantName = Form("/St0Q%iohoFPC_1", QuadNr);
570  else
571  fQuadrantName = Form("/St%iQ%iohoFPCoext_1", StatNr, QuadNr);
572  for (Int_t Layer = 0; Layer < 2; Layer++) {
573  for (Int_t SensNr = 0; SensNr < 50; SensNr++) {
574  fSensorHolding = Form("/MVD-S%i-Q%i-L%i-C%02i-P0oPartAss_1",
575  StatNr,
576  QuadNr,
577  Layer,
578  SensNr);
579  fSensorName =
580  Form("MVD-S%i-Q%i-L%i-C%02i-P0", StatNr, QuadNr, Layer, SensNr);
581  fVolId = gGeoManager->GetUID(fSensorName);
582  if (fVolId > -1)
583  for (Int_t SegmentNr = 0; SegmentNr < 50; SegmentNr++) {
584  fSectorName = Form("/S%iQ%iS%i_1", StatNr, QuadNr, SegmentNr);
587  + fSensorName + "_1";
588  LOG(debug) << "looking for " << fnodeName;
589  Bool_t nodeFound = gGeoManager->CheckPath(fnodeName.Data());
590  if (nodeFound) {
591  fStationMap[fVolId] = iStation;
592  iStation++;
593  }
594  }
595  }
596  }
597  }
598  }
599  } else if (fGeoTyp == scripted) {
600  fSensorName = "sensorActive";
601  Int_t iStation = 0;
602  for (Int_t StatNr = 0; StatNr < 4; StatNr++) {
603  fStationName = Form("/station_S%d_1", StatNr);
604  for (Int_t QuadNr = 0; QuadNr < 4; QuadNr++) {
605  fQuadrantName = Form("/quadrant_S%d_%d", StatNr, QuadNr);
606  for (Int_t SensNr = 0; SensNr < 50; SensNr++) {
607  fSensorHolding = Form("/sensor_%d", SensNr);
609  + fSensorHolding + "/" + fSensorName + "_1";
610  LOG(debug) << "looking for " << fnodeName;
611  Bool_t nodeFound = gGeoManager->CheckPath(fnodeName.Data());
612  if (nodeFound) {
613  gGeoManager->cd(fnodeName);
615  LOG(debug) << "found " << fnodeName << " number: " << iStation
616  << " ID: " << fVolId << " and added to station map";
617  fStationMap[fVolId] = iStation;
618  iStation++;
619  LOG(debug) << "Map now size: " << fStationMap.size();
620  } else
621  break;
622  }
623  }
624  }
625  } else if (fGeoTyp == Default) {
626  Int_t iStation = 1;
627  Int_t volId = -1;
628  do {
629  TString volName = Form("mvdstation%02i", iStation);
630  volId = gGeoManager->GetUID(volName);
631  if (volId > -1) {
632  fStationMap[volId] = iStation;
633  LOG(info) << GetName() << "::ConstructAsciiGeometry: "
634  << "Station No. " << iStation << ", volume ID " << volId
635  << ", volume name " << volName;
636  iStation++;
637  }
638  } while (volId > -1);
639  } else if (fGeoTyp == MiniCbm) {
640  Int_t iStation = 0;
641  for (Int_t StatNr = 0; StatNr < 2; StatNr++) {
642  fStationName = Form("/MVDomCBMoS%i_1", StatNr);
643  for (Int_t Layer = 0; Layer < 2; Layer++) {
644  for (Int_t SensNr = 0; SensNr < 50; SensNr++) {
645  fQuadrantName =
646  Form("/MVD-S%i-Q0-L%i-C%02i_1", StatNr, Layer, SensNr);
648  Form("/MVD-S%i-Q0-L%i-C%02i-P0oPartAss_1", StatNr, Layer, SensNr);
649  fSensorName = Form("MVD-S%i-Q0-L%i-C%02i-P0", StatNr, Layer, SensNr);
650  //cout << endl << "try to find: " << fSensorName << endl;
651  fVolId = gGeoManager->GetUID(fSensorName);
652  if (fVolId > -1) {
654  + fSensorHolding + "/" + fSensorName + "_1";
655  //cout << endl << "sensorfound check for node " << fnodeName << endl;
656  Bool_t nodeFound = gGeoManager->CheckPath(fnodeName.Data());
657  if (nodeFound) {
658  //cout << endl << "node found " << fnodeName << endl;
659  fStationMap[fVolId] = iStation;
660  iStation++;
661  }
662  }
663  }
664  }
665  }
666  } else
667  LOG(error) << "You tried to use an unsuported Geometry";
668 }
669 //--------------------------------------------------------------------------
670 
CbmMvdDetector::Instance
static CbmMvdDetector * Instance()
Definition: CbmMvdDetector.cxx:47
CbmMvdGeoHandler::fCurrentVolume
TGeoVolume * fCurrentVolume
Definition: CbmMvdGeoHandler.h:95
CbmMvdGeoHandler::fDetectorName
TString fDetectorName
Definition: CbmMvdGeoHandler.h:118
CbmMvdDetector.h
CbmMvdGeoHandler::fGlobalMatrix
TGeoHMatrix * fGlobalMatrix
Global center of volume.
Definition: CbmMvdGeoHandler.h:98
CbmMvdGeoHandler::fSensorTyp
CbmMvdSensorTyp fSensorTyp
Definition: CbmMvdGeoHandler.h:85
CbmMvdStationPar::SetRadLength
void SetRadLength(Int_t stationNumber, Double_t length)
Definition: CbmMvdStationPar.cxx:234
CbmMvdGeoHandler::fHeight
Double_t fHeight
Definition: CbmMvdGeoHandler.h:109
CbmMvdGeoHandler::Init
void Init(Bool_t isSimulation=kFALSE)
Definition: CbmMvdGeoHandler.cxx:84
CbmMvdGeoHandler::GetY
Double_t GetY(const TString &path)
Definition: CbmMvdGeoHandler.cxx:158
CbmMvdGeoHandler::Fill
void Fill()
Definition: CbmMvdGeoHandler.cxx:371
CbmMvdGeoHandler::fBeamwidth
Double_t fBeamwidth
Definition: CbmMvdGeoHandler.h:111
scripted
@ scripted
Definition: CbmMvdGeoHandler.h:33
CbmMvdStationPar::SetNofStations
void SetNofStations(Int_t nrOfStations)
Definition: CbmMvdStationPar.h:57
CbmMvdGeoHandler::fWidth
Double_t fWidth
Definition: CbmMvdGeoHandler.h:108
CbmMvdMimosa26AHR
Definition: CbmMvdMimosa26AHR.h:23
CbmMvdGeoHandler::fVolumeShape
TGeoBBox * fVolumeShape
Definition: CbmMvdGeoHandler.h:96
CbmMvdGeoHandler::fSectorName
TString fSectorName
Definition: CbmMvdGeoHandler.h:119
CbmMvdStationPar::Init
Bool_t Init()
Definition: CbmMvdStationPar.cxx:65
CbmMvdStationPar::SetHeight
void SetHeight(Int_t stationNumber, Double_t height)
Definition: CbmMvdStationPar.cxx:210
CbmMvdStationPar::SetBeamWidth
void SetBeamWidth(Int_t stationNumber, Double_t beamwidth)
Definition: CbmMvdStationPar.cxx:252
CbmMvdSensorTyp::MIMOSA26
@ MIMOSA26
CbmMvdGeoHandler::FillStationMap
void FillStationMap()
Definition: CbmMvdGeoHandler.cxx:559
CbmMvdStationPar::SetXRes
void SetXRes(Int_t stationNumber, Double_t xres)
Definition: CbmMvdStationPar.cxx:222
CbmMvdGeoHandler::fnodeName
TString fnodeName
Definition: CbmMvdGeoHandler.h:123
CbmMvdGeoHandler::fStationName
TString fStationName
Definition: CbmMvdGeoHandler.h:117
CbmMvdMimosis.h
CbmMvdStationPar::SetYRes
void SetYRes(Int_t stationNumber, Double_t yres)
Definition: CbmMvdStationPar.cxx:228
CbmMvdGeoHandler.h
Helper class to extract information from the GeoManager. Addapted from TrdGeoHandler byFlorian Uhlig ...
CbmMvdGeoHandler::fXres
Double_t fXres
Definition: CbmMvdGeoHandler.h:114
CbmMvdSensorTyp::MIMOSIS
@ MIMOSIS
CbmMvdGeoHandler::fSensorHolding
TString fSensorHolding
Definition: CbmMvdGeoHandler.h:121
CbmMvdStationPar::SetZPosition
void SetZPosition(Int_t stationNumber, Double_t z)
Definition: CbmMvdStationPar.cxx:191
CbmMvdGeoHandler::GetGeometryTyp
void GetGeometryTyp()
Definition: CbmMvdGeoHandler.cxx:301
CbmMvdGeoHandler::fGlobal
Double_t fGlobal[3]
Definition: CbmMvdGeoHandler.h:97
CbmMvdGeoHandler
Definition: CbmMvdGeoHandler.h:37
MiniCbm
@ MiniCbm
Definition: CbmMvdGeoHandler.h:32
CbmMvdGeoHandler::GetX
Double_t GetX(const TString &path)
Definition: CbmMvdGeoHandler.cxx:165
CbmMvdGeoHandler::PrintGeoParameter
void PrintGeoParameter()
Definition: CbmMvdGeoHandler.cxx:555
CbmMvdGeoHandler::FillDetector
void FillDetector()
Definition: CbmMvdGeoHandler.cxx:380
CbmMvdDetector::AddSensor
void AddSensor(TString clearName, TString fullName, TString nodeName, CbmMvdSensorDataSheet *sensorData, Int_t sensorNr, Int_t volumeId, Double_t sensorStartTime, Int_t stationNr)
Definition: CbmMvdDetector.cxx:131
CbmMvdStationPar::SetThickness
void SetThickness(Int_t stationNumber, Double_t thickness)
Definition: CbmMvdStationPar.cxx:202
CbmMvdGeoHandler::FillParameter
void FillParameter()
Definition: CbmMvdGeoHandler.cxx:538
CbmMvdMimosis
Definition: CbmMvdMimosis.h:21
CbmMvdGeoHandler::fDetector
CbmMvdDetector * fDetector
Definition: CbmMvdGeoHandler.h:87
CbmMvdStationPar.h
ThreeStation
@ ThreeStation
Definition: CbmMvdGeoHandler.h:29
CbmMvdGeoHandler::GetStation
Int_t GetStation(const TString &path)
Definition: CbmMvdGeoHandler.cxx:173
CbmMvdGeoHandler::~CbmMvdGeoHandler
~CbmMvdGeoHandler()
Destructor.
Definition: CbmMvdGeoHandler.cxx:79
CbmMvdGeoHandler::fGeoTyp
CbmMvdGeoTyp fGeoTyp
Definition: CbmMvdGeoHandler.h:104
ClassImp
ClassImp(CbmConverterManager) InitStatus CbmConverterManager
Definition: CbmConverterManager.cxx:12
CbmMvdStationPar::SetWidth
void SetWidth(Int_t stationNumber, Double_t width)
Definition: CbmMvdStationPar.cxx:216
CbmMvdGeoHandler::GetZ
Double_t GetZ(const TString &path)
Definition: CbmMvdGeoHandler.cxx:151
Default
@ Default
Definition: CbmMvdGeoHandler.h:26
CbmMvdGeoHandler::NavigateTo
void NavigateTo(const TString &sensor)
Definition: CbmMvdGeoHandler.cxx:181
CbmMvdSensorTyp
CbmMvdSensorTyp
Definition: CbmMvdHelper.h:4
CbmMvdGeoHandler::fGeoPathHash
UInt_t fGeoPathHash
Definition: CbmMvdGeoHandler.h:94
CbmMvdGeoHandler::fSensorName
TString fSensorName
Definition: CbmMvdGeoHandler.h:122
FourStationShift
@ FourStationShift
Definition: CbmMvdGeoHandler.h:31
CbmMvdGeoHandler::GetSizeY
Double_t GetSizeY(const TString &path)
Definition: CbmMvdGeoHandler.cxx:137
CbmMvdGeoHandler::fVolId
Int_t fVolId
Definition: CbmMvdGeoHandler.h:105
CbmMvdGeoHandler::fStationMap
map< Int_t, Int_t > fStationMap
Definition: CbmMvdGeoHandler.h:90
CbmMvdGeoHandler::fQuadrantName
TString fQuadrantName
Definition: CbmMvdGeoHandler.h:120
CbmMvdStationPar::Print
void Print(Option_t *opt="") const
Definition: CbmMvdStationPar.cxx:37
CbmMvdGeoHandler::fBeamheight
Double_t fBeamheight
Definition: CbmMvdGeoHandler.h:112
CbmMvdGeoHandler::fStation
Int_t fStation
Definition: CbmMvdGeoHandler.h:102
CbmMvdGeoHandler::fStationNumber
Int_t fStationNumber
Definition: CbmMvdGeoHandler.h:106
CbmMvdGeoHandler::fStationPar
CbmMvdStationPar * fStationPar
Definition: CbmMvdGeoHandler.h:88
CbmMvdGeoHandler::fRadLength
Double_t fRadLength
Definition: CbmMvdGeoHandler.h:110
CbmMvdStationPar::SetBeamHeight
void SetBeamHeight(Int_t stationNumber, Double_t beamheight)
Definition: CbmMvdStationPar.cxx:240
CbmMvdStationPar
Definition: CbmMvdStationPar.h:22
beamtest
@ beamtest
Definition: CbmMvdGeoHandler.h:27
CbmMvdGeoHandler::GetPipe
void GetPipe()
Definition: CbmMvdGeoHandler.cxx:256
CbmMvdGeoHandler::fIsSimulation
Bool_t fIsSimulation
Definition: CbmMvdGeoHandler.h:92
CbmMvdDetector::SetParameterFile
void SetParameterFile(CbmMvdStationPar *parameter)
Definition: CbmMvdDetector.h:92
CbmMvdGeoHandler::CbmMvdGeoHandler
CbmMvdGeoHandler()
Constructor.
Definition: CbmMvdGeoHandler.cxx:32
CbmMvdMimosa26AHR.h
CbmMvdGeoHandler::GetSizeZ
Double_t GetSizeZ(const TString &path)
Definition: CbmMvdGeoHandler.cxx:144
FourStation
@ FourStation
Definition: CbmMvdGeoHandler.h:30
CbmMvdGeoHandler::GetSensorAddress
Int_t GetSensorAddress()
Return module address calculated based on the current node in the TGeoManager.
Definition: CbmMvdGeoHandler.cxx:114
CbmMvdGeoHandler::GetSizeX
Double_t GetSizeX(const TString &path)
Definition: CbmMvdGeoHandler.cxx:130
CbmMvdGeoHandler::fMother
TString fMother
StationTypeID, 1..3.
Definition: CbmMvdGeoHandler.h:103
CbmMvdGeoHandler::GetIDfromPath
Int_t GetIDfromPath(TString path)
Definition: CbmMvdGeoHandler.cxx:339
CbmMvdMimosa34.h
CbmMvdGeoHandler::fYres
Double_t fYres
Definition: CbmMvdGeoHandler.h:115