From f63f559ad451c0416c1b0e7377d973172baf36e1 Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Fri, 22 Jan 2021 15:26:46 +0100 Subject: [PATCH] Use unix line breaks for all files Convert files with wrong format to unix style line breaks. --- .../pi0eta/CbmKresSelectGoodEvents.cxx | 296 +- .../pi0eta/CbmKresSelectGoodEvents.h | 84 +- cmake/scripts/cleanmacrodir.cmake | 50 +- macro/KF/kf_thermal_signal_generator.C | 180 +- macro/analysis/much/Pluto_analysis.C | 496 +-- macro/beamtime/mcbm2019/mcbm_reco.C | 310 +- macro/fles/get4/parUnpack_get4.txt | 376 +- macro/generators/run_CbmIonGenerator.C | 482 +-- macro/littrack/cbmrootlibs.C | 94 +- macro/littrack/radlength_ana.C | 150 +- macro/littrack/radlength_sim.C | 184 +- macro/littrack/scripts/much/much_ana.C | 114 +- macro/passive/readme_pipe_v14k-p.txt | 44 +- macro/rich/Import_GDML_Export_ROOT.c | 108 +- macro/rich/d0/run_d0.C | 446 +-- .../CreateGeo/2015_minus10deg_LowerPart.gdml | 730 ++-- .../2015_minus10deg_LowerPart_ModAug2015.gdml | 726 ++-- .../CreateGeo/2015_minus10deg_UpperPart.gdml | 90 +- .../minus10deg_ext_mirror_LowerPart.gdml | 840 ++-- .../geotest/RotPMT/Import_GDML_Export_ROOT.c | 126 +- .../CreateGeo/2015_minus10degLower.txt | 728 ++-- .../TransPMT/CreateGeo/2015_minus10deg_.gdml | 818 ++-- .../CreateGeo/2015_minus10deg_LowerPart.gdml | 730 ++-- .../CreateGeo/2015_minus10deg_UpperPart.gdml | 92 +- .../TransPMT/CreateGeo/GDML_to_ROOT_Trans.C | 180 +- .../CreateGeo/Import_GDML_Export_ROOT.c | 142 +- .../geotest/geoopt/rich_opt_template.gdml | 3366 ++++++++--------- .../geometry/gdml/Import_GDML_Export_ROOT.c | 48 +- macro/sts/matbudget_ana.C | 420 +- macro/sts/matbudget_ana_phi.C | 428 +-- macro/tof/beamtime/feb15/parUnpack_basic.txt | 398 +- macro/tof/beamtime/feb15/parUnpack_rates.txt | 406 +- .../tof/beamtime/lab16/parUnpCernNov2015.txt | 434 +-- macro/tof/beamtime/lab16/parUnpack_basic.txt | 354 +- macro/tof/beamtime/lab16/parUnpack_rates.txt | 356 +- .../tof/beamtime/nov15/parUnpCernNov2015.txt | 434 +-- macro/tof/beamtime/nov15/parUnpack_basic.txt | 344 +- macro/tof/beamtime/nov15/parUnpack_rates.txt | 356 +- macro/tof/beamtime/thuqa/parUnpack_basic.txt | 318 +- macro/tof/geometry/TOF_10M.dat | 438 +-- macro/tools/skimming_reco.C | 194 +- macro/tracking/lx/run_reco.C | 802 ++-- macro/tracking/lx/run_stat.C | 428 +-- macro/trd/elid/q-p1.5.dat | 198 +- 44 files changed, 9169 insertions(+), 9169 deletions(-) diff --git a/analysis/PWGDIL/dielectron/pi0eta/CbmKresSelectGoodEvents.cxx b/analysis/PWGDIL/dielectron/pi0eta/CbmKresSelectGoodEvents.cxx index 8933340259..ec4aacf0ad 100644 --- a/analysis/PWGDIL/dielectron/pi0eta/CbmKresSelectGoodEvents.cxx +++ b/analysis/PWGDIL/dielectron/pi0eta/CbmKresSelectGoodEvents.cxx @@ -1,148 +1,148 @@ -/** - * file CbmKresSelectGoodEvents.cxx - * - * author Ievgenii Kres - * date 27.03.2018 - * modified 30.01.2020 - * - * Class for selection of Geant events only when special conditions are fulfilled. - * It was uded to select events, where eta -> gamma + gamma -> e+ e- e+ e- --> double conversion is happening. - * See thesis chapter 7.3 - * - **/ - -#include "CbmKresSelectGoodEvents.h" - -#include "CbmMCTrack.h" - -#include "FairLogger.h" -#include "FairRootManager.h" -#include "FairRunSim.h" - -#include <iostream> - -using namespace std; - -CbmKresSelectGoodEvents::CbmKresSelectGoodEvents() - : FairTask(), fMcTracks(nullptr), fApp(nullptr) {} - -CbmKresSelectGoodEvents::~CbmKresSelectGoodEvents() {} - -InitStatus CbmKresSelectGoodEvents::Init() { - - FairRunSim* sim = FairRunSim::Instance(); - if (sim) { fApp = FairMCApplication::Instance(); } - - FairRootManager* ioman = FairRootManager::Instance(); - if (nullptr == ioman) { - Fatal("CbmKresEta::Init", "RootManager not instantised!"); - } - - fMcTracks = (TClonesArray*) ioman->GetObject("MCTrack"); - if (nullptr == fMcTracks) { - Fatal("CbmKresSelectGoodEvents::Init", "No MCTrack array!"); - } - - return kSUCCESS; -} - - -void CbmKresSelectGoodEvents::Exec(Option_t*) { - Electrons.clear(); - Int_t nofMcTracks = fMcTracks->GetEntriesFast(); - for (int i = 0; i < nofMcTracks; i++) { - CbmMCTrack* mctrack = (CbmMCTrack*) fMcTracks->At(i); - if (mctrack == nullptr) continue; - if (mctrack->GetMotherId() == -1) continue; - CbmMCTrack* mcMotherTrack = - (CbmMCTrack*) fMcTracks->At(mctrack->GetMotherId()); - if (mcMotherTrack == nullptr) continue; - - if (TMath::Abs(mctrack->GetPdgCode()) == 11 - && mcMotherTrack->GetPdgCode() == 22) { - if (mcMotherTrack->GetMotherId() == -1) continue; - CbmMCTrack* mcGrTrack = - (CbmMCTrack*) fMcTracks->At(mcMotherTrack->GetMotherId()); - if (mcGrTrack == nullptr) continue; - if (mcGrTrack->GetPdgCode() == 221) { Electrons.push_back(mctrack); } - } - } - - int EtaConversion = 0; - if (Electrons.size() >= 4) { - for (size_t i = 0; i < Electrons.size(); i++) { - for (size_t j = i + 1; j < Electrons.size(); j++) { - for (size_t k = j + 1; k < Electrons.size(); k++) { - for (size_t l = k + 1; l < Electrons.size(); l++) { - - int pdg1 = Electrons.at(i)->GetPdgCode(); - int pdg2 = Electrons.at(j)->GetPdgCode(); - int pdg3 = Electrons.at(k)->GetPdgCode(); - int pdg4 = Electrons.at(l)->GetPdgCode(); - - if (pdg1 + pdg2 + pdg3 + pdg4 != 0) continue; - if (TMath::Abs(pdg1) != 11 || TMath::Abs(pdg2) != 11 - || TMath::Abs(pdg3) != 11 || TMath::Abs(pdg4) != 11) - continue; - - int motherId1 = Electrons.at(i)->GetMotherId(); - int motherId2 = Electrons.at(j)->GetMotherId(); - int motherId3 = Electrons.at(k)->GetMotherId(); - int motherId4 = Electrons.at(l)->GetMotherId(); - - if (motherId1 == -1 || motherId2 == -1 || motherId3 == -1 - || motherId4 == -1) - continue; - - CbmMCTrack* mother1 = (CbmMCTrack*) fMcTracks->At(motherId1); - CbmMCTrack* mother2 = (CbmMCTrack*) fMcTracks->At(motherId2); - CbmMCTrack* mother3 = (CbmMCTrack*) fMcTracks->At(motherId3); - CbmMCTrack* mother4 = (CbmMCTrack*) fMcTracks->At(motherId4); - - int mcMotherPdg1 = mother1->GetPdgCode(); - int mcMotherPdg2 = mother2->GetPdgCode(); - int mcMotherPdg3 = mother3->GetPdgCode(); - int mcMotherPdg4 = mother4->GetPdgCode(); - - if (mcMotherPdg1 != 22 || mcMotherPdg2 != 22 || mcMotherPdg3 != 22 - || mcMotherPdg4 != 22) - continue; - - int grandmotherId1 = mother1->GetMotherId(); - int grandmotherId2 = mother2->GetMotherId(); - int grandmotherId3 = mother3->GetMotherId(); - int grandmotherId4 = mother4->GetMotherId(); - - if (grandmotherId1 == -1) continue; - CbmMCTrack* GrTrack = (CbmMCTrack*) fMcTracks->At(grandmotherId1); - - if (grandmotherId1 == grandmotherId2 - && grandmotherId1 == grandmotherId3 - && grandmotherId1 == grandmotherId4 - && GrTrack->GetPdgCode() == 221) { - EtaConversion++; - cout << "Decay eta -> gamma gamma -> e+e- e+e- detected!\t\t mc " - "mass: " - << GrTrack->GetMass() << endl; - cout << "motherids: " << motherId1 << "/" << motherId2 << "/" - << motherId3 << "/" << motherId4 << endl; - cout << "grandmotherid: " << grandmotherId1 << "/" - << grandmotherId2 << "/" << grandmotherId3 << "/" - << grandmotherId4 << endl; - } - } - } - } - } - } - - cout << "CbmKresSelectGoodEvents, EtaConversion = " << EtaConversion << endl; - - // if (fApp && EtaConversion == 0) { - // LOG(WARNING) << "No double converted Eta"; - // fApp->SetSaveCurrentEvent(kFALSE); - // } -} - - -void CbmKresSelectGoodEvents::Finish() {} +/** + * file CbmKresSelectGoodEvents.cxx + * + * author Ievgenii Kres + * date 27.03.2018 + * modified 30.01.2020 + * + * Class for selection of Geant events only when special conditions are fulfilled. + * It was uded to select events, where eta -> gamma + gamma -> e+ e- e+ e- --> double conversion is happening. + * See thesis chapter 7.3 + * + **/ + +#include "CbmKresSelectGoodEvents.h" + +#include "CbmMCTrack.h" + +#include "FairLogger.h" +#include "FairRootManager.h" +#include "FairRunSim.h" + +#include <iostream> + +using namespace std; + +CbmKresSelectGoodEvents::CbmKresSelectGoodEvents() + : FairTask(), fMcTracks(nullptr), fApp(nullptr) {} + +CbmKresSelectGoodEvents::~CbmKresSelectGoodEvents() {} + +InitStatus CbmKresSelectGoodEvents::Init() { + + FairRunSim* sim = FairRunSim::Instance(); + if (sim) { fApp = FairMCApplication::Instance(); } + + FairRootManager* ioman = FairRootManager::Instance(); + if (nullptr == ioman) { + Fatal("CbmKresEta::Init", "RootManager not instantised!"); + } + + fMcTracks = (TClonesArray*) ioman->GetObject("MCTrack"); + if (nullptr == fMcTracks) { + Fatal("CbmKresSelectGoodEvents::Init", "No MCTrack array!"); + } + + return kSUCCESS; +} + + +void CbmKresSelectGoodEvents::Exec(Option_t*) { + Electrons.clear(); + Int_t nofMcTracks = fMcTracks->GetEntriesFast(); + for (int i = 0; i < nofMcTracks; i++) { + CbmMCTrack* mctrack = (CbmMCTrack*) fMcTracks->At(i); + if (mctrack == nullptr) continue; + if (mctrack->GetMotherId() == -1) continue; + CbmMCTrack* mcMotherTrack = + (CbmMCTrack*) fMcTracks->At(mctrack->GetMotherId()); + if (mcMotherTrack == nullptr) continue; + + if (TMath::Abs(mctrack->GetPdgCode()) == 11 + && mcMotherTrack->GetPdgCode() == 22) { + if (mcMotherTrack->GetMotherId() == -1) continue; + CbmMCTrack* mcGrTrack = + (CbmMCTrack*) fMcTracks->At(mcMotherTrack->GetMotherId()); + if (mcGrTrack == nullptr) continue; + if (mcGrTrack->GetPdgCode() == 221) { Electrons.push_back(mctrack); } + } + } + + int EtaConversion = 0; + if (Electrons.size() >= 4) { + for (size_t i = 0; i < Electrons.size(); i++) { + for (size_t j = i + 1; j < Electrons.size(); j++) { + for (size_t k = j + 1; k < Electrons.size(); k++) { + for (size_t l = k + 1; l < Electrons.size(); l++) { + + int pdg1 = Electrons.at(i)->GetPdgCode(); + int pdg2 = Electrons.at(j)->GetPdgCode(); + int pdg3 = Electrons.at(k)->GetPdgCode(); + int pdg4 = Electrons.at(l)->GetPdgCode(); + + if (pdg1 + pdg2 + pdg3 + pdg4 != 0) continue; + if (TMath::Abs(pdg1) != 11 || TMath::Abs(pdg2) != 11 + || TMath::Abs(pdg3) != 11 || TMath::Abs(pdg4) != 11) + continue; + + int motherId1 = Electrons.at(i)->GetMotherId(); + int motherId2 = Electrons.at(j)->GetMotherId(); + int motherId3 = Electrons.at(k)->GetMotherId(); + int motherId4 = Electrons.at(l)->GetMotherId(); + + if (motherId1 == -1 || motherId2 == -1 || motherId3 == -1 + || motherId4 == -1) + continue; + + CbmMCTrack* mother1 = (CbmMCTrack*) fMcTracks->At(motherId1); + CbmMCTrack* mother2 = (CbmMCTrack*) fMcTracks->At(motherId2); + CbmMCTrack* mother3 = (CbmMCTrack*) fMcTracks->At(motherId3); + CbmMCTrack* mother4 = (CbmMCTrack*) fMcTracks->At(motherId4); + + int mcMotherPdg1 = mother1->GetPdgCode(); + int mcMotherPdg2 = mother2->GetPdgCode(); + int mcMotherPdg3 = mother3->GetPdgCode(); + int mcMotherPdg4 = mother4->GetPdgCode(); + + if (mcMotherPdg1 != 22 || mcMotherPdg2 != 22 || mcMotherPdg3 != 22 + || mcMotherPdg4 != 22) + continue; + + int grandmotherId1 = mother1->GetMotherId(); + int grandmotherId2 = mother2->GetMotherId(); + int grandmotherId3 = mother3->GetMotherId(); + int grandmotherId4 = mother4->GetMotherId(); + + if (grandmotherId1 == -1) continue; + CbmMCTrack* GrTrack = (CbmMCTrack*) fMcTracks->At(grandmotherId1); + + if (grandmotherId1 == grandmotherId2 + && grandmotherId1 == grandmotherId3 + && grandmotherId1 == grandmotherId4 + && GrTrack->GetPdgCode() == 221) { + EtaConversion++; + cout << "Decay eta -> gamma gamma -> e+e- e+e- detected!\t\t mc " + "mass: " + << GrTrack->GetMass() << endl; + cout << "motherids: " << motherId1 << "/" << motherId2 << "/" + << motherId3 << "/" << motherId4 << endl; + cout << "grandmotherid: " << grandmotherId1 << "/" + << grandmotherId2 << "/" << grandmotherId3 << "/" + << grandmotherId4 << endl; + } + } + } + } + } + } + + cout << "CbmKresSelectGoodEvents, EtaConversion = " << EtaConversion << endl; + + // if (fApp && EtaConversion == 0) { + // LOG(WARNING) << "No double converted Eta"; + // fApp->SetSaveCurrentEvent(kFALSE); + // } +} + + +void CbmKresSelectGoodEvents::Finish() {} diff --git a/analysis/PWGDIL/dielectron/pi0eta/CbmKresSelectGoodEvents.h b/analysis/PWGDIL/dielectron/pi0eta/CbmKresSelectGoodEvents.h index 02925a2cf3..198c7c32b7 100644 --- a/analysis/PWGDIL/dielectron/pi0eta/CbmKresSelectGoodEvents.h +++ b/analysis/PWGDIL/dielectron/pi0eta/CbmKresSelectGoodEvents.h @@ -1,42 +1,42 @@ -#ifndef CBM_KRES_SELECT_GOOD_EVENTS -#define CBM_KRES_SELECT_GOOD_EVENTS - - -#include "FairTask.h" - -#include "CbmMCTrack.h" -#include <TClonesArray.h> -#include <vector> - -class FairMCApplication; - -class CbmKresSelectGoodEvents : public FairTask { - -public: - //***** brief Standard constructor. - CbmKresSelectGoodEvents(); - //***** brief Standard destructor. - virtual ~CbmKresSelectGoodEvents(); - - - virtual InitStatus Init(); - virtual void Finish(); - - virtual void Exec(Option_t*); - -private: - TClonesArray* fMcTracks; - FairMCApplication* fApp; - std::vector<CbmMCTrack*> Electrons; - - //***** brief Copy constructor. - CbmKresSelectGoodEvents(const CbmKresSelectGoodEvents&); - - //***** brief Assignment operator. - CbmKresSelectGoodEvents operator=(const CbmKresSelectGoodEvents&); - - - ClassDef(CbmKresSelectGoodEvents, 1) -}; - -#endif +#ifndef CBM_KRES_SELECT_GOOD_EVENTS +#define CBM_KRES_SELECT_GOOD_EVENTS + + +#include "FairTask.h" + +#include "CbmMCTrack.h" +#include <TClonesArray.h> +#include <vector> + +class FairMCApplication; + +class CbmKresSelectGoodEvents : public FairTask { + +public: + //***** brief Standard constructor. + CbmKresSelectGoodEvents(); + //***** brief Standard destructor. + virtual ~CbmKresSelectGoodEvents(); + + + virtual InitStatus Init(); + virtual void Finish(); + + virtual void Exec(Option_t*); + +private: + TClonesArray* fMcTracks; + FairMCApplication* fApp; + std::vector<CbmMCTrack*> Electrons; + + //***** brief Copy constructor. + CbmKresSelectGoodEvents(const CbmKresSelectGoodEvents&); + + //***** brief Assignment operator. + CbmKresSelectGoodEvents operator=(const CbmKresSelectGoodEvents&); + + + ClassDef(CbmKresSelectGoodEvents, 1) +}; + +#endif diff --git a/cmake/scripts/cleanmacrodir.cmake b/cmake/scripts/cleanmacrodir.cmake index b6b5a03b18..6d9fc36ba5 100644 --- a/cmake/scripts/cleanmacrodir.cmake +++ b/cmake/scripts/cleanmacrodir.cmake @@ -8,29 +8,29 @@ # This is of particular relevance e.g., for ROOT parameter files, which will # be updated instead of re-generated by successive test runs. -Message("Remove all files from directory ${CMAKE_CURRENT_BINARY_DIR}/data") -file(GLOB _deletefiles - LIST_DIRECTORIES false - ${CMAKE_CURRENT_BINARY_DIR}/data/* - ) -foreach(file IN LISTS _deletefiles) - file(REMOVE ${file}) -endforeach() - -Message("Remove all all*.par files from ${CMAKE_CURRENT_BINARY_DIR}") -file(GLOB _parfiles - LIST_DIRECTORIES false - ${CMAKE_CURRENT_BINARY_DIR}/all*.par - ) -foreach(file IN LISTS _parfiles) - file(REMOVE ${file}) -endforeach() +Message("Remove all files from directory ${CMAKE_CURRENT_BINARY_DIR}/data") +file(GLOB _deletefiles + LIST_DIRECTORIES false + ${CMAKE_CURRENT_BINARY_DIR}/data/* + ) +foreach(file IN LISTS _deletefiles) + file(REMOVE ${file}) +endforeach() -Message("Remove all core dump files from ${CMAKE_CURRENT_BINARY_DIR}") -file(GLOB _dumpfiles - LIST_DIRECTORIES false - ${CMAKE_CURRENT_BINARY_DIR}/core_dump_* - ) -foreach(file IN LISTS _dumpfiles) - file(REMOVE ${file}) -endforeach() +Message("Remove all all*.par files from ${CMAKE_CURRENT_BINARY_DIR}") +file(GLOB _parfiles + LIST_DIRECTORIES false + ${CMAKE_CURRENT_BINARY_DIR}/all*.par + ) +foreach(file IN LISTS _parfiles) + file(REMOVE ${file}) +endforeach() + +Message("Remove all core dump files from ${CMAKE_CURRENT_BINARY_DIR}") +file(GLOB _dumpfiles + LIST_DIRECTORIES false + ${CMAKE_CURRENT_BINARY_DIR}/core_dump_* + ) +foreach(file IN LISTS _dumpfiles) + file(REMOVE ${file}) +endforeach() diff --git a/macro/KF/kf_thermal_signal_generator.C b/macro/KF/kf_thermal_signal_generator.C index a918034efd..5605ad7df1 100644 --- a/macro/KF/kf_thermal_signal_generator.C +++ b/macro/KF/kf_thermal_signal_generator.C @@ -1,90 +1,90 @@ -//--------------------------------------------------------------------------------- -// @author M. Zyzak -// @version 1.0 -// @since 15.08.14 -// -// macro to generate signal events for KFParticleFinder -//_________________________________________________________________________________ - -void kf_thermal_signal_generator(Int_t iParticle = 0, - Int_t NEvents = 1000, - TString outputName = "./Signal.root") { - const double kProtonMass = 0.938272321; // Proton mass in GeV - - KFPartEfficiencies eff; - - const double kSignalMass = eff.partMass[iParticle]; // mass in GeV - int kSignalPDG = eff.partPDG[iParticle]; - - if (kSignalPDG == 7003112) kSignalPDG = 3112; - if (kSignalPDG == -7003112) kSignalPDG = -3112; - if (kSignalPDG == 7003222) kSignalPDG = 3222; - if (kSignalPDG == -7003222) kSignalPDG = -3222; - - double fSlope = 0.2; - double fRapSigma = 0.448; - double eBeam = 10.; - double pBeam = TMath::Sqrt(eBeam * eBeam - kProtonMass * kProtonMass); - double fYcm = 0.25 * TMath::Log((eBeam + pBeam) / (eBeam - pBeam)); - - TF1* fThermal = - new TF1("thermal", "x*exp(-1.*sqrt(x*x+[1]*[1]) / [0])", 0., 10.); - fThermal->SetParameter(0, fSlope); - fThermal->SetParameter(1, kSignalMass); - TRandom* fRandGen = new TRandom(0); - - URun* header = - new URun("Thermal signal", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NEvents); - UEvent* event = new UEvent; - TFile* output = new TFile(outputName.Data(), "recreate"); - TTree* tree = new TTree("events", "signal"); - header->Write(); - tree->Branch("event", "UEvent", event); - - int ParticlesPerEvent = 1; - for (int i = 0; i < NEvents; i++) { - event->Clear(); - event->SetParameters(i, 0, 0, 0, 0, 0); - - for (int j = 0; j < ParticlesPerEvent; ++j) { - double yD = fRandGen->Gaus(fYcm, fRapSigma); - double ptD = fThermal->GetRandom(); - double phiD = fRandGen->Uniform(0., 2. * TMath::Pi()); - - // Calculate momentum, energy, beta and gamma - double px = ptD * TMath::Cos(phiD); - double py = ptD * TMath::Sin(phiD); - double mt = TMath::Sqrt(kSignalMass * kSignalMass + ptD * ptD); - double pz = mt * TMath::SinH(yD); - double energy = - sqrt(kSignalMass * kSignalMass + px * px + py * py + pz * pz); - - Int_t child[2] = {0, 0}; - event->AddParticle(j, - kSignalPDG, - 0, - -1, - -1, - -1, - -1, - child, - px, - py, - pz, - energy, - 0, - 0, - 0, - 0, - 1); - } - - tree->Fill(); - } - - tree->Write(); - output->Close(); - - std::cout << " Test passed" << std::endl; - std::cout << " All ok " << std::endl; -} +//--------------------------------------------------------------------------------- +// @author M. Zyzak +// @version 1.0 +// @since 15.08.14 +// +// macro to generate signal events for KFParticleFinder +//_________________________________________________________________________________ + +void kf_thermal_signal_generator(Int_t iParticle = 0, + Int_t NEvents = 1000, + TString outputName = "./Signal.root") { + const double kProtonMass = 0.938272321; // Proton mass in GeV + + KFPartEfficiencies eff; + + const double kSignalMass = eff.partMass[iParticle]; // mass in GeV + int kSignalPDG = eff.partPDG[iParticle]; + + if (kSignalPDG == 7003112) kSignalPDG = 3112; + if (kSignalPDG == -7003112) kSignalPDG = -3112; + if (kSignalPDG == 7003222) kSignalPDG = 3222; + if (kSignalPDG == -7003222) kSignalPDG = -3222; + + double fSlope = 0.2; + double fRapSigma = 0.448; + double eBeam = 10.; + double pBeam = TMath::Sqrt(eBeam * eBeam - kProtonMass * kProtonMass); + double fYcm = 0.25 * TMath::Log((eBeam + pBeam) / (eBeam - pBeam)); + + TF1* fThermal = + new TF1("thermal", "x*exp(-1.*sqrt(x*x+[1]*[1]) / [0])", 0., 10.); + fThermal->SetParameter(0, fSlope); + fThermal->SetParameter(1, kSignalMass); + TRandom* fRandGen = new TRandom(0); + + URun* header = + new URun("Thermal signal", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NEvents); + UEvent* event = new UEvent; + TFile* output = new TFile(outputName.Data(), "recreate"); + TTree* tree = new TTree("events", "signal"); + header->Write(); + tree->Branch("event", "UEvent", event); + + int ParticlesPerEvent = 1; + for (int i = 0; i < NEvents; i++) { + event->Clear(); + event->SetParameters(i, 0, 0, 0, 0, 0); + + for (int j = 0; j < ParticlesPerEvent; ++j) { + double yD = fRandGen->Gaus(fYcm, fRapSigma); + double ptD = fThermal->GetRandom(); + double phiD = fRandGen->Uniform(0., 2. * TMath::Pi()); + + // Calculate momentum, energy, beta and gamma + double px = ptD * TMath::Cos(phiD); + double py = ptD * TMath::Sin(phiD); + double mt = TMath::Sqrt(kSignalMass * kSignalMass + ptD * ptD); + double pz = mt * TMath::SinH(yD); + double energy = + sqrt(kSignalMass * kSignalMass + px * px + py * py + pz * pz); + + Int_t child[2] = {0, 0}; + event->AddParticle(j, + kSignalPDG, + 0, + -1, + -1, + -1, + -1, + child, + px, + py, + pz, + energy, + 0, + 0, + 0, + 0, + 1); + } + + tree->Fill(); + } + + tree->Write(); + output->Close(); + + std::cout << " Test passed" << std::endl; + std::cout << " All ok " << std::endl; +} diff --git a/macro/analysis/much/Pluto_analysis.C b/macro/analysis/much/Pluto_analysis.C index 687214f009..c46bd1dbe1 100644 --- a/macro/analysis/much/Pluto_analysis.C +++ b/macro/analysis/much/Pluto_analysis.C @@ -1,248 +1,248 @@ -//--------------------------------------------------- -// -// PLUTO parameters of low-mass vector mesons and thermal muons @ 8 A GeV/c -// and J/psi muons @ 10 A GeV/c -/* - Particles: - 0 - rho - 1 - omega - 2 - omegaD - 3 - phi - 4 - eta - 5 - etaD - 6 - qgp - 7 - J/psi, but now only 10 A GeV/c -*/ -// -// TODO macro for all SIS100 energies -// -// Anna Senger a.senger@gsi.de -// -//--------------------------------------------------- -void Pluto_analysis(int part = 0, int energy = 8, int NofFiles = 5000) { - TDatabasePDG* dataBase = TDatabasePDG::Instance(); - Int_t iEvent; - Double_t nEvents; - - gStyle->SetCanvasColor(10); - gStyle->SetFrameFillColor(10); - gStyle->SetHistLineWidth(6); - gStyle->SetPadColor(10); - gStyle->SetStatColor(10); - gStyle->SetPalette(1); - - TClonesArray* fParticles = new TClonesArray("PParticle", 100); - - TString partName; - TString partpartName; - TString chanName; - TString cktName; - - chanName.Form("mpmm"); - cktName.Form("cktA"); - - TString sgn[] = { - "rho0", "omega", "omegaD", "phi", "eta", "etaD", "rapp.qgp", "jpsi"}; - TString sgnsgn[] = { - "rho0", "omega", "omega", "phi", "eta", "eta", "rapp.qgp", "jpsi"}; - - partName = sgn[part]; - partpartName = sgnsgn[part]; - if (part == 2) chanName.Form("pi0mpmm"); - if (part == 5) chanName.Form("gmpmm"); - if (part == 6) cktName.Form("cktRapp"); - if (part == 7) { - cktName.Form("charm"); - energy = 10; - } - - Double_t brOmega = 9e-5; - Double_t brOmegaD = 1.3e-4; - Double_t brEta = 5.8e-6; - Double_t brEtaD = 3.1e-4; - Double_t brRho = 4.55e-5; - Double_t brPhi = 2.87e-4; - Double_t brJPsi = 0.06; - - Double_t multOmega = 19.; - Double_t multOmegaD = 19.; - Double_t multEta = 16.; - Double_t multEtaD = 16.; - Double_t multRho = 9.; - Double_t multPhi = 0.12; - Double_t multQGP = 3.2e-3; - Double_t multJPsi = 1e-6; - - Double_t partMulti[] = {multRho * brRho, - multOmega * brOmega, - multOmegaD * brOmegaD, - multPhi * brPhi, - multEta * brEta, - multEtaD * brEtaD, - multQGP, - multJPsi * brJPsi}; - Double_t multi[] = { - multRho, multOmega, multOmegaD, multPhi, multEta, multEtaD, 1, multJPsi}; - - cout << "**********************" << endl; - cout << partName << " - " << partMulti[part] << endl; - cout << "**********************" << endl; - - - Int_t NofBins = 100; - Int_t NofBinsM = 400; - - Double_t minY = -2; - Double_t maxY = 6; - Double_t min = 0; - Double_t maxPt = 10; - Double_t maxP = 20; - Double_t maxM = 4; - - //---------------------------------- - //---------------------------------- - TString histoName; - histoName.Form("YPt_%s", partName.Data()); - - TH2D* YPt_part = new TH2D(histoName.Data(), - histoName.Data(), - NofBins, - minY, - maxY, - NofBins, - min, - maxPt); - (YPt_part->GetXaxis())->SetTitle("y"); - (YPt_part->GetYaxis())->SetTitle("p_{t} (GeV/c)"); - (YPt_part->GetZaxis())->SetTitle("counts/events"); - - //---------------------------------- - //---------------------------------- - histoName.Form("invM_%s", partName.Data()); - - TH1D* invM_part = - new TH1D(histoName.Data(), histoName.Data(), NofBinsM, min, maxM); - (invM_part->GetXaxis())->SetTitle("m_{inv}(GeV/c^{2}"); - (invM_part->GetYaxis())->SetTitle("counts/(events #times 10 MeV/c^{2})"); - invM_part->SetLineColor(kRed); - - //---------------------------------- - //---------------------------------- - histoName.Form("P_%s", partName.Data()); - - TH1D* P_part = - new TH1D(histoName.Data(), histoName.Data(), NofBins, min, maxP); - (P_part->GetXaxis())->SetTitle("p (GeV/c)"); - (P_part->GetYaxis())->SetTitle("counts/events"); - P_part->SetLineColor(kRed); - - //---------------------------------- - //---------------------------------- - histoName.Form("Pt_%s", partName.Data()); - - TH1D* Pt_part = - new TH1D(histoName.Data(), histoName.Data(), NofBins, min, maxPt); - (Pt_part->GetXaxis())->SetTitle("p_{t} (GeV/c)"); - (Pt_part->GetYaxis())->SetTitle("counts/events"); - Pt_part->SetLineColor(kRed); - - //---------------------------------- - //---------------------------------- - histoName.Form("Y_%s", partName.Data()); - - TH1D* Y_part = - new TH1D(histoName.Data(), histoName.Data(), NofBins, minY, maxY); - (Y_part->GetXaxis())->SetTitle("y"); - (Y_part->GetYaxis())->SetTitle("counts/events"); - Y_part->SetLineColor(kRed); - - //---------------------------------- - //---------------------------------- - histoName.Form("YPtM_%s", partName.Data()); - - TH3D* YPtM_part = new TH3D(histoName.Data(), - histoName.Data(), - NofBins, - minY, - maxY, - NofBins, - min, - maxPt, - NofBinsM, - min, - maxM); - - //---------------------------------- - - for (int i = 1; i < NofFiles + 1; i++) { - TString fileName; - - char str[4]; - sprintf(str, "%4d", i); - for (int it = 0; it < 4; it++) { - if (' ' == str[it]) str[it] = '0'; - } - fileName.Form("/lustre/cbm/prod/gen/pluto/auau/%s/%dgev/%s/%s/" - "pluto.auau.%dgev.%s.%s.%s.root", - cktName.Data(), - energy, - partpartName.Data(), - chanName.Data(), - energy, - partpartName.Data(), - chanName.Data(), - str); - TFile* InputFile = new TFile(fileName.Data()); - TTree* InputTree = (TTree*) InputFile->Get("data"); - InputTree->SetBranchAddress("Particles", &fParticles); - - if (i % 100 == 0) cout << "-----------> " << fileName << endl; - - for (iEvent = 0; iEvent < InputTree->GetEntries(); iEvent++) { - nEvents++; - - InputTree->GetEntry(iEvent); - - PParticle* Part1 = (PParticle*) fParticles->At(1); - PParticle* Part2 = (PParticle*) fParticles->At(2); - - if (part == 2 || part == 5) { - Part1 = (PParticle*) fParticles->At(2); - Part2 = (PParticle*) fParticles->At(3); - } - - TLorentzVector mom1 = Part1->Vect4(); - TLorentzVector mom2 = Part2->Vect4(); - - TLorentzVector Mom = mom1 + mom2; - YPt_part->Fill(Mom.Rapidity(), Mom.Pt()); - Y_part->Fill(Mom.Rapidity()); - Pt_part->Fill(Mom.Pt()); - P_part->Fill(Mom.P()); - invM_part->Fill(Mom.M(), 1. / 10); - YPtM_part->Fill(Mom.Rapidity(), Mom.Pt(), Mom.M()); - } - - InputFile->Close(); - } - - - invM_part->Scale(partMulti[part] / nEvents); - YPtM_part->Scale(multi[part] / nEvents); - - P_part->Scale(multi[part] / nEvents); - Pt_part->Scale(multi[part] / nEvents); - Y_part->Scale(multi[part] / nEvents); - YPt_part->Scale(multi[part] / nEvents); - - TString name; - name.Form("%dgev.pluto.%s.root", energy, partName.Data()); - TFile* FFF = new TFile(name.Data(), "recreate"); - invM_part->Write(); - P_part->Write(); - Pt_part->Write(); - Y_part->Write(); - YPt_part->Write(); - YPtM_part->Write(); - FFF->Close(); -} +//--------------------------------------------------- +// +// PLUTO parameters of low-mass vector mesons and thermal muons @ 8 A GeV/c +// and J/psi muons @ 10 A GeV/c +/* + Particles: + 0 - rho + 1 - omega + 2 - omegaD + 3 - phi + 4 - eta + 5 - etaD + 6 - qgp + 7 - J/psi, but now only 10 A GeV/c +*/ +// +// TODO macro for all SIS100 energies +// +// Anna Senger a.senger@gsi.de +// +//--------------------------------------------------- +void Pluto_analysis(int part = 0, int energy = 8, int NofFiles = 5000) { + TDatabasePDG* dataBase = TDatabasePDG::Instance(); + Int_t iEvent; + Double_t nEvents; + + gStyle->SetCanvasColor(10); + gStyle->SetFrameFillColor(10); + gStyle->SetHistLineWidth(6); + gStyle->SetPadColor(10); + gStyle->SetStatColor(10); + gStyle->SetPalette(1); + + TClonesArray* fParticles = new TClonesArray("PParticle", 100); + + TString partName; + TString partpartName; + TString chanName; + TString cktName; + + chanName.Form("mpmm"); + cktName.Form("cktA"); + + TString sgn[] = { + "rho0", "omega", "omegaD", "phi", "eta", "etaD", "rapp.qgp", "jpsi"}; + TString sgnsgn[] = { + "rho0", "omega", "omega", "phi", "eta", "eta", "rapp.qgp", "jpsi"}; + + partName = sgn[part]; + partpartName = sgnsgn[part]; + if (part == 2) chanName.Form("pi0mpmm"); + if (part == 5) chanName.Form("gmpmm"); + if (part == 6) cktName.Form("cktRapp"); + if (part == 7) { + cktName.Form("charm"); + energy = 10; + } + + Double_t brOmega = 9e-5; + Double_t brOmegaD = 1.3e-4; + Double_t brEta = 5.8e-6; + Double_t brEtaD = 3.1e-4; + Double_t brRho = 4.55e-5; + Double_t brPhi = 2.87e-4; + Double_t brJPsi = 0.06; + + Double_t multOmega = 19.; + Double_t multOmegaD = 19.; + Double_t multEta = 16.; + Double_t multEtaD = 16.; + Double_t multRho = 9.; + Double_t multPhi = 0.12; + Double_t multQGP = 3.2e-3; + Double_t multJPsi = 1e-6; + + Double_t partMulti[] = {multRho * brRho, + multOmega * brOmega, + multOmegaD * brOmegaD, + multPhi * brPhi, + multEta * brEta, + multEtaD * brEtaD, + multQGP, + multJPsi * brJPsi}; + Double_t multi[] = { + multRho, multOmega, multOmegaD, multPhi, multEta, multEtaD, 1, multJPsi}; + + cout << "**********************" << endl; + cout << partName << " - " << partMulti[part] << endl; + cout << "**********************" << endl; + + + Int_t NofBins = 100; + Int_t NofBinsM = 400; + + Double_t minY = -2; + Double_t maxY = 6; + Double_t min = 0; + Double_t maxPt = 10; + Double_t maxP = 20; + Double_t maxM = 4; + + //---------------------------------- + //---------------------------------- + TString histoName; + histoName.Form("YPt_%s", partName.Data()); + + TH2D* YPt_part = new TH2D(histoName.Data(), + histoName.Data(), + NofBins, + minY, + maxY, + NofBins, + min, + maxPt); + (YPt_part->GetXaxis())->SetTitle("y"); + (YPt_part->GetYaxis())->SetTitle("p_{t} (GeV/c)"); + (YPt_part->GetZaxis())->SetTitle("counts/events"); + + //---------------------------------- + //---------------------------------- + histoName.Form("invM_%s", partName.Data()); + + TH1D* invM_part = + new TH1D(histoName.Data(), histoName.Data(), NofBinsM, min, maxM); + (invM_part->GetXaxis())->SetTitle("m_{inv}(GeV/c^{2}"); + (invM_part->GetYaxis())->SetTitle("counts/(events #times 10 MeV/c^{2})"); + invM_part->SetLineColor(kRed); + + //---------------------------------- + //---------------------------------- + histoName.Form("P_%s", partName.Data()); + + TH1D* P_part = + new TH1D(histoName.Data(), histoName.Data(), NofBins, min, maxP); + (P_part->GetXaxis())->SetTitle("p (GeV/c)"); + (P_part->GetYaxis())->SetTitle("counts/events"); + P_part->SetLineColor(kRed); + + //---------------------------------- + //---------------------------------- + histoName.Form("Pt_%s", partName.Data()); + + TH1D* Pt_part = + new TH1D(histoName.Data(), histoName.Data(), NofBins, min, maxPt); + (Pt_part->GetXaxis())->SetTitle("p_{t} (GeV/c)"); + (Pt_part->GetYaxis())->SetTitle("counts/events"); + Pt_part->SetLineColor(kRed); + + //---------------------------------- + //---------------------------------- + histoName.Form("Y_%s", partName.Data()); + + TH1D* Y_part = + new TH1D(histoName.Data(), histoName.Data(), NofBins, minY, maxY); + (Y_part->GetXaxis())->SetTitle("y"); + (Y_part->GetYaxis())->SetTitle("counts/events"); + Y_part->SetLineColor(kRed); + + //---------------------------------- + //---------------------------------- + histoName.Form("YPtM_%s", partName.Data()); + + TH3D* YPtM_part = new TH3D(histoName.Data(), + histoName.Data(), + NofBins, + minY, + maxY, + NofBins, + min, + maxPt, + NofBinsM, + min, + maxM); + + //---------------------------------- + + for (int i = 1; i < NofFiles + 1; i++) { + TString fileName; + + char str[4]; + sprintf(str, "%4d", i); + for (int it = 0; it < 4; it++) { + if (' ' == str[it]) str[it] = '0'; + } + fileName.Form("/lustre/cbm/prod/gen/pluto/auau/%s/%dgev/%s/%s/" + "pluto.auau.%dgev.%s.%s.%s.root", + cktName.Data(), + energy, + partpartName.Data(), + chanName.Data(), + energy, + partpartName.Data(), + chanName.Data(), + str); + TFile* InputFile = new TFile(fileName.Data()); + TTree* InputTree = (TTree*) InputFile->Get("data"); + InputTree->SetBranchAddress("Particles", &fParticles); + + if (i % 100 == 0) cout << "-----------> " << fileName << endl; + + for (iEvent = 0; iEvent < InputTree->GetEntries(); iEvent++) { + nEvents++; + + InputTree->GetEntry(iEvent); + + PParticle* Part1 = (PParticle*) fParticles->At(1); + PParticle* Part2 = (PParticle*) fParticles->At(2); + + if (part == 2 || part == 5) { + Part1 = (PParticle*) fParticles->At(2); + Part2 = (PParticle*) fParticles->At(3); + } + + TLorentzVector mom1 = Part1->Vect4(); + TLorentzVector mom2 = Part2->Vect4(); + + TLorentzVector Mom = mom1 + mom2; + YPt_part->Fill(Mom.Rapidity(), Mom.Pt()); + Y_part->Fill(Mom.Rapidity()); + Pt_part->Fill(Mom.Pt()); + P_part->Fill(Mom.P()); + invM_part->Fill(Mom.M(), 1. / 10); + YPtM_part->Fill(Mom.Rapidity(), Mom.Pt(), Mom.M()); + } + + InputFile->Close(); + } + + + invM_part->Scale(partMulti[part] / nEvents); + YPtM_part->Scale(multi[part] / nEvents); + + P_part->Scale(multi[part] / nEvents); + Pt_part->Scale(multi[part] / nEvents); + Y_part->Scale(multi[part] / nEvents); + YPt_part->Scale(multi[part] / nEvents); + + TString name; + name.Form("%dgev.pluto.%s.root", energy, partName.Data()); + TFile* FFF = new TFile(name.Data(), "recreate"); + invM_part->Write(); + P_part->Write(); + Pt_part->Write(); + Y_part->Write(); + YPt_part->Write(); + YPtM_part->Write(); + FFF->Close(); +} diff --git a/macro/beamtime/mcbm2019/mcbm_reco.C b/macro/beamtime/mcbm2019/mcbm_reco.C index 4d8c102f3e..bc13441071 100644 --- a/macro/beamtime/mcbm2019/mcbm_reco.C +++ b/macro/beamtime/mcbm2019/mcbm_reco.C @@ -1,155 +1,155 @@ - -// -------------------------------------------------------------------------- -// -// Macro for reconstruction of mcbm data (2019) -// Only STS local reconstruction (cluster + hit finder) for the time being -// -// -// -// -------------------------------------------------------------------------- - - -void mcbm_reco(Int_t nTimeslices = 10) { - - - // --- Logger settings ---------------------------------------------------- - TString logLevel = "INFO"; - TString logVerbosity = "LOW"; - // ------------------------------------------------------------------------ - - - // ----- Environment -------------------------------------------------- - TString myName = "mcbm_reco"; // this macro's name for screen output - TString srcDir = gSystem->Getenv("VMCWORKDIR"); // top source directory - // TString srcDir1 = gSystem->Getenv("SLURM_INDEX"); // ------------------------------------------------------------------------ - - - // ----- In- and output file names ------------------------------------ - TString inFile = "data/unp_mcbm_4.root"; - TString parFile = "data/unp_mcbm_params_4.root"; - TString outFile = "data/reco_mcbm_4.root"; - // outFile = Form("%s_%i.root",outFile.Data(),(int)(srcDir1.Atoi()*100)); - TString geoFile = "data/test.geo.root"; // to be created by a simulation run - // ------------------------------------------------------------------------ - - - // ----- Timer -------------------------------------------------------- - TStopwatch timer; - timer.Start(); - // ------------------------------------------------------------------------ - - - // ---- Debug option ------------------------------------------------- - gDebug = 0; - // ------------------------------------------------------------------------ - - - // ----- FairRunAna --------------------------------------------------- - FairRunAna* run = new FairRunAna(); - CbmStsFindHits* hit = new CbmStsFindHits(); - - FairFileSource* inputSource = new FairFileSource(inFile); - run->SetSource(inputSource); - - run->SetOutputFile(outFile); - run->SetGenerateRunInfo(kTRUE); - run->SetGeomFile(geoFile); - - TString monitorFile {outFile}; - monitorFile.ReplaceAll("rec", "rec.monitor"); - FairMonitor::GetMonitor()->EnableMonitor(kTRUE, monitorFile); - // ----------------------------------------------------------------------- - - - // ----- Logger settings ---------------------------------------------- - FairLogger::GetLogger()->SetLogScreenLevel(logLevel.Data()); - FairLogger::GetLogger()->SetLogVerbosityLevel(logVerbosity.Data()); - // ------------------------------------------------------------------------ - - - // ----- Reconstruction tasks ----------------------------------------- - - - // ----- Local reconstruction in STS ---------------------------------- - CbmStsReco* stsReco = new CbmStsReco(); - // --- The parameter file for the STS Setup sensors needs to be explicitely set as - // --- 1) By default the CbmStsSetup creates only Stereo sensors with a 58 um pitch - // --- 2) The only place where this can be set is in the init of the CbmStsReco - - // ----- Geometry Tags -------------------------------------------------- - TString hodoGeoTag = "hodo_v19a_mcbm"; // 2019 LAB test - TString sHodoGeoPar = hodoGeoTag + ".par"; - // ------------------------------------------------------------------------ - stsReco->SetSensorsParFile(sHodoGeoPar); - - run->AddTask(stsReco); - std::cout << "-I- : Added task " << stsReco->GetName() << std::endl; - // ------------------------------------------------------------------------ - - - // ----- Parameter database -------------------------------------------- - std::cout << std::endl << std::endl; - std::cout << "-I- " << myName << ": Set runtime DB" << std::endl; - FairRuntimeDb* rtdb = run->GetRuntimeDb(); - FairParRootFileIo* parIo1 = new FairParRootFileIo(); - FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); - parIo1->open(parFile.Data(), "UPDATE"); - rtdb->setFirstInput(parIo1); - // ------------------------------------------------------------------------ - - - // ----- Run initialisation ------------------------------------------- - std::cout << std::endl; - std::cout << "-I- " << myName << ": Initialise run" << std::endl; - run->Init(); - rtdb->setOutput(parIo1); - rtdb->saveOutput(); - rtdb->print(); - // ------------------------------------------------------------------------ - - - // ----- Start run ---------------------------------------------------- - std::cout << std::endl << std::endl; - std::cout << "-I- " << myName << ": Starting run" << std::endl; - run->Run(0, nTimeslices); - //run->Run(0,nEvents); - // ------------------------------------------------------------------------ - - - // ----- Finish ------------------------------------------------------- - timer.Stop(); - FairMonitor::GetMonitor()->Print(); - Double_t rtime = timer.RealTime(); - Double_t ctime = timer.CpuTime(); - std::cout << std::endl << std::endl; - std::cout << "Macro finished successfully." << std::endl; - std::cout << "Output file is " << outFile << std::endl; - std::cout << "Parameter file is " << parFile << std::endl; - std::cout << "Real time " << rtime << " s, CPU time " << ctime << " s" - << std::endl; - std::cout << std::endl; - std::cout << " Test passed" << std::endl; - std::cout << " All ok " << std::endl; - // ------------------------------------------------------------------------ - - - // ----- Resource monitoring ------------------------------------------ - // Extract the maximal used memory an add is as Dart measurement - // This line is filtered by CTest and the value send to CDash - FairSystemInfo sysInfo; - Float_t maxMemory = sysInfo.GetMaxMemory(); - std::cout << "<DartMeasurement name=\"MaxMemory\" type=\"numeric/double\">"; - std::cout << maxMemory; - std::cout << "</DartMeasurement>" << std::endl; - - Float_t cpuUsage = ctime / rtime; - std::cout << "<DartMeasurement name=\"CpuLoad\" type=\"numeric/double\">"; - std::cout << cpuUsage; - std::cout << "</DartMeasurement>" << std::endl; - // ------------------------------------------------------------------------ - - - // ----- Function needed for CTest runtime dependency ----------------- - // RemoveGeoManager(); - // ------------------------------------------------------------------------ -} + +// -------------------------------------------------------------------------- +// +// Macro for reconstruction of mcbm data (2019) +// Only STS local reconstruction (cluster + hit finder) for the time being +// +// +// +// -------------------------------------------------------------------------- + + +void mcbm_reco(Int_t nTimeslices = 10) { + + + // --- Logger settings ---------------------------------------------------- + TString logLevel = "INFO"; + TString logVerbosity = "LOW"; + // ------------------------------------------------------------------------ + + + // ----- Environment -------------------------------------------------- + TString myName = "mcbm_reco"; // this macro's name for screen output + TString srcDir = gSystem->Getenv("VMCWORKDIR"); // top source directory + // TString srcDir1 = gSystem->Getenv("SLURM_INDEX"); // ------------------------------------------------------------------------ + + + // ----- In- and output file names ------------------------------------ + TString inFile = "data/unp_mcbm_4.root"; + TString parFile = "data/unp_mcbm_params_4.root"; + TString outFile = "data/reco_mcbm_4.root"; + // outFile = Form("%s_%i.root",outFile.Data(),(int)(srcDir1.Atoi()*100)); + TString geoFile = "data/test.geo.root"; // to be created by a simulation run + // ------------------------------------------------------------------------ + + + // ----- Timer -------------------------------------------------------- + TStopwatch timer; + timer.Start(); + // ------------------------------------------------------------------------ + + + // ---- Debug option ------------------------------------------------- + gDebug = 0; + // ------------------------------------------------------------------------ + + + // ----- FairRunAna --------------------------------------------------- + FairRunAna* run = new FairRunAna(); + CbmStsFindHits* hit = new CbmStsFindHits(); + + FairFileSource* inputSource = new FairFileSource(inFile); + run->SetSource(inputSource); + + run->SetOutputFile(outFile); + run->SetGenerateRunInfo(kTRUE); + run->SetGeomFile(geoFile); + + TString monitorFile {outFile}; + monitorFile.ReplaceAll("rec", "rec.monitor"); + FairMonitor::GetMonitor()->EnableMonitor(kTRUE, monitorFile); + // ----------------------------------------------------------------------- + + + // ----- Logger settings ---------------------------------------------- + FairLogger::GetLogger()->SetLogScreenLevel(logLevel.Data()); + FairLogger::GetLogger()->SetLogVerbosityLevel(logVerbosity.Data()); + // ------------------------------------------------------------------------ + + + // ----- Reconstruction tasks ----------------------------------------- + + + // ----- Local reconstruction in STS ---------------------------------- + CbmStsReco* stsReco = new CbmStsReco(); + // --- The parameter file for the STS Setup sensors needs to be explicitely set as + // --- 1) By default the CbmStsSetup creates only Stereo sensors with a 58 um pitch + // --- 2) The only place where this can be set is in the init of the CbmStsReco + + // ----- Geometry Tags -------------------------------------------------- + TString hodoGeoTag = "hodo_v19a_mcbm"; // 2019 LAB test + TString sHodoGeoPar = hodoGeoTag + ".par"; + // ------------------------------------------------------------------------ + stsReco->SetSensorsParFile(sHodoGeoPar); + + run->AddTask(stsReco); + std::cout << "-I- : Added task " << stsReco->GetName() << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Parameter database -------------------------------------------- + std::cout << std::endl << std::endl; + std::cout << "-I- " << myName << ": Set runtime DB" << std::endl; + FairRuntimeDb* rtdb = run->GetRuntimeDb(); + FairParRootFileIo* parIo1 = new FairParRootFileIo(); + FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); + parIo1->open(parFile.Data(), "UPDATE"); + rtdb->setFirstInput(parIo1); + // ------------------------------------------------------------------------ + + + // ----- Run initialisation ------------------------------------------- + std::cout << std::endl; + std::cout << "-I- " << myName << ": Initialise run" << std::endl; + run->Init(); + rtdb->setOutput(parIo1); + rtdb->saveOutput(); + rtdb->print(); + // ------------------------------------------------------------------------ + + + // ----- Start run ---------------------------------------------------- + std::cout << std::endl << std::endl; + std::cout << "-I- " << myName << ": Starting run" << std::endl; + run->Run(0, nTimeslices); + //run->Run(0,nEvents); + // ------------------------------------------------------------------------ + + + // ----- Finish ------------------------------------------------------- + timer.Stop(); + FairMonitor::GetMonitor()->Print(); + Double_t rtime = timer.RealTime(); + Double_t ctime = timer.CpuTime(); + std::cout << std::endl << std::endl; + std::cout << "Macro finished successfully." << std::endl; + std::cout << "Output file is " << outFile << std::endl; + std::cout << "Parameter file is " << parFile << std::endl; + std::cout << "Real time " << rtime << " s, CPU time " << ctime << " s" + << std::endl; + std::cout << std::endl; + std::cout << " Test passed" << std::endl; + std::cout << " All ok " << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Resource monitoring ------------------------------------------ + // Extract the maximal used memory an add is as Dart measurement + // This line is filtered by CTest and the value send to CDash + FairSystemInfo sysInfo; + Float_t maxMemory = sysInfo.GetMaxMemory(); + std::cout << "<DartMeasurement name=\"MaxMemory\" type=\"numeric/double\">"; + std::cout << maxMemory; + std::cout << "</DartMeasurement>" << std::endl; + + Float_t cpuUsage = ctime / rtime; + std::cout << "<DartMeasurement name=\"CpuLoad\" type=\"numeric/double\">"; + std::cout << cpuUsage; + std::cout << "</DartMeasurement>" << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Function needed for CTest runtime dependency ----------------- + // RemoveGeoManager(); + // ------------------------------------------------------------------------ +} diff --git a/macro/fles/get4/parUnpack_get4.txt b/macro/fles/get4/parUnpack_get4.txt index 186778cb7b..75b789aec2 100644 --- a/macro/fles/get4/parUnpack_get4.txt +++ b/macro/fles/get4/parUnpack_get4.txt @@ -1,188 +1,188 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 2 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 0 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 0 -//MbsVmeMapping: Int_t \ -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 88 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 1, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 2, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 3, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 4, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 5, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 6, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 7, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 8, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 9, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 10, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 11, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 12, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 13, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 14, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 15, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 16, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 17, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 18, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 19, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 20, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 21, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 22, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 23, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 24, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 25, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 26, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 27, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 28, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 29, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 30, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 31, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 32, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 33, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 34, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 35, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 36, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 37, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 38, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 39, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 40, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 41, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 42, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 43, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 44, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 45, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 46, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 47, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 48, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 49, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 50, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 51, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 52, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 53, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 54, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 55, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 56, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 57, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 58, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 59, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 60, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 61, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 62, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 63, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 64, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 65, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 66, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 67, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 68, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 69, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 70, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 71, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 72, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 73, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 74, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 75, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 76, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 77, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 78, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 79, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 80, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 81, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 82, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 83, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 84, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 85, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 86, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ - 87, 0x1, 0x0000, 0x0, 0x0, 0x0, 4 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x1, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x1, 0x0, \ - 7, 0x1, 0x0, \ - 8, 0x0, 0x0, \ - 9, 0x1, 0x0, \ - 10, 0x2, 0x0, \ - 11, 0x3, 0x0, \ - 12, 0x4, 0x0, \ - 13, 0x5, 0x0, \ - 14, 0x6, 0x0, \ - 15, 0x7, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 1 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 2 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 0 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 0 +//MbsVmeMapping: Int_t \ +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 88 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 1, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 2, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 3, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 4, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 5, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 6, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 7, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 8, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 9, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 10, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 11, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 12, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 13, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 14, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 15, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 16, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 17, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 18, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 19, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 20, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 21, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 22, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 23, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 24, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 25, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 26, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 27, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 28, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 29, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 30, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 31, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 32, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 33, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 34, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 35, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 36, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 37, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 38, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 39, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 40, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 41, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 42, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 43, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 44, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 45, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 46, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 47, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 48, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 49, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 50, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 51, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 52, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 53, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 54, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 55, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 56, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 57, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 58, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 59, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 60, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 61, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 62, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 63, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 64, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 65, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 66, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 67, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 68, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 69, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 70, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 71, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 72, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 73, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 74, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 75, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 76, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 77, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 78, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 79, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 80, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 81, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 82, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 83, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 84, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 85, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 86, 0x1, 0x0000, 0x0, 0x0, 0x0, 4, \ + 87, 0x1, 0x0000, 0x0, 0x0, 0x0, 4 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x1, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x1, 0x0, \ + 7, 0x1, 0x0, \ + 8, 0x0, 0x0, \ + 9, 0x1, 0x0, \ + 10, 0x2, 0x0, \ + 11, 0x3, 0x0, \ + 12, 0x4, 0x0, \ + 13, 0x5, 0x0, \ + 14, 0x6, 0x0, \ + 15, 0x7, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 1 +########################### diff --git a/macro/generators/run_CbmIonGenerator.C b/macro/generators/run_CbmIonGenerator.C index 3ff68a3fb3..1d126589f7 100644 --- a/macro/generators/run_CbmIonGenerator.C +++ b/macro/generators/run_CbmIonGenerator.C @@ -1,241 +1,241 @@ -void run_CbmIonGenerator(Int_t nEvents = 1) { - // ======================================================================== - // Adjust this part according to your requirements - - // Input file - //TString inPath = "/d/cbm03/urqmd/auau/25gev/centr/"; - //TString inFile = inPath + "urqmd.auau.25gev.centr.0000.ftn14"; - - // Output file - TString outFile = Form("sts.mc.root", nEvents); - - // Parameter file - TString parFile = Form("params.root", nEvents); - - // Cave geometry - TString caveGeom = "cave.geo"; - - // Target geometry - TString targetGeom = "target_au_250mu.geo"; - - // Beam pipe geometry - TString pipeGeom = "pipe_standard.geo"; - - // Magnet geometry and field map - TString magnetGeom = "passive/magnet_v09e.geo"; - TString fieldMap = "field_v10e"; - Double_t fieldZ = 50.; // z position of field centre - Double_t fieldScale = 1.; // field scaling factor - - // MVD geometry - TString mvdGeom = "mvd/mvd_v07a.geo"; - - // STS geometry - TString stsGeom = "sts/sts_v11a.geo"; - - //STS geometry for the same z position of all sensors - //TString stsGeom = "sts_same_z.geo"; - - targetGeom = ""; - magnetGeom = ""; - stsGeom = ""; - mvdGeom = ""; - - // In general, the following parts need not be touched - // ======================================================================== - - - // ---- Debug option ------------------------------------------------- - gDebug = 0; - // ------------------------------------------------------------------------ - - - // ----- Timer -------------------------------------------------------- - TStopwatch timer; - timer.Start(); - // ------------------------------------------------------------------------ - - - // ---- Load libraries ------------------------------------------------- - gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C"); - basiclibs(); - gSystem->Load("libGeoBase"); - gSystem->Load("libParBase"); - gSystem->Load("libBase"); - gSystem->Load("libCbmBase"); - gSystem->Load("libCbmData"); - gSystem->Load("libField"); - gSystem->Load("libGen"); - gSystem->Load("libPassive"); - gSystem->Load("libMvd"); - gSystem->Load("libSts"); - gSystem->Load("libCbmGenerators"); // for CbmIonGenerator - // ------------------------------------------------------------------------ - - - // ----- Create simulation run ---------------------------------------- - FairRunSim* run = new FairRunSim(); - run->SetName("TGeant3"); // Transport engine - run->SetOutputFile(outFile); // Output file - FairRuntimeDb* rtdb = run->GetRuntimeDb(); - // ------------------------------------------------------------------------ - - - // ----- Create media ------------------------------------------------- - run->SetMaterials("media.geo"); // Materials - // ------------------------------------------------------------------------ - - - // ----- Create geometry ---------------------------------------------- - FairModule* cave = new CbmCave("CAVE"); - cave->SetGeometryFileName(caveGeom); - run->AddModule(cave); - - FairModule* pipe = new CbmPipe("PIPE"); - pipe->SetGeometryFileName(pipeGeom); - run->AddModule(pipe); - - if (targetGeom != "") { - FairModule* target = new CbmTarget("Target"); - target->SetGeometryFileName(targetGeom); - run->AddModule(target); - } - if (magnetGeom != "") { - FairModule* magnet = new CbmMagnet("MAGNET"); - magnet->SetGeometryFileName(magnetGeom); - run->AddModule(magnet); - } - if (mvdGeom != "") { - FairDetector* mvd = new CbmMvd("MVD", kTRUE); - mvd->SetGeometryFileName(mvdGeom); - run->AddModule(mvd); - } - if (stsGeom != "") { - FairDetector* sts = new CbmSts("STS", kTRUE); - sts->SetGeometryFileName(stsGeom); - run->AddModule(sts); - } - // ------------------------------------------------------------------------ - - - // ----- Create magnetic field ---------------------------------------- - if (magnetGeom != "") { - CbmFieldMap* magField = new CbmFieldMapSym2(fieldMap); - magField->SetPosition(0., 0., fieldZ); - magField->SetScale(fieldScale); - run->SetField(magField); - } - // ------------------------------------------------------------------------ - - - // ----- Create PrimaryGenerator -------------------------------------- - FairPrimaryGenerator* primGen = new FairPrimaryGenerator(); - //FairUrqmdGenerator* urqmdGen = new FairUrqmdGenerator(inFile); - //primGen->AddGenerator(urqmdGen); - - // CbmIonGenerator - check in Load libraries: gSystem->Load("libCbmGenerators"); - Int_t nions = 10; // number of ions/event - cout << "@@@@@> CbmIonGenerator is ON with " << nions << " ion(s)/event !!!" - << endl; - Int_t z = 79, a = 197, q = 79; // Au-ion - Double_t p = 8.; // in AGeV/c - Double_t vz = -0.0126; // in cm - z-pos. of vertex - Double_t meanX = 0.3; // in cm - spatial distr. (XOY) - Double_t meanY = -0.2; // in cm - Double_t sigmaX = 0.078; // in cm - spatial distr. (XOY) - Double_t sigmaY = 0.032; // in cm - Double_t sigmatX = 0.00117885; // in rad (Px/P) - angular distr. (mean=0) - Double_t sigmatY = 0.00094955; // in rad (Py/P) - // Parameters of the trapezoid are set with respect to mean of Gaussian, NOT necesseraly in absolute coordinates. - // x1 < x2 < 0 < x3 < x4 - Double_t x1 = -0.10452, x2 = -0.06942, x3 = 0.06942, - x4 = 0.10452; // in cm - trapezoid distr. - Double_t y1 = -0.04448, y2 = -0.02688, y3 = 0.02688, y4 = 0.04448; // in cm - Double_t tX1 = -0.00157966, tX2 = -0.001049177, tX3 = 0.001049177, - tX4 = 0.00157966; // in rad - Double_t tY1 = -0.00131987, tY2 = -0.000797622, tY3 = 0.000797622, - tY4 = 0.00131987; // in rad - - // CbmIonGenerator *IonGen = new CbmIonGenerator(z, a, q, nions, p, sigmaX, sigmaY, sigmatX, sigmatY); - - // CbmIonGenerator *IonGen = new CbmIonGenerator(z, a, q, nions, p, sigmaX, sigmaY, sigmatX, sigmatY, meanX, meanY, vz); - - CbmIonGenerator* IonGen = new CbmIonGenerator(z, - a, - q, - nions, - p, - sigmaX, - sigmaY, - sigmatX, - sigmatY, - meanX, - meanY, - vz, - x1, - x2, - x3, - x4, - y1, - y2, - y3, - y4, - tX1, - tX2, - tX3, - tX4, - tY1, - tY2, - tY3, - tY4); - - primGen->AddGenerator(IonGen); - - run->SetGenerator(primGen); - // ------------------------------------------------------------------------ - - // run->SetStoreTraj(kTRUE); - - // ----- Initialize simulation run ------------------------------------ - run->Init(); - // ------------------------------------------------------------------------ - - - // ----- Runtime database --------------------------------------------- - if (magnetGeom != "") { - CbmFieldPar* fieldPar = (CbmFieldPar*) rtdb->getContainer("CbmFieldPar"); - fieldPar->SetParameters(magField); - fieldPar->setChanged(); - fieldPar->setInputVersion(run->GetRunId(), 1); - } - Bool_t kParameterMerged = kTRUE; - FairParRootFileIo* parOut = new FairParRootFileIo(kParameterMerged); - parOut->open(parFile.Data()); - rtdb->setOutput(parOut); - rtdb->saveOutput(); - rtdb->print(); - // ------------------------------------------------------------------------ - - - // ----- Start run ---------------------------------------------------- - run->Run(nEvents); - // ------------------------------------------------------------------------ - //run->CreateGeometryFile("data/geofile_full.root"); - - - // ----- Finish ------------------------------------------------------- - timer.Stop(); - Double_t rtime = timer.RealTime(); - Double_t ctime = timer.CpuTime(); - cout << endl << endl; - cout << "Macro finished succesfully." << endl; - cout << "Output file is " << outFile << endl; - cout << "Parameter file is " << parFile << endl; - cout << "Real time " << rtime << " s, CPU time " << ctime << "s" << endl - << endl; - // ------------------------------------------------------------------------ - cout << " Test passed" << endl; - cout << " All ok " << endl; - - exit(0); -} +void run_CbmIonGenerator(Int_t nEvents = 1) { + // ======================================================================== + // Adjust this part according to your requirements + + // Input file + //TString inPath = "/d/cbm03/urqmd/auau/25gev/centr/"; + //TString inFile = inPath + "urqmd.auau.25gev.centr.0000.ftn14"; + + // Output file + TString outFile = Form("sts.mc.root", nEvents); + + // Parameter file + TString parFile = Form("params.root", nEvents); + + // Cave geometry + TString caveGeom = "cave.geo"; + + // Target geometry + TString targetGeom = "target_au_250mu.geo"; + + // Beam pipe geometry + TString pipeGeom = "pipe_standard.geo"; + + // Magnet geometry and field map + TString magnetGeom = "passive/magnet_v09e.geo"; + TString fieldMap = "field_v10e"; + Double_t fieldZ = 50.; // z position of field centre + Double_t fieldScale = 1.; // field scaling factor + + // MVD geometry + TString mvdGeom = "mvd/mvd_v07a.geo"; + + // STS geometry + TString stsGeom = "sts/sts_v11a.geo"; + + //STS geometry for the same z position of all sensors + //TString stsGeom = "sts_same_z.geo"; + + targetGeom = ""; + magnetGeom = ""; + stsGeom = ""; + mvdGeom = ""; + + // In general, the following parts need not be touched + // ======================================================================== + + + // ---- Debug option ------------------------------------------------- + gDebug = 0; + // ------------------------------------------------------------------------ + + + // ----- Timer -------------------------------------------------------- + TStopwatch timer; + timer.Start(); + // ------------------------------------------------------------------------ + + + // ---- Load libraries ------------------------------------------------- + gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C"); + basiclibs(); + gSystem->Load("libGeoBase"); + gSystem->Load("libParBase"); + gSystem->Load("libBase"); + gSystem->Load("libCbmBase"); + gSystem->Load("libCbmData"); + gSystem->Load("libField"); + gSystem->Load("libGen"); + gSystem->Load("libPassive"); + gSystem->Load("libMvd"); + gSystem->Load("libSts"); + gSystem->Load("libCbmGenerators"); // for CbmIonGenerator + // ------------------------------------------------------------------------ + + + // ----- Create simulation run ---------------------------------------- + FairRunSim* run = new FairRunSim(); + run->SetName("TGeant3"); // Transport engine + run->SetOutputFile(outFile); // Output file + FairRuntimeDb* rtdb = run->GetRuntimeDb(); + // ------------------------------------------------------------------------ + + + // ----- Create media ------------------------------------------------- + run->SetMaterials("media.geo"); // Materials + // ------------------------------------------------------------------------ + + + // ----- Create geometry ---------------------------------------------- + FairModule* cave = new CbmCave("CAVE"); + cave->SetGeometryFileName(caveGeom); + run->AddModule(cave); + + FairModule* pipe = new CbmPipe("PIPE"); + pipe->SetGeometryFileName(pipeGeom); + run->AddModule(pipe); + + if (targetGeom != "") { + FairModule* target = new CbmTarget("Target"); + target->SetGeometryFileName(targetGeom); + run->AddModule(target); + } + if (magnetGeom != "") { + FairModule* magnet = new CbmMagnet("MAGNET"); + magnet->SetGeometryFileName(magnetGeom); + run->AddModule(magnet); + } + if (mvdGeom != "") { + FairDetector* mvd = new CbmMvd("MVD", kTRUE); + mvd->SetGeometryFileName(mvdGeom); + run->AddModule(mvd); + } + if (stsGeom != "") { + FairDetector* sts = new CbmSts("STS", kTRUE); + sts->SetGeometryFileName(stsGeom); + run->AddModule(sts); + } + // ------------------------------------------------------------------------ + + + // ----- Create magnetic field ---------------------------------------- + if (magnetGeom != "") { + CbmFieldMap* magField = new CbmFieldMapSym2(fieldMap); + magField->SetPosition(0., 0., fieldZ); + magField->SetScale(fieldScale); + run->SetField(magField); + } + // ------------------------------------------------------------------------ + + + // ----- Create PrimaryGenerator -------------------------------------- + FairPrimaryGenerator* primGen = new FairPrimaryGenerator(); + //FairUrqmdGenerator* urqmdGen = new FairUrqmdGenerator(inFile); + //primGen->AddGenerator(urqmdGen); + + // CbmIonGenerator - check in Load libraries: gSystem->Load("libCbmGenerators"); + Int_t nions = 10; // number of ions/event + cout << "@@@@@> CbmIonGenerator is ON with " << nions << " ion(s)/event !!!" + << endl; + Int_t z = 79, a = 197, q = 79; // Au-ion + Double_t p = 8.; // in AGeV/c + Double_t vz = -0.0126; // in cm - z-pos. of vertex + Double_t meanX = 0.3; // in cm - spatial distr. (XOY) + Double_t meanY = -0.2; // in cm + Double_t sigmaX = 0.078; // in cm - spatial distr. (XOY) + Double_t sigmaY = 0.032; // in cm + Double_t sigmatX = 0.00117885; // in rad (Px/P) - angular distr. (mean=0) + Double_t sigmatY = 0.00094955; // in rad (Py/P) + // Parameters of the trapezoid are set with respect to mean of Gaussian, NOT necesseraly in absolute coordinates. + // x1 < x2 < 0 < x3 < x4 + Double_t x1 = -0.10452, x2 = -0.06942, x3 = 0.06942, + x4 = 0.10452; // in cm - trapezoid distr. + Double_t y1 = -0.04448, y2 = -0.02688, y3 = 0.02688, y4 = 0.04448; // in cm + Double_t tX1 = -0.00157966, tX2 = -0.001049177, tX3 = 0.001049177, + tX4 = 0.00157966; // in rad + Double_t tY1 = -0.00131987, tY2 = -0.000797622, tY3 = 0.000797622, + tY4 = 0.00131987; // in rad + + // CbmIonGenerator *IonGen = new CbmIonGenerator(z, a, q, nions, p, sigmaX, sigmaY, sigmatX, sigmatY); + + // CbmIonGenerator *IonGen = new CbmIonGenerator(z, a, q, nions, p, sigmaX, sigmaY, sigmatX, sigmatY, meanX, meanY, vz); + + CbmIonGenerator* IonGen = new CbmIonGenerator(z, + a, + q, + nions, + p, + sigmaX, + sigmaY, + sigmatX, + sigmatY, + meanX, + meanY, + vz, + x1, + x2, + x3, + x4, + y1, + y2, + y3, + y4, + tX1, + tX2, + tX3, + tX4, + tY1, + tY2, + tY3, + tY4); + + primGen->AddGenerator(IonGen); + + run->SetGenerator(primGen); + // ------------------------------------------------------------------------ + + // run->SetStoreTraj(kTRUE); + + // ----- Initialize simulation run ------------------------------------ + run->Init(); + // ------------------------------------------------------------------------ + + + // ----- Runtime database --------------------------------------------- + if (magnetGeom != "") { + CbmFieldPar* fieldPar = (CbmFieldPar*) rtdb->getContainer("CbmFieldPar"); + fieldPar->SetParameters(magField); + fieldPar->setChanged(); + fieldPar->setInputVersion(run->GetRunId(), 1); + } + Bool_t kParameterMerged = kTRUE; + FairParRootFileIo* parOut = new FairParRootFileIo(kParameterMerged); + parOut->open(parFile.Data()); + rtdb->setOutput(parOut); + rtdb->saveOutput(); + rtdb->print(); + // ------------------------------------------------------------------------ + + + // ----- Start run ---------------------------------------------------- + run->Run(nEvents); + // ------------------------------------------------------------------------ + //run->CreateGeometryFile("data/geofile_full.root"); + + + // ----- Finish ------------------------------------------------------- + timer.Stop(); + Double_t rtime = timer.RealTime(); + Double_t ctime = timer.CpuTime(); + cout << endl << endl; + cout << "Macro finished succesfully." << endl; + cout << "Output file is " << outFile << endl; + cout << "Parameter file is " << parFile << endl; + cout << "Real time " << rtime << " s, CPU time " << ctime << "s" << endl + << endl; + // ------------------------------------------------------------------------ + cout << " Test passed" << endl; + cout << " All ok " << endl; + + exit(0); +} diff --git a/macro/littrack/cbmrootlibs.C b/macro/littrack/cbmrootlibs.C index 88be64c619..6150288c90 100644 --- a/macro/littrack/cbmrootlibs.C +++ b/macro/littrack/cbmrootlibs.C @@ -1,47 +1,47 @@ -/** - * \file cbmrootlibs.C - * \brief Macro loads CBMROOT libraries. - * \author Andrey Lebedev <andrey.lebedev@gsi.de> - * \date 2008 - */ - -void cbmrootlibs() { - // gSystem->Load("libboost_filesystem"); - gSystem->Load("libboost_regex"); - - gSystem->Load("libGeoBase"); - gSystem->Load("libParBase"); - gSystem->Load("libBase"); - gSystem->Load("libCbmBase"); - gSystem->Load("libCbmData"); - gSystem->Load("libCbmGenerators"); - gSystem->Load("libField"); - gSystem->Load("libGen"); - gSystem->Load("libPassive"); - gSystem->Load("libTrkBase"); - gSystem->Load("libGeane"); - - gSystem->Load("libKF"); - - gSystem->Load("libSts"); - gSystem->Load("libTrd"); - gSystem->Load("libEcal"); - - gSystem->Load("libL1"); - gSystem->Load("libMvd"); - - gSystem->Load("libLittrackparallel"); - gSystem->Load("libLittrack"); - - gSystem->Load("libRich"); - gSystem->Load("libMuch"); - - gSystem->Load("libTof"); - - gSystem->Load("libGlobal"); - // gSystem->Load("libcudalittrack"); - - gSystem->Load("libMinuit2"); // Needed for field fitter - - gSystem->Load("libClustering"); -} +/** + * \file cbmrootlibs.C + * \brief Macro loads CBMROOT libraries. + * \author Andrey Lebedev <andrey.lebedev@gsi.de> + * \date 2008 + */ + +void cbmrootlibs() { + // gSystem->Load("libboost_filesystem"); + gSystem->Load("libboost_regex"); + + gSystem->Load("libGeoBase"); + gSystem->Load("libParBase"); + gSystem->Load("libBase"); + gSystem->Load("libCbmBase"); + gSystem->Load("libCbmData"); + gSystem->Load("libCbmGenerators"); + gSystem->Load("libField"); + gSystem->Load("libGen"); + gSystem->Load("libPassive"); + gSystem->Load("libTrkBase"); + gSystem->Load("libGeane"); + + gSystem->Load("libKF"); + + gSystem->Load("libSts"); + gSystem->Load("libTrd"); + gSystem->Load("libEcal"); + + gSystem->Load("libL1"); + gSystem->Load("libMvd"); + + gSystem->Load("libLittrackparallel"); + gSystem->Load("libLittrack"); + + gSystem->Load("libRich"); + gSystem->Load("libMuch"); + + gSystem->Load("libTof"); + + gSystem->Load("libGlobal"); + // gSystem->Load("libcudalittrack"); + + gSystem->Load("libMinuit2"); // Needed for field fitter + + gSystem->Load("libClustering"); +} diff --git a/macro/littrack/radlength_ana.C b/macro/littrack/radlength_ana.C index ad393040a3..7886c05d52 100644 --- a/macro/littrack/radlength_ana.C +++ b/macro/littrack/radlength_ana.C @@ -1,75 +1,75 @@ -/** - * \file radlength_ana.C - * \brief Macro runs radiathin length QA task. - * \author Andrey Lebedev <andrey.lebedev@gsi.de> - * \date 2013 - */ -void radlength_ana( - const string& mcFile = - "/Users/slebedev/Development/cbm/data/sim/rich/radlen/mc.ac.root", - const string& parFile = - "/Users/slebedev/Development/cbm/data/sim/rich/radlen/param.ac.root", - const string& radqaFile = - "/Users/slebedev/Development/cbm/data/sim/rich/radlen/radqa.ac.root", - const string& resultDir = "results_radlen_ac/", - const string& geoSetup = "sis100_electron_rich_pal_bcarb", - Int_t nEvents = 12100000) { - - FairLogger::GetLogger()->SetLogScreenLevel("INFO"); - FairLogger::GetLogger()->SetLogVerbosityLevel("LOW"); - TTree::SetMaxTreeSize(90000000000); - - TString srcDir = gSystem->Getenv("VMCWORKDIR"); // top source directory - - remove(radqaFile.c_str()); - - TString setupFile = srcDir + "/geometry/setup/setup_" + geoSetup + ".C"; - TString setupFunct = "setup_" + geoSetup + "()"; - gROOT->LoadMacro(setupFile); - gROOT->ProcessLine(setupFunct); - - TList* parFileList = new TList(); - - TStopwatch timer; - timer.Start(); - gDebug = 0; - - FairRunAna* run = new FairRunAna(); - FairFileSource* inputSource = new FairFileSource(mcFile.c_str()); - run->SetSource(inputSource); - run->SetOutputFile(radqaFile.c_str()); - run->SetGenerateRunInfo(kTRUE); - - - CbmLitRadLengthQa* radLengthQa = new CbmLitRadLengthQa(); - radLengthQa->SetOutputDir(resultDir); - run->AddTask(radLengthQa); - - FairRuntimeDb* rtdb = run->GetRuntimeDb(); - FairParRootFileIo* parIo1 = new FairParRootFileIo(); - FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); - parIo1->open(parFile.c_str(), "UPDATE"); - rtdb->setFirstInput(parIo1); - if (!parFileList->IsEmpty()) { - parIo2->open(parFileList, "in"); - rtdb->setSecondInput(parIo2); - } - - run->Init(); - - rtdb->setOutput(parIo1); - rtdb->saveOutput(); - rtdb->print(); - - run->Run(0, nEvents); - - timer.Stop(); - std::cout << std::endl << std::endl; - std::cout << "Macro finished succesfully." << std::endl; - std::cout << "Output file is " << mcFile << std::endl; - std::cout << "Parameter file is " << parFile << std::endl; - std::cout << "Radqa file is " << radqaFile << std::endl; - std::cout << "Real time " << timer.RealTime() << " s, CPU time " - << timer.CpuTime() << " s" << std::endl; - std::cout << "Test passed" << std::endl << "All ok" << std::endl; -} +/** + * \file radlength_ana.C + * \brief Macro runs radiathin length QA task. + * \author Andrey Lebedev <andrey.lebedev@gsi.de> + * \date 2013 + */ +void radlength_ana( + const string& mcFile = + "/Users/slebedev/Development/cbm/data/sim/rich/radlen/mc.ac.root", + const string& parFile = + "/Users/slebedev/Development/cbm/data/sim/rich/radlen/param.ac.root", + const string& radqaFile = + "/Users/slebedev/Development/cbm/data/sim/rich/radlen/radqa.ac.root", + const string& resultDir = "results_radlen_ac/", + const string& geoSetup = "sis100_electron_rich_pal_bcarb", + Int_t nEvents = 12100000) { + + FairLogger::GetLogger()->SetLogScreenLevel("INFO"); + FairLogger::GetLogger()->SetLogVerbosityLevel("LOW"); + TTree::SetMaxTreeSize(90000000000); + + TString srcDir = gSystem->Getenv("VMCWORKDIR"); // top source directory + + remove(radqaFile.c_str()); + + TString setupFile = srcDir + "/geometry/setup/setup_" + geoSetup + ".C"; + TString setupFunct = "setup_" + geoSetup + "()"; + gROOT->LoadMacro(setupFile); + gROOT->ProcessLine(setupFunct); + + TList* parFileList = new TList(); + + TStopwatch timer; + timer.Start(); + gDebug = 0; + + FairRunAna* run = new FairRunAna(); + FairFileSource* inputSource = new FairFileSource(mcFile.c_str()); + run->SetSource(inputSource); + run->SetOutputFile(radqaFile.c_str()); + run->SetGenerateRunInfo(kTRUE); + + + CbmLitRadLengthQa* radLengthQa = new CbmLitRadLengthQa(); + radLengthQa->SetOutputDir(resultDir); + run->AddTask(radLengthQa); + + FairRuntimeDb* rtdb = run->GetRuntimeDb(); + FairParRootFileIo* parIo1 = new FairParRootFileIo(); + FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); + parIo1->open(parFile.c_str(), "UPDATE"); + rtdb->setFirstInput(parIo1); + if (!parFileList->IsEmpty()) { + parIo2->open(parFileList, "in"); + rtdb->setSecondInput(parIo2); + } + + run->Init(); + + rtdb->setOutput(parIo1); + rtdb->saveOutput(); + rtdb->print(); + + run->Run(0, nEvents); + + timer.Stop(); + std::cout << std::endl << std::endl; + std::cout << "Macro finished succesfully." << std::endl; + std::cout << "Output file is " << mcFile << std::endl; + std::cout << "Parameter file is " << parFile << std::endl; + std::cout << "Radqa file is " << radqaFile << std::endl; + std::cout << "Real time " << timer.RealTime() << " s, CPU time " + << timer.CpuTime() << " s" << std::endl; + std::cout << "Test passed" << std::endl << "All ok" << std::endl; +} diff --git a/macro/littrack/radlength_sim.C b/macro/littrack/radlength_sim.C index acbdaa10f1..ce5a6cd01e 100644 --- a/macro/littrack/radlength_sim.C +++ b/macro/littrack/radlength_sim.C @@ -1,92 +1,92 @@ -#include <algorithm> -#include <iostream> -using std::cout; -using std::endl; - -void radlength_sim( - const string& mcFile = - "/Users/slebedev/Development/cbm/data/sim/rich/radlen/mc.ac.root", - const string& parFile = - "/Users/slebedev/Development/cbm/data/sim/rich/radlen/param.ac.root", - const string& geoSetup = "sis100_electron_rich_pal_bcarb", - Int_t nofEvents = 0) { - - TTree::SetMaxTreeSize(90000000000); - - remove(parFile.c_str()); - remove(mcFile.c_str()); - - TStopwatch timer; - timer.Start(); - - // const Double_t minX = -550; // cm - // const Double_t maxX = 550; // cm - // const Double_t stepX = 10.; // cm - // const Int_t nofBinsX = (maxX - minX) / stepX; - // const Double_t minY = -550; // cm - // const Double_t maxY = 550; // cm - // const Double_t stepY = 10.; // cm - - const Double_t minX = -250; // cm - const Double_t maxX = 250; // cm - const Double_t stepX = 1.; // cm - const Int_t nofBinsX = (maxX - minX) / stepX; - const Double_t minY = -250; // cm - const Double_t maxY = 250; // cm - const Double_t stepY = 1.; // cm - const Int_t nofBinsY = (maxY - minY) / stepY; - nofEvents = nofBinsX * nofBinsY; - - std::vector<Double_t> vectorX, vectorY; - for (Int_t iX = 0; iX < nofBinsX; iX++) { - Double_t x = minX + iX * stepX; - for (Int_t iY = 0; iY < nofBinsY; iY++) { - Double_t y = minY + iY * stepY; - vectorX.push_back(x); - vectorY.push_back(y); - } - } - - CbmTransport run; - CbmLitRadLengthGenerator* generator = new CbmLitRadLengthGenerator(); - generator->SetXY(vectorX, vectorY); - run.AddInput(generator); - - /* - const int RMax = 700; // Maximum radius of the station - FairBoxGenerator* box = new FairBoxGenerator(0, 1); - box->SetBoxXYZ(-RMax, -RMax, RMax, RMax, 0.); - box->SetPRange(0.1, 10); - box->SetThetaRange(0., 0.); - box->SetPhiRange(0., 0.); - primGen->AddGenerator(box); - */ - - /* - FairBoxGenerator* box = new FairBoxGenerator(0, 1); - box->SetPRange(0.1, 10); - box->SetXYZ(0., 0., 0.); - box->SetPhiRange(0., 360.); - box->SetThetaRange(0., 50.); - primGen->AddGenerator(box); -*/ - - run.SetOutFileName(mcFile.c_str()); - run.SetParFileName(parFile.c_str()); - run.LoadSetup(geoSetup.c_str()); - run.SetTarget("Gold", 0.025, 2.5); - run.SetBeamPosition(0., 0., 0., 0.); - //run.SetEngine(kGeant4); - //run.StoreTrajectories(true); - run.RegisterRadLength(true); - run.Run(nofEvents); - - timer.Stop(); - std::cout << std::endl << std::endl; - std::cout << "Macro finished successfully." << std::endl; - std::cout << "MC file is " << mcFile << std::endl; - std::cout << "Parameter file is " << parFile << std::endl; - std::cout << "Real time " << timer.RealTime() << " s, CPU time " - << timer.CpuTime() << "s" << std::endl; - std::cout << std::endl << "Test passed" << std::endl << "All ok" << std::endl; -} +#include <algorithm> +#include <iostream> +using std::cout; +using std::endl; + +void radlength_sim( + const string& mcFile = + "/Users/slebedev/Development/cbm/data/sim/rich/radlen/mc.ac.root", + const string& parFile = + "/Users/slebedev/Development/cbm/data/sim/rich/radlen/param.ac.root", + const string& geoSetup = "sis100_electron_rich_pal_bcarb", + Int_t nofEvents = 0) { + + TTree::SetMaxTreeSize(90000000000); + + remove(parFile.c_str()); + remove(mcFile.c_str()); + + TStopwatch timer; + timer.Start(); + + // const Double_t minX = -550; // cm + // const Double_t maxX = 550; // cm + // const Double_t stepX = 10.; // cm + // const Int_t nofBinsX = (maxX - minX) / stepX; + // const Double_t minY = -550; // cm + // const Double_t maxY = 550; // cm + // const Double_t stepY = 10.; // cm + + const Double_t minX = -250; // cm + const Double_t maxX = 250; // cm + const Double_t stepX = 1.; // cm + const Int_t nofBinsX = (maxX - minX) / stepX; + const Double_t minY = -250; // cm + const Double_t maxY = 250; // cm + const Double_t stepY = 1.; // cm + const Int_t nofBinsY = (maxY - minY) / stepY; + nofEvents = nofBinsX * nofBinsY; + + std::vector<Double_t> vectorX, vectorY; + for (Int_t iX = 0; iX < nofBinsX; iX++) { + Double_t x = minX + iX * stepX; + for (Int_t iY = 0; iY < nofBinsY; iY++) { + Double_t y = minY + iY * stepY; + vectorX.push_back(x); + vectorY.push_back(y); + } + } + + CbmTransport run; + CbmLitRadLengthGenerator* generator = new CbmLitRadLengthGenerator(); + generator->SetXY(vectorX, vectorY); + run.AddInput(generator); + + /* + const int RMax = 700; // Maximum radius of the station + FairBoxGenerator* box = new FairBoxGenerator(0, 1); + box->SetBoxXYZ(-RMax, -RMax, RMax, RMax, 0.); + box->SetPRange(0.1, 10); + box->SetThetaRange(0., 0.); + box->SetPhiRange(0., 0.); + primGen->AddGenerator(box); + */ + + /* + FairBoxGenerator* box = new FairBoxGenerator(0, 1); + box->SetPRange(0.1, 10); + box->SetXYZ(0., 0., 0.); + box->SetPhiRange(0., 360.); + box->SetThetaRange(0., 50.); + primGen->AddGenerator(box); +*/ + + run.SetOutFileName(mcFile.c_str()); + run.SetParFileName(parFile.c_str()); + run.LoadSetup(geoSetup.c_str()); + run.SetTarget("Gold", 0.025, 2.5); + run.SetBeamPosition(0., 0., 0., 0.); + //run.SetEngine(kGeant4); + //run.StoreTrajectories(true); + run.RegisterRadLength(true); + run.Run(nofEvents); + + timer.Stop(); + std::cout << std::endl << std::endl; + std::cout << "Macro finished successfully." << std::endl; + std::cout << "MC file is " << mcFile << std::endl; + std::cout << "Parameter file is " << parFile << std::endl; + std::cout << "Real time " << timer.RealTime() << " s, CPU time " + << timer.CpuTime() << "s" << std::endl; + std::cout << std::endl << "Test passed" << std::endl << "All ok" << std::endl; +} diff --git a/macro/littrack/scripts/much/much_ana.C b/macro/littrack/scripts/much/much_ana.C index 2d9a3a6662..5982c2966b 100644 --- a/macro/littrack/scripts/much/much_ana.C +++ b/macro/littrack/scripts/much/much_ana.C @@ -1,57 +1,57 @@ - -void much_ana(Int_t nEvents = 1000) { - TTree::SetMaxTreeSize(90000000000); - TString script = TString(gSystem->Getenv("LIT_SCRIPT")); - TString parDir = - TString(gSystem->Getenv("VMCWORKDIR")) + TString("/parameters"); - - // Input and output data - TString dir = "events/much_anna_omega_8gev_10k/"; // Output directory - TString mcFile = dir + "mc.0000.root"; // MC transport file - TString parFile = dir + "param.0000.root"; // Parameters file - TString globalRecoFile = - dir + "global.reco.0000.root"; // File with reconstructed tracks and hits - TString analysisFile = dir + "analysis.0000.root"; // Output analysis file - - TString muchDigiFile = - parDir + "/much/much_v12c.digi.root"; // MUCH digi file - - if (script == "yes") { - mcFile = TString(gSystem->Getenv("LIT_MC_FILE")); - parFile = TString(gSystem->Getenv("LIT_PAR_FILE")); - globalRecoFile = TString(gSystem->Getenv("LIT_GLOBAL_RECO_FILE")); - analysisFile = TString(gSystem->Getenv("LIT_ANALYSIS_FILE")); - muchDigiFile = TString(gSystem->Getenv("LIT_MUCH_DIGI")); - } - - gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C"); - basiclibs(); - gROOT->LoadMacro("$VMCWORKDIR/macro/much/muchlibs.C"); - muchlibs(); - - FairRunAna* fRun = new FairRunAna(); - fRun->SetInputFile(mcFile); - fRun->AddFriend(globalRecoFile); - fRun->SetOutputFile(analysisFile); - - TString muchDigiFile = gSystem->Getenv("VMCWORKDIR"); - FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); - FairParRootFileIo* parIo1 = new FairParRootFileIo(); - parIo1->open(parFile); - rtdb->setFirstInput(parIo1); - rtdb->setOutput(parIo1); - rtdb->saveOutput(); - // ------------------------------------------------------------------------ - - CbmKF* kf = new CbmKF(); - CbmAnaDimuonAnalysis* ana = - new CbmAnaDimuonAnalysis("DimuonAnalysis", muchDigiFile, 1); - ana->SetVerbose(0); - ana->SetStsPointsAccQuota(4); - ana->SetStsTrueHitQuota(0.7); - - fRun->AddTask(kf); - fRun->AddTask(ana); - fRun->Init(); - fRun->Run(0, nEvents); -} + +void much_ana(Int_t nEvents = 1000) { + TTree::SetMaxTreeSize(90000000000); + TString script = TString(gSystem->Getenv("LIT_SCRIPT")); + TString parDir = + TString(gSystem->Getenv("VMCWORKDIR")) + TString("/parameters"); + + // Input and output data + TString dir = "events/much_anna_omega_8gev_10k/"; // Output directory + TString mcFile = dir + "mc.0000.root"; // MC transport file + TString parFile = dir + "param.0000.root"; // Parameters file + TString globalRecoFile = + dir + "global.reco.0000.root"; // File with reconstructed tracks and hits + TString analysisFile = dir + "analysis.0000.root"; // Output analysis file + + TString muchDigiFile = + parDir + "/much/much_v12c.digi.root"; // MUCH digi file + + if (script == "yes") { + mcFile = TString(gSystem->Getenv("LIT_MC_FILE")); + parFile = TString(gSystem->Getenv("LIT_PAR_FILE")); + globalRecoFile = TString(gSystem->Getenv("LIT_GLOBAL_RECO_FILE")); + analysisFile = TString(gSystem->Getenv("LIT_ANALYSIS_FILE")); + muchDigiFile = TString(gSystem->Getenv("LIT_MUCH_DIGI")); + } + + gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C"); + basiclibs(); + gROOT->LoadMacro("$VMCWORKDIR/macro/much/muchlibs.C"); + muchlibs(); + + FairRunAna* fRun = new FairRunAna(); + fRun->SetInputFile(mcFile); + fRun->AddFriend(globalRecoFile); + fRun->SetOutputFile(analysisFile); + + TString muchDigiFile = gSystem->Getenv("VMCWORKDIR"); + FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); + FairParRootFileIo* parIo1 = new FairParRootFileIo(); + parIo1->open(parFile); + rtdb->setFirstInput(parIo1); + rtdb->setOutput(parIo1); + rtdb->saveOutput(); + // ------------------------------------------------------------------------ + + CbmKF* kf = new CbmKF(); + CbmAnaDimuonAnalysis* ana = + new CbmAnaDimuonAnalysis("DimuonAnalysis", muchDigiFile, 1); + ana->SetVerbose(0); + ana->SetStsPointsAccQuota(4); + ana->SetStsTrueHitQuota(0.7); + + fRun->AddTask(kf); + fRun->AddTask(ana); + fRun->Init(); + fRun->Run(0, nEvents); +} diff --git a/macro/passive/readme_pipe_v14k-p.txt b/macro/passive/readme_pipe_v14k-p.txt index 98df5d8ce2..f32350951e 100644 --- a/macro/passive/readme_pipe_v14k-p.txt +++ b/macro/passive/readme_pipe_v14k-p.txt @@ -1,22 +1,22 @@ - -Renaming of pipe_v14: - 14e->14k - SIS-100 - 14f->14l - SIS-100 rich - 14g->14m - SIS-300 - 14h->14n - SIS-300 rich - 14i->14o - SIS-300 - 14j->14p - SIS-300 rich - -pipe_v14k = pipe_v14e + fixed sizes of vacuum chamber for mvd_v14a - - -Short description of beam pipe geometries for SIS-100 (up to 600 cm): - 1) pipe_v14e.root - wide fixed beam pipe with 2.5deg half opening angle made of Al with thickness follows the formula: h=D(z)mm/60; - 2) pipe_v14f.root - the same as 1) excluding RICH section (1.7-3.7m); - -Short description of beam pipe geometries for SIS-300 (up to 880 cm): - 3) pipe_v14g.root - narrow fixed beam pipe with 1.6deg (0.22-3.7m) and 2.5deg (3.7-6.0m) half opening angles made of Al with thickness follows the formula: h=D(z)mm/60; - 4) pipe_v14h.root - the same as 3) excluding RICH section (1.7-3.7m); - - 5) pipe_v14i.root - the same as 3) except first window@220mm and STS section (0.22-1.7m) that were made of Be with constant thickness h=0.5mm; - 6) pipe_v14j.root - the same as 5) excluding RICH section (1.7-3.7m); + +Renaming of pipe_v14: + 14e->14k - SIS-100 + 14f->14l - SIS-100 rich + 14g->14m - SIS-300 + 14h->14n - SIS-300 rich + 14i->14o - SIS-300 + 14j->14p - SIS-300 rich + +pipe_v14k = pipe_v14e + fixed sizes of vacuum chamber for mvd_v14a + + +Short description of beam pipe geometries for SIS-100 (up to 600 cm): + 1) pipe_v14e.root - wide fixed beam pipe with 2.5deg half opening angle made of Al with thickness follows the formula: h=D(z)mm/60; + 2) pipe_v14f.root - the same as 1) excluding RICH section (1.7-3.7m); + +Short description of beam pipe geometries for SIS-300 (up to 880 cm): + 3) pipe_v14g.root - narrow fixed beam pipe with 1.6deg (0.22-3.7m) and 2.5deg (3.7-6.0m) half opening angles made of Al with thickness follows the formula: h=D(z)mm/60; + 4) pipe_v14h.root - the same as 3) excluding RICH section (1.7-3.7m); + + 5) pipe_v14i.root - the same as 3) except first window@220mm and STS section (0.22-1.7m) that were made of Be with constant thickness h=0.5mm; + 6) pipe_v14j.root - the same as 5) excluding RICH section (1.7-3.7m); diff --git a/macro/rich/Import_GDML_Export_ROOT.c b/macro/rich/Import_GDML_Export_ROOT.c index af7f7025d3..9a7c55cedc 100644 --- a/macro/rich/Import_GDML_Export_ROOT.c +++ b/macro/rich/Import_GDML_Export_ROOT.c @@ -1,54 +1,54 @@ - -void Import_GDML_Export_ROOT() { - // we need to use latest root version to work with gdml geometry - // system(string("source /usr/local/Cellar/root/6.20.04_1/bin/thisroot.sh").c_str()); - - // For v17a geometries one need to use root5, one can use installation on lustre - //"source /cvmfs/fairroot.gsi.de/fairsoft/may16_root5/bin/thisroot.sh" - - TString richGeoFilename = "rich_v17a_1e_pcarb_bcarb.gdml"; - - TGeoManager* gdml = new TGeoManager("gdml", "FAIRGeom"); - - cout << "Importing '" << richGeoFilename << "'." << endl; - - TGDMLParse parser; - // Define your input GDML file HERE - TGeoVolume* gdmlTop = parser.GDMLReadFile(richGeoFilename); - TGeoVolume* rootTop = new TGeoVolumeAssembly("TOP"); - - gGeoManager->SetTopVolume(rootTop); - - // Starting from the version v18a position is defined inside the GDML file - // Define your position HERE - // Z coordinate for v16a = 270, for v17a = 258.75, for v18a = 0. - TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); - TGeoCombiTrans* posrot = new TGeoCombiTrans( - 0., 0., 258.75, rot); // v16a - 270, v17a - 258.75, v18a - 0 - - rootTop->AddNode(gdmlTop, 1, posrot); - - gGeoManager->CloseGeometry(); - gGeoManager->CheckOverlaps(); - gGeoManager->PrintOverlaps(); - // Just print the name of the rich volume - // One may compare it to the file name - //TGeoNode* richNode = gGeoManager->GetTopVolume()->GetNodes()->At(0); - //cout << richNode->GetVolume()->GetName() << endl; - - // Extract name to form output file name - TString richGeoOutFilename; - if (richGeoFilename.EndsWith(".gdml")) { - richGeoOutFilename = - richGeoFilename(0, richGeoFilename.Length() - 5) + ".geo.root"; - } else { - richGeoOutFilename = richGeoFilename + ".geo.root"; - } - - cout << "Exporting '" << richGeoOutFilename << "'." << endl; - - // Define you output ROOT file HERE - TFile* outfile = new TFile(richGeoOutFilename, "RECREATE"); - rootTop->Write(); - outfile->Close(); -} + +void Import_GDML_Export_ROOT() { + // we need to use latest root version to work with gdml geometry + // system(string("source /usr/local/Cellar/root/6.20.04_1/bin/thisroot.sh").c_str()); + + // For v17a geometries one need to use root5, one can use installation on lustre + //"source /cvmfs/fairroot.gsi.de/fairsoft/may16_root5/bin/thisroot.sh" + + TString richGeoFilename = "rich_v17a_1e_pcarb_bcarb.gdml"; + + TGeoManager* gdml = new TGeoManager("gdml", "FAIRGeom"); + + cout << "Importing '" << richGeoFilename << "'." << endl; + + TGDMLParse parser; + // Define your input GDML file HERE + TGeoVolume* gdmlTop = parser.GDMLReadFile(richGeoFilename); + TGeoVolume* rootTop = new TGeoVolumeAssembly("TOP"); + + gGeoManager->SetTopVolume(rootTop); + + // Starting from the version v18a position is defined inside the GDML file + // Define your position HERE + // Z coordinate for v16a = 270, for v17a = 258.75, for v18a = 0. + TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); + TGeoCombiTrans* posrot = new TGeoCombiTrans( + 0., 0., 258.75, rot); // v16a - 270, v17a - 258.75, v18a - 0 + + rootTop->AddNode(gdmlTop, 1, posrot); + + gGeoManager->CloseGeometry(); + gGeoManager->CheckOverlaps(); + gGeoManager->PrintOverlaps(); + // Just print the name of the rich volume + // One may compare it to the file name + //TGeoNode* richNode = gGeoManager->GetTopVolume()->GetNodes()->At(0); + //cout << richNode->GetVolume()->GetName() << endl; + + // Extract name to form output file name + TString richGeoOutFilename; + if (richGeoFilename.EndsWith(".gdml")) { + richGeoOutFilename = + richGeoFilename(0, richGeoFilename.Length() - 5) + ".geo.root"; + } else { + richGeoOutFilename = richGeoFilename + ".geo.root"; + } + + cout << "Exporting '" << richGeoOutFilename << "'." << endl; + + // Define you output ROOT file HERE + TFile* outfile = new TFile(richGeoOutFilename, "RECREATE"); + rootTop->Write(); + outfile->Close(); +} diff --git a/macro/rich/d0/run_d0.C b/macro/rich/d0/run_d0.C index 52057151b0..4c0f96f88d 100644 --- a/macro/rich/d0/run_d0.C +++ b/macro/rich/d0/run_d0.C @@ -1,223 +1,223 @@ -#include <string> -using namespace std; - -double radius = 200; //in pixels -double deltaR = 1.0; // in pixels -double thresholdCoeff = 1.1; - -void drawH2(TH2* h); -void drawGraph(TGraph* graph); -int calculateIntensity(TH2* h, double xc, double yc, double r, int threshold); -void drawCircle(double xc, double yc, double r, int color); -void findXYCenter(TH2* h, double& maxX, double& maxY, double threshold); -void runD0ForFile(const string& fileName, bool doDraw); - -void run_d0() { - string file = - "/Users/slebedev/Development/cbm/data/d0/test_03_09_15/mirror3/2mm.asc"; - double d0 = runD0ForFile(file, true); - - return; - - string dir = "/Users/slebedev/Development/cbm/data/d0/test_03_09_15/mirror2/"; - - const int N = 50; - double d0Array[N]; - double x[N]; - - for (int i = 1; i <= N; i++) { - x[i - 1] = i; - stringstream ss; - ss << dir << i << "mm.asc"; - cout << "File #" << i << " fileName:" << ss.str() << endl; - double d0 = runD0ForFile(ss.str(), false); - d0Array[i - 1] = d0; - } - - TCanvas* can = new TCanvas("rich_d0_final", "rich_d0_final", 700, 700); - TGraph* graph = new TGraph(N, x, d0Array); - graph->GetXaxis()->SetTitle("distance [mm]"); - graph->GetYaxis()->SetTitle("D0 [mm]"); - drawGraph(graph); -} - - -double runD0ForFile(const string& fileName, bool doDraw) { - int dimX = 1024; - int dimY = 1024; - - ifstream fin(fileName.c_str()); - int k; - int x = 0; - int y = 0; - - TH2D* hCamera = new TH2D( - "hCamera", "hCamera;x [pixel];Y [pixel];", dimX, 0, dimX, dimY, 0, dimY); - while (!fin.eof()) { - x++; - fin >> k; - hCamera->SetBinContent(x, y, k); - if (x == dimX + 1) { - x = 0; - y++; - } - } - - int threshold = thresholdCoeff * hCamera->Integral() / (dimX * dimY); - cout << "threshold:" << threshold << endl; - - double centerX, centerY; - findXYCenter((TH2D*) hCamera->Clone(), centerX, centerY, threshold); - - - if (doDraw) { - TCanvas* can1 = new TCanvas("rich_d0_camera", "rich_d0_camera", 700, 600); - drawH2((TH2D*) hCamera->Clone()); - - TCanvas* can2 = new TCanvas( - "rich_d0_camera_threshold", "rich_d0_camera_threshold", 700, 600); - hCamera->SetMinimum(threshold); - drawH2((TH2D*) hCamera->Clone()); - - TCanvas* can3 = - new TCanvas("rich_d0_camera_zoom", "rich_d0_camera_zoom", 700, 600); - hCamera->GetXaxis()->SetRangeUser(centerX - 1.2 * radius, - centerX + 1.2 * radius); - hCamera->GetYaxis()->SetRangeUser(centerY - 1.2 * radius, - centerY + 1.2 * radius); - drawH2((TH2D*) hCamera->Clone()); - drawCircle(centerX, centerY, radius, kBlack); - } - - int intensityInit = - calculateIntensity(hCamera, centerX, centerY, radius, threshold); - // cout << "Initial intensity = " << intensityInit << endl; - - int intensity95 = 0.95 * intensityInit; - double newR = radius; - for (;;) { - int newInt = calculateIntensity(hCamera, centerX, centerY, newR, threshold); - // cout << "Radius=" <<newR << ", Intensity=" << newInt << ", " - // << 100. * (double)newInt / (double)intensityInit <<"%"<< endl; - if (newInt <= intensity95) break; - newR -= deltaR; - } - drawCircle(centerX, centerY, newR, kBlue); - - newR = 13.3 * newR / dimX; - - if (hCamera != NULL) delete hCamera; - - cout << "D0 (95%) = " << 2 * newR << " cm" << endl; - return 2. * newR; -} - -void findXYCenter(TH2* h, double& maxX, double& maxY, double threshold) { - int nBins = 1; - h->RebinX(nBins); - h->RebinY(nBins); - - int nx = h->GetNbinsX(); - int ny = h->GetNbinsY(); - int sumW = 0; - double mX = 0; - double mY = 0; - - for (int ix = 2; ix <= nx - 1; ix++) { - for (int iy = 2; iy <= ny - 1; iy++) { - double binInt = h->GetBinContent(ix, iy); - if (binInt < threshold) continue; - mX += binInt * ix; - mY += binInt * iy; - sumW += binInt; - } - } - maxX = mX / sumW; - maxY = mY / sumW; - cout << "maxX:" << maxX << " maxY:" << maxY << endl; -} - -int calculateIntensity(TH2* h, double xc, double yc, double r, int threshold) { - int nx = h->GetNbinsX(); - int ny = h->GetNbinsY(); - int counter = 0; - int minIndX = xc - 1.05 * radius; - int maxIndX = xc + 1.05 * radius; - if (minIndX <= 0) minIndX = 1; - if (maxIndX > nx) maxIndX = nx; - - int minIndY = yc - 1.05 * radius; - int maxIndY = yc + 1.05 * radius; - if (minIndY <= 0) minIndY = 1; - if (maxIndY > ny) maxIndY = ny; - - for (int ix = minIndX; ix <= maxIndX; ix++) { - for (int iy = minIndY; iy <= maxIndY; iy++) { - int binInt = h->GetBinContent(ix, iy); - if (binInt < threshold) continue; - double d = sqrt((xc - ix) * (xc - ix) + (yc - iy) * (yc - iy)); - if (d < r) { counter += binInt; } - } - } - return counter; -} - -void drawCircle(double xc, double yc, double r, int color) { - TEllipse* ellipse = new TEllipse(xc, yc, r); - ellipse->SetFillStyle(0); - ellipse->SetLineWidth(2); - ellipse->SetLineColor(color); - ellipse->DrawClone(); - - TEllipse* ellipse = new TEllipse(xc, yc, 1); - ellipse->SetFillColor(kBlack); - ellipse->SetLineColor(kBlack); - ellipse->DrawClone(); -} - -void drawH2(TH2* h) { - h->Draw("COLZ"); - h->SetStats(false); - Double_t textSize = 0.06; - h->GetXaxis()->SetLabelSize(textSize); - h->GetXaxis()->SetNdivisions(505, kTRUE); - h->GetYaxis()->SetLabelSize(textSize); - h->GetYaxis()->SetNdivisions(505, kTRUE); - h->GetZaxis()->SetLabelSize(textSize); - // hist->GetZaxis()->SetNdivisions(505, kTRUE); - h->GetXaxis()->SetTitleSize(textSize); - h->GetYaxis()->SetTitleSize(textSize); - h->GetZaxis()->SetTitleSize(textSize); - h->GetXaxis()->SetTitleOffset(1.0); - h->GetYaxis()->SetTitleOffset(1.3); - h->GetZaxis()->SetTitleOffset(1.5); - gPad->SetLeftMargin(0.17); - gPad->SetRightMargin(0.30); - gPad->SetBottomMargin(0.15); - gPad->SetTicks(1, 1); - gPad->SetGrid(true, true); -} - -void drawGraph(TGraph* graph) { - string drawOpt = "AC"; - Double_t textSize = 0.06; - graph->SetLineColor(kBlue); - graph->SetLineWidth(3); - //graph->SetLineStyle(lineStyle); - graph->SetMarkerColor(kBlue); - graph->SetMarkerSize(3); - graph->SetMarkerStyle(kOpenCircle); - if (drawOpt.find("A") != string::npos) { - graph->GetXaxis()->SetLabelSize(textSize); - graph->GetXaxis()->SetNdivisions(505, kTRUE); - graph->GetYaxis()->SetLabelSize(textSize); - graph->GetXaxis()->SetTitleSize(textSize); - graph->GetYaxis()->SetTitleSize(textSize); - graph->GetXaxis()->SetTitleOffset(1.0); - graph->GetYaxis()->SetTitleOffset(1.3); - } - gPad->SetLeftMargin(0.17); - gPad->SetBottomMargin(0.15); - graph->Draw(drawOpt.c_str()); - gPad->SetGrid(true, true); -} +#include <string> +using namespace std; + +double radius = 200; //in pixels +double deltaR = 1.0; // in pixels +double thresholdCoeff = 1.1; + +void drawH2(TH2* h); +void drawGraph(TGraph* graph); +int calculateIntensity(TH2* h, double xc, double yc, double r, int threshold); +void drawCircle(double xc, double yc, double r, int color); +void findXYCenter(TH2* h, double& maxX, double& maxY, double threshold); +void runD0ForFile(const string& fileName, bool doDraw); + +void run_d0() { + string file = + "/Users/slebedev/Development/cbm/data/d0/test_03_09_15/mirror3/2mm.asc"; + double d0 = runD0ForFile(file, true); + + return; + + string dir = "/Users/slebedev/Development/cbm/data/d0/test_03_09_15/mirror2/"; + + const int N = 50; + double d0Array[N]; + double x[N]; + + for (int i = 1; i <= N; i++) { + x[i - 1] = i; + stringstream ss; + ss << dir << i << "mm.asc"; + cout << "File #" << i << " fileName:" << ss.str() << endl; + double d0 = runD0ForFile(ss.str(), false); + d0Array[i - 1] = d0; + } + + TCanvas* can = new TCanvas("rich_d0_final", "rich_d0_final", 700, 700); + TGraph* graph = new TGraph(N, x, d0Array); + graph->GetXaxis()->SetTitle("distance [mm]"); + graph->GetYaxis()->SetTitle("D0 [mm]"); + drawGraph(graph); +} + + +double runD0ForFile(const string& fileName, bool doDraw) { + int dimX = 1024; + int dimY = 1024; + + ifstream fin(fileName.c_str()); + int k; + int x = 0; + int y = 0; + + TH2D* hCamera = new TH2D( + "hCamera", "hCamera;x [pixel];Y [pixel];", dimX, 0, dimX, dimY, 0, dimY); + while (!fin.eof()) { + x++; + fin >> k; + hCamera->SetBinContent(x, y, k); + if (x == dimX + 1) { + x = 0; + y++; + } + } + + int threshold = thresholdCoeff * hCamera->Integral() / (dimX * dimY); + cout << "threshold:" << threshold << endl; + + double centerX, centerY; + findXYCenter((TH2D*) hCamera->Clone(), centerX, centerY, threshold); + + + if (doDraw) { + TCanvas* can1 = new TCanvas("rich_d0_camera", "rich_d0_camera", 700, 600); + drawH2((TH2D*) hCamera->Clone()); + + TCanvas* can2 = new TCanvas( + "rich_d0_camera_threshold", "rich_d0_camera_threshold", 700, 600); + hCamera->SetMinimum(threshold); + drawH2((TH2D*) hCamera->Clone()); + + TCanvas* can3 = + new TCanvas("rich_d0_camera_zoom", "rich_d0_camera_zoom", 700, 600); + hCamera->GetXaxis()->SetRangeUser(centerX - 1.2 * radius, + centerX + 1.2 * radius); + hCamera->GetYaxis()->SetRangeUser(centerY - 1.2 * radius, + centerY + 1.2 * radius); + drawH2((TH2D*) hCamera->Clone()); + drawCircle(centerX, centerY, radius, kBlack); + } + + int intensityInit = + calculateIntensity(hCamera, centerX, centerY, radius, threshold); + // cout << "Initial intensity = " << intensityInit << endl; + + int intensity95 = 0.95 * intensityInit; + double newR = radius; + for (;;) { + int newInt = calculateIntensity(hCamera, centerX, centerY, newR, threshold); + // cout << "Radius=" <<newR << ", Intensity=" << newInt << ", " + // << 100. * (double)newInt / (double)intensityInit <<"%"<< endl; + if (newInt <= intensity95) break; + newR -= deltaR; + } + drawCircle(centerX, centerY, newR, kBlue); + + newR = 13.3 * newR / dimX; + + if (hCamera != NULL) delete hCamera; + + cout << "D0 (95%) = " << 2 * newR << " cm" << endl; + return 2. * newR; +} + +void findXYCenter(TH2* h, double& maxX, double& maxY, double threshold) { + int nBins = 1; + h->RebinX(nBins); + h->RebinY(nBins); + + int nx = h->GetNbinsX(); + int ny = h->GetNbinsY(); + int sumW = 0; + double mX = 0; + double mY = 0; + + for (int ix = 2; ix <= nx - 1; ix++) { + for (int iy = 2; iy <= ny - 1; iy++) { + double binInt = h->GetBinContent(ix, iy); + if (binInt < threshold) continue; + mX += binInt * ix; + mY += binInt * iy; + sumW += binInt; + } + } + maxX = mX / sumW; + maxY = mY / sumW; + cout << "maxX:" << maxX << " maxY:" << maxY << endl; +} + +int calculateIntensity(TH2* h, double xc, double yc, double r, int threshold) { + int nx = h->GetNbinsX(); + int ny = h->GetNbinsY(); + int counter = 0; + int minIndX = xc - 1.05 * radius; + int maxIndX = xc + 1.05 * radius; + if (minIndX <= 0) minIndX = 1; + if (maxIndX > nx) maxIndX = nx; + + int minIndY = yc - 1.05 * radius; + int maxIndY = yc + 1.05 * radius; + if (minIndY <= 0) minIndY = 1; + if (maxIndY > ny) maxIndY = ny; + + for (int ix = minIndX; ix <= maxIndX; ix++) { + for (int iy = minIndY; iy <= maxIndY; iy++) { + int binInt = h->GetBinContent(ix, iy); + if (binInt < threshold) continue; + double d = sqrt((xc - ix) * (xc - ix) + (yc - iy) * (yc - iy)); + if (d < r) { counter += binInt; } + } + } + return counter; +} + +void drawCircle(double xc, double yc, double r, int color) { + TEllipse* ellipse = new TEllipse(xc, yc, r); + ellipse->SetFillStyle(0); + ellipse->SetLineWidth(2); + ellipse->SetLineColor(color); + ellipse->DrawClone(); + + TEllipse* ellipse = new TEllipse(xc, yc, 1); + ellipse->SetFillColor(kBlack); + ellipse->SetLineColor(kBlack); + ellipse->DrawClone(); +} + +void drawH2(TH2* h) { + h->Draw("COLZ"); + h->SetStats(false); + Double_t textSize = 0.06; + h->GetXaxis()->SetLabelSize(textSize); + h->GetXaxis()->SetNdivisions(505, kTRUE); + h->GetYaxis()->SetLabelSize(textSize); + h->GetYaxis()->SetNdivisions(505, kTRUE); + h->GetZaxis()->SetLabelSize(textSize); + // hist->GetZaxis()->SetNdivisions(505, kTRUE); + h->GetXaxis()->SetTitleSize(textSize); + h->GetYaxis()->SetTitleSize(textSize); + h->GetZaxis()->SetTitleSize(textSize); + h->GetXaxis()->SetTitleOffset(1.0); + h->GetYaxis()->SetTitleOffset(1.3); + h->GetZaxis()->SetTitleOffset(1.5); + gPad->SetLeftMargin(0.17); + gPad->SetRightMargin(0.30); + gPad->SetBottomMargin(0.15); + gPad->SetTicks(1, 1); + gPad->SetGrid(true, true); +} + +void drawGraph(TGraph* graph) { + string drawOpt = "AC"; + Double_t textSize = 0.06; + graph->SetLineColor(kBlue); + graph->SetLineWidth(3); + //graph->SetLineStyle(lineStyle); + graph->SetMarkerColor(kBlue); + graph->SetMarkerSize(3); + graph->SetMarkerStyle(kOpenCircle); + if (drawOpt.find("A") != string::npos) { + graph->GetXaxis()->SetLabelSize(textSize); + graph->GetXaxis()->SetNdivisions(505, kTRUE); + graph->GetYaxis()->SetLabelSize(textSize); + graph->GetXaxis()->SetTitleSize(textSize); + graph->GetYaxis()->SetTitleSize(textSize); + graph->GetXaxis()->SetTitleOffset(1.0); + graph->GetYaxis()->SetTitleOffset(1.3); + } + gPad->SetLeftMargin(0.17); + gPad->SetBottomMargin(0.15); + graph->Draw(drawOpt.c_str()); + gPad->SetGrid(true, true); +} diff --git a/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_LowerPart.gdml b/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_LowerPart.gdml index 8492d306d8..47e289f01e 100644 --- a/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_LowerPart.gdml +++ b/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_LowerPart.gdml @@ -1,365 +1,365 @@ - -</define> - -<materials> -<material name="vacuum" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="aluminium" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="kapton" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHglass" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="CsI" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis+" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="air" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -</materials> - -<solids> -<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_vac_PartBody"> -<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> -<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> -<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_PartBody"> -<first ref="RICH_pipe_RICH_pipe_4"/> -<second ref="RICH_pipe_RICH_pipe_3"/> -<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_entrance_PartBody"> -<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> -<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> -<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> -<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_exit_PartBody"> -<first ref="RICH_covering_exit_RICH_covering_exit_2"/> -<second ref="RICH_covering_exit_RICH_covering_exit_3"/> -<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="27" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> -<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> -<box name="Sens_plane_3" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="(0.5)*2" lunit="mm"/> -<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="Sens_plane_PartBody"> -<first ref="Sens_plane_3"/> -<second ref="Sens_plane_2"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</subtraction> -<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<union name="RICH_gas_RICH_gas_6"> -<first ref="RICH_gas_RICH_gas_4"/> -<second ref="RICH_gas_RICH_gas_5"/> -<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> -<rotationref ref="identity"/> -</union> -<subtraction name="RICH_gas_PartBody"> -<first ref="RICH_gas_RICH_gas_6"/> -<second ref="RICH_gas_RICH_gas_7"/> -<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> -<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="rich1_PartBody"> -<first ref="rich1_rich1_16"/> -<second ref="rich1_rich1_17"/> -<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</union> -</solids> - -<structure> -<volume name="RICH_pipe_vac"> -<materialref ref="vacuum"/> -<solidref ref="RICH_pipe_vac_PartBody"/> -</volume> -<volume name="RICH_pipe"> -<materialref ref="aluminium"/> -<solidref ref="RICH_pipe_PartBody"/> -<physvol> -<volumeref ref="RICH_pipe_vac"/> -<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_covering_entrance"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_entrance_PartBody"/> -</volume> -<volume name="RICH_covering_sloping"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_sloping_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_1"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_1_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_2"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_2_PartBody"/> -</volume> -<volume name="RICH_covering_side"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_side_PartBody"/> -</volume> -<volume name="RICH_covering_exit"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_exit_PartBody"/> -</volume> -<volume name="RICH_mirror_1"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_1_PartBody"/> -</volume> -<volume name="RICH_mirror_2"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_2_PartBody"/> -</volume> -<volume name="RICH_mirror_3"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_3_PartBody"/> -</volume> -<volume name="RICH_mirror_and_support_belt_strip_cut"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_3"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_and_support_belt_strip"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_replica"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_replica_PartBody"/> -<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -</divisionvol> -</volume> -<assembly name="RICH_mirror_half_total"> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-180" y="180" z="180" unit="deg"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="0" z="318.94" unit="deg"/> -</physvol> -</assembly> -<volume name="rich1d"> -<materialref ref="CsI"/> -<solidref ref="rich1d_PartBody"/> -</volume> -<volume name="Sens_plane"> -<materialref ref="RICHgas_CO2_dis+"/> -<solidref ref="Sens_plane_PartBody"/> -</volume> -<volume name="RICH_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_gas_PartBody"/> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="Sens_plane"/> -<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="1430" unit="mm"/> -<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="rich1"> -<materialref ref="air"/> -<solidref ref="rich1_PartBody"/> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_entrance"/> -<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_exit"/> -<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_pipe"/> -<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_gas"/> -<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<!-- -<assembly name="TOP"> -<physvol> -<volumeref ref="rich1"/> -<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> -<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</assembly> ---> -</structure> - -<setup name="FAIRgeom" version="1.0"> -<world ref="rich1"/> -<!--<world ref="TOP"/>--> -</setup> - -</gdml> + +</define> + +<materials> +<material name="vacuum" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="aluminium" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="kapton" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHglass" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="CsI" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis+" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="air" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +</materials> + +<solids> +<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_vac_PartBody"> +<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> +<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> +<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_PartBody"> +<first ref="RICH_pipe_RICH_pipe_4"/> +<second ref="RICH_pipe_RICH_pipe_3"/> +<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_entrance_PartBody"> +<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> +<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> +<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> +<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_exit_PartBody"> +<first ref="RICH_covering_exit_RICH_covering_exit_2"/> +<second ref="RICH_covering_exit_RICH_covering_exit_3"/> +<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="27" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> +<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> +<box name="Sens_plane_3" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="(0.5)*2" lunit="mm"/> +<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="Sens_plane_PartBody"> +<first ref="Sens_plane_3"/> +<second ref="Sens_plane_2"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</subtraction> +<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<union name="RICH_gas_RICH_gas_6"> +<first ref="RICH_gas_RICH_gas_4"/> +<second ref="RICH_gas_RICH_gas_5"/> +<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> +<rotationref ref="identity"/> +</union> +<subtraction name="RICH_gas_PartBody"> +<first ref="RICH_gas_RICH_gas_6"/> +<second ref="RICH_gas_RICH_gas_7"/> +<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> +<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="rich1_PartBody"> +<first ref="rich1_rich1_16"/> +<second ref="rich1_rich1_17"/> +<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</union> +</solids> + +<structure> +<volume name="RICH_pipe_vac"> +<materialref ref="vacuum"/> +<solidref ref="RICH_pipe_vac_PartBody"/> +</volume> +<volume name="RICH_pipe"> +<materialref ref="aluminium"/> +<solidref ref="RICH_pipe_PartBody"/> +<physvol> +<volumeref ref="RICH_pipe_vac"/> +<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_covering_entrance"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_entrance_PartBody"/> +</volume> +<volume name="RICH_covering_sloping"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_sloping_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_1"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_1_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_2"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_2_PartBody"/> +</volume> +<volume name="RICH_covering_side"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_side_PartBody"/> +</volume> +<volume name="RICH_covering_exit"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_exit_PartBody"/> +</volume> +<volume name="RICH_mirror_1"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_1_PartBody"/> +</volume> +<volume name="RICH_mirror_2"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_2_PartBody"/> +</volume> +<volume name="RICH_mirror_3"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_3_PartBody"/> +</volume> +<volume name="RICH_mirror_and_support_belt_strip_cut"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_3"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_and_support_belt_strip"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_replica"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_replica_PartBody"/> +<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +</divisionvol> +</volume> +<assembly name="RICH_mirror_half_total"> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-180" y="180" z="180" unit="deg"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="0" z="318.94" unit="deg"/> +</physvol> +</assembly> +<volume name="rich1d"> +<materialref ref="CsI"/> +<solidref ref="rich1d_PartBody"/> +</volume> +<volume name="Sens_plane"> +<materialref ref="RICHgas_CO2_dis+"/> +<solidref ref="Sens_plane_PartBody"/> +</volume> +<volume name="RICH_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_gas_PartBody"/> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="Sens_plane"/> +<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="1430" unit="mm"/> +<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="rich1"> +<materialref ref="air"/> +<solidref ref="rich1_PartBody"/> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_entrance"/> +<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_exit"/> +<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_pipe"/> +<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_gas"/> +<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<!-- +<assembly name="TOP"> +<physvol> +<volumeref ref="rich1"/> +<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> +<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</assembly> +--> +</structure> + +<setup name="FAIRgeom" version="1.0"> +<world ref="rich1"/> +<!--<world ref="TOP"/>--> +</setup> + +</gdml> diff --git a/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_LowerPart_ModAug2015.gdml b/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_LowerPart_ModAug2015.gdml index 5f732491e2..bf71fe2418 100644 --- a/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_LowerPart_ModAug2015.gdml +++ b/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_LowerPart_ModAug2015.gdml @@ -1,363 +1,363 @@ - -<materials> -<material name="vacuum" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="aluminium" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="kapton" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHglass" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="CsI" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis+" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="air" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -</materials> - -<solids> -<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_vac_PartBody"> -<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> -<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> -<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_PartBody"> -<first ref="RICH_pipe_RICH_pipe_4"/> -<second ref="RICH_pipe_RICH_pipe_3"/> -<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_entrance_PartBody"> -<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> -<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> -<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> -<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_exit_PartBody"> -<first ref="RICH_covering_exit_RICH_covering_exit_2"/> -<second ref="RICH_covering_exit_RICH_covering_exit_3"/> -<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="27" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> -<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> -<box name="Sens_plane_3" x="(Delta_sens_plane_area*(RICH_exit_width/2))*2" y="(Delta_sens_plane_area*(RICH_height/2))*2" z="(0.5)*2" lunit="mm"/> -<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="Sens_plane_PartBody"> -<first ref="Sens_plane_3"/> -<second ref="Sens_plane_2"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</subtraction> -<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<union name="RICH_gas_RICH_gas_6"> -<first ref="RICH_gas_RICH_gas_4"/> -<second ref="RICH_gas_RICH_gas_5"/> -<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> -<rotationref ref="identity"/> -</union> -<subtraction name="RICH_gas_PartBody"> -<first ref="RICH_gas_RICH_gas_6"/> -<second ref="RICH_gas_RICH_gas_7"/> -<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> -<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="rich1_PartBody"> -<first ref="rich1_rich1_16"/> -<second ref="rich1_rich1_17"/> -<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</union> -</solids> - -<structure> -<volume name="RICH_pipe_vac"> -<materialref ref="vacuum"/> -<solidref ref="RICH_pipe_vac_PartBody"/> -</volume> -<volume name="RICH_pipe"> -<materialref ref="aluminium"/> -<solidref ref="RICH_pipe_PartBody"/> -<physvol> -<volumeref ref="RICH_pipe_vac"/> -<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_covering_entrance"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_entrance_PartBody"/> -</volume> -<volume name="RICH_covering_sloping"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_sloping_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_1"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_1_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_2"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_2_PartBody"/> -</volume> -<volume name="RICH_covering_side"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_side_PartBody"/> -</volume> -<volume name="RICH_covering_exit"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_exit_PartBody"/> -</volume> -<volume name="RICH_mirror_1"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_1_PartBody"/> -</volume> -<volume name="RICH_mirror_2"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_2_PartBody"/> -</volume> -<volume name="RICH_mirror_3"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_3_PartBody"/> -</volume> -<volume name="RICH_mirror_and_support_belt_strip_cut"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_3"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_and_support_belt_strip"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_replica"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_replica_PartBody"/> -<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -</divisionvol> -</volume> -<assembly name="RICH_mirror_half_total"> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-180" y="180" z="180" unit="deg"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="0" z="318.94" unit="deg"/> -</physvol> -</assembly> -<volume name="rich1d"> -<materialref ref="CsI"/> -<solidref ref="rich1d_PartBody"/> -</volume> -<volume name="Sens_plane"> -<materialref ref="RICHgas_CO2_dis+"/> -<solidref ref="Sens_plane_PartBody"/> -</volume> -<volume name="RICH_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_gas_PartBody"/> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_MyAddend+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_MyAddend+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_MyAddend+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_MyAddend+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="Sens_plane"/> -<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="sens_plane_pos+pmt_pos_z_MyAddend" unit="mm"/> -<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="rich1"> -<materialref ref="air"/> -<solidref ref="rich1_PartBody"/> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_entrance"/> -<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_exit"/> -<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_pipe"/> -<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_gas"/> -<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<!-- -<assembly name="TOP"> -<physvol> -<volumeref ref="rich1"/> -<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> -<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</assembly> ---> -</structure> - -<setup name="FAIRgeom" version="1.0"> -<world ref="rich1"/> -<!--<world ref="TOP"/>--> -</setup> - -</gdml> + +<materials> +<material name="vacuum" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="aluminium" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="kapton" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHglass" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="CsI" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis+" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="air" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +</materials> + +<solids> +<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_vac_PartBody"> +<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> +<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> +<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_PartBody"> +<first ref="RICH_pipe_RICH_pipe_4"/> +<second ref="RICH_pipe_RICH_pipe_3"/> +<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_entrance_PartBody"> +<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> +<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> +<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> +<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_exit_PartBody"> +<first ref="RICH_covering_exit_RICH_covering_exit_2"/> +<second ref="RICH_covering_exit_RICH_covering_exit_3"/> +<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="27" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> +<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> +<box name="Sens_plane_3" x="(Delta_sens_plane_area*(RICH_exit_width/2))*2" y="(Delta_sens_plane_area*(RICH_height/2))*2" z="(0.5)*2" lunit="mm"/> +<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="Sens_plane_PartBody"> +<first ref="Sens_plane_3"/> +<second ref="Sens_plane_2"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</subtraction> +<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<union name="RICH_gas_RICH_gas_6"> +<first ref="RICH_gas_RICH_gas_4"/> +<second ref="RICH_gas_RICH_gas_5"/> +<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> +<rotationref ref="identity"/> +</union> +<subtraction name="RICH_gas_PartBody"> +<first ref="RICH_gas_RICH_gas_6"/> +<second ref="RICH_gas_RICH_gas_7"/> +<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> +<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="rich1_PartBody"> +<first ref="rich1_rich1_16"/> +<second ref="rich1_rich1_17"/> +<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</union> +</solids> + +<structure> +<volume name="RICH_pipe_vac"> +<materialref ref="vacuum"/> +<solidref ref="RICH_pipe_vac_PartBody"/> +</volume> +<volume name="RICH_pipe"> +<materialref ref="aluminium"/> +<solidref ref="RICH_pipe_PartBody"/> +<physvol> +<volumeref ref="RICH_pipe_vac"/> +<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_covering_entrance"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_entrance_PartBody"/> +</volume> +<volume name="RICH_covering_sloping"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_sloping_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_1"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_1_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_2"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_2_PartBody"/> +</volume> +<volume name="RICH_covering_side"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_side_PartBody"/> +</volume> +<volume name="RICH_covering_exit"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_exit_PartBody"/> +</volume> +<volume name="RICH_mirror_1"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_1_PartBody"/> +</volume> +<volume name="RICH_mirror_2"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_2_PartBody"/> +</volume> +<volume name="RICH_mirror_3"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_3_PartBody"/> +</volume> +<volume name="RICH_mirror_and_support_belt_strip_cut"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_3"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_and_support_belt_strip"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_replica"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_replica_PartBody"/> +<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +</divisionvol> +</volume> +<assembly name="RICH_mirror_half_total"> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-180" y="180" z="180" unit="deg"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="0" z="318.94" unit="deg"/> +</physvol> +</assembly> +<volume name="rich1d"> +<materialref ref="CsI"/> +<solidref ref="rich1d_PartBody"/> +</volume> +<volume name="Sens_plane"> +<materialref ref="RICHgas_CO2_dis+"/> +<solidref ref="Sens_plane_PartBody"/> +</volume> +<volume name="RICH_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_gas_PartBody"/> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_MyAddend+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_MyAddend+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_MyAddend+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_MyAddend+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="Sens_plane"/> +<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="sens_plane_pos+pmt_pos_z_MyAddend" unit="mm"/> +<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="rich1"> +<materialref ref="air"/> +<solidref ref="rich1_PartBody"/> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_entrance"/> +<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_exit"/> +<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_pipe"/> +<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_gas"/> +<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<!-- +<assembly name="TOP"> +<physvol> +<volumeref ref="rich1"/> +<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> +<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</assembly> +--> +</structure> + +<setup name="FAIRgeom" version="1.0"> +<world ref="rich1"/> +<!--<world ref="TOP"/>--> +</setup> + +</gdml> diff --git a/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_UpperPart.gdml b/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_UpperPart.gdml index f316b9a458..69d74ac195 100644 --- a/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_UpperPart.gdml +++ b/macro/rich/geotest/RotPMT/CreateGeo/2015_minus10deg_UpperPart.gdml @@ -1,45 +1,45 @@ -<?xml version="1.0" encoding="UTF-8"?> -<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> - -<define> -<position name="central" x="0" y="0" z="0" unit="mm"/> -<rotation name="identity" x="0" y="0" z="0" unit="degree"/> -<variable name="RICH_trapezoid_angle" value="116"/> -<variable name="RICH_entrance_width" value="3500"/> -<variable name="RICH_exit_width" value="5136"/> -<variable name="RICH_height" value="6000"/> -<variable name="RICH_length" value="2697.5"/> -<variable name="RICH_covering_thickness" value="5"/> -<variable name="entrance_width_addend" value="2"/> -<variable name="RICH_pipe_entrance_r" value="103.5"/> -<variable name="RICH_pipe_exit_r" value="170"/> -<variable name="RICH_pipe_entrance_thickness" value="3"/> -<variable name="RICH_pipe_exit_thickness" value="5"/> -<variable name="RICH_pipe_angle" value="0"/> -<variable name="RICH_position_from_IP" value="1002"/> -<variable name="RICH_mirror_position_from_IP" value="3500"/> -<variable name="RICH_mirror_r" value="3000"/> -<variable name="RICH_mirror_thickness" value="6"/> -<variable name="mirror_cont_supp_addend_out" value="6"/> -<variable name="TTT" value="1500"/> - -<!-- -minus 10deg setup: -<variable name="RICH_mirror_Y_shift" value="805"/> -<variable name="RICH_mirror_angle" value="-10"/> -<variable name="pmt_rot_x_addend" value="-27.952765"/> -<variable name="pmt_rot_y_addend" value="-13.477"/> -<variable name="pmt_pos_x_addend" value="0"/> -<variable name="pmt_pos_y_addend" value="0"/> -<variable name="pmt_pos_z_addend" value="0"/> - -plus 1deg setup: ---> - -<variable name="RICH_mirror_Y_shift" value="805"/> - -<variable name="pmt_pos_x_addend" value="0"/> -<variable name="pmt_pos_y_addend" value="0"/> - -<variable name="kapton_thickness" value="0.25"/> -<variable name="DEGtoRAD" value="1.74532925199433E-02"/> +<?xml version="1.0" encoding="UTF-8"?> +<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> + +<define> +<position name="central" x="0" y="0" z="0" unit="mm"/> +<rotation name="identity" x="0" y="0" z="0" unit="degree"/> +<variable name="RICH_trapezoid_angle" value="116"/> +<variable name="RICH_entrance_width" value="3500"/> +<variable name="RICH_exit_width" value="5136"/> +<variable name="RICH_height" value="6000"/> +<variable name="RICH_length" value="2697.5"/> +<variable name="RICH_covering_thickness" value="5"/> +<variable name="entrance_width_addend" value="2"/> +<variable name="RICH_pipe_entrance_r" value="103.5"/> +<variable name="RICH_pipe_exit_r" value="170"/> +<variable name="RICH_pipe_entrance_thickness" value="3"/> +<variable name="RICH_pipe_exit_thickness" value="5"/> +<variable name="RICH_pipe_angle" value="0"/> +<variable name="RICH_position_from_IP" value="1002"/> +<variable name="RICH_mirror_position_from_IP" value="3500"/> +<variable name="RICH_mirror_r" value="3000"/> +<variable name="RICH_mirror_thickness" value="6"/> +<variable name="mirror_cont_supp_addend_out" value="6"/> +<variable name="TTT" value="1500"/> + +<!-- +minus 10deg setup: +<variable name="RICH_mirror_Y_shift" value="805"/> +<variable name="RICH_mirror_angle" value="-10"/> +<variable name="pmt_rot_x_addend" value="-27.952765"/> +<variable name="pmt_rot_y_addend" value="-13.477"/> +<variable name="pmt_pos_x_addend" value="0"/> +<variable name="pmt_pos_y_addend" value="0"/> +<variable name="pmt_pos_z_addend" value="0"/> + +plus 1deg setup: +--> + +<variable name="RICH_mirror_Y_shift" value="805"/> + +<variable name="pmt_pos_x_addend" value="0"/> +<variable name="pmt_pos_y_addend" value="0"/> + +<variable name="kapton_thickness" value="0.25"/> +<variable name="DEGtoRAD" value="1.74532925199433E-02"/> diff --git a/macro/rich/geotest/RotPMT/CreateGeo/minus10deg_ext_mirror_LowerPart.gdml b/macro/rich/geotest/RotPMT/CreateGeo/minus10deg_ext_mirror_LowerPart.gdml index 9a2a7780d0..a2fcb3f772 100644 --- a/macro/rich/geotest/RotPMT/CreateGeo/minus10deg_ext_mirror_LowerPart.gdml +++ b/macro/rich/geotest/RotPMT/CreateGeo/minus10deg_ext_mirror_LowerPart.gdml @@ -1,420 +1,420 @@ - -<materials> -<material name="vacuum" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="aluminium" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="kapton" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHglass" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="CsI" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis+" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="air" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -</materials> - -<solids> -<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(50.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_vac_PartBody"> -<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> -<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> -<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-49.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(50.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_PartBody"> -<first ref="RICH_pipe_RICH_pipe_4"/> -<second ref="RICH_pipe_RICH_pipe_3"/> -<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-49.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_entrance_PartBody"> -<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> -<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> -<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> -<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_exit_PartBody"> -<first ref="RICH_covering_exit_RICH_covering_exit_2"/> -<second ref="RICH_covering_exit_RICH_covering_exit_3"/> -<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_4_PartBody" rmin="3000" rmax="3006" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="8.6" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_5_PartBody" rmin="3000" rmax="3006" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="7.95" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="27" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="30.95" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_ext_PartBody" rmin="3000" rmax="3006" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="31.6" lunit="mm" aunit="degree"/> -<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> -<box name="Sens_plane_3" x="(Delta_sens_plane_area*2468)*2" y="(Delta_sens_plane_area*1875)*2" z="(0.5)*2" lunit="mm"/> -<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="Sens_plane_PartBody"> -<first ref="Sens_plane_3"/> -<second ref="Sens_plane_2"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</subtraction> -<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<union name="RICH_gas_RICH_gas_6"> -<first ref="RICH_gas_RICH_gas_4"/> -<second ref="RICH_gas_RICH_gas_5"/> -<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> -<rotationref ref="identity"/> -</union> -<subtraction name="RICH_gas_PartBody"> -<first ref="RICH_gas_RICH_gas_6"/> -<second ref="RICH_gas_RICH_gas_7"/> -<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+50))*2" lunit="mm"/> -<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="rich1_PartBody"> -<first ref="rich1_rich1_16"/> -<second ref="rich1_rich1_17"/> -<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+50-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</union> -</solids> - -<structure> -<volume name="RICH_pipe_vac"> -<materialref ref="vacuum"/> -<solidref ref="RICH_pipe_vac_PartBody"/> -</volume> -<volume name="RICH_pipe"> -<materialref ref="aluminium"/> -<solidref ref="RICH_pipe_PartBody"/> -<physvol> -<volumeref ref="RICH_pipe_vac"/> -<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_covering_entrance"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_entrance_PartBody"/> -</volume> -<volume name="RICH_covering_sloping"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_sloping_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_1"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_1_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_2"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_2_PartBody"/> -</volume> -<volume name="RICH_covering_side"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_side_PartBody"/> -</volume> -<volume name="RICH_covering_exit"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_exit_PartBody"/> -</volume> -<volume name="RICH_mirror_1"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_1_PartBody"/> -</volume> -<volume name="RICH_mirror_2"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_2_PartBody"/> -</volume> -<volume name="RICH_mirror_3"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_3_PartBody"/> -</volume> -<volume name="RICH_mirror_4"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_4_PartBody"/> -</volume> -<volume name="RICH_mirror_5"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_5_PartBody"/> -</volume> -<volume name="RICH_mirror_and_support_belt_strip_cut"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_3"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_and_support_belt_strip"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_5"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_5_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_5_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_and_support_belt_strip_ext"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_ext_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_4"/> -<position name="RICH_mirror_and_support_belt_strip_ext_pos_RICH_mirror_4_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_ext_rot_RICH_mirror_4_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_ext_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_ext_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_ext_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_ext_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_ext_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_ext_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<assembly name="RICH_mirror_half_total"> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_1" x="0" y="0" z="-8.212" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_2" x="0" y="0" z="-16.424" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_3" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_3" x="0" y="0" z="8.212" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_4" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_4" x="0" y="0" z="16.424" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_ext"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_ext_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_ext_1" x="0" y="0" z="-24.636" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_ext"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_ext_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_ext_2" x="0" y="0" z="-32.848" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_ext"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_ext_3" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_ext_3" x="0" y="0" z="24.636" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_ext"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_ext_4" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_ext_4" x="0" y="0" z="32.848" unit="degree"/> -</physvol> -</assembly> -<volume name="rich1d"> -<materialref ref="CsI"/> -<solidref ref="rich1d_PartBody"/> -</volume> -<volume name="Sens_plane"> -<materialref ref="RICHgas_CO2_dis+"/> -<solidref ref="Sens_plane_PartBody"/> -</volume> -<volume name="RICH_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_gas_PartBody"/> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="Sens_plane"/> -<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="sens_plane_pos" unit="mm"/> -<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="rich1"> -<materialref ref="air"/> -<solidref ref="rich1_PartBody"/> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_entrance"/> -<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+50-kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_exit"/> -<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+50+kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_pipe"/> -<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+50-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_gas"/> -<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<!-- -<assembly name="TOP"> -<physvol> -<volumeref ref="rich1"/> -<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-50)" unit="mm"/> -<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</assembly> ---> -</structure> - -<setup name="FAIRgeom" version="1.0"> -<world ref="rich1"/> -<!--<world ref="TOP"/>--> -</setup> - -</gdml> + +<materials> +<material name="vacuum" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="aluminium" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="kapton" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHglass" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="CsI" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis+" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="air" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +</materials> + +<solids> +<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(50.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_vac_PartBody"> +<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> +<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> +<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-49.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(50.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_PartBody"> +<first ref="RICH_pipe_RICH_pipe_4"/> +<second ref="RICH_pipe_RICH_pipe_3"/> +<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-49.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_entrance_PartBody"> +<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> +<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> +<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> +<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_exit_PartBody"> +<first ref="RICH_covering_exit_RICH_covering_exit_2"/> +<second ref="RICH_covering_exit_RICH_covering_exit_3"/> +<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_4_PartBody" rmin="3000" rmax="3006" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="8.6" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_5_PartBody" rmin="3000" rmax="3006" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="7.95" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="27" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="30.95" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_ext_PartBody" rmin="3000" rmax="3006" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="31.6" lunit="mm" aunit="degree"/> +<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> +<box name="Sens_plane_3" x="(Delta_sens_plane_area*2468)*2" y="(Delta_sens_plane_area*1875)*2" z="(0.5)*2" lunit="mm"/> +<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="Sens_plane_PartBody"> +<first ref="Sens_plane_3"/> +<second ref="Sens_plane_2"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</subtraction> +<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<union name="RICH_gas_RICH_gas_6"> +<first ref="RICH_gas_RICH_gas_4"/> +<second ref="RICH_gas_RICH_gas_5"/> +<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> +<rotationref ref="identity"/> +</union> +<subtraction name="RICH_gas_PartBody"> +<first ref="RICH_gas_RICH_gas_6"/> +<second ref="RICH_gas_RICH_gas_7"/> +<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+50))*2" lunit="mm"/> +<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="rich1_PartBody"> +<first ref="rich1_rich1_16"/> +<second ref="rich1_rich1_17"/> +<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+50-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</union> +</solids> + +<structure> +<volume name="RICH_pipe_vac"> +<materialref ref="vacuum"/> +<solidref ref="RICH_pipe_vac_PartBody"/> +</volume> +<volume name="RICH_pipe"> +<materialref ref="aluminium"/> +<solidref ref="RICH_pipe_PartBody"/> +<physvol> +<volumeref ref="RICH_pipe_vac"/> +<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_covering_entrance"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_entrance_PartBody"/> +</volume> +<volume name="RICH_covering_sloping"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_sloping_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_1"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_1_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_2"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_2_PartBody"/> +</volume> +<volume name="RICH_covering_side"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_side_PartBody"/> +</volume> +<volume name="RICH_covering_exit"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_exit_PartBody"/> +</volume> +<volume name="RICH_mirror_1"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_1_PartBody"/> +</volume> +<volume name="RICH_mirror_2"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_2_PartBody"/> +</volume> +<volume name="RICH_mirror_3"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_3_PartBody"/> +</volume> +<volume name="RICH_mirror_4"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_4_PartBody"/> +</volume> +<volume name="RICH_mirror_5"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_5_PartBody"/> +</volume> +<volume name="RICH_mirror_and_support_belt_strip_cut"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_3"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_and_support_belt_strip"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_5"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_5_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_5_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_and_support_belt_strip_ext"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_ext_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_4"/> +<position name="RICH_mirror_and_support_belt_strip_ext_pos_RICH_mirror_4_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_ext_rot_RICH_mirror_4_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_ext_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_ext_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_ext_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_ext_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_ext_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_ext_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<assembly name="RICH_mirror_half_total"> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_1" x="0" y="0" z="-8.212" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_2" x="0" y="0" z="-16.424" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_3" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_3" x="0" y="0" z="8.212" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_4" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_4" x="0" y="0" z="16.424" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_ext"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_ext_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_ext_1" x="0" y="0" z="-24.636" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_ext"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_ext_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_ext_2" x="0" y="0" z="-32.848" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_ext"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_ext_3" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_ext_3" x="0" y="0" z="24.636" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_ext"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_ext_4" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_ext_4" x="0" y="0" z="32.848" unit="degree"/> +</physvol> +</assembly> +<volume name="rich1d"> +<materialref ref="CsI"/> +<solidref ref="rich1d_PartBody"/> +</volume> +<volume name="Sens_plane"> +<materialref ref="RICHgas_CO2_dis+"/> +<solidref ref="Sens_plane_PartBody"/> +</volume> +<volume name="RICH_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_gas_PartBody"/> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="Sens_plane"/> +<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="sens_plane_pos" unit="mm"/> +<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="rich1"> +<materialref ref="air"/> +<solidref ref="rich1_PartBody"/> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_entrance"/> +<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+50-kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_exit"/> +<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+50+kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_pipe"/> +<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+50-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_gas"/> +<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+50+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<!-- +<assembly name="TOP"> +<physvol> +<volumeref ref="rich1"/> +<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-50)" unit="mm"/> +<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</assembly> +--> +</structure> + +<setup name="FAIRgeom" version="1.0"> +<world ref="rich1"/> +<!--<world ref="TOP"/>--> +</setup> + +</gdml> diff --git a/macro/rich/geotest/RotPMT/Import_GDML_Export_ROOT.c b/macro/rich/geotest/RotPMT/Import_GDML_Export_ROOT.c index b29951eb89..444017ce49 100644 --- a/macro/rich/geotest/RotPMT/Import_GDML_Export_ROOT.c +++ b/macro/rich/geotest/RotPMT/Import_GDML_Export_ROOT.c @@ -1,63 +1,63 @@ -void Import_GDML_Export_ROOT(float PMTrotX = 5, - float PMTrotY = 5, - int RotMir = -10) { - char RotMirText[256]; - if (RotMir < 0) { - sprintf(RotMirText, "RotMir_m%d", RotMir * -1); - } else { - sprintf(RotMirText, "RotMir_p%d", RotMir); - } - - int ShiftXmod10 = (int(PMTrotX * 10)) % 10; - float IntegerXValue = PMTrotX - (float(ShiftXmod10)) / 10.; - int ShiftYmod10 = (int(PMTrotY * 10)) % 10; - float IntegerYValue = PMTrotY - (float(ShiftYmod10)) / 10.; - - char ShiftXTxt[256]; - char ShiftYTxt[256]; - sprintf(ShiftXTxt, "Xpos%dpoint%d", IntegerXValue, ShiftXmod10); - sprintf(ShiftYTxt, "Ypos%dpoint%d", IntegerYValue, ShiftYmod10); - if (PMTrotY < 0) { - sprintf(ShiftYTxt, "Yneg%dpoint%d", -1. * IntegerYValue, -1. * ShiftYmod10); - } - - char GeoFileName[256]; - sprintf(GeoFileName, - "/geometry/rich/GeoOpt/RotPMT/NewGeo/rich_geo_%s_RotPMT_%s_%s", - RotMirText, - ShiftXTxt, - ShiftYTxt); - - - stringstream ss; - ss << GeoFileName; - TString FileName = ss.str(); - - TString InFile = FileName + ".gdml"; - cout << " ########## " << InFile << endl; - TString OutFile = FileName + ".root"; - cout << " ########## " << OutFile << endl; - TString vmcDir = TString(gSystem->Getenv("VMCWORKDIR")); - - TGeoManager* gdml = new TGeoManager("gdml", "FAIRGeom"); - - TGDMLParse parser; - // Define your input GDML file HERE - TGeoVolume* gdmlTop = parser.GDMLReadFile(vmcDir + InFile); - TGeoVolume* rootTop = new TGeoVolumeAssembly("TOP"); - - gGeoManager->SetTopVolume(rootTop); - - // Define your position HERE - TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); - TGeoCombiTrans* posrot = new TGeoCombiTrans(0., 0., 270., rot); - - rootTop->AddNode(gdmlTop, 1, posrot); - - gGeoManager->CloseGeometry(); - - // Define you output ROOT file HERE - TFile* outfile = new TFile(vmcDir + OutFile, "RECREATE"); - rootTop->Write(); - outfile->Close(); -} +void Import_GDML_Export_ROOT(float PMTrotX = 5, + float PMTrotY = 5, + int RotMir = -10) { + char RotMirText[256]; + if (RotMir < 0) { + sprintf(RotMirText, "RotMir_m%d", RotMir * -1); + } else { + sprintf(RotMirText, "RotMir_p%d", RotMir); + } + + int ShiftXmod10 = (int(PMTrotX * 10)) % 10; + float IntegerXValue = PMTrotX - (float(ShiftXmod10)) / 10.; + int ShiftYmod10 = (int(PMTrotY * 10)) % 10; + float IntegerYValue = PMTrotY - (float(ShiftYmod10)) / 10.; + + char ShiftXTxt[256]; + char ShiftYTxt[256]; + sprintf(ShiftXTxt, "Xpos%dpoint%d", IntegerXValue, ShiftXmod10); + sprintf(ShiftYTxt, "Ypos%dpoint%d", IntegerYValue, ShiftYmod10); + if (PMTrotY < 0) { + sprintf(ShiftYTxt, "Yneg%dpoint%d", -1. * IntegerYValue, -1. * ShiftYmod10); + } + + char GeoFileName[256]; + sprintf(GeoFileName, + "/geometry/rich/GeoOpt/RotPMT/NewGeo/rich_geo_%s_RotPMT_%s_%s", + RotMirText, + ShiftXTxt, + ShiftYTxt); + + + stringstream ss; + ss << GeoFileName; + TString FileName = ss.str(); + + TString InFile = FileName + ".gdml"; + cout << " ########## " << InFile << endl; + TString OutFile = FileName + ".root"; + cout << " ########## " << OutFile << endl; + TString vmcDir = TString(gSystem->Getenv("VMCWORKDIR")); + + TGeoManager* gdml = new TGeoManager("gdml", "FAIRGeom"); + + TGDMLParse parser; + // Define your input GDML file HERE + TGeoVolume* gdmlTop = parser.GDMLReadFile(vmcDir + InFile); + TGeoVolume* rootTop = new TGeoVolumeAssembly("TOP"); + + gGeoManager->SetTopVolume(rootTop); + + // Define your position HERE + TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); + TGeoCombiTrans* posrot = new TGeoCombiTrans(0., 0., 270., rot); + + rootTop->AddNode(gdmlTop, 1, posrot); + + gGeoManager->CloseGeometry(); + + // Define you output ROOT file HERE + TFile* outfile = new TFile(vmcDir + OutFile, "RECREATE"); + rootTop->Write(); + outfile->Close(); +} diff --git a/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10degLower.txt b/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10degLower.txt index 5d4fd23aea..a9457e1191 100644 --- a/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10degLower.txt +++ b/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10degLower.txt @@ -1,364 +1,364 @@ -</define> - -<materials> -<material name="vacuum" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="aluminium" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="kapton" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHglass" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="CsI" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis+" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="air" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -</materials> - -<solids> -<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_vac_PartBody"> -<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> -<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> -<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_PartBody"> -<first ref="RICH_pipe_RICH_pipe_4"/> -<second ref="RICH_pipe_RICH_pipe_3"/> -<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_entrance_PartBody"> -<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> -<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> -<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> -<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_exit_PartBody"> -<first ref="RICH_covering_exit_RICH_covering_exit_2"/> -<second ref="RICH_covering_exit_RICH_covering_exit_3"/> -<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="27" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="29.527" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.237" deltatheta="29.527" lunit="mm" aunit="degree"/> -<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> -<box name="Sens_plane_3" x="(2468)*2" y="(2875)*2" z="(0.5)*2" lunit="mm"/> -<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="Sens_plane_PartBody"> -<first ref="Sens_plane_3"/> -<second ref="Sens_plane_2"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</subtraction> -<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<union name="RICH_gas_RICH_gas_6"> -<first ref="RICH_gas_RICH_gas_4"/> -<second ref="RICH_gas_RICH_gas_5"/> -<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> -<rotationref ref="identity"/> -</union> -<subtraction name="RICH_gas_PartBody"> -<first ref="RICH_gas_RICH_gas_6"/> -<second ref="RICH_gas_RICH_gas_7"/> -<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> -<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="rich1_PartBody"> -<first ref="rich1_rich1_16"/> -<second ref="rich1_rich1_17"/> -<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</union> -</solids> - -<structure> -<volume name="RICH_pipe_vac"> -<materialref ref="vacuum"/> -<solidref ref="RICH_pipe_vac_PartBody"/> -</volume> -<volume name="RICH_pipe"> -<materialref ref="aluminium"/> -<solidref ref="RICH_pipe_PartBody"/> -<physvol> -<volumeref ref="RICH_pipe_vac"/> -<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_covering_entrance"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_entrance_PartBody"/> -</volume> -<volume name="RICH_covering_sloping"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_sloping_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_1"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_1_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_2"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_2_PartBody"/> -</volume> -<volume name="RICH_covering_side"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_side_PartBody"/> -</volume> -<volume name="RICH_covering_exit"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_exit_PartBody"/> -</volume> -<volume name="RICH_mirror_1"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_1_PartBody"/> -</volume> -<volume name="RICH_mirror_2"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_2_PartBody"/> -</volume> -<volume name="RICH_mirror_3"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_3_PartBody"/> -</volume> -<volume name="RICH_mirror_and_support_belt_strip_cut"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_3"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_and_support_belt_strip"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_replica"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_replica_PartBody"/> -<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -</divisionvol> -</volume> -<assembly name="RICH_mirror_half_total"> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-179.999999999029" y="179.999999999" z="180.000000001029" unit="deg"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="1.41087114226969E-09" z="318.940000001" unit="deg"/> -</physvol> -</assembly> -<volume name="rich1d"> -<materialref ref="CsI"/> -<solidref ref="rich1d_PartBody"/> -</volume> -<volume name="Sens_plane"> -<materialref ref="RICHgas_CO2_dis+"/> -<solidref ref="Sens_plane_PartBody"/> -</volume> -<volume name="RICH_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_gas_PartBody"/> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="Sens_plane"/> -<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="700" unit="mm"/> -<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="rich1"> -<materialref ref="air"/> -<solidref ref="rich1_PartBody"/> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_entrance"/> -<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_exit"/> -<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_pipe"/> -<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_gas"/> -<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<!-- -<assembly name="TOP"> -<physvol> -<volumeref ref="rich1"/> -<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> -<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</assembly> ---> -</structure> - -<setup name="FAIRgeom" version="1.0"> -<world ref="rich1"/> -<!--<world ref="TOP"/>--> -</setup> - -</gdml> +</define> + +<materials> +<material name="vacuum" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="aluminium" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="kapton" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHglass" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="CsI" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis+" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="air" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +</materials> + +<solids> +<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_vac_PartBody"> +<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> +<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> +<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_PartBody"> +<first ref="RICH_pipe_RICH_pipe_4"/> +<second ref="RICH_pipe_RICH_pipe_3"/> +<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_entrance_PartBody"> +<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> +<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> +<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> +<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_exit_PartBody"> +<first ref="RICH_covering_exit_RICH_covering_exit_2"/> +<second ref="RICH_covering_exit_RICH_covering_exit_3"/> +<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="27" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.237" deltatheta="29.527" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.237" deltatheta="29.527" lunit="mm" aunit="degree"/> +<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> +<box name="Sens_plane_3" x="(2468)*2" y="(2875)*2" z="(0.5)*2" lunit="mm"/> +<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="Sens_plane_PartBody"> +<first ref="Sens_plane_3"/> +<second ref="Sens_plane_2"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</subtraction> +<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<union name="RICH_gas_RICH_gas_6"> +<first ref="RICH_gas_RICH_gas_4"/> +<second ref="RICH_gas_RICH_gas_5"/> +<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> +<rotationref ref="identity"/> +</union> +<subtraction name="RICH_gas_PartBody"> +<first ref="RICH_gas_RICH_gas_6"/> +<second ref="RICH_gas_RICH_gas_7"/> +<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> +<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="rich1_PartBody"> +<first ref="rich1_rich1_16"/> +<second ref="rich1_rich1_17"/> +<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</union> +</solids> + +<structure> +<volume name="RICH_pipe_vac"> +<materialref ref="vacuum"/> +<solidref ref="RICH_pipe_vac_PartBody"/> +</volume> +<volume name="RICH_pipe"> +<materialref ref="aluminium"/> +<solidref ref="RICH_pipe_PartBody"/> +<physvol> +<volumeref ref="RICH_pipe_vac"/> +<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_covering_entrance"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_entrance_PartBody"/> +</volume> +<volume name="RICH_covering_sloping"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_sloping_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_1"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_1_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_2"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_2_PartBody"/> +</volume> +<volume name="RICH_covering_side"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_side_PartBody"/> +</volume> +<volume name="RICH_covering_exit"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_exit_PartBody"/> +</volume> +<volume name="RICH_mirror_1"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_1_PartBody"/> +</volume> +<volume name="RICH_mirror_2"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_2_PartBody"/> +</volume> +<volume name="RICH_mirror_3"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_3_PartBody"/> +</volume> +<volume name="RICH_mirror_and_support_belt_strip_cut"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_3"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_and_support_belt_strip"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_replica"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_replica_PartBody"/> +<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +</divisionvol> +</volume> +<assembly name="RICH_mirror_half_total"> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-179.999999999029" y="179.999999999" z="180.000000001029" unit="deg"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="1.41087114226969E-09" z="318.940000001" unit="deg"/> +</physvol> +</assembly> +<volume name="rich1d"> +<materialref ref="CsI"/> +<solidref ref="rich1d_PartBody"/> +</volume> +<volume name="Sens_plane"> +<materialref ref="RICHgas_CO2_dis+"/> +<solidref ref="Sens_plane_PartBody"/> +</volume> +<volume name="RICH_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_gas_PartBody"/> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="Sens_plane"/> +<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="700" unit="mm"/> +<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="rich1"> +<materialref ref="air"/> +<solidref ref="rich1_PartBody"/> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_entrance"/> +<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_exit"/> +<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_pipe"/> +<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_gas"/> +<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<!-- +<assembly name="TOP"> +<physvol> +<volumeref ref="rich1"/> +<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> +<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</assembly> +--> +</structure> + +<setup name="FAIRgeom" version="1.0"> +<world ref="rich1"/> +<!--<world ref="TOP"/>--> +</setup> + +</gdml> diff --git a/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_.gdml b/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_.gdml index 58416b9b62..a226f2512e 100644 --- a/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_.gdml +++ b/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_.gdml @@ -1,409 +1,409 @@ -<?xml version="1.0" encoding="UTF-8"?> -<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> - -<define> -<position name="central" x="0" y="0" z="0" unit="mm"/> -<rotation name="identity" x="0" y="0" z="0" unit="degree"/> -<variable name="RICH_trapezoid_angle" value="116"/> -<variable name="RICH_entrance_width" value="3500"/> -<variable name="RICH_exit_width" value="5136"/> -<variable name="RICH_height" value="6000"/> -<variable name="RICH_length" value="2197.5"/> -<variable name="RICH_covering_thickness" value="5"/> -<variable name="entrance_width_addend" value="2"/> -<variable name="RICH_pipe_entrance_r" value="103.5"/> -<variable name="RICH_pipe_exit_r" value="170"/> -<variable name="RICH_pipe_entrance_thickness" value="3"/> -<variable name="RICH_pipe_exit_thickness" value="5"/> -<variable name="RICH_pipe_angle" value="0"/> -<variable name="RICH_position_from_IP" value="1502"/> -<variable name="RICH_mirror_position_from_IP" value="3500"/> -<variable name="RICH_mirror_r" value="3000"/> -<variable name="RICH_mirror_thickness" value="6"/> -<variable name="mirror_cont_supp_addend_out" value="6"/> -<variable name="TTT" value="1500"/> - -<!-- -minus 10deg setup: -<variable name="RICH_mirror_Y_shift" value="805"/> -<variable name="RICH_mirror_angle" value="-10"/> -<variable name="pmt_rot_x_addend" value="-27.952765"/> -<variable name="pmt_rot_y_addend" value="-13.477"/> -<variable name="pmt_pos_x_addend" value="0"/> -<variable name="pmt_pos_y_addend" value="0"/> -<variable name="pmt_pos_z_addend" value="0"/> - -plus 1deg setup: ---> - -<variable name="RICH_mirror_Y_shift" value="805"/> - -<variable name="pmt_pos_x_addend" value="0"/> -<variable name="pmt_pos_y_addend" value="0"/> - -<variable name="kapton_thickness" value="0.25"/> -<variable name="DEGtoRAD" value="1.74532925199433E-02"/> -</define> - -<materials> -<material name="vacuum" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="aluminium" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="kapton" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHglass" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="CsI" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis+" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="air" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -</materials> - -<solids> -<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_vac_PartBody"> -<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> -<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> -<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_PartBody"> -<first ref="RICH_pipe_RICH_pipe_4"/> -<second ref="RICH_pipe_RICH_pipe_3"/> -<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_entrance_PartBody"> -<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> -<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> -<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> -<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_exit_PartBody"> -<first ref="RICH_covering_exit_RICH_covering_exit_2"/> -<second ref="RICH_covering_exit_RICH_covering_exit_3"/> -<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="27" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> -<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> -<box name="Sens_plane_3" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="(0.5)*2" lunit="mm"/> -<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="Sens_plane_PartBody"> -<first ref="Sens_plane_3"/> -<second ref="Sens_plane_2"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</subtraction> -<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<union name="RICH_gas_RICH_gas_6"> -<first ref="RICH_gas_RICH_gas_4"/> -<second ref="RICH_gas_RICH_gas_5"/> -<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> -<rotationref ref="identity"/> -</union> -<subtraction name="RICH_gas_PartBody"> -<first ref="RICH_gas_RICH_gas_6"/> -<second ref="RICH_gas_RICH_gas_7"/> -<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> -<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="rich1_PartBody"> -<first ref="rich1_rich1_16"/> -<second ref="rich1_rich1_17"/> -<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</union> -</solids> - -<structure> -<volume name="RICH_pipe_vac"> -<materialref ref="vacuum"/> -<solidref ref="RICH_pipe_vac_PartBody"/> -</volume> -<volume name="RICH_pipe"> -<materialref ref="aluminium"/> -<solidref ref="RICH_pipe_PartBody"/> -<physvol> -<volumeref ref="RICH_pipe_vac"/> -<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_covering_entrance"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_entrance_PartBody"/> -</volume> -<volume name="RICH_covering_sloping"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_sloping_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_1"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_1_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_2"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_2_PartBody"/> -</volume> -<volume name="RICH_covering_side"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_side_PartBody"/> -</volume> -<volume name="RICH_covering_exit"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_exit_PartBody"/> -</volume> -<volume name="RICH_mirror_1"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_1_PartBody"/> -</volume> -<volume name="RICH_mirror_2"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_2_PartBody"/> -</volume> -<volume name="RICH_mirror_3"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_3_PartBody"/> -</volume> -<volume name="RICH_mirror_and_support_belt_strip_cut"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_3"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_and_support_belt_strip"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_replica"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_replica_PartBody"/> -<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -</divisionvol> -</volume> -<assembly name="RICH_mirror_half_total"> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-180" y="180" z="180" unit="deg"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="0" z="318.94" unit="deg"/> -</physvol> -</assembly> -<volume name="rich1d"> -<materialref ref="CsI"/> -<solidref ref="rich1d_PartBody"/> -</volume> -<volume name="Sens_plane"> -<materialref ref="RICHgas_CO2_dis+"/> -<solidref ref="Sens_plane_PartBody"/> -</volume> -<volume name="RICH_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_gas_PartBody"/> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="Sens_plane"/> -<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="930" unit="mm"/> -<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="rich1"> -<materialref ref="air"/> -<solidref ref="rich1_PartBody"/> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_entrance"/> -<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_exit"/> -<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_pipe"/> -<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_gas"/> -<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<!-- -<assembly name="TOP"> -<physvol> -<volumeref ref="rich1"/> -<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> -<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</assembly> ---> -</structure> - -<setup name="FAIRgeom" version="1.0"> -<world ref="rich1"/> -<!--<world ref="TOP"/>--> -</setup> - -</gdml> +<?xml version="1.0" encoding="UTF-8"?> +<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> + +<define> +<position name="central" x="0" y="0" z="0" unit="mm"/> +<rotation name="identity" x="0" y="0" z="0" unit="degree"/> +<variable name="RICH_trapezoid_angle" value="116"/> +<variable name="RICH_entrance_width" value="3500"/> +<variable name="RICH_exit_width" value="5136"/> +<variable name="RICH_height" value="6000"/> +<variable name="RICH_length" value="2197.5"/> +<variable name="RICH_covering_thickness" value="5"/> +<variable name="entrance_width_addend" value="2"/> +<variable name="RICH_pipe_entrance_r" value="103.5"/> +<variable name="RICH_pipe_exit_r" value="170"/> +<variable name="RICH_pipe_entrance_thickness" value="3"/> +<variable name="RICH_pipe_exit_thickness" value="5"/> +<variable name="RICH_pipe_angle" value="0"/> +<variable name="RICH_position_from_IP" value="1502"/> +<variable name="RICH_mirror_position_from_IP" value="3500"/> +<variable name="RICH_mirror_r" value="3000"/> +<variable name="RICH_mirror_thickness" value="6"/> +<variable name="mirror_cont_supp_addend_out" value="6"/> +<variable name="TTT" value="1500"/> + +<!-- +minus 10deg setup: +<variable name="RICH_mirror_Y_shift" value="805"/> +<variable name="RICH_mirror_angle" value="-10"/> +<variable name="pmt_rot_x_addend" value="-27.952765"/> +<variable name="pmt_rot_y_addend" value="-13.477"/> +<variable name="pmt_pos_x_addend" value="0"/> +<variable name="pmt_pos_y_addend" value="0"/> +<variable name="pmt_pos_z_addend" value="0"/> + +plus 1deg setup: +--> + +<variable name="RICH_mirror_Y_shift" value="805"/> + +<variable name="pmt_pos_x_addend" value="0"/> +<variable name="pmt_pos_y_addend" value="0"/> + +<variable name="kapton_thickness" value="0.25"/> +<variable name="DEGtoRAD" value="1.74532925199433E-02"/> +</define> + +<materials> +<material name="vacuum" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="aluminium" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="kapton" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHglass" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="CsI" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis+" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="air" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +</materials> + +<solids> +<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_vac_PartBody"> +<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> +<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> +<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_PartBody"> +<first ref="RICH_pipe_RICH_pipe_4"/> +<second ref="RICH_pipe_RICH_pipe_3"/> +<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_entrance_PartBody"> +<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> +<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> +<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> +<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_exit_PartBody"> +<first ref="RICH_covering_exit_RICH_covering_exit_2"/> +<second ref="RICH_covering_exit_RICH_covering_exit_3"/> +<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="27" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> +<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> +<box name="Sens_plane_3" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="(0.5)*2" lunit="mm"/> +<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="Sens_plane_PartBody"> +<first ref="Sens_plane_3"/> +<second ref="Sens_plane_2"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</subtraction> +<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<union name="RICH_gas_RICH_gas_6"> +<first ref="RICH_gas_RICH_gas_4"/> +<second ref="RICH_gas_RICH_gas_5"/> +<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> +<rotationref ref="identity"/> +</union> +<subtraction name="RICH_gas_PartBody"> +<first ref="RICH_gas_RICH_gas_6"/> +<second ref="RICH_gas_RICH_gas_7"/> +<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> +<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="rich1_PartBody"> +<first ref="rich1_rich1_16"/> +<second ref="rich1_rich1_17"/> +<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</union> +</solids> + +<structure> +<volume name="RICH_pipe_vac"> +<materialref ref="vacuum"/> +<solidref ref="RICH_pipe_vac_PartBody"/> +</volume> +<volume name="RICH_pipe"> +<materialref ref="aluminium"/> +<solidref ref="RICH_pipe_PartBody"/> +<physvol> +<volumeref ref="RICH_pipe_vac"/> +<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_covering_entrance"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_entrance_PartBody"/> +</volume> +<volume name="RICH_covering_sloping"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_sloping_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_1"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_1_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_2"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_2_PartBody"/> +</volume> +<volume name="RICH_covering_side"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_side_PartBody"/> +</volume> +<volume name="RICH_covering_exit"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_exit_PartBody"/> +</volume> +<volume name="RICH_mirror_1"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_1_PartBody"/> +</volume> +<volume name="RICH_mirror_2"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_2_PartBody"/> +</volume> +<volume name="RICH_mirror_3"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_3_PartBody"/> +</volume> +<volume name="RICH_mirror_and_support_belt_strip_cut"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_3"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_and_support_belt_strip"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_replica"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_replica_PartBody"/> +<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +</divisionvol> +</volume> +<assembly name="RICH_mirror_half_total"> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-180" y="180" z="180" unit="deg"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="0" z="318.94" unit="deg"/> +</physvol> +</assembly> +<volume name="rich1d"> +<materialref ref="CsI"/> +<solidref ref="rich1d_PartBody"/> +</volume> +<volume name="Sens_plane"> +<materialref ref="RICHgas_CO2_dis+"/> +<solidref ref="Sens_plane_PartBody"/> +</volume> +<volume name="RICH_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_gas_PartBody"/> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="Sens_plane"/> +<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="930" unit="mm"/> +<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="rich1"> +<materialref ref="air"/> +<solidref ref="rich1_PartBody"/> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_entrance"/> +<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_exit"/> +<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_pipe"/> +<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_gas"/> +<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<!-- +<assembly name="TOP"> +<physvol> +<volumeref ref="rich1"/> +<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> +<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</assembly> +--> +</structure> + +<setup name="FAIRgeom" version="1.0"> +<world ref="rich1"/> +<!--<world ref="TOP"/>--> +</setup> + +</gdml> diff --git a/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_LowerPart.gdml b/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_LowerPart.gdml index 8492d306d8..47e289f01e 100644 --- a/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_LowerPart.gdml +++ b/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_LowerPart.gdml @@ -1,365 +1,365 @@ - -</define> - -<materials> -<material name="vacuum" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="aluminium" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="kapton" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHglass" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="CsI" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis+" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="air" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -</materials> - -<solids> -<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_vac_PartBody"> -<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> -<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> -<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="RICH_pipe_PartBody"> -<first ref="RICH_pipe_RICH_pipe_4"/> -<second ref="RICH_pipe_RICH_pipe_3"/> -<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> -</union> -<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_entrance_PartBody"> -<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> -<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> -<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> -<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> -<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="RICH_covering_exit_PartBody"> -<first ref="RICH_covering_exit_RICH_covering_exit_2"/> -<second ref="RICH_covering_exit_RICH_covering_exit_3"/> -<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="27" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> -<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> -<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> -<box name="Sens_plane_3" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="(0.5)*2" lunit="mm"/> -<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<subtraction name="Sens_plane_PartBody"> -<first ref="Sens_plane_3"/> -<second ref="Sens_plane_2"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</subtraction> -<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> -<union name="RICH_gas_RICH_gas_6"> -<first ref="RICH_gas_RICH_gas_4"/> -<second ref="RICH_gas_RICH_gas_5"/> -<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> -<rotationref ref="identity"/> -</union> -<subtraction name="RICH_gas_PartBody"> -<first ref="RICH_gas_RICH_gas_6"/> -<second ref="RICH_gas_RICH_gas_7"/> -<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> -<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</subtraction> -<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> -<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> -<union name="rich1_PartBody"> -<first ref="rich1_rich1_16"/> -<second ref="rich1_rich1_17"/> -<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> -</union> -</solids> - -<structure> -<volume name="RICH_pipe_vac"> -<materialref ref="vacuum"/> -<solidref ref="RICH_pipe_vac_PartBody"/> -</volume> -<volume name="RICH_pipe"> -<materialref ref="aluminium"/> -<solidref ref="RICH_pipe_PartBody"/> -<physvol> -<volumeref ref="RICH_pipe_vac"/> -<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_covering_entrance"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_entrance_PartBody"/> -</volume> -<volume name="RICH_covering_sloping"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_sloping_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_1"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_1_PartBody"/> -</volume> -<volume name="RICH_covering_top_bottom_2"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_top_bottom_2_PartBody"/> -</volume> -<volume name="RICH_covering_side"> -<materialref ref="aluminium"/> -<solidref ref="RICH_covering_side_PartBody"/> -</volume> -<volume name="RICH_covering_exit"> -<materialref ref="kapton"/> -<solidref ref="RICH_covering_exit_PartBody"/> -</volume> -<volume name="RICH_mirror_1"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_1_PartBody"/> -</volume> -<volume name="RICH_mirror_2"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_2_PartBody"/> -</volume> -<volume name="RICH_mirror_3"> -<materialref ref="RICHglass"/> -<solidref ref="RICH_mirror_3_PartBody"/> -</volume> -<volume name="RICH_mirror_and_support_belt_strip_cut"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_3"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_and_support_belt_strip"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_1"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_2"/> -<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="RICH_mirror_replica"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_mirror_replica_PartBody"/> -<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> -<volumeref ref="RICH_mirror_and_support_belt_strip"/> -</divisionvol> -</volume> -<assembly name="RICH_mirror_half_total"> -<physvol> -<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> -<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-180" y="180" z="180" unit="deg"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_replica"/> -<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> -<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="0" z="318.94" unit="deg"/> -</physvol> -</assembly> -<volume name="rich1d"> -<materialref ref="CsI"/> -<solidref ref="rich1d_PartBody"/> -</volume> -<volume name="Sens_plane"> -<materialref ref="RICHgas_CO2_dis+"/> -<solidref ref="Sens_plane_PartBody"/> -</volume> -<volume name="RICH_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="RICH_gas_PartBody"/> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="rich1d"/> -<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> -<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_mirror_half_total"/> -<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> -<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="Sens_plane"/> -<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="1430" unit="mm"/> -<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<volume name="rich1"> -<materialref ref="air"/> -<solidref ref="rich1_PartBody"/> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_1"/> -<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_top_bottom_2"/> -<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_side"/> -<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_entrance"/> -<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_exit"/> -<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_covering_sloping"/> -<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_pipe"/> -<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> -<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> -</physvol> -<physvol> -<volumeref ref="RICH_gas"/> -<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> -<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</volume> -<!-- -<assembly name="TOP"> -<physvol> -<volumeref ref="rich1"/> -<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> -<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> -</physvol> -</assembly> ---> -</structure> - -<setup name="FAIRgeom" version="1.0"> -<world ref="rich1"/> -<!--<world ref="TOP"/>--> -</setup> - -</gdml> + +</define> + +<materials> +<material name="vacuum" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="aluminium" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="kapton" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHglass" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="CsI" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis+" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="air" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +</materials> + +<solids> +<cone name="RICH_pipe_vac_RICH_pipe_vac_2" rmin1="0" rmax1="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)" rmin2="0" rmax2="(RICH_pipe_exit_r-RICH_pipe_exit_thickness)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_vac_RICH_pipe_vac_3" rmin="0" rmax="(RICH_pipe_entrance_r-RICH_pipe_entrance_thickness)*cos((RICH_pipe_angle)*DEGtoRAD)" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_vac_PartBody"> +<first ref="RICH_pipe_vac_RICH_pipe_vac_2"/> +<second ref="RICH_pipe_vac_RICH_pipe_vac_3"/> +<position name="RICH_pipe_vac__position__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe_vac__rotation__RICH_pipe_vac_3__by__RICH_pipe_vac_2" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<cone name="RICH_pipe_RICH_pipe_4" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<tube name="RICH_pipe_RICH_pipe_3" rmin="0" rmax="(RICH_pipe_entrance_r*cos((RICH_pipe_angle)*DEGtoRAD))" z="(1.5)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="RICH_pipe_PartBody"> +<first ref="RICH_pipe_RICH_pipe_4"/> +<second ref="RICH_pipe_RICH_pipe_3"/> +<position name="RICH_pipe__position__RICH_pipe_3__by__RICH_pipe_4" x="((49.5-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD)))*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)+(RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))-0.5)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="RICH_pipe__rotation__RICH_pipe_3__by__RICH_pipe_4" x="0" y="(-RICH_pipe_angle)" z="0" unit="degree"/> +</union> +<box name="RICH_covering_entrance_RICH_covering_entrance_2" x="((RICH_entrance_width/2+RICH_covering_thickness+entrance_width_addend))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_entrance_RICH_covering_entrance_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_entrance_PartBody"> +<first ref="RICH_covering_entrance_RICH_covering_entrance_2"/> +<second ref="RICH_covering_entrance_RICH_covering_entrance_3"/> +<position name="RICH_covering_entrance__position__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(RICH_length/2+kapton_thickness/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_entrance__rotation__RICH_covering_entrance_3__by__RICH_covering_entrance_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<trap name="RICH_covering_sloping_PartBody" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" theta="(atan(tan((RICH_trapezoid_angle/2)*DEGtoRAD)*(RICH_exit_width-RICH_entrance_width-entrance_width_addend)/(RICH_exit_width-RICH_entrance_width))/DEGtoRAD)" phi="0" y1="((RICH_height/2+RICH_covering_thickness))*2" x1="((RICH_covering_thickness/2+entrance_width_addend/2))*2" x2="((RICH_covering_thickness/2+entrance_width_addend/2))*2" alpha1="0" y2="((RICH_height/2+RICH_covering_thickness))*2" x3="((RICH_covering_thickness/2))*2" x4="((RICH_covering_thickness/2))*2" alpha2="0" lunit="mm" aunit="degree"/> +<trd name="RICH_covering_top_bottom_1_PartBody" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_covering_thickness/2))*2" y2="((RICH_covering_thickness/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_top_bottom_2_PartBody" x="((RICH_exit_width/2))*2" y="((RICH_covering_thickness/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_side_PartBody" x="((RICH_covering_thickness/2))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<box name="RICH_covering_exit_RICH_covering_exit_2" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness/2))*2" lunit="mm"/> +<cone name="RICH_covering_exit_RICH_covering_exit_3" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="RICH_covering_exit_PartBody"> +<first ref="RICH_covering_exit_RICH_covering_exit_2"/> +<second ref="RICH_covering_exit_RICH_covering_exit_3"/> +<position name="RICH_covering_exit__position__RICH_covering_exit_3__by__RICH_covering_exit_2" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-kapton_thickness/2-(RICH_pipe_entrance_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_covering_exit__rotation__RICH_covering_exit_3__by__RICH_covering_exit_2" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<sphere name="RICH_mirror_1_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="6.52" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_2_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="90.038" deltatheta="8.118" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_3_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+RICH_mirror_thickness)" startphi="-4.106" deltaphi="8.212" starttheta="98.233" deltatheta="4" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_cut_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="27" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_and_support_belt_strip_PartBody" rmin="(RICH_mirror_r)" rmax="(RICH_mirror_r+mirror_cont_supp_addend_out)" startphi="-4.106" deltaphi="8.212" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> +<sphere name="RICH_mirror_replica_PartBody" rmin="(RICH_mirror_r)" rmax="((RICH_mirror_r+mirror_cont_supp_addend_out))" startphi="-36.954" deltaphi="32.848" starttheta="75.2365" deltatheta="29.527" lunit="mm" aunit="degree"/> +<box name="rich1d_PartBody" x="((pmt_width/2))*2" y="((pmt_height/2))*2" z="((pmt_thickness/2))*2" lunit="mm"/> +<box name="Sens_plane_3" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="(0.5)*2" lunit="mm"/> +<tube name="Sens_plane_2" rmin="0" rmax="160" z="(1)*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<subtraction name="Sens_plane_PartBody"> +<first ref="Sens_plane_3"/> +<second ref="Sens_plane_2"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</subtraction> +<box name="RICH_gas_RICH_gas_5" x="((RICH_exit_width/2))*2" y="((RICH_height/2))*2" z="((RICH_length/2-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<cone name="RICH_gas_RICH_gas_7" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<trd name="RICH_gas_RICH_gas_4" x1="((RICH_entrance_width/2))*2" x2="((RICH_exit_width/2))*2" y1="((RICH_height/2))*2" y2="((RICH_height/2))*2" z="((((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2))*2" lunit="mm"/> +<union name="RICH_gas_RICH_gas_6"> +<first ref="RICH_gas_RICH_gas_4"/> +<second ref="RICH_gas_RICH_gas_5"/> +<position name="RICH_gas__position__RICH_gas_5__by__RICH_gas_4" x="0" y="0" z="(RICH_length/2)" unit="mm"/> +<rotationref ref="identity"/> +</union> +<subtraction name="RICH_gas_PartBody"> +<first ref="RICH_gas_RICH_gas_6"/> +<second ref="RICH_gas_RICH_gas_7"/> +<position name="RICH_gas__position__RICH_gas_7__by__RICH_gas_6" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2+RICH_length/2+(RICH_pipe_exit_r-(RICH_pipe_entrance_r+RICH_pipe_exit_r)/2)*abs(sin((RICH_pipe_angle)*DEGtoRAD)))" unit="mm"/> +<rotation name="RICH_gas__rotation__RICH_gas_7__by__RICH_gas_6" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</subtraction> +<box name="rich1_rich1_16" x="((RICH_exit_width/2+RICH_covering_thickness))*2" y="((RICH_height/2+RICH_covering_thickness))*2" z="((kapton_thickness+RICH_length/2+1))*2" lunit="mm"/> +<cone name="rich1_rich1_17" rmin1="0" rmax1="(RICH_pipe_entrance_r)" rmin2="0" rmax2="(RICH_pipe_exit_r)" z="(((RICH_length/2+kapton_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2))*2" startphi="0" deltaphi="360" lunit="mm" aunit="degree"/> +<union name="rich1_PartBody"> +<first ref="rich1_rich1_16"/> +<second ref="rich1_rich1_17"/> +<position name="rich1__position__rich1_17__by__rich1_16" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1__rotation__rich1_17__by__rich1_16" x="0" y="(RICH_pipe_angle)" z="0" unit="degree"/> +</union> +</solids> + +<structure> +<volume name="RICH_pipe_vac"> +<materialref ref="vacuum"/> +<solidref ref="RICH_pipe_vac_PartBody"/> +</volume> +<volume name="RICH_pipe"> +<materialref ref="aluminium"/> +<solidref ref="RICH_pipe_PartBody"/> +<physvol> +<volumeref ref="RICH_pipe_vac"/> +<position name="RICH_pipe_pos_RICH_pipe_vac_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_pipe_rot_RICH_pipe_vac_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_covering_entrance"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_entrance_PartBody"/> +</volume> +<volume name="RICH_covering_sloping"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_sloping_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_1"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_1_PartBody"/> +</volume> +<volume name="RICH_covering_top_bottom_2"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_top_bottom_2_PartBody"/> +</volume> +<volume name="RICH_covering_side"> +<materialref ref="aluminium"/> +<solidref ref="RICH_covering_side_PartBody"/> +</volume> +<volume name="RICH_covering_exit"> +<materialref ref="kapton"/> +<solidref ref="RICH_covering_exit_PartBody"/> +</volume> +<volume name="RICH_mirror_1"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_1_PartBody"/> +</volume> +<volume name="RICH_mirror_2"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_2_PartBody"/> +</volume> +<volume name="RICH_mirror_3"> +<materialref ref="RICHglass"/> +<solidref ref="RICH_mirror_3_PartBody"/> +</volume> +<volume name="RICH_mirror_and_support_belt_strip_cut"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_cut_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_3"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_3_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_3_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_cut_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_cut_rot_RICH_mirror_1_1" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_and_support_belt_strip"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_and_support_belt_strip_PartBody"/> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_1"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_1_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_1_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_2"/> +<position name="RICH_mirror_and_support_belt_strip_pos_RICH_mirror_2_2" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_and_support_belt_strip_rot_RICH_mirror_2_2" x="-180" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="RICH_mirror_replica"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_mirror_replica_PartBody"/> +<divisionvol number="4" offset="0" width=" 8.212" axis="kPhi" unit="degree"> +<volumeref ref="RICH_mirror_and_support_belt_strip"/> +</divisionvol> +</volume> +<assembly name="RICH_mirror_half_total"> +<physvol> +<volumeref ref="RICH_mirror_and_support_belt_strip_cut"/> +<position name="RICH_mirror_half_total_pos_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total_rot_RICH_mirror_and_support_belt_strip_cut_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_0" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_0" x="-180" y="180" z="180" unit="deg"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_replica"/> +<position name="RICH_mirror_half_total__pos__RICH_mirror_replica_1" x="0" y="0" z="0" unit="mm"/> +<rotation name="RICH_mirror_half_total__rot__RICH_mirror_replica_1" x="0" y="0" z="318.94" unit="deg"/> +</physvol> +</assembly> +<volume name="rich1d"> +<materialref ref="CsI"/> +<solidref ref="rich1d_PartBody"/> +</volume> +<volume name="Sens_plane"> +<materialref ref="RICHgas_CO2_dis+"/> +<solidref ref="Sens_plane_PartBody"/> +</volume> +<volume name="RICH_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="RICH_gas_PartBody"/> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_1" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_1" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_2" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_2" x="-(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_3" x="((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_3" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(18.477+pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="rich1d"/> +<position name="RICH_gas_pos_rich1d_4" x="-((pmt_width/2)+10+pmt_pos_x_addend)" y="-(RICH_mirror_Y_shift+sin((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT+pmt_pos_y_addend)" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_position_from_IP+(RICH_mirror_position_from_IP-cos((atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle)*DEGtoRAD)*TTT)*cos((18.477)*DEGtoRAD)+pmt_pos_z_addend)" unit="mm"/> +<rotation name="RICH_gas_rot_rich1d_4" x="(atan(RICH_mirror_Y_shift/RICH_mirror_position_from_IP)/DEGtoRAD-2*RICH_mirror_angle+pmt_rot_x_addend)" y="-(-18.477-pmt_rot_y_addend)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_1" x="0" y="(-RICH_mirror_Y_shift+RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_1" x="-(90+RICH_mirror_angle)" y="0" z="-90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_mirror_half_total"/> +<position name="RICH_gas_pos_RICH_mirror_half_total_2" x="0" y="(RICH_mirror_Y_shift-RICH_mirror_r*sin((RICH_mirror_angle)*DEGtoRAD))" z="(-(RICH_exit_width-RICH_entrance_width)/(4*tan((RICH_trapezoid_angle/2)*DEGtoRAD))-RICH_mirror_r*cos((RICH_mirror_angle)*DEGtoRAD)+RICH_mirror_position_from_IP-RICH_position_from_IP-RICH_covering_thickness)" unit="mm"/> +<rotation name="RICH_gas_rot_RICH_mirror_half_total_2" x="-(-90-RICH_mirror_angle)" y="0" z="90" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="Sens_plane"/> +<position name="RICH_gas_pos_Sens_plane_1" x="0" y="0" z="1430" unit="mm"/> +<rotation name="RICH_gas_rot_Sens_plane_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<volume name="rich1"> +<materialref ref="air"/> +<solidref ref="rich1_PartBody"/> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_1"/> +<position name="rich1_pos_RICH_covering_top_bottom_1_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_1_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_1" x="0" y="(RICH_height/2+RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_top_bottom_2"/> +<position name="rich1_pos_RICH_covering_top_bottom_2_2" x="0" y="(-RICH_height/2-RICH_covering_thickness/2)" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_top_bottom_2_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_1" x="(-RICH_exit_width/2-RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_side"/> +<position name="rich1_pos_RICH_covering_side_2" x="(RICH_exit_width/2+RICH_covering_thickness/2)" y="0" z="(1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_side_2" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_entrance"/> +<position name="rich1_pos_RICH_covering_entrance_1" x="0" y="0" z="(-RICH_length/2+1-kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_entrance_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_exit"/> +<position name="rich1_pos_RICH_covering_exit_1" x="0" y="0" z="(RICH_length/2+1+kapton_thickness/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_exit_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_1" x="((RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_covering_sloping"/> +<position name="rich1_pos_RICH_covering_sloping_2" x="(-(RICH_entrance_width+RICH_exit_width+2*RICH_covering_thickness+entrance_width_addend)/4)" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_covering_sloping_2" x="0" y="0" z="-180" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_pipe"/> +<position name="rich1_pos_RICH_pipe_1" x="(((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*sin((RICH_pipe_angle)*DEGtoRAD))" y="0" z="(-RICH_length/2-RICH_pipe_entrance_r*abs(sin((RICH_pipe_angle)*DEGtoRAD))+1-RICH_covering_thickness+((RICH_length/2+RICH_covering_thickness)/cos((RICH_pipe_angle)*DEGtoRAD)+(RICH_pipe_entrance_r+RICH_pipe_exit_r)*abs(tan((RICH_pipe_angle)*DEGtoRAD))/2)*cos((RICH_pipe_angle)*DEGtoRAD))" unit="mm"/> +<rotation name="rich1_rot_RICH_pipe_1" x="0" y="-(RICH_pipe_angle)" z="0" unit="degree"/> +</physvol> +<physvol> +<volumeref ref="RICH_gas"/> +<position name="rich1_pos_RICH_gas_1" x="0" y="0" z="(-RICH_length/2+1+((RICH_exit_width-RICH_entrance_width)/2)/tan((RICH_trapezoid_angle/2)*DEGtoRAD)/2)" unit="mm"/> +<rotation name="rich1_rot_RICH_gas_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</volume> +<!-- +<assembly name="TOP"> +<physvol> +<volumeref ref="rich1"/> +<position name="TOP_pos_rich1_1" x="0" y="0" z="(RICH_position_from_IP+kapton_thickness+RICH_length/2-1)" unit="mm"/> +<rotation name="TOP_rot_rich1_1" x="0" y="0" z="0" unit="degree"/> +</physvol> +</assembly> +--> +</structure> + +<setup name="FAIRgeom" version="1.0"> +<world ref="rich1"/> +<!--<world ref="TOP"/>--> +</setup> + +</gdml> diff --git a/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_UpperPart.gdml b/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_UpperPart.gdml index be65c6b653..484260818b 100644 --- a/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_UpperPart.gdml +++ b/macro/rich/geotest/TransPMT/CreateGeo/2015_minus10deg_UpperPart.gdml @@ -1,46 +1,46 @@ -<?xml version="1.0" encoding="UTF-8"?> -<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> - -<define> -<position name="central" x="0" y="0" z="0" unit="mm"/> -<rotation name="identity" x="0" y="0" z="0" unit="degree"/> -<variable name="RICH_trapezoid_angle" value="116"/> -<variable name="RICH_entrance_width" value="3500"/> -<variable name="RICH_exit_width" value="5136"/> -<variable name="RICH_height" value="6000"/> -<variable name="RICH_length" value="2697.5"/> -<variable name="RICH_covering_thickness" value="5"/> -<variable name="entrance_width_addend" value="2"/> -<variable name="RICH_pipe_entrance_r" value="103.5"/> -<variable name="RICH_pipe_exit_r" value="170"/> -<variable name="RICH_pipe_entrance_thickness" value="3"/> -<variable name="RICH_pipe_exit_thickness" value="5"/> -<variable name="RICH_pipe_angle" value="0"/> -<variable name="RICH_position_from_IP" value="1002"/> -<variable name="RICH_mirror_position_from_IP" value="3500"/> -<variable name="RICH_mirror_r" value="3000"/> -<variable name="RICH_mirror_thickness" value="6"/> -<variable name="mirror_cont_supp_addend_out" value="6"/> -<variable name="TTT" value="1500"/> - -<!-- -minus 10deg setup: -<variable name="RICH_mirror_Y_shift" value="805"/> -<variable name="RICH_mirror_angle" value="-10"/> -<variable name="pmt_rot_x_addend" value="-27.952765"/> -<variable name="pmt_rot_y_addend" value="-13.477"/> -<variable name="pmt_pos_x_addend" value="0"/> -<variable name="pmt_pos_y_addend" value="0"/> -<variable name="pmt_pos_z_addend" value="0"/> - -plus 1deg setup: ---> - -<variable name="RICH_mirror_Y_shift" value="805"/> - -<!-- -<variable name="pmt_pos_x_addend" value="0"/> -<variable name="pmt_pos_y_addend" value="0"/> ---> -<variable name="kapton_thickness" value="0.25"/> -<variable name="DEGtoRAD" value="1.74532925199433E-02"/> +<?xml version="1.0" encoding="UTF-8"?> +<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> + +<define> +<position name="central" x="0" y="0" z="0" unit="mm"/> +<rotation name="identity" x="0" y="0" z="0" unit="degree"/> +<variable name="RICH_trapezoid_angle" value="116"/> +<variable name="RICH_entrance_width" value="3500"/> +<variable name="RICH_exit_width" value="5136"/> +<variable name="RICH_height" value="6000"/> +<variable name="RICH_length" value="2697.5"/> +<variable name="RICH_covering_thickness" value="5"/> +<variable name="entrance_width_addend" value="2"/> +<variable name="RICH_pipe_entrance_r" value="103.5"/> +<variable name="RICH_pipe_exit_r" value="170"/> +<variable name="RICH_pipe_entrance_thickness" value="3"/> +<variable name="RICH_pipe_exit_thickness" value="5"/> +<variable name="RICH_pipe_angle" value="0"/> +<variable name="RICH_position_from_IP" value="1002"/> +<variable name="RICH_mirror_position_from_IP" value="3500"/> +<variable name="RICH_mirror_r" value="3000"/> +<variable name="RICH_mirror_thickness" value="6"/> +<variable name="mirror_cont_supp_addend_out" value="6"/> +<variable name="TTT" value="1500"/> + +<!-- +minus 10deg setup: +<variable name="RICH_mirror_Y_shift" value="805"/> +<variable name="RICH_mirror_angle" value="-10"/> +<variable name="pmt_rot_x_addend" value="-27.952765"/> +<variable name="pmt_rot_y_addend" value="-13.477"/> +<variable name="pmt_pos_x_addend" value="0"/> +<variable name="pmt_pos_y_addend" value="0"/> +<variable name="pmt_pos_z_addend" value="0"/> + +plus 1deg setup: +--> + +<variable name="RICH_mirror_Y_shift" value="805"/> + +<!-- +<variable name="pmt_pos_x_addend" value="0"/> +<variable name="pmt_pos_y_addend" value="0"/> +--> +<variable name="kapton_thickness" value="0.25"/> +<variable name="DEGtoRAD" value="1.74532925199433E-02"/> diff --git a/macro/rich/geotest/TransPMT/CreateGeo/GDML_to_ROOT_Trans.C b/macro/rich/geotest/TransPMT/CreateGeo/GDML_to_ROOT_Trans.C index 88a6db5350..0cc0e0839d 100644 --- a/macro/rich/geotest/TransPMT/CreateGeo/GDML_to_ROOT_Trans.C +++ b/macro/rich/geotest/TransPMT/CreateGeo/GDML_to_ROOT_Trans.C @@ -1,90 +1,90 @@ -void GDML_to_ROOT_Trans(float pmt_pos_y_addend = 0, - float pmt_pos_z_addend = 0, - int RotMir = -10, - float PMTrotX = 5, - float PMTrotY = 5) { - - char RotMirText[256]; - if (RotMir < 0) { - sprintf(RotMirText, "RotMir_m%d", RotMir * -1); - } else { - sprintf(RotMirText, "RotMir_p%d", RotMir); - } - - int ShiftXmod10 = (int(PMTrotX * 10)) % 10; - float IntegerXValue = PMTrotX - (float(ShiftXmod10)) / 10.; - int ShiftYmod10 = (int(PMTrotY * 10)) % 10; - float IntegerYValue = PMTrotY - (float(ShiftYmod10)) / 10.; - - char ShiftXTxt[256]; - char ShiftYTxt[256]; - sprintf(ShiftXTxt, "Xpos%dpoint%d", IntegerXValue, ShiftXmod10); - sprintf(ShiftYTxt, "Ypos%dpoint%d", IntegerYValue, ShiftYmod10); - if (PMTrotY < 0) { - sprintf(ShiftYTxt, "Yneg%dpoint%d", -1. * IntegerYValue, -1. * ShiftYmod10); - } - - /////////////////////////////////// Translation in z - char ZTransText[256]; - if (pmt_pos_z_addend < 0) { - sprintf(ZTransText, "Z_m%d", -1 * pmt_pos_z_addend); - } else { - sprintf(ZTransText, "Z_p%d", pmt_pos_z_addend); - } - char YTransText[256]; - if (pmt_pos_y_addend < 0) { - sprintf(YTransText, "Y_m%d", -1 * pmt_pos_y_addend); - } else { - sprintf(YTransText, "Y_p%d", pmt_pos_y_addend); - } - - char GeoFileName[256]; - sprintf( - GeoFileName, - "/geometry/rich/GeoOpt/TransPMT/rich_geo_%s_RotPMT_%s_%s_TransPMT_%s_%s", - RotMirText, - ShiftXTxt, - ShiftYTxt, - YTransText, - ZTransText); - - stringstream ss; - ss << GeoFileName; - TString FileName = ss.str(); - - TString InFile = FileName + ".gdml"; - cout << " ########## " << InFile << endl; - TString OutFile = FileName + ".root"; - cout << " ########## " << OutFile << endl; - - /* FileName="/geometry/rich/GeoOpt/RotPMT/NewGeo/2015_minus10deg_"; */ - /* TString InFile=FileName+".gdml"; */ - /* cout<<" ########## "<<InFile<<endl; */ - /* TString OutFile=FileName+".root"; */ - /* cout<<" ########## "<<OutFile<<endl; */ - - - TString vmcDir = TString(gSystem->Getenv("VMCWORKDIR")); - - TGeoManager* gdml = new TGeoManager("gdml", "FAIRGeom"); - - TGDMLParse parser; - // Define your input GDML file HERE - TGeoVolume* gdmlTop = parser.GDMLReadFile(vmcDir + InFile); - TGeoVolume* rootTop = new TGeoVolumeAssembly("TOP"); - - gGeoManager->SetTopVolume(rootTop); - - // Define your position HERE - TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); - TGeoCombiTrans* posrot = new TGeoCombiTrans(0., 0., 270., rot); - - rootTop->AddNode(gdmlTop, 1, posrot); - - gGeoManager->CloseGeometry(); - - // Define you output ROOT file HERE - TFile* outfile = new TFile(vmcDir + OutFile, "RECREATE"); - rootTop->Write(); - outfile->Close(); -} +void GDML_to_ROOT_Trans(float pmt_pos_y_addend = 0, + float pmt_pos_z_addend = 0, + int RotMir = -10, + float PMTrotX = 5, + float PMTrotY = 5) { + + char RotMirText[256]; + if (RotMir < 0) { + sprintf(RotMirText, "RotMir_m%d", RotMir * -1); + } else { + sprintf(RotMirText, "RotMir_p%d", RotMir); + } + + int ShiftXmod10 = (int(PMTrotX * 10)) % 10; + float IntegerXValue = PMTrotX - (float(ShiftXmod10)) / 10.; + int ShiftYmod10 = (int(PMTrotY * 10)) % 10; + float IntegerYValue = PMTrotY - (float(ShiftYmod10)) / 10.; + + char ShiftXTxt[256]; + char ShiftYTxt[256]; + sprintf(ShiftXTxt, "Xpos%dpoint%d", IntegerXValue, ShiftXmod10); + sprintf(ShiftYTxt, "Ypos%dpoint%d", IntegerYValue, ShiftYmod10); + if (PMTrotY < 0) { + sprintf(ShiftYTxt, "Yneg%dpoint%d", -1. * IntegerYValue, -1. * ShiftYmod10); + } + + /////////////////////////////////// Translation in z + char ZTransText[256]; + if (pmt_pos_z_addend < 0) { + sprintf(ZTransText, "Z_m%d", -1 * pmt_pos_z_addend); + } else { + sprintf(ZTransText, "Z_p%d", pmt_pos_z_addend); + } + char YTransText[256]; + if (pmt_pos_y_addend < 0) { + sprintf(YTransText, "Y_m%d", -1 * pmt_pos_y_addend); + } else { + sprintf(YTransText, "Y_p%d", pmt_pos_y_addend); + } + + char GeoFileName[256]; + sprintf( + GeoFileName, + "/geometry/rich/GeoOpt/TransPMT/rich_geo_%s_RotPMT_%s_%s_TransPMT_%s_%s", + RotMirText, + ShiftXTxt, + ShiftYTxt, + YTransText, + ZTransText); + + stringstream ss; + ss << GeoFileName; + TString FileName = ss.str(); + + TString InFile = FileName + ".gdml"; + cout << " ########## " << InFile << endl; + TString OutFile = FileName + ".root"; + cout << " ########## " << OutFile << endl; + + /* FileName="/geometry/rich/GeoOpt/RotPMT/NewGeo/2015_minus10deg_"; */ + /* TString InFile=FileName+".gdml"; */ + /* cout<<" ########## "<<InFile<<endl; */ + /* TString OutFile=FileName+".root"; */ + /* cout<<" ########## "<<OutFile<<endl; */ + + + TString vmcDir = TString(gSystem->Getenv("VMCWORKDIR")); + + TGeoManager* gdml = new TGeoManager("gdml", "FAIRGeom"); + + TGDMLParse parser; + // Define your input GDML file HERE + TGeoVolume* gdmlTop = parser.GDMLReadFile(vmcDir + InFile); + TGeoVolume* rootTop = new TGeoVolumeAssembly("TOP"); + + gGeoManager->SetTopVolume(rootTop); + + // Define your position HERE + TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); + TGeoCombiTrans* posrot = new TGeoCombiTrans(0., 0., 270., rot); + + rootTop->AddNode(gdmlTop, 1, posrot); + + gGeoManager->CloseGeometry(); + + // Define you output ROOT file HERE + TFile* outfile = new TFile(vmcDir + OutFile, "RECREATE"); + rootTop->Write(); + outfile->Close(); +} diff --git a/macro/rich/geotest/TransPMT/CreateGeo/Import_GDML_Export_ROOT.c b/macro/rich/geotest/TransPMT/CreateGeo/Import_GDML_Export_ROOT.c index 6a736480b4..e1b0c404a2 100644 --- a/macro/rich/geotest/TransPMT/CreateGeo/Import_GDML_Export_ROOT.c +++ b/macro/rich/geotest/TransPMT/CreateGeo/Import_GDML_Export_ROOT.c @@ -1,71 +1,71 @@ -void Import_GDML_Export_ROOT(float PMTrotX = 5, - float PMTrotY = 5, - int RotMir = -10) { - char RotMirText[256]; - if (RotMir < 0) { - sprintf(RotMirText, "RotMir_m%d", RotMir * -1); - } else { - sprintf(RotMirText, "RotMir_p%d", RotMir); - } - - int ShiftXmod10 = (int(PMTrotX * 10)) % 10; - float IntegerXValue = PMTrotX - (float(ShiftXmod10)) / 10.; - int ShiftYmod10 = (int(PMTrotY * 10)) % 10; - float IntegerYValue = PMTrotY - (float(ShiftYmod10)) / 10.; - - char ShiftXTxt[256]; - char ShiftYTxt[256]; - sprintf(ShiftXTxt, "Xpos%dpoint%d", IntegerXValue, ShiftXmod10); - sprintf(ShiftYTxt, "Ypos%dpoint%d", IntegerYValue, ShiftYmod10); - if (PMTrotY < 0) { - sprintf(ShiftYTxt, "Yneg%dpoint%d", -1. * IntegerYValue, -1. * ShiftYmod10); - } - - char GeoFileName[256]; - sprintf(GeoFileName, - "/geometry/rich/GeoOpt/RotPMT/NewGeo/rich_geo_%s_RotPMT_%s_%s", - RotMirText, - ShiftXTxt, - ShiftYTxt); - - - stringstream ss; - ss << GeoFileName; - TString FileName = ss.str(); - - TString InFile = FileName + ".gdml"; - cout << " ########## " << InFile << endl; - TString OutFile = FileName + ".root"; - cout << " ########## " << OutFile << endl; - - /* FileName="/geometry/rich/GeoOpt/RotPMT/NewGeo/2015_minus10deg_"; */ - /* TString InFile=FileName+".gdml"; */ - /* cout<<" ########## "<<InFile<<endl; */ - /* TString OutFile=FileName+".root"; */ - /* cout<<" ########## "<<OutFile<<endl; */ - - - TString vmcDir = TString(gSystem->Getenv("VMCWORKDIR")); - - TGeoManager* gdml = new TGeoManager("gdml", "FAIRGeom"); - - TGDMLParse parser; - // Define your input GDML file HERE - TGeoVolume* gdmlTop = parser.GDMLReadFile(vmcDir + InFile); - TGeoVolume* rootTop = new TGeoVolumeAssembly("TOP"); - - gGeoManager->SetTopVolume(rootTop); - - // Define your position HERE - TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); - TGeoCombiTrans* posrot = new TGeoCombiTrans(0., 0., 270., rot); - - rootTop->AddNode(gdmlTop, 1, posrot); - - gGeoManager->CloseGeometry(); - - // Define you output ROOT file HERE - TFile* outfile = new TFile(vmcDir + OutFile, "RECREATE"); - rootTop->Write(); - outfile->Close(); -} +void Import_GDML_Export_ROOT(float PMTrotX = 5, + float PMTrotY = 5, + int RotMir = -10) { + char RotMirText[256]; + if (RotMir < 0) { + sprintf(RotMirText, "RotMir_m%d", RotMir * -1); + } else { + sprintf(RotMirText, "RotMir_p%d", RotMir); + } + + int ShiftXmod10 = (int(PMTrotX * 10)) % 10; + float IntegerXValue = PMTrotX - (float(ShiftXmod10)) / 10.; + int ShiftYmod10 = (int(PMTrotY * 10)) % 10; + float IntegerYValue = PMTrotY - (float(ShiftYmod10)) / 10.; + + char ShiftXTxt[256]; + char ShiftYTxt[256]; + sprintf(ShiftXTxt, "Xpos%dpoint%d", IntegerXValue, ShiftXmod10); + sprintf(ShiftYTxt, "Ypos%dpoint%d", IntegerYValue, ShiftYmod10); + if (PMTrotY < 0) { + sprintf(ShiftYTxt, "Yneg%dpoint%d", -1. * IntegerYValue, -1. * ShiftYmod10); + } + + char GeoFileName[256]; + sprintf(GeoFileName, + "/geometry/rich/GeoOpt/RotPMT/NewGeo/rich_geo_%s_RotPMT_%s_%s", + RotMirText, + ShiftXTxt, + ShiftYTxt); + + + stringstream ss; + ss << GeoFileName; + TString FileName = ss.str(); + + TString InFile = FileName + ".gdml"; + cout << " ########## " << InFile << endl; + TString OutFile = FileName + ".root"; + cout << " ########## " << OutFile << endl; + + /* FileName="/geometry/rich/GeoOpt/RotPMT/NewGeo/2015_minus10deg_"; */ + /* TString InFile=FileName+".gdml"; */ + /* cout<<" ########## "<<InFile<<endl; */ + /* TString OutFile=FileName+".root"; */ + /* cout<<" ########## "<<OutFile<<endl; */ + + + TString vmcDir = TString(gSystem->Getenv("VMCWORKDIR")); + + TGeoManager* gdml = new TGeoManager("gdml", "FAIRGeom"); + + TGDMLParse parser; + // Define your input GDML file HERE + TGeoVolume* gdmlTop = parser.GDMLReadFile(vmcDir + InFile); + TGeoVolume* rootTop = new TGeoVolumeAssembly("TOP"); + + gGeoManager->SetTopVolume(rootTop); + + // Define your position HERE + TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); + TGeoCombiTrans* posrot = new TGeoCombiTrans(0., 0., 270., rot); + + rootTop->AddNode(gdmlTop, 1, posrot); + + gGeoManager->CloseGeometry(); + + // Define you output ROOT file HERE + TFile* outfile = new TFile(vmcDir + OutFile, "RECREATE"); + rootTop->Write(); + outfile->Close(); +} diff --git a/macro/rich/geotest/geoopt/rich_opt_template.gdml b/macro/rich/geotest/geoopt/rich_opt_template.gdml index 4b60b3a4c9..f190793d14 100644 --- a/macro/rich/geotest/geoopt/rich_opt_template.gdml +++ b/macro/rich/geotest/geoopt/rich_opt_template.gdml @@ -1,1683 +1,1683 @@ -<?xml version="1.0" encoding="UTF-8"?> -<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> - -<define> -<position name="central" x="0" y="0" z="0" unit="mm"/> -<rotation name="identity" x="0" y="0" z="0" unit="degree"/> -<variable name="DEGtoRAD" value="1.74532925199433E-02"/> -<variable name="Acceptance_angle" value="25"/> -<variable name="Acceptance_scaling_factor" value="1.5"/> -<variable name="RICH_length" value="1900"/> -<variable name="RICH_height" value="5000"/> -<variable name="RICH_width" value="5268"/> -<variable name="RICH_entrance_vertical_gap" value="1800"/> -<variable name="RICH_covering_thickness" value="5"/> -<variable name="RICH_entrance_thickness" value="0.25"/> -<variable name="RICH_exit_thickness" value="5"/> -<variable name="RICH_addend_Z_size" value="200"/> -<variable name="RICH_pipe_outer_radius_at_entrance" value="74.2"/> -<variable name="RICH_pipe_thickness_at_entrance" value="1.48"/> -<variable name="RICH_pipe_outer_radius_at_exit" value="161.6"/> -<variable name="RICH_pipe_thickness_at_exit" value="3.2"/> -<variable name="RICH_pipe_cyl_part_length" value="100"/> -<variable name="RICH_pipe_flange_thickness" value="3"/> -<variable name="RICH_mirror_radius" value="3000"/> -<variable name="RICH_mirror_position" value="3500"/> -_RICH_OPTIMIZATION_PARAMATERS_ -<variable name="RICH_camera_radius" value="1697"/> -<variable name="RICH_mirror_phi_size" value="8.425"/> -<variable name="RICH_mirror_phi_step" value="8.5"/> -<variable name="RICH_mirror_theta_gap" value="0.0745"/> -<variable name="RICH_pixel_size_middle" value="6"/> -<variable name="RICH_pixel_size_surrounding" value="6.25"/> -<variable name="RICH_pmt_size" value="52"/> -<variable name="RICH_pmt_depth" value="38.71"/> -<variable name="RICH_camera_module_depth" value="250"/> -<variable name="RICH_camera_gap_size" value="1"/> -<variable name="RICH_camera_height" value="7*(2*RICH_pmt_size+RICH_camera_gap_size) + 6*RICH_camera_gap_size"/> -<variable name="RICH_camera_touch_width" value="157.5"/> -<variable name="RICH_camera_touch_radius" value="sqrt((RICH_camera_radius-10-RICH_pmt_depth)*(RICH_camera_radius-10-RICH_pmt_depth) + RICH_camera_touch_width*RICH_camera_touch_width/4)"/> -<variable name="RICH_camera_segment_angle" value="(2*asin((RICH_camera_touch_width/2)/RICH_camera_touch_radius)/DEGtoRAD)"/> -<variable name="RICH_camera_alu_frame_height" value="800"/> -<variable name="Sens_plane_pos" value="-250"/> -<variable name="Sh_box_thickness_top" value="30"/> -<variable name="Sh_box_thickness_bottom" value="60"/> -<variable name="Sh_box_thickness_sides" value="40"/> -<variable name="Sh_box_thickness_back" value="50"/> -<variable name="Sh_box_thickness_nose" value="60"/> -<variable name="Sh_box_vert_space" value="800"/> -<variable name="Sh_box_horiz_spread_angle" value="78"/> -<variable name="Sh_box_horiz_add" value="40"/> -<variable name="Sh_box_Rmin" value="1390"/> -<variable name="Sh_box_Rmax" value="1680"/> -<variable name="Sh_box_Rmax_bottom" value="1600"/> -<variable name="Sh_box_nose_angle" value="45"/> -<variable name="Sh_box_nose_vert_size" value="593"/> -<variable name="Sh_box_cut_Z_coord" value="1600"/> -<variable name="Back_cut_enabled" value="false"/> -<variable name="Nose_enabled" value="true"/> -<variable name="E" value="sin(((90-Acceptance_angle-RICH_mirror_tilt_angle))*DEGtoRAD) / sin((Acceptance_angle)*DEGtoRAD)"/> -<variable name="A" value="(4*E*E+4*E*sin((RICH_mirror_tilt_angle)*DEGtoRAD)+1) / (cos((RICH_mirror_tilt_angle)*DEGtoRAD)*cos((RICH_mirror_tilt_angle)*DEGtoRAD))"/> -<variable name="B" value="(2*(2*E+sin((RICH_mirror_tilt_angle)*DEGtoRAD))/cos((RICH_mirror_tilt_angle)*DEGtoRAD)) * (1 - RICH_mirror_position/(RICH_mirror_radius*cos((RICH_mirror_tilt_angle)*DEGtoRAD)))"/> -<variable name="C" value="RICH_mirror_position*(RICH_mirror_position-2*RICH_mirror_radius*cos((RICH_mirror_tilt_angle)*DEGtoRAD)) / (RICH_mirror_radius*RICH_mirror_radius*cos((RICH_mirror_tilt_angle)*DEGtoRAD)*cos((RICH_mirror_tilt_angle)*DEGtoRAD))"/> -<variable name="t1" value="(-B+sqrt(B*B-4*A*C)) / (2*A)"/> -<variable name="t2" value="(-B-sqrt(B*B-4*A*C)) / (2*A)"/> -<variable name="alpha1" value="(asin(t1)/DEGtoRAD)"/> -<variable name="alpha2" value="(asin(t2)/DEGtoRAD)"/> -<variable name="psi" value="(atan((RICH_mirror_radius*(sin((alpha1)*DEGtoRAD)*cos((RICH_mirror_tilt_angle)*DEGtoRAD) - sin((RICH_mirror_tilt_angle)*DEGtoRAD)*(1-cos((alpha1)*DEGtoRAD))))/RICH_mirror_position)/DEGtoRAD)"/> -<variable name="Camera_full_Xrot" value="(psi+2*RICH_mirror_tilt_angle - RICH_camera_tilt_angle)"/> -<variable name="Camera_origin_Y_coord" value="RICH_mirror_position*tan((psi)*DEGtoRAD) + (RICH_mirror_radius/2)*sin(((psi+2*RICH_mirror_tilt_angle))*DEGtoRAD) + RICH_camera_radius*sin((Camera_full_Xrot)*DEGtoRAD)"/> -<variable name="Camera_origin_Z_coord" value="RICH_mirror_position - (RICH_mirror_radius/2)*cos(((psi+2*RICH_mirror_tilt_angle))*DEGtoRAD) - RICH_camera_radius*cos((Camera_full_Xrot)*DEGtoRAD)"/> -<variable name="Mirror_origin_Y_coord" value="RICH_mirror_radius * sin(((RICH_mirror_tilt_angle+alpha1))*DEGtoRAD)"/> -<variable name="Mirror_origin_Z_coord" value="RICH_mirror_position - RICH_mirror_radius*cos((RICH_mirror_tilt_angle)*DEGtoRAD)"/> -</define> - -<materials> -<material name="CsI" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="aluminium" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="vacuum" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHglass" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="kapton" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="iron" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -<material name="RICHgas_CO2_dis+" Z="1.0"> -<D value="1"/> -<atom value="1"/> -</material> -</materials> - -<solids> -<box name="pmt_pixel_PartBody" x="((RICH_pixel_size_middle/2) * 1)*2" y="((RICH_pixel_size_middle/2) * 1)*2" z="(0.250000)*2" lunit="mm"/> -<box name="pmt_pixel_wide_PartBody" x="((RICH_pixel_size_surrounding/2) * 1)*2" y="((RICH_pixel_size_surrounding/2) * 1)*2" z="(0.250000)*2" lunit="mm"/> -<box name="pmt_pixel_vertical_PartBody" x="((RICH_pixel_size_middle/2) * 1)*2" y="((RICH_pixel_size_surrounding/2) * 1)*2" z="(0.250000)*2" lunit="mm"/> -<box name="pmt_pixel_horisontal_PartBody" x="((RICH_pixel_size_surrounding/2) * 1)*2" y="((RICH_pixel_size_middle/2) * 1)*2" z="(0.250000)*2" lunit="mm"/> -<box name="pmt_PartBody" x="((RICH_pmt_size/2) * 1)*2" y="((RICH_pmt_size/2) * 1)*2" z="((RICH_pmt_depth/2) * 1)*2" lunit="mm"/> -<box name="pmt_container_PartBody" x="((RICH_pmt_size/2) * 1)*2" y="((RICH_pmt_size/2) * 1)*2" z="((RICH_pmt_depth/2) * 1)*2" lunit="mm"/> -<box name="camera_module_PartBody" x="(((3*RICH_pmt_size+2*RICH_camera_gap_size)/2) * 1)*2" y="(((2*RICH_pmt_size+RICH_camera_gap_size)/2) * 1)*2" z="((RICH_pmt_depth/2) * 1)*2" lunit="mm"/> -<box name="alu_frame_PartBody" x="((RICH_camera_touch_width/2) * 1)*2" y="(((14*RICH_pmt_size+13*RICH_camera_gap_size)/2) * 1)*2" z="(5.000000)*2" lunit="mm"/> -<box name="camera_strip_PartBody_op0" x="(((3*RICH_pmt_size+2*RICH_camera_gap_size)/2) * 1)*2" y="(((7*(2*RICH_pmt_size+RICH_camera_gap_size) + 6*RICH_camera_gap_size)/2) * 1)*2" z="((RICH_pmt_depth/2) * 1)*2" lunit="mm"/> -<box name="camera_strip_PartBody_op1" x="((RICH_camera_touch_width/2) * 1)*2" y="(((7*(2*RICH_pmt_size+RICH_camera_gap_size) + 6*RICH_camera_gap_size)/2) * 1)*2" z="(5.000000)*2" lunit="mm"/> -<union name="camera_strip_PartBody"> -<first ref="camera_strip_PartBody_op0"/> -<second ref="camera_strip_PartBody_op1"/> -<position name="camera_strip_PartBody__1_pos_0" x="0" y="0" z="(-RICH_pmt_depth/2-5) * 1" unit="mm"/> -<rotationref ref="identity"/> -</union> -<tube name="rich_cyl_pipe_section_vac_PartBody" rmin="0.000000" rmax="(RICH_pipe_outer_radius_at_entrance-RICH_pipe_thickness_at_entrance) * 1" z="((RICH_pipe_cyl_part_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<tube name="rich_cyl_pipe_section_PartBody" rmin="0.000000" rmax="(RICH_pipe_outer_radius_at_entrance) * 1" z="((RICH_pipe_cyl_part_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<tube name="rich_pipe_flange_PartBody" rmin="(RICH_pipe_outer_radius_at_entrance) * 1" rmax="80.000000" z="((RICH_pipe_flange_thickness/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<cone name="rich_pipe_section_vac_PartBody" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance-RICH_pipe_thickness_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit-RICH_pipe_thickness_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<cone name="rich_pipe_section_PartBody" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<sphere name="mirror_tile_type0_PartBody_op0" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle+alpha1/2+RICH_mirror_theta_gap*3/4) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> -<box name="mirror_tile_type0_PartBody_op1" x="(5000.000000)*2" y="((RICH_width/2) * 1)*2" z="(100.000000)*2" lunit="mm"/> -<subtraction name="mirror_tile_type0_PartBody"> -<first ref="mirror_tile_type0_PartBody_op0"/> -<second ref="mirror_tile_type0_PartBody_op1"/> -<position name="mirror_tile_type0_PartBody__1_pos_0" x="0" y="0" z="(-Mirror_origin_Y_coord-100) * 1" unit="mm"/> -<rotationref ref="identity"/> -</subtraction> -<sphere name="mirror_tile_type1_PartBody" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle+RICH_mirror_theta_gap/2) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> -<sphere name="mirror_tile_type2_PartBody" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle-alpha1/2+RICH_mirror_theta_gap/4) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> -<sphere name="mirror_tile_type3_PartBody" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle-alpha1) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> -<sphere name="mirror_tile_type4_PartBody_op0" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle+alpha1/2+RICH_mirror_theta_gap*3/4) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> -<box name="mirror_tile_type4_PartBody_op1" x="(5000.000000)*2" y="((RICH_width/2) * 1)*2" z="(100.000000)*2" lunit="mm"/> -<subtraction name="mirror_tile_type4_PartBody_op01"> -<first ref="mirror_tile_type4_PartBody_op0"/> -<second ref="mirror_tile_type4_PartBody_op1"/> -<position name="mirror_tile_type4_PartBody__1_pos_0" x="0" y="0" z="(-Mirror_origin_Y_coord-100) * 1" unit="mm"/> -<rotationref ref="identity"/> -</subtraction> -<tube name="mirror_tile_type4_PartBody_op2" rmin="0.000000" rmax="800.000000" z="(3200.000000)*2" startphi="-90.000000" deltaphi="135.000000" aunit="deg" lunit="mm"/> -<subtraction name="mirror_tile_type4_PartBody"> -<first ref="mirror_tile_type4_PartBody_op01"/> -<second ref="mirror_tile_type4_PartBody_op2"/> -<position name="mirror_tile_type4_PartBody__2_pos_01" x="0" y="0" z="(-RICH_mirror_radius*sin(((RICH_mirror_tilt_angle+alpha1))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="mirror_tile_type4_PartBody__2_rot_01" x="90.0" y="0" z="90.0" unit="deg"/> -</subtraction> -<sphere name="mirror_tile_type5_PartBody_op0" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle+alpha1/2+RICH_mirror_theta_gap*3/4) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> -<box name="mirror_tile_type5_PartBody_op1" x="(5000.000000)*2" y="((RICH_width/2) * 1)*2" z="(100.000000)*2" lunit="mm"/> -<subtraction name="mirror_tile_type5_PartBody_op01"> -<first ref="mirror_tile_type5_PartBody_op0"/> -<second ref="mirror_tile_type5_PartBody_op1"/> -<position name="mirror_tile_type5_PartBody__1_pos_0" x="0" y="0" z="(-Mirror_origin_Y_coord-100) * 1" unit="mm"/> -<rotationref ref="identity"/> -</subtraction> -<tube name="mirror_tile_type5_PartBody_op2" rmin="0.000000" rmax="800.000000" z="(3200.000000)*2" startphi="135.000000" deltaphi="135.000000" aunit="deg" lunit="mm"/> -<subtraction name="mirror_tile_type5_PartBody"> -<first ref="mirror_tile_type5_PartBody_op01"/> -<second ref="mirror_tile_type5_PartBody_op2"/> -<position name="mirror_tile_type5_PartBody__2_pos_01" x="0" y="0" z="(-RICH_mirror_radius*sin(((RICH_mirror_tilt_angle+alpha1))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="mirror_tile_type5_PartBody__2_rot_01" x="90.0" y="0" z="90.0" unit="deg"/> -</subtraction> -<box name="rich_entrance_PartBody_op0" x="((RICH_width/2) * 1)*2" y="((RICH_entrance_vertical_gap/2) * 1)*2" z="((RICH_entrance_thickness/2) * 1)*2" lunit="mm"/> -<cone name="rich_entrance_PartBody_op1" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<subtraction name="rich_entrance_PartBody"> -<first ref="rich_entrance_PartBody_op0"/> -<second ref="rich_entrance_PartBody_op1"/> -<position name="rich_entrance_PartBody__1_pos_0" x="0" y="0" z="(RICH_length/2-RICH_entrance_thickness/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</subtraction> -<box name="rich_exit_PartBody_op0" x="((RICH_width/2) * 1)*2" y="((RICH_height/2) * 1)*2" z="((RICH_exit_thickness/2) * 1)*2" lunit="mm"/> -<cone name="rich_exit_PartBody_op1" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<subtraction name="rich_exit_PartBody"> -<first ref="rich_exit_PartBody_op0"/> -<second ref="rich_exit_PartBody_op1"/> -<position name="rich_exit_PartBody__1_pos_0" x="0" y="0" z="(-RICH_length/2+RICH_exit_thickness/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</subtraction> -<tube name="Shielding_box_top_PartBody" rmin="(Sh_box_Rmin - Sh_box_thickness_back) * 1" rmax="Sh_box_Rmax * 1" z="((Sh_box_thickness_top/2) * 1)*2" startphi="(-Sh_box_horiz_spread_angle/2) * 1" deltaphi="(Sh_box_horiz_spread_angle) * 1" aunit="deg" lunit="mm"/> -<tube name="Shielding_box_back_PartBody_op0" rmin="(Sh_box_Rmin-Sh_box_thickness_back) * 1" rmax="(Sh_box_Rmin) * 1" z="((Sh_box_vert_space/2) * 1)*2" startphi="(-Sh_box_horiz_spread_angle/2) * 1" deltaphi="(Sh_box_horiz_spread_angle) * 1" aunit="deg" lunit="mm"/> -<box name="Shielding_box_back_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> -<subtraction name="Shielding_box_back_PartBody"> -<first ref="Shielding_box_back_PartBody_op0"/> -<second ref="Shielding_box_back_PartBody_op1"/> -<position name="Shielding_box_back_PartBody__1_pos_0" x="(Camera_origin_Y_coord*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*cos((Camera_full_Xrot)*DEGtoRAD)) * 1" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="Shielding_box_back_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="0" unit="deg"/> -</subtraction> -<cone name="Shielding_box_bottom_PartBody_op0" rmin1="(Sh_box_Rmin-Sh_box_thickness_back) * 1" rmax1="(Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)) * 1" rmin2="(Sh_box_Rmin-Sh_box_thickness_back) * 1" rmax2="(Sh_box_Rmax_bottom-Sh_box_thickness_nose) * 1" z="((Sh_box_thickness_bottom/2) * 1)*2" startphi="(-Sh_box_horiz_spread_angle/2) * 1" deltaphi="(Sh_box_horiz_spread_angle) * 1" aunit="deg" lunit="mm"/> -<box name="Shielding_box_bottom_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> -<subtraction name="Shielding_box_bottom_PartBody"> -<first ref="Shielding_box_bottom_PartBody_op0"/> -<second ref="Shielding_box_bottom_PartBody_op1"/> -<position name="Shielding_box_bottom_PartBody__1_pos_0" x="(Camera_origin_Y_coord*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*cos((Camera_full_Xrot)*DEGtoRAD)) * 1" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_bottom_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="0" unit="deg"/> -</subtraction> -<box name="Shielding_box_top_horiz_add_PartBody" x="(((Sh_box_Rmax-Sh_box_Rmin+Sh_box_thickness_back)/2) * 1)*2" y="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" z="((Sh_box_thickness_top/2) * 1)*2" lunit="mm"/> -<box name="Shielding_box_back_horiz_add_PartBody_op0" x="((Sh_box_thickness_back/2) * 1)*2" y="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" z="((Sh_box_vert_space/2) * 1)*2" lunit="mm"/> -<box name="Shielding_box_back_horiz_add_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> -<subtraction name="Shielding_box_back_horiz_add_PartBody"> -<first ref="Shielding_box_back_horiz_add_PartBody_op0"/> -<second ref="Shielding_box_back_horiz_add_PartBody_op1"/> -<position name="Shielding_box_back_horiz_add_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_back_horiz_add_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(-Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> -</subtraction> -<box name="Shielding_box_back_horiz_add_sym_PartBody_op0" x="((Sh_box_thickness_back/2) * 1)*2" y="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" z="((Sh_box_vert_space/2) * 1)*2" lunit="mm"/> -<box name="Shielding_box_back_horiz_add_sym_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> -<subtraction name="Shielding_box_back_horiz_add_sym_PartBody"> -<first ref="Shielding_box_back_horiz_add_sym_PartBody_op0"/> -<second ref="Shielding_box_back_horiz_add_sym_PartBody_op1"/> -<position name="Shielding_box_back_horiz_add_sym_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_back_horiz_add_sym_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> -</subtraction> -<trap name="Shielding_box_bottom_horiz_add_PartBody_op0" z="((Sh_box_thickness_bottom/2) * 1)*2" theta="-atan(tan((Sh_box_nose_angle)*DEGtoRAD)/2)/DEGtoRAD" phi="0.000000" y1="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x1="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" x2="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" alpha1="0.000000" y2="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x3="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose)/2) * 1)*2" x4="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose)/2) * 1)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> -<box name="Shielding_box_bottom_horiz_add_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> -<subtraction name="Shielding_box_bottom_horiz_add_PartBody"> -<first ref="Shielding_box_bottom_horiz_add_PartBody_op0"/> -<second ref="Shielding_box_bottom_horiz_add_PartBody_op1"/> -<position name="Shielding_box_bottom_horiz_add_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_bottom_horiz_add_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(-Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> -</subtraction> -<trap name="Shielding_box_bottom_horiz_add_sym_PartBody_op0" z="((Sh_box_thickness_bottom/2) * 1)*2" theta="-atan(tan((Sh_box_nose_angle)*DEGtoRAD)/2)/DEGtoRAD" phi="0.000000" y1="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x1="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" x2="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" alpha1="0.000000" y2="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x3="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose)/2) * 1)*2" x4="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose)/2) * 1)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> -<box name="Shielding_box_bottom_horiz_add_sym_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> -<subtraction name="Shielding_box_bottom_horiz_add_sym_PartBody"> -<first ref="Shielding_box_bottom_horiz_add_sym_PartBody_op0"/> -<second ref="Shielding_box_bottom_horiz_add_sym_PartBody_op1"/> -<position name="Shielding_box_bottom_horiz_add_sym_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_bottom_horiz_add_sym_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> -</subtraction> -<box name="Shielding_box_side_PartBody_op0" x="(((Sh_box_Rmax-Sh_box_Rmin)/2) * 1)*2" y="((Sh_box_thickness_sides/2) * 1)*2" z="((Sh_box_vert_space/2) * 1)*2" lunit="mm"/> -<box name="Shielding_box_side_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> -<subtraction name="Shielding_box_side_PartBody"> -<first ref="Shielding_box_side_PartBody_op0"/> -<second ref="Shielding_box_side_PartBody_op1"/> -<positionref ref="central"/> -<rotation name="Shielding_box_side_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(-Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> -</subtraction> -<box name="Shielding_box_side_sym_PartBody_op0" x="(((Sh_box_Rmax-Sh_box_Rmin)/2) * 1)*2" y="((Sh_box_thickness_sides/2) * 1)*2" z="((Sh_box_vert_space/2) * 1)*2" lunit="mm"/> -<box name="Shielding_box_side_sym_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> -<subtraction name="Shielding_box_side_sym_PartBody"> -<first ref="Shielding_box_side_sym_PartBody_op0"/> -<second ref="Shielding_box_side_sym_PartBody_op1"/> -<position name="Shielding_box_side_sym_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="Shielding_box_side_sym_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> -</subtraction> -<trap name="Shielding_box_nose_horiz_add_PartBody" z="((Sh_box_nose_vert_size/2) * 1)*2" theta="(-Sh_box_nose_angle) * 1" phi="0.000000" y1="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x1="((Sh_box_thickness_nose/2) * 1)*2" x2="((Sh_box_thickness_nose/2) * 1)*2" alpha1="0.000000" y2="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x3="((Sh_box_thickness_nose/2) * 1)*2" x4="((Sh_box_thickness_nose/2) * 1)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> -<trap name="Shielding_box_small_piece_PartBody" z="((Sh_box_thickness_bottom/2) * 1)*2" theta="-atan(tan((Sh_box_nose_angle)*DEGtoRAD)/2)/DEGtoRAD" phi="0.000000" y1="((Sh_box_thickness_sides/2) * 1)*2" x1="(((Sh_box_Rmax-Sh_box_Rmax_bottom-Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" x2="(((Sh_box_Rmax-Sh_box_Rmax_bottom-Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" alpha1="0.000000" y2="((Sh_box_thickness_sides/2) * 1)*2" x3="(((Sh_box_Rmax-Sh_box_Rmax_bottom)/2) * 1)*2" x4="(((Sh_box_Rmax-Sh_box_Rmax_bottom)/2) * 1)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> -<cone name="Shielding_box_nose_PartBody_op0" rmin1="(Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)) * 1" rmax1="(Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)) * 1" rmin2="(Sh_box_Rmax_bottom-Sh_box_thickness_nose) * 1" rmax2="(Sh_box_Rmax_bottom) * 1" z="((Sh_box_nose_vert_size/2) * 1)*2" startphi="(-Sh_box_horiz_spread_angle/2) * 1" deltaphi="(Sh_box_horiz_spread_angle) * 1" aunit="deg" lunit="mm"/> -<elcone name="Shielding_box_nose_PartBody_op1" dx="(1901.782178)/4078.385024" dy="(2852.673267)/4078.385024" zmax="(4078.385024)/2" zcut="(4078.385024)/2" lunit="mm"/> -<subtraction name="Shielding_box_nose_PartBody"> -<first ref="Shielding_box_nose_PartBody_op0"/> -<second ref="Shielding_box_nose_PartBody_op1"/> -<position name="Shielding_box_nose_PartBody__1_pos_0" x="(Camera_origin_Y_coord*sin((Camera_full_Xrot)*DEGtoRAD) + (4078.385024/2-Camera_origin_Z_coord)*cos((Camera_full_Xrot)*DEGtoRAD)) * 1" y="0" z="(-(Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) - (4078.385024/2-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) - (Sh_box_vert_space+Sh_box_nose_vert_size)/2)) * 1" unit="mm"/> -<rotation name="Shielding_box_nose_PartBody__1_rot_0" x="0" y="(-90-Camera_full_Xrot) * 1" z="0" unit="deg"/> -</subtraction> -<box name="sens_plane_PartBody_op0" x="(500.000000)*2" y="(500.000000)*2" z="(0.500000)*2" lunit="mm"/> -<cone name="sens_plane_PartBody_op1" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<subtraction name="sens_plane_PartBody"> -<first ref="sens_plane_PartBody_op0"/> -<second ref="sens_plane_PartBody_op1"/> -<position name="sens_plane_PartBody__1_pos_0" x="0" y="0" z="(-Sens_plane_pos + (RICH_exit_thickness-RICH_entrance_thickness)/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</subtraction> -<sphere name="Mirror_PartBody_op0" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-(RICH_mirror_phi_step*9/2+RICH_mirror_phi_size/2)) * 1" deltaphi="(RICH_mirror_phi_step*9+RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle-alpha1) * 1" deltatheta="(2*alpha1) * 1" aunit="deg" lunit="mm"/> -<box name="Mirror_PartBody_op1" x="(5000.000000)*2" y="((RICH_width/2) * 1)*2" z="(100.000000)*2" lunit="mm"/> -<subtraction name="Mirror_PartBody_op01"> -<first ref="Mirror_PartBody_op0"/> -<second ref="Mirror_PartBody_op1"/> -<position name="Mirror_PartBody__1_pos_0" x="0" y="0" z="(-Mirror_origin_Y_coord-100) * 1" unit="mm"/> -<rotationref ref="identity"/> -</subtraction> -<box name="Mirror_PartBody_op2" x="(5000.000000)*2" y="(185.000000)*2" z="(185.000000)*2" lunit="mm"/> -<subtraction name="Mirror_PartBody"> -<first ref="Mirror_PartBody_op01"/> -<second ref="Mirror_PartBody_op2"/> -<position name="Mirror_PartBody__2_pos_01" x="0" y="0" z="(-Mirror_origin_Y_coord) * 1" unit="mm"/> -<rotation name="Mirror_PartBody__2_rot_01" x="45.0000000000647" y="0" z="0" unit="deg"/> -</subtraction> -<tube name="Camera_PartBody" rmin="(RICH_camera_radius-0.5) * 1" rmax="(RICH_camera_radius) * 1" z="(((7*(2*RICH_pmt_size+RICH_camera_gap_size) + 6*RICH_camera_gap_size)/2) * 1)*2" startphi="(-7 * RICH_camera_segment_angle) * 1" deltaphi="(14 * RICH_camera_segment_angle) * 1" aunit="deg" lunit="mm"/> -<tube name="Solid_behind_camera_PartBody" rmin="(RICH_camera_radius-10.5) * 1" rmax="(RICH_camera_radius-0.5) * 1" z="((RICH_camera_height/2) * 1)*2" startphi="(-7 * RICH_camera_segment_angle) * 1" deltaphi="(14 * RICH_camera_segment_angle) * 1" aunit="deg" lunit="mm"/> -<box name="mainframe_part2_gas_PartBody" x="(1395.000000)*2" y="(43.000000)*2" z="(43.000000)*2" lunit="mm"/> -<box name="mainframe_part3_gas_PartBody" x="(43.000000)*2" y="(43.000000)*2" z="(432.919390)*2" lunit="mm"/> -<trap name="mainframe_part5_gas_PartBody" z="(43.000000)*2" theta="-26.016698" phi="0.000000" y1="(43.000000)*2" x1="(719.697521)*2" x2="(719.697521)*2" alpha1="0.000000" y2="(43.000000)*2" x3="(624.000148)*2" x4="(624.000148)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> -<box name="mainframe_part8_gas_PartBody" x="(43.000000)*2" y="((RICH_height/2-RICH_covering_thickness-100) * 1)*2" z="(43.000000)*2" lunit="mm"/> -<box name="mainframe_part9_gas_PartBody" x="(2629.000000)*2" y="(43.000000)*2" z="(43.000000)*2" lunit="mm"/> -<box name="mainframe_part10_gas_PartBody" x="(43.000000)*2" y="(43.000000)*2" z="(461.955610)*2" lunit="mm"/> -<box name="mainframe_part2_PartBody" x="(1395.000000)*2" y="(50.000000)*2" z="(50.000000)*2" lunit="mm"/> -<box name="mainframe_part3_PartBody" x="(50.000000)*2" y="(50.000000)*2" z="(432.919390)*2" lunit="mm"/> -<trap name="mainframe_part5_PartBody" z="(50.000000)*2" theta="-26.016698" phi="0.000000" y1="(50.000000)*2" x1="(727.486842)*2" x2="(727.486842)*2" alpha1="0.000000" y2="(50.000000)*2" x3="(616.210827)*2" x4="(616.210827)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> -<box name="mainframe_part8_PartBody" x="(50.000000)*2" y="((RICH_height/2-RICH_covering_thickness-100) * 1)*2" z="(50.000000)*2" lunit="mm"/> -<box name="mainframe_part9_PartBody" x="(2629.000000)*2" y="(50.000000)*2" z="(50.000000)*2" lunit="mm"/> -<box name="mainframe_part10_PartBody" x="(50.000000)*2" y="(50.000000)*2" z="(461.955610)*2" lunit="mm"/> -<box name="rich_gas_PartBody_op0" x="((RICH_width/2-RICH_covering_thickness) * 1)*2" y="((RICH_height/2-RICH_covering_thickness) * 1)*2" z="(((RICH_length-RICH_entrance_thickness-RICH_exit_thickness)/2) * 1)*2" lunit="mm"/> -<box name="rich_gas_PartBody_op1" x="((RICH_width/2-RICH_covering_thickness) * 1)*2" y="((((RICH_height-RICH_entrance_vertical_gap)/2 - 2*RICH_covering_thickness)/2) * 1)*2" z="(((RICH_addend_Z_size-RICH_covering_thickness + RICH_entrance_thickness)/2) * 1)*2" lunit="mm"/> -<union name="rich_gas_PartBody_op01"> -<first ref="rich_gas_PartBody_op0"/> -<second ref="rich_gas_PartBody_op1"/> -<position name="rich_gas_PartBody__1_pos_0" x="0" y="((RICH_height/2 + RICH_entrance_vertical_gap/2)/2) * 1" z="(-RICH_length/2-RICH_addend_Z_size/2 + RICH_covering_thickness) * 1" unit="mm"/> -<rotationref ref="identity"/> -</union> -<box name="rich_gas_PartBody_op2" x="((RICH_width/2-RICH_covering_thickness) * 1)*2" y="((((RICH_height-RICH_entrance_vertical_gap)/2 - 2*RICH_covering_thickness)/2) * 1)*2" z="(((RICH_addend_Z_size-RICH_covering_thickness + RICH_entrance_thickness)/2) * 1)*2" lunit="mm"/> -<union name="rich_gas_PartBody_op012"> -<first ref="rich_gas_PartBody_op01"/> -<second ref="rich_gas_PartBody_op2"/> -<position name="rich_gas_PartBody__2_pos_01" x="0" y="(-(RICH_height/2 + RICH_entrance_vertical_gap/2)/2) * 1" z="(-RICH_length/2-RICH_addend_Z_size/2 + RICH_covering_thickness) * 1" unit="mm"/> -<rotationref ref="identity"/> -</union> -<cone name="rich_gas_PartBody_op3" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> -<subtraction name="rich_gas_PartBody"> -<first ref="rich_gas_PartBody_op012"/> -<second ref="rich_gas_PartBody_op3"/> -<position name="rich_gas_PartBody__3_pos_012" x="0" y="0" z="(-(RICH_entrance_thickness-RICH_exit_thickness)/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</subtraction> -<box name="rich_container_PartBody_op0" x="((RICH_width/2) * 1)*2" y="((RICH_height/2) * 1)*2" z="((RICH_length/2) * 1)*2" lunit="mm"/> -<box name="rich_container_PartBody_op1" x="((RICH_width/2) * 1)*2" y="((((RICH_height-RICH_entrance_vertical_gap)/2)/2) * 1)*2" z="((RICH_addend_Z_size/2) * 1)*2" lunit="mm"/> -<union name="rich_container_PartBody_op01"> -<first ref="rich_container_PartBody_op0"/> -<second ref="rich_container_PartBody_op1"/> -<position name="rich_container_PartBody__1_pos_0" x="0" y="((RICH_height/2 + RICH_entrance_vertical_gap/2)/2) * 1" z="(-RICH_length/2-RICH_addend_Z_size/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</union> -<box name="rich_container_PartBody_op2" x="((RICH_width/2) * 1)*2" y="((((RICH_height-RICH_entrance_vertical_gap)/2)/2) * 1)*2" z="((RICH_addend_Z_size/2) * 1)*2" lunit="mm"/> -<union name="rich_container_PartBody"> -<first ref="rich_container_PartBody_op01"/> -<second ref="rich_container_PartBody_op2"/> -<position name="rich_container_PartBody__2_pos_01" x="0" y="(-(RICH_height/2 + RICH_entrance_vertical_gap/2)/2) * 1" z="(-RICH_length/2-RICH_addend_Z_size/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</union> -</solids> -<structure> -<volume name="pmt_pixel"> -<materialref ref="CsI"/> -<solidref ref="pmt_pixel_PartBody"/> -</volume> -<volume name="pmt_pixel_wide"> -<materialref ref="CsI"/> -<solidref ref="pmt_pixel_wide_PartBody"/> -</volume> -<volume name="pmt_pixel_vertical"> -<materialref ref="CsI"/> -<solidref ref="pmt_pixel_vertical_PartBody"/> -</volume> -<volume name="pmt_pixel_horisontal"> -<materialref ref="CsI"/> -<solidref ref="pmt_pixel_horisontal_PartBody"/> -</volume> -<volume name="pmt"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="pmt_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="pmt_pixel_wide"/> -<position name="pmt_pixel_wide_pos_pmt" x="(3*RICH_pixel_size_middle+RICH_pixel_size_surrounding/2) * 1" y="(3*RICH_pixel_size_middle+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="pmt_pixel_wide"/> -<position name="pmt_pixel_wide_pos_pmt" x="(-3*RICH_pixel_size_middle-RICH_pixel_size_surrounding/2) * 1" y="(3*RICH_pixel_size_middle+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="pmt_pixel_wide"/> -<position name="pmt_pixel_wide_pos_pmt" x="(3*RICH_pixel_size_middle+RICH_pixel_size_surrounding/2) * 1" y="(-3*RICH_pixel_size_middle-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="pmt_pixel_wide"/> -<position name="pmt_pixel_wide_pos_pmt" x="(-3*RICH_pixel_size_middle-RICH_pixel_size_surrounding/2) * 1" y="(-3*RICH_pixel_size_middle-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="11"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="12"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="13"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="14"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="15"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="16"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="17"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="18"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="19"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="20"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="21"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="22"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="23"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="24"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="25"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="26"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="27"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="28"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="29"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="30"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="31"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="32"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="33"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="34"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="35"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="36"> -<volumeref ref="pmt_pixel"/> -<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="11"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="12"> -<volumeref ref="pmt_pixel_vertical"/> -<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+6" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+12" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+18" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+24" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+30" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+6" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+12" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+18" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="11"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+24" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="12"> -<volumeref ref="pmt_pixel_horisontal"/> -<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+30" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="pmt_container"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="pmt_container_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="pmt"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="camera_module"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="camera_module_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="pmt_container"/> -<position name="pmt_container_pos_camera_module" x="(-RICH_pmt_size-RICH_camera_gap_size) * 1" y="((RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="pmt_container"/> -<position name="pmt_container_pos_camera_module" x="0" y="((RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="pmt_container"/> -<position name="pmt_container_pos_camera_module" x="(RICH_pmt_size+RICH_camera_gap_size) * 1" y="((RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="pmt_container"/> -<position name="pmt_container_pos_camera_module" x="(-RICH_pmt_size-RICH_camera_gap_size) * 1" y="(-(RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="pmt_container"/> -<position name="pmt_container_pos_camera_module" x="0" y="(-(RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="pmt_container"/> -<position name="pmt_container_pos_camera_module" x="(RICH_pmt_size+RICH_camera_gap_size) * 1" y="(-(RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="alu_frame"> -<materialref ref="aluminium"/> -<solidref ref="alu_frame_PartBody"/> -</volume> -<volume name="camera_strip"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="camera_strip_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="camera_module"/> -<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="camera_module"/> -<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+106" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="camera_module"/> -<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+212" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="camera_module"/> -<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+318" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="camera_module"/> -<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+424" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="camera_module"/> -<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+530" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="camera_module"/> -<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+636" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="alu_frame"/> -<position name="alu_frame_pos_camera_strip" x="0" y="0" z="(-RICH_pmt_depth/2-5) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<assembly name="camera_container"> -<physvol copynumber="1"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-7+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-7+0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-7+0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-6+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-6+0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-6+0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-5+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-5+0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-5+0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-4+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-4+0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-4+0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-3+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-3+0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-3+0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-2+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-2+0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-2+0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-1+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-1+0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-1+0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(1-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(1-0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(1-0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(2-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(2-0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(2-0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(3-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(3-0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(3-0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="11"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(4-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(4-0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(4-0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="12"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(5-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(5-0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(5-0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="13"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(6-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(6-0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(6-0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="14"> -<volumeref ref="camera_strip"/> -<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(7-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(7-0.5))*DEGtoRAD)) * 1" unit="mm"/> -<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(7-0.5)) * 1)" z="-(0)" unit="deg"/> -</physvol> -</assembly> -<volume name="rich_cyl_pipe_section_vac"> -<materialref ref="vacuum"/> -<solidref ref="rich_cyl_pipe_section_vac_PartBody"/> -</volume> -<volume name="rich_cyl_pipe_section"> -<materialref ref="aluminium"/> -<solidref ref="rich_cyl_pipe_section_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="rich_cyl_pipe_section_vac"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="rich_pipe_flange"> -<materialref ref="aluminium"/> -<solidref ref="rich_pipe_flange_PartBody"/> -</volume> -<volume name="rich_pipe_section_vac"> -<materialref ref="vacuum"/> -<solidref ref="rich_pipe_section_vac_PartBody"/> -</volume> -<volume name="rich_pipe_section"> -<materialref ref="aluminium"/> -<solidref ref="rich_pipe_section_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="rich_pipe_section_vac"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="mirror_tile_type0"> -<materialref ref="RICHglass"/> -<solidref ref="mirror_tile_type0_PartBody"/> -</volume> -<volume name="mirror_tile_type1"> -<materialref ref="RICHglass"/> -<solidref ref="mirror_tile_type1_PartBody"/> -</volume> -<volume name="mirror_tile_type2"> -<materialref ref="RICHglass"/> -<solidref ref="mirror_tile_type2_PartBody"/> -</volume> -<volume name="mirror_tile_type3"> -<materialref ref="RICHglass"/> -<solidref ref="mirror_tile_type3_PartBody"/> -</volume> -<volume name="mirror_tile_type4"> -<materialref ref="RICHglass"/> -<solidref ref="mirror_tile_type4_PartBody"/> -</volume> -<volume name="mirror_tile_type5"> -<materialref ref="RICHglass"/> -<solidref ref="mirror_tile_type5_PartBody"/> -</volume> -<assembly name="mirror_full_half_no_misalign"> -<physvol copynumber="1"> -<volumeref ref="mirror_tile_type0"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mirror_tile_type0"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mirror_tile_type0"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mirror_tile_type0"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mirror_tile_type4"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type4_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mirror_tile_type5"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type5_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="mirror_tile_type0"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="mirror_tile_type0"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="mirror_tile_type0"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="mirror_tile_type0"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="mirror_tile_type1"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="mirror_tile_type2"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="mirror_tile_type3"/> -<positionref ref="central"/> -<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> -</physvol> -</assembly> -<volume name="rich_entrance"> -<materialref ref="kapton"/> -<solidref ref="rich_entrance_PartBody"/> -</volume> -<volume name="rich_exit"> -<materialref ref="kapton"/> -<solidref ref="rich_exit_PartBody"/> -</volume> -<volume name="Shielding_box_top"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_top_PartBody"/> -</volume> -<volume name="Shielding_box_back"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_back_PartBody"/> -</volume> -<volume name="Shielding_box_bottom"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_bottom_PartBody"/> -</volume> -<volume name="Shielding_box_top_horiz_add"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_top_horiz_add_PartBody"/> -</volume> -<volume name="Shielding_box_back_horiz_add"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_back_horiz_add_PartBody"/> -</volume> -<volume name="Shielding_box_back_horiz_add_sym"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_back_horiz_add_sym_PartBody"/> -</volume> -<volume name="Shielding_box_bottom_horiz_add"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_bottom_horiz_add_PartBody"/> -</volume> -<volume name="Shielding_box_bottom_horiz_add_sym"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_bottom_horiz_add_sym_PartBody"/> -</volume> -<volume name="Shielding_box_side"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_side_PartBody"/> -</volume> -<volume name="Shielding_box_side_sym"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_side_sym_PartBody"/> -</volume> -<volume name="Shielding_box_nose_horiz_add"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_nose_horiz_add_PartBody"/> -</volume> -<volume name="Shielding_box_small_piece"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_small_piece_PartBody"/> -</volume> -<volume name="Shielding_box_nose"> -<materialref ref="iron"/> -<solidref ref="Shielding_box_nose_PartBody"/> -</volume> -<assembly name="shielding_box_container"> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_top"/> -<position name="Shielding_box_top_pos_shielding_box_container" x="0" y="0" z="((Sh_box_vert_space+Sh_box_thickness_top)/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_back"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_bottom"/> -<position name="Shielding_box_bottom_pos_shielding_box_container" x="0" y="0" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_top_horiz_add"/> -<position name="Shielding_box_top_horiz_add_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmin-Sh_box_thickness_back)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(((Sh_box_Rmax+Sh_box_Rmin-Sh_box_thickness_back)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="((Sh_box_vert_space+Sh_box_thickness_top)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_top_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="Shielding_box_top_horiz_add"/> -<position name="Shielding_box_top_horiz_add_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmin-Sh_box_thickness_back)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-((Sh_box_Rmax+Sh_box_Rmin-Sh_box_thickness_back)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="((Sh_box_vert_space+Sh_box_thickness_top)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_top_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_back_horiz_add"/> -<position name="Shielding_box_back_horiz_add_pos_shielding_box_container" x="((Sh_box_Rmin-Sh_box_thickness_back/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="((Sh_box_Rmin-Sh_box_thickness_back/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="0" unit="mm"/> -<rotation name="Shielding_box_back_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_back_horiz_add_sym"/> -<position name="Shielding_box_back_horiz_add_sym_pos_shielding_box_container" x="((Sh_box_Rmin-Sh_box_thickness_back/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-(Sh_box_Rmin-Sh_box_thickness_back/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="0" unit="mm"/> -<rotation name="Shielding_box_back_horiz_add_sym_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_bottom_horiz_add"/> -<position name="Shielding_box_bottom_horiz_add_pos_shielding_box_container" x="(((Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_Rmin-Sh_box_thickness_back+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(((Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_Rmin-Sh_box_thickness_back+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_bottom_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_bottom_horiz_add_sym"/> -<position name="Shielding_box_bottom_horiz_add_sym_pos_shielding_box_container" x="(((Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_Rmin-Sh_box_thickness_back+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-((Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_Rmin-Sh_box_thickness_back+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_bottom_horiz_add_sym_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_side"/> -<position name="Shielding_box_side_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmin)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(((Sh_box_Rmax+Sh_box_Rmin)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + (Sh_box_horiz_add+Sh_box_thickness_sides/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="0" unit="mm"/> -<rotation name="Shielding_box_side_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_side_sym"/> -<position name="Shielding_box_side_sym_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmin)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-((Sh_box_Rmax+Sh_box_Rmin)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="0" unit="mm"/> -<rotation name="Shielding_box_side_sym_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_nose_horiz_add"/> -<position name="Shielding_box_nose_horiz_add_pos_shielding_box_container" x="((Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)/2-Sh_box_thickness_nose/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="((Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)/2-Sh_box_thickness_nose/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="((-Sh_box_vert_space-Sh_box_nose_vert_size)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_nose_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="Shielding_box_nose_horiz_add"/> -<position name="Shielding_box_nose_horiz_add_pos_shielding_box_container" x="((Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)/2-Sh_box_thickness_nose/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-(Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)/2-Sh_box_thickness_nose/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="((-Sh_box_vert_space-Sh_box_nose_vert_size)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_nose_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_small_piece"/> -<position name="Shielding_box_small_piece_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmax_bottom+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(((Sh_box_Rmax+Sh_box_Rmax_bottom+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + (Sh_box_horiz_add+Sh_box_thickness_sides/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_small_piece_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="Shielding_box_small_piece"/> -<position name="Shielding_box_small_piece_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmax_bottom+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-((Sh_box_Rmax+Sh_box_Rmax_bottom+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> -<rotation name="Shielding_box_small_piece_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Shielding_box_nose"/> -<position name="Shielding_box_nose_pos_shielding_box_container" x="0" y="0" z="((-Sh_box_vert_space-Sh_box_nose_vert_size)/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -</assembly> -<volume name="sens_plane"> -<materialref ref="RICHgas_CO2_dis+"/> -<solidref ref="sens_plane_PartBody"/> -</volume> -<!-- -<volume name="Mirror"> -<materialref ref="RICHglass"/> -<solidref ref="Mirror_PartBody"/> -</volume> -<volume name="Camera"> -<materialref ref="CsI"/> -<solidref ref="Camera_PartBody"/> -</volume> -<volume name="Solid_behind_camera"> -<materialref ref="aluminium"/> -<solidref ref="Solid_behind_camera_PartBody"/> -</volume> ---> -<volume name="mainframe_part2_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="mainframe_part2_gas_PartBody"/> -</volume> -<volume name="mainframe_part3_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="mainframe_part3_gas_PartBody"/> -</volume> -<volume name="mainframe_part5_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="mainframe_part5_gas_PartBody"/> -</volume> -<volume name="mainframe_part8_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="mainframe_part8_gas_PartBody"/> -</volume> -<volume name="mainframe_part9_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="mainframe_part9_gas_PartBody"/> -</volume> -<volume name="mainframe_part10_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="mainframe_part10_gas_PartBody"/> -</volume> -<volume name="mainframe_part2"> -<materialref ref="aluminium"/> -<solidref ref="mainframe_part2_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="mainframe_part2_gas"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="mainframe_part3"> -<materialref ref="aluminium"/> -<solidref ref="mainframe_part3_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="mainframe_part3_gas"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="mainframe_part5"> -<materialref ref="aluminium"/> -<solidref ref="mainframe_part5_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="mainframe_part5_gas"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="mainframe_part8"> -<materialref ref="aluminium"/> -<solidref ref="mainframe_part8_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="mainframe_part8_gas"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="mainframe_part9"> -<materialref ref="aluminium"/> -<solidref ref="mainframe_part9_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="mainframe_part9_gas"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<volume name="mainframe_part10"> -<materialref ref="aluminium"/> -<solidref ref="mainframe_part10_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="mainframe_part10_gas"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<assembly name="mainframe_assembly"> -<physvol copynumber="1"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="-2579" y="0" z="511.95561" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="2579" y="0" z="511.95561" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="-2579" y="0" z="-511.95561" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="2579" y="0" z="-511.95561" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mainframe_part9"/> -<position name="mainframe_part9_pos_mainframe_assembly" x="0" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="511.95561" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mainframe_part9"/> -<position name="mainframe_part9_pos_mainframe_assembly" x="0" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-511.95561" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mainframe_part9"/> -<position name="mainframe_part9_pos_mainframe_assembly" x="0" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="511.95561" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mainframe_part9"/> -<position name="mainframe_part9_pos_mainframe_assembly" x="0" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-511.95561" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="-2579" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="-2579" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="2579" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="2579" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mainframe_part5"/> -<position name="mainframe_part5_pos_mainframe_assembly" x="1964.811997" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-917.898222" unit="mm"/> -<rotation name="mainframe_part5_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mainframe_part5"/> -<position name="mainframe_part5_pos_mainframe_assembly" x="1964.811997" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-917.898222" unit="mm"/> -<rotation name="mainframe_part5_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mainframe_part5"/> -<position name="mainframe_part5_pos_mainframe_assembly" x="-1964.811997" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-917.898222" unit="mm"/> -<rotation name="mainframe_part5_rot_mainframe_assembly" x="-(0)" y="-(31.991651000092)" z="-(180.0)" unit="deg"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mainframe_part5"/> -<position name="mainframe_part5_pos_mainframe_assembly" x="-1964.811997" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-917.898222" unit="mm"/> -<rotation name="mainframe_part5_rot_mainframe_assembly" x="-(0)" y="-(31.991651000092)" z="-(180.0)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mainframe_part3"/> -<position name="mainframe_part3_pos_mainframe_assembly" x="-1345" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-994.875" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mainframe_part3"/> -<position name="mainframe_part3_pos_mainframe_assembly" x="-1345" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-994.875" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mainframe_part3"/> -<position name="mainframe_part3_pos_mainframe_assembly" x="1345" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-994.875" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mainframe_part3"/> -<position name="mainframe_part3_pos_mainframe_assembly" x="1345" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-994.875" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="2151.316481" y="0" z="-801.395071" unit="mm"/> -<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="1781.11648" y="0" z="-1032.646704" unit="mm"/> -<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="1463.896048" y="0" z="-1230.803763" unit="mm"/> -<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="-2151.316481" y="0" z="-801.395071" unit="mm"/> -<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(31.991651000046)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="-1781.11648" y="0" z="-1032.646704" unit="mm"/> -<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(31.991651000046)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="mainframe_part8"/> -<position name="mainframe_part8_pos_mainframe_assembly" x="-1463.896048" y="0" z="-1230.803763" unit="mm"/> -<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(31.991651000046)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mainframe_part2"/> -<position name="mainframe_part2_pos_mainframe_assembly" x="0" y="1000" z="-1282.79439" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mainframe_part2"/> -<position name="mainframe_part2_pos_mainframe_assembly" x="0" y="-1000" z="-1282.79439" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="5"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="-1345" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="6"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="-1345" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="7"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="1345" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="8"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="1345" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="9"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="0" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="10"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="0" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="11"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="2579" y="878" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="12"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="2579" y="-878" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="13"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="-2579" y="878" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="14"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="-2579" y="-878" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="15"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="-1926" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="16"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="-1926" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="17"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="1926" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="18"> -<volumeref ref="mainframe_part10"/> -<position name="mainframe_part10_pos_mainframe_assembly" x="1926" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="3"> -<volumeref ref="mainframe_part2"/> -<position name="mainframe_part2_pos_mainframe_assembly" x="0" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-1477.79439" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="4"> -<volumeref ref="mainframe_part2"/> -<position name="mainframe_part2_pos_mainframe_assembly" x="0" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-1477.79439" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -</assembly> -<volume name="rich_gas"> -<materialref ref="RICHgas_CO2_dis"/> -<solidref ref="rich_gas_PartBody"/> -<!-- -<physvol copynumber="1"> -<volumeref ref="shielding_box_container"/> -<position name="shielding_box_container_pos_rich_gas" x="0" y="(Camera_origin_Y_coord) * 1" z="(-1800-1900/2+Camera_origin_Z_coord) * 1" unit="mm"/> -<rotation name="shielding_box_container_rot_rich_gas" x="-((-90+Camera_full_Xrot) * 1)" y="-(0)" z="-(-90.0)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="shielding_box_container"/> -<position name="shielding_box_container_pos_rich_gas" x="0" y="(-Camera_origin_Y_coord) * 1" z="(-1800-1900/2+Camera_origin_Z_coord) * 1" unit="mm"/> -<rotation name="shielding_box_container_rot_rich_gas" x="-((90-Camera_full_Xrot) * 1)" y="-(0)" z="-(90.0)" unit="deg"/> -</physvol> ---> -<physvol copynumber="1"> -<volumeref ref="camera_container"/> -<position name="camera_container_pos_rich_gas" x="0" y="(Camera_origin_Y_coord + RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> -<rotation name="camera_container_rot_rich_gas" x="-((Camera_full_Xrot) * 1)" y="-(0)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="camera_container"/> -<position name="camera_container_pos_rich_gas" x="0" y="(-Camera_origin_Y_coord-RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> -<rotation name="camera_container_rot_rich_gas" x="-((-Camera_full_Xrot) * 1)" y="-(0)" z="-(0)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mirror_full_half_no_misalign"/> -<position name="mirror_full_half_no_misalign_pos_rich_gas" x="0" y="(Mirror_origin_Y_coord) * 1" z="(-1800-RICH_length/2+Mirror_origin_Z_coord) * 1" unit="mm"/> -<rotation name="mirror_full_half_no_misalign_rot_rich_gas" x="-(-90.0)" y="-(0)" z="-(-90.0)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="mirror_full_half_no_misalign"/> -<position name="mirror_full_half_no_misalign_pos_rich_gas" x="0" y="(-Mirror_origin_Y_coord) * 1" z="(-1800-RICH_length/2+Mirror_origin_Z_coord) * 1" unit="mm"/> -<rotation name="mirror_full_half_no_misalign_rot_rich_gas" x="-(90.0)" y="-(0)" z="-(90.0)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="sens_plane"/> -<position name="sens_plane_pos_rich_gas" x="0" y="0" z="-300" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="mainframe_assembly"/> -<position name="mainframe_assembly_pos_rich_gas" x="0" y="0" z="385.41939" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<!-- -<physvol copynumber="1"> -<volumeref ref="Mirror"/> -<position name="Mirror_pos_rich_gas" x="0" y="Mirror_origin_Y_coord * 1" z="(-1800-RICH_length/2+Mirror_origin_Z_coord) * 1" unit="mm"/> -<rotation name="Mirror_rot_rich_gas" x="-(-90.0)" y="-(0)" z="-(-90.0)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="Mirror"/> -<position name="Mirror_pos_rich_gas" x="0" y="(-Mirror_origin_Y_coord) * 1" z="(-1800-1900/2+Mirror_origin_Z_coord) * 1" unit="mm"/> -<rotation name="Mirror_rot_rich_gas" x="-(90.0)" y="-(0)" z="-(90.0)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Camera"/> -<position name="Camera_pos_rich_gas" x="0" y="(Camera_origin_Y_coord + RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord + RICH_camera_shift_Z) * 1" unit="mm"/> -<rotation name="Camera_rot_rich_gas" x="-((-90+Camera_full_Xrot) * 1)" y="-(0)" z="-(-90.0)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="Camera"/> -<position name="Camera_pos_rich_gas" x="0" y="(-Camera_origin_Y_coord-RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> -<rotation name="Camera_rot_rich_gas" x="-((90-Camera_full_Xrot) * 1)" y="-(0)" z="-(90.0)" unit="deg"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="Solid_behind_camera"/> -<position name="Solid_behind_camera_pos_rich_gas" x="0" y="(Camera_origin_Y_coord+RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> -<rotation name="Solid_behind_camera_rot_rich_gas" x="-((-90+Camera_full_Xrot) * 1)" y="-(0)" z="-(-90.0)" unit="deg"/> -</physvol> -<physvol copynumber="2"> -<volumeref ref="Solid_behind_camera"/> -<position name="Solid_behind_camera_pos_rich_gas" x="0" y="(-Camera_origin_Y_coord-RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> -<rotation name="Solid_behind_camera_rot_rich_gas" x="-((90-Camera_full_Xrot) * 1)" y="-(0)" z="-(90.0)" unit="deg"/> -</physvol> ---> -</volume> -<volume name="rich_container"> -<materialref ref="aluminium"/> -<solidref ref="rich_container_PartBody"/> -<physvol copynumber="1"> -<volumeref ref="rich_gas"/> -<position name="rich_gas_pos_rich_container" x="0" y="0" z="((RICH_entrance_thickness-RICH_exit_thickness)/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="rich_entrance"/> -<position name="rich_entrance_pos_rich_container" x="0" y="0" z="(-RICH_length/2+RICH_entrance_thickness/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="rich_exit"/> -<position name="rich_exit_pos_rich_container" x="0" y="0" z="(RICH_length/2-RICH_exit_thickness/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="rich_pipe_section"/> -<positionref ref="central"/> -<rotationref ref="identity"/> -</physvol> -</volume> -<assembly name="rich_opt"> -<physvol copynumber="1"> -<volumeref ref="rich_container"/> -<position name="rich_container_pos_rich_opt" x="0" y="0" z="(1800 + RICH_length/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="rich_cyl_pipe_section"/> -<position name="rich_cyl_pipe_section_pos_rich_opt" x="0" y="0" z="(1800 - RICH_pipe_cyl_part_length/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -<physvol copynumber="1"> -<volumeref ref="rich_pipe_flange"/> -<position name="rich_pipe_flange_pos_rich_opt" x="0" y="0" z="(1800 - RICH_pipe_cyl_part_length + RICH_pipe_flange_thickness/2) * 1" unit="mm"/> -<rotationref ref="identity"/> -</physvol> -</assembly> -</structure> -<setup name="FAIRgeom" version="1.0"> -<world ref="rich_opt"/> -</setup> -</gdml> +<?xml version="1.0" encoding="UTF-8"?> +<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> + +<define> +<position name="central" x="0" y="0" z="0" unit="mm"/> +<rotation name="identity" x="0" y="0" z="0" unit="degree"/> +<variable name="DEGtoRAD" value="1.74532925199433E-02"/> +<variable name="Acceptance_angle" value="25"/> +<variable name="Acceptance_scaling_factor" value="1.5"/> +<variable name="RICH_length" value="1900"/> +<variable name="RICH_height" value="5000"/> +<variable name="RICH_width" value="5268"/> +<variable name="RICH_entrance_vertical_gap" value="1800"/> +<variable name="RICH_covering_thickness" value="5"/> +<variable name="RICH_entrance_thickness" value="0.25"/> +<variable name="RICH_exit_thickness" value="5"/> +<variable name="RICH_addend_Z_size" value="200"/> +<variable name="RICH_pipe_outer_radius_at_entrance" value="74.2"/> +<variable name="RICH_pipe_thickness_at_entrance" value="1.48"/> +<variable name="RICH_pipe_outer_radius_at_exit" value="161.6"/> +<variable name="RICH_pipe_thickness_at_exit" value="3.2"/> +<variable name="RICH_pipe_cyl_part_length" value="100"/> +<variable name="RICH_pipe_flange_thickness" value="3"/> +<variable name="RICH_mirror_radius" value="3000"/> +<variable name="RICH_mirror_position" value="3500"/> +_RICH_OPTIMIZATION_PARAMATERS_ +<variable name="RICH_camera_radius" value="1697"/> +<variable name="RICH_mirror_phi_size" value="8.425"/> +<variable name="RICH_mirror_phi_step" value="8.5"/> +<variable name="RICH_mirror_theta_gap" value="0.0745"/> +<variable name="RICH_pixel_size_middle" value="6"/> +<variable name="RICH_pixel_size_surrounding" value="6.25"/> +<variable name="RICH_pmt_size" value="52"/> +<variable name="RICH_pmt_depth" value="38.71"/> +<variable name="RICH_camera_module_depth" value="250"/> +<variable name="RICH_camera_gap_size" value="1"/> +<variable name="RICH_camera_height" value="7*(2*RICH_pmt_size+RICH_camera_gap_size) + 6*RICH_camera_gap_size"/> +<variable name="RICH_camera_touch_width" value="157.5"/> +<variable name="RICH_camera_touch_radius" value="sqrt((RICH_camera_radius-10-RICH_pmt_depth)*(RICH_camera_radius-10-RICH_pmt_depth) + RICH_camera_touch_width*RICH_camera_touch_width/4)"/> +<variable name="RICH_camera_segment_angle" value="(2*asin((RICH_camera_touch_width/2)/RICH_camera_touch_radius)/DEGtoRAD)"/> +<variable name="RICH_camera_alu_frame_height" value="800"/> +<variable name="Sens_plane_pos" value="-250"/> +<variable name="Sh_box_thickness_top" value="30"/> +<variable name="Sh_box_thickness_bottom" value="60"/> +<variable name="Sh_box_thickness_sides" value="40"/> +<variable name="Sh_box_thickness_back" value="50"/> +<variable name="Sh_box_thickness_nose" value="60"/> +<variable name="Sh_box_vert_space" value="800"/> +<variable name="Sh_box_horiz_spread_angle" value="78"/> +<variable name="Sh_box_horiz_add" value="40"/> +<variable name="Sh_box_Rmin" value="1390"/> +<variable name="Sh_box_Rmax" value="1680"/> +<variable name="Sh_box_Rmax_bottom" value="1600"/> +<variable name="Sh_box_nose_angle" value="45"/> +<variable name="Sh_box_nose_vert_size" value="593"/> +<variable name="Sh_box_cut_Z_coord" value="1600"/> +<variable name="Back_cut_enabled" value="false"/> +<variable name="Nose_enabled" value="true"/> +<variable name="E" value="sin(((90-Acceptance_angle-RICH_mirror_tilt_angle))*DEGtoRAD) / sin((Acceptance_angle)*DEGtoRAD)"/> +<variable name="A" value="(4*E*E+4*E*sin((RICH_mirror_tilt_angle)*DEGtoRAD)+1) / (cos((RICH_mirror_tilt_angle)*DEGtoRAD)*cos((RICH_mirror_tilt_angle)*DEGtoRAD))"/> +<variable name="B" value="(2*(2*E+sin((RICH_mirror_tilt_angle)*DEGtoRAD))/cos((RICH_mirror_tilt_angle)*DEGtoRAD)) * (1 - RICH_mirror_position/(RICH_mirror_radius*cos((RICH_mirror_tilt_angle)*DEGtoRAD)))"/> +<variable name="C" value="RICH_mirror_position*(RICH_mirror_position-2*RICH_mirror_radius*cos((RICH_mirror_tilt_angle)*DEGtoRAD)) / (RICH_mirror_radius*RICH_mirror_radius*cos((RICH_mirror_tilt_angle)*DEGtoRAD)*cos((RICH_mirror_tilt_angle)*DEGtoRAD))"/> +<variable name="t1" value="(-B+sqrt(B*B-4*A*C)) / (2*A)"/> +<variable name="t2" value="(-B-sqrt(B*B-4*A*C)) / (2*A)"/> +<variable name="alpha1" value="(asin(t1)/DEGtoRAD)"/> +<variable name="alpha2" value="(asin(t2)/DEGtoRAD)"/> +<variable name="psi" value="(atan((RICH_mirror_radius*(sin((alpha1)*DEGtoRAD)*cos((RICH_mirror_tilt_angle)*DEGtoRAD) - sin((RICH_mirror_tilt_angle)*DEGtoRAD)*(1-cos((alpha1)*DEGtoRAD))))/RICH_mirror_position)/DEGtoRAD)"/> +<variable name="Camera_full_Xrot" value="(psi+2*RICH_mirror_tilt_angle - RICH_camera_tilt_angle)"/> +<variable name="Camera_origin_Y_coord" value="RICH_mirror_position*tan((psi)*DEGtoRAD) + (RICH_mirror_radius/2)*sin(((psi+2*RICH_mirror_tilt_angle))*DEGtoRAD) + RICH_camera_radius*sin((Camera_full_Xrot)*DEGtoRAD)"/> +<variable name="Camera_origin_Z_coord" value="RICH_mirror_position - (RICH_mirror_radius/2)*cos(((psi+2*RICH_mirror_tilt_angle))*DEGtoRAD) - RICH_camera_radius*cos((Camera_full_Xrot)*DEGtoRAD)"/> +<variable name="Mirror_origin_Y_coord" value="RICH_mirror_radius * sin(((RICH_mirror_tilt_angle+alpha1))*DEGtoRAD)"/> +<variable name="Mirror_origin_Z_coord" value="RICH_mirror_position - RICH_mirror_radius*cos((RICH_mirror_tilt_angle)*DEGtoRAD)"/> +</define> + +<materials> +<material name="CsI" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="aluminium" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="vacuum" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHglass" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="kapton" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="iron" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +<material name="RICHgas_CO2_dis+" Z="1.0"> +<D value="1"/> +<atom value="1"/> +</material> +</materials> + +<solids> +<box name="pmt_pixel_PartBody" x="((RICH_pixel_size_middle/2) * 1)*2" y="((RICH_pixel_size_middle/2) * 1)*2" z="(0.250000)*2" lunit="mm"/> +<box name="pmt_pixel_wide_PartBody" x="((RICH_pixel_size_surrounding/2) * 1)*2" y="((RICH_pixel_size_surrounding/2) * 1)*2" z="(0.250000)*2" lunit="mm"/> +<box name="pmt_pixel_vertical_PartBody" x="((RICH_pixel_size_middle/2) * 1)*2" y="((RICH_pixel_size_surrounding/2) * 1)*2" z="(0.250000)*2" lunit="mm"/> +<box name="pmt_pixel_horisontal_PartBody" x="((RICH_pixel_size_surrounding/2) * 1)*2" y="((RICH_pixel_size_middle/2) * 1)*2" z="(0.250000)*2" lunit="mm"/> +<box name="pmt_PartBody" x="((RICH_pmt_size/2) * 1)*2" y="((RICH_pmt_size/2) * 1)*2" z="((RICH_pmt_depth/2) * 1)*2" lunit="mm"/> +<box name="pmt_container_PartBody" x="((RICH_pmt_size/2) * 1)*2" y="((RICH_pmt_size/2) * 1)*2" z="((RICH_pmt_depth/2) * 1)*2" lunit="mm"/> +<box name="camera_module_PartBody" x="(((3*RICH_pmt_size+2*RICH_camera_gap_size)/2) * 1)*2" y="(((2*RICH_pmt_size+RICH_camera_gap_size)/2) * 1)*2" z="((RICH_pmt_depth/2) * 1)*2" lunit="mm"/> +<box name="alu_frame_PartBody" x="((RICH_camera_touch_width/2) * 1)*2" y="(((14*RICH_pmt_size+13*RICH_camera_gap_size)/2) * 1)*2" z="(5.000000)*2" lunit="mm"/> +<box name="camera_strip_PartBody_op0" x="(((3*RICH_pmt_size+2*RICH_camera_gap_size)/2) * 1)*2" y="(((7*(2*RICH_pmt_size+RICH_camera_gap_size) + 6*RICH_camera_gap_size)/2) * 1)*2" z="((RICH_pmt_depth/2) * 1)*2" lunit="mm"/> +<box name="camera_strip_PartBody_op1" x="((RICH_camera_touch_width/2) * 1)*2" y="(((7*(2*RICH_pmt_size+RICH_camera_gap_size) + 6*RICH_camera_gap_size)/2) * 1)*2" z="(5.000000)*2" lunit="mm"/> +<union name="camera_strip_PartBody"> +<first ref="camera_strip_PartBody_op0"/> +<second ref="camera_strip_PartBody_op1"/> +<position name="camera_strip_PartBody__1_pos_0" x="0" y="0" z="(-RICH_pmt_depth/2-5) * 1" unit="mm"/> +<rotationref ref="identity"/> +</union> +<tube name="rich_cyl_pipe_section_vac_PartBody" rmin="0.000000" rmax="(RICH_pipe_outer_radius_at_entrance-RICH_pipe_thickness_at_entrance) * 1" z="((RICH_pipe_cyl_part_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<tube name="rich_cyl_pipe_section_PartBody" rmin="0.000000" rmax="(RICH_pipe_outer_radius_at_entrance) * 1" z="((RICH_pipe_cyl_part_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<tube name="rich_pipe_flange_PartBody" rmin="(RICH_pipe_outer_radius_at_entrance) * 1" rmax="80.000000" z="((RICH_pipe_flange_thickness/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<cone name="rich_pipe_section_vac_PartBody" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance-RICH_pipe_thickness_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit-RICH_pipe_thickness_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<cone name="rich_pipe_section_PartBody" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<sphere name="mirror_tile_type0_PartBody_op0" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle+alpha1/2+RICH_mirror_theta_gap*3/4) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> +<box name="mirror_tile_type0_PartBody_op1" x="(5000.000000)*2" y="((RICH_width/2) * 1)*2" z="(100.000000)*2" lunit="mm"/> +<subtraction name="mirror_tile_type0_PartBody"> +<first ref="mirror_tile_type0_PartBody_op0"/> +<second ref="mirror_tile_type0_PartBody_op1"/> +<position name="mirror_tile_type0_PartBody__1_pos_0" x="0" y="0" z="(-Mirror_origin_Y_coord-100) * 1" unit="mm"/> +<rotationref ref="identity"/> +</subtraction> +<sphere name="mirror_tile_type1_PartBody" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle+RICH_mirror_theta_gap/2) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> +<sphere name="mirror_tile_type2_PartBody" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle-alpha1/2+RICH_mirror_theta_gap/4) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> +<sphere name="mirror_tile_type3_PartBody" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle-alpha1) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> +<sphere name="mirror_tile_type4_PartBody_op0" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle+alpha1/2+RICH_mirror_theta_gap*3/4) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> +<box name="mirror_tile_type4_PartBody_op1" x="(5000.000000)*2" y="((RICH_width/2) * 1)*2" z="(100.000000)*2" lunit="mm"/> +<subtraction name="mirror_tile_type4_PartBody_op01"> +<first ref="mirror_tile_type4_PartBody_op0"/> +<second ref="mirror_tile_type4_PartBody_op1"/> +<position name="mirror_tile_type4_PartBody__1_pos_0" x="0" y="0" z="(-Mirror_origin_Y_coord-100) * 1" unit="mm"/> +<rotationref ref="identity"/> +</subtraction> +<tube name="mirror_tile_type4_PartBody_op2" rmin="0.000000" rmax="800.000000" z="(3200.000000)*2" startphi="-90.000000" deltaphi="135.000000" aunit="deg" lunit="mm"/> +<subtraction name="mirror_tile_type4_PartBody"> +<first ref="mirror_tile_type4_PartBody_op01"/> +<second ref="mirror_tile_type4_PartBody_op2"/> +<position name="mirror_tile_type4_PartBody__2_pos_01" x="0" y="0" z="(-RICH_mirror_radius*sin(((RICH_mirror_tilt_angle+alpha1))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="mirror_tile_type4_PartBody__2_rot_01" x="90.0" y="0" z="90.0" unit="deg"/> +</subtraction> +<sphere name="mirror_tile_type5_PartBody_op0" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-RICH_mirror_phi_size/2) * 1" deltaphi="(RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle+alpha1/2+RICH_mirror_theta_gap*3/4) * 1" deltatheta="(alpha1/2 - RICH_mirror_theta_gap*3/4) * 1" aunit="deg" lunit="mm"/> +<box name="mirror_tile_type5_PartBody_op1" x="(5000.000000)*2" y="((RICH_width/2) * 1)*2" z="(100.000000)*2" lunit="mm"/> +<subtraction name="mirror_tile_type5_PartBody_op01"> +<first ref="mirror_tile_type5_PartBody_op0"/> +<second ref="mirror_tile_type5_PartBody_op1"/> +<position name="mirror_tile_type5_PartBody__1_pos_0" x="0" y="0" z="(-Mirror_origin_Y_coord-100) * 1" unit="mm"/> +<rotationref ref="identity"/> +</subtraction> +<tube name="mirror_tile_type5_PartBody_op2" rmin="0.000000" rmax="800.000000" z="(3200.000000)*2" startphi="135.000000" deltaphi="135.000000" aunit="deg" lunit="mm"/> +<subtraction name="mirror_tile_type5_PartBody"> +<first ref="mirror_tile_type5_PartBody_op01"/> +<second ref="mirror_tile_type5_PartBody_op2"/> +<position name="mirror_tile_type5_PartBody__2_pos_01" x="0" y="0" z="(-RICH_mirror_radius*sin(((RICH_mirror_tilt_angle+alpha1))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="mirror_tile_type5_PartBody__2_rot_01" x="90.0" y="0" z="90.0" unit="deg"/> +</subtraction> +<box name="rich_entrance_PartBody_op0" x="((RICH_width/2) * 1)*2" y="((RICH_entrance_vertical_gap/2) * 1)*2" z="((RICH_entrance_thickness/2) * 1)*2" lunit="mm"/> +<cone name="rich_entrance_PartBody_op1" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<subtraction name="rich_entrance_PartBody"> +<first ref="rich_entrance_PartBody_op0"/> +<second ref="rich_entrance_PartBody_op1"/> +<position name="rich_entrance_PartBody__1_pos_0" x="0" y="0" z="(RICH_length/2-RICH_entrance_thickness/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</subtraction> +<box name="rich_exit_PartBody_op0" x="((RICH_width/2) * 1)*2" y="((RICH_height/2) * 1)*2" z="((RICH_exit_thickness/2) * 1)*2" lunit="mm"/> +<cone name="rich_exit_PartBody_op1" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<subtraction name="rich_exit_PartBody"> +<first ref="rich_exit_PartBody_op0"/> +<second ref="rich_exit_PartBody_op1"/> +<position name="rich_exit_PartBody__1_pos_0" x="0" y="0" z="(-RICH_length/2+RICH_exit_thickness/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</subtraction> +<tube name="Shielding_box_top_PartBody" rmin="(Sh_box_Rmin - Sh_box_thickness_back) * 1" rmax="Sh_box_Rmax * 1" z="((Sh_box_thickness_top/2) * 1)*2" startphi="(-Sh_box_horiz_spread_angle/2) * 1" deltaphi="(Sh_box_horiz_spread_angle) * 1" aunit="deg" lunit="mm"/> +<tube name="Shielding_box_back_PartBody_op0" rmin="(Sh_box_Rmin-Sh_box_thickness_back) * 1" rmax="(Sh_box_Rmin) * 1" z="((Sh_box_vert_space/2) * 1)*2" startphi="(-Sh_box_horiz_spread_angle/2) * 1" deltaphi="(Sh_box_horiz_spread_angle) * 1" aunit="deg" lunit="mm"/> +<box name="Shielding_box_back_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> +<subtraction name="Shielding_box_back_PartBody"> +<first ref="Shielding_box_back_PartBody_op0"/> +<second ref="Shielding_box_back_PartBody_op1"/> +<position name="Shielding_box_back_PartBody__1_pos_0" x="(Camera_origin_Y_coord*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*cos((Camera_full_Xrot)*DEGtoRAD)) * 1" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="Shielding_box_back_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="0" unit="deg"/> +</subtraction> +<cone name="Shielding_box_bottom_PartBody_op0" rmin1="(Sh_box_Rmin-Sh_box_thickness_back) * 1" rmax1="(Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)) * 1" rmin2="(Sh_box_Rmin-Sh_box_thickness_back) * 1" rmax2="(Sh_box_Rmax_bottom-Sh_box_thickness_nose) * 1" z="((Sh_box_thickness_bottom/2) * 1)*2" startphi="(-Sh_box_horiz_spread_angle/2) * 1" deltaphi="(Sh_box_horiz_spread_angle) * 1" aunit="deg" lunit="mm"/> +<box name="Shielding_box_bottom_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> +<subtraction name="Shielding_box_bottom_PartBody"> +<first ref="Shielding_box_bottom_PartBody_op0"/> +<second ref="Shielding_box_bottom_PartBody_op1"/> +<position name="Shielding_box_bottom_PartBody__1_pos_0" x="(Camera_origin_Y_coord*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*cos((Camera_full_Xrot)*DEGtoRAD)) * 1" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_bottom_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="0" unit="deg"/> +</subtraction> +<box name="Shielding_box_top_horiz_add_PartBody" x="(((Sh_box_Rmax-Sh_box_Rmin+Sh_box_thickness_back)/2) * 1)*2" y="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" z="((Sh_box_thickness_top/2) * 1)*2" lunit="mm"/> +<box name="Shielding_box_back_horiz_add_PartBody_op0" x="((Sh_box_thickness_back/2) * 1)*2" y="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" z="((Sh_box_vert_space/2) * 1)*2" lunit="mm"/> +<box name="Shielding_box_back_horiz_add_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> +<subtraction name="Shielding_box_back_horiz_add_PartBody"> +<first ref="Shielding_box_back_horiz_add_PartBody_op0"/> +<second ref="Shielding_box_back_horiz_add_PartBody_op1"/> +<position name="Shielding_box_back_horiz_add_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_back_horiz_add_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(-Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> +</subtraction> +<box name="Shielding_box_back_horiz_add_sym_PartBody_op0" x="((Sh_box_thickness_back/2) * 1)*2" y="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" z="((Sh_box_vert_space/2) * 1)*2" lunit="mm"/> +<box name="Shielding_box_back_horiz_add_sym_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> +<subtraction name="Shielding_box_back_horiz_add_sym_PartBody"> +<first ref="Shielding_box_back_horiz_add_sym_PartBody_op0"/> +<second ref="Shielding_box_back_horiz_add_sym_PartBody_op1"/> +<position name="Shielding_box_back_horiz_add_sym_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_back_horiz_add_sym_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> +</subtraction> +<trap name="Shielding_box_bottom_horiz_add_PartBody_op0" z="((Sh_box_thickness_bottom/2) * 1)*2" theta="-atan(tan((Sh_box_nose_angle)*DEGtoRAD)/2)/DEGtoRAD" phi="0.000000" y1="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x1="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" x2="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" alpha1="0.000000" y2="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x3="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose)/2) * 1)*2" x4="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose)/2) * 1)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> +<box name="Shielding_box_bottom_horiz_add_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> +<subtraction name="Shielding_box_bottom_horiz_add_PartBody"> +<first ref="Shielding_box_bottom_horiz_add_PartBody_op0"/> +<second ref="Shielding_box_bottom_horiz_add_PartBody_op1"/> +<position name="Shielding_box_bottom_horiz_add_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_bottom_horiz_add_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(-Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> +</subtraction> +<trap name="Shielding_box_bottom_horiz_add_sym_PartBody_op0" z="((Sh_box_thickness_bottom/2) * 1)*2" theta="-atan(tan((Sh_box_nose_angle)*DEGtoRAD)/2)/DEGtoRAD" phi="0.000000" y1="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x1="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" x2="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" alpha1="0.000000" y2="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x3="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose)/2) * 1)*2" x4="(((Sh_box_Rmax_bottom-Sh_box_Rmin+Sh_box_thickness_back-Sh_box_thickness_nose)/2) * 1)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> +<box name="Shielding_box_bottom_horiz_add_sym_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> +<subtraction name="Shielding_box_bottom_horiz_add_sym_PartBody"> +<first ref="Shielding_box_bottom_horiz_add_sym_PartBody_op0"/> +<second ref="Shielding_box_bottom_horiz_add_sym_PartBody_op1"/> +<position name="Shielding_box_bottom_horiz_add_sym_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_bottom_horiz_add_sym_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> +</subtraction> +<box name="Shielding_box_side_PartBody_op0" x="(((Sh_box_Rmax-Sh_box_Rmin)/2) * 1)*2" y="((Sh_box_thickness_sides/2) * 1)*2" z="((Sh_box_vert_space/2) * 1)*2" lunit="mm"/> +<box name="Shielding_box_side_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> +<subtraction name="Shielding_box_side_PartBody"> +<first ref="Shielding_box_side_PartBody_op0"/> +<second ref="Shielding_box_side_PartBody_op1"/> +<positionref ref="central"/> +<rotation name="Shielding_box_side_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(-Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> +</subtraction> +<box name="Shielding_box_side_sym_PartBody_op0" x="(((Sh_box_Rmax-Sh_box_Rmin)/2) * 1)*2" y="((Sh_box_thickness_sides/2) * 1)*2" z="((Sh_box_vert_space/2) * 1)*2" lunit="mm"/> +<box name="Shielding_box_side_sym_PartBody_op1" x="(500.000000)*2" y="(2000.000000)*2" z="(3000.000000)*2" lunit="mm"/> +<subtraction name="Shielding_box_side_sym_PartBody"> +<first ref="Shielding_box_side_sym_PartBody_op0"/> +<second ref="Shielding_box_side_sym_PartBody_op1"/> +<position name="Shielding_box_side_sym_PartBody__1_pos_0" x="0" y="0" z="(-Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) + (Sh_box_cut_Z_coord-500-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="Shielding_box_side_sym_PartBody__1_rot_0" x="0" y="(-Camera_full_Xrot) * 1" z="(Sh_box_horiz_spread_angle/2) * 1" unit="deg"/> +</subtraction> +<trap name="Shielding_box_nose_horiz_add_PartBody" z="((Sh_box_nose_vert_size/2) * 1)*2" theta="(-Sh_box_nose_angle) * 1" phi="0.000000" y1="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x1="((Sh_box_thickness_nose/2) * 1)*2" x2="((Sh_box_thickness_nose/2) * 1)*2" alpha1="0.000000" y2="(((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * 1)*2" x3="((Sh_box_thickness_nose/2) * 1)*2" x4="((Sh_box_thickness_nose/2) * 1)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> +<trap name="Shielding_box_small_piece_PartBody" z="((Sh_box_thickness_bottom/2) * 1)*2" theta="-atan(tan((Sh_box_nose_angle)*DEGtoRAD)/2)/DEGtoRAD" phi="0.000000" y1="((Sh_box_thickness_sides/2) * 1)*2" x1="(((Sh_box_Rmax-Sh_box_Rmax_bottom-Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" x2="(((Sh_box_Rmax-Sh_box_Rmax_bottom-Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD))/2) * 1)*2" alpha1="0.000000" y2="((Sh_box_thickness_sides/2) * 1)*2" x3="(((Sh_box_Rmax-Sh_box_Rmax_bottom)/2) * 1)*2" x4="(((Sh_box_Rmax-Sh_box_Rmax_bottom)/2) * 1)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> +<cone name="Shielding_box_nose_PartBody_op0" rmin1="(Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)) * 1" rmax1="(Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)) * 1" rmin2="(Sh_box_Rmax_bottom-Sh_box_thickness_nose) * 1" rmax2="(Sh_box_Rmax_bottom) * 1" z="((Sh_box_nose_vert_size/2) * 1)*2" startphi="(-Sh_box_horiz_spread_angle/2) * 1" deltaphi="(Sh_box_horiz_spread_angle) * 1" aunit="deg" lunit="mm"/> +<elcone name="Shielding_box_nose_PartBody_op1" dx="(1901.782178)/4078.385024" dy="(2852.673267)/4078.385024" zmax="(4078.385024)/2" zcut="(4078.385024)/2" lunit="mm"/> +<subtraction name="Shielding_box_nose_PartBody"> +<first ref="Shielding_box_nose_PartBody_op0"/> +<second ref="Shielding_box_nose_PartBody_op1"/> +<position name="Shielding_box_nose_PartBody__1_pos_0" x="(Camera_origin_Y_coord*sin((Camera_full_Xrot)*DEGtoRAD) + (4078.385024/2-Camera_origin_Z_coord)*cos((Camera_full_Xrot)*DEGtoRAD)) * 1" y="0" z="(-(Camera_origin_Y_coord*cos((Camera_full_Xrot)*DEGtoRAD) - (4078.385024/2-Camera_origin_Z_coord)*sin((Camera_full_Xrot)*DEGtoRAD) - (Sh_box_vert_space+Sh_box_nose_vert_size)/2)) * 1" unit="mm"/> +<rotation name="Shielding_box_nose_PartBody__1_rot_0" x="0" y="(-90-Camera_full_Xrot) * 1" z="0" unit="deg"/> +</subtraction> +<box name="sens_plane_PartBody_op0" x="(500.000000)*2" y="(500.000000)*2" z="(0.500000)*2" lunit="mm"/> +<cone name="sens_plane_PartBody_op1" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<subtraction name="sens_plane_PartBody"> +<first ref="sens_plane_PartBody_op0"/> +<second ref="sens_plane_PartBody_op1"/> +<position name="sens_plane_PartBody__1_pos_0" x="0" y="0" z="(-Sens_plane_pos + (RICH_exit_thickness-RICH_entrance_thickness)/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</subtraction> +<sphere name="Mirror_PartBody_op0" rmin="(RICH_mirror_radius) * 1" rmax="(RICH_mirror_radius+6) * 1" startphi="(-(RICH_mirror_phi_step*9/2+RICH_mirror_phi_size/2)) * 1" deltaphi="(RICH_mirror_phi_step*9+RICH_mirror_phi_size) * 1" starttheta="(90+RICH_mirror_tilt_angle-alpha1) * 1" deltatheta="(2*alpha1) * 1" aunit="deg" lunit="mm"/> +<box name="Mirror_PartBody_op1" x="(5000.000000)*2" y="((RICH_width/2) * 1)*2" z="(100.000000)*2" lunit="mm"/> +<subtraction name="Mirror_PartBody_op01"> +<first ref="Mirror_PartBody_op0"/> +<second ref="Mirror_PartBody_op1"/> +<position name="Mirror_PartBody__1_pos_0" x="0" y="0" z="(-Mirror_origin_Y_coord-100) * 1" unit="mm"/> +<rotationref ref="identity"/> +</subtraction> +<box name="Mirror_PartBody_op2" x="(5000.000000)*2" y="(185.000000)*2" z="(185.000000)*2" lunit="mm"/> +<subtraction name="Mirror_PartBody"> +<first ref="Mirror_PartBody_op01"/> +<second ref="Mirror_PartBody_op2"/> +<position name="Mirror_PartBody__2_pos_01" x="0" y="0" z="(-Mirror_origin_Y_coord) * 1" unit="mm"/> +<rotation name="Mirror_PartBody__2_rot_01" x="45.0000000000647" y="0" z="0" unit="deg"/> +</subtraction> +<tube name="Camera_PartBody" rmin="(RICH_camera_radius-0.5) * 1" rmax="(RICH_camera_radius) * 1" z="(((7*(2*RICH_pmt_size+RICH_camera_gap_size) + 6*RICH_camera_gap_size)/2) * 1)*2" startphi="(-7 * RICH_camera_segment_angle) * 1" deltaphi="(14 * RICH_camera_segment_angle) * 1" aunit="deg" lunit="mm"/> +<tube name="Solid_behind_camera_PartBody" rmin="(RICH_camera_radius-10.5) * 1" rmax="(RICH_camera_radius-0.5) * 1" z="((RICH_camera_height/2) * 1)*2" startphi="(-7 * RICH_camera_segment_angle) * 1" deltaphi="(14 * RICH_camera_segment_angle) * 1" aunit="deg" lunit="mm"/> +<box name="mainframe_part2_gas_PartBody" x="(1395.000000)*2" y="(43.000000)*2" z="(43.000000)*2" lunit="mm"/> +<box name="mainframe_part3_gas_PartBody" x="(43.000000)*2" y="(43.000000)*2" z="(432.919390)*2" lunit="mm"/> +<trap name="mainframe_part5_gas_PartBody" z="(43.000000)*2" theta="-26.016698" phi="0.000000" y1="(43.000000)*2" x1="(719.697521)*2" x2="(719.697521)*2" alpha1="0.000000" y2="(43.000000)*2" x3="(624.000148)*2" x4="(624.000148)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> +<box name="mainframe_part8_gas_PartBody" x="(43.000000)*2" y="((RICH_height/2-RICH_covering_thickness-100) * 1)*2" z="(43.000000)*2" lunit="mm"/> +<box name="mainframe_part9_gas_PartBody" x="(2629.000000)*2" y="(43.000000)*2" z="(43.000000)*2" lunit="mm"/> +<box name="mainframe_part10_gas_PartBody" x="(43.000000)*2" y="(43.000000)*2" z="(461.955610)*2" lunit="mm"/> +<box name="mainframe_part2_PartBody" x="(1395.000000)*2" y="(50.000000)*2" z="(50.000000)*2" lunit="mm"/> +<box name="mainframe_part3_PartBody" x="(50.000000)*2" y="(50.000000)*2" z="(432.919390)*2" lunit="mm"/> +<trap name="mainframe_part5_PartBody" z="(50.000000)*2" theta="-26.016698" phi="0.000000" y1="(50.000000)*2" x1="(727.486842)*2" x2="(727.486842)*2" alpha1="0.000000" y2="(50.000000)*2" x3="(616.210827)*2" x4="(616.210827)*2" alpha2="0.000000" aunit="deg" lunit="mm"/> +<box name="mainframe_part8_PartBody" x="(50.000000)*2" y="((RICH_height/2-RICH_covering_thickness-100) * 1)*2" z="(50.000000)*2" lunit="mm"/> +<box name="mainframe_part9_PartBody" x="(2629.000000)*2" y="(50.000000)*2" z="(50.000000)*2" lunit="mm"/> +<box name="mainframe_part10_PartBody" x="(50.000000)*2" y="(50.000000)*2" z="(461.955610)*2" lunit="mm"/> +<box name="rich_gas_PartBody_op0" x="((RICH_width/2-RICH_covering_thickness) * 1)*2" y="((RICH_height/2-RICH_covering_thickness) * 1)*2" z="(((RICH_length-RICH_entrance_thickness-RICH_exit_thickness)/2) * 1)*2" lunit="mm"/> +<box name="rich_gas_PartBody_op1" x="((RICH_width/2-RICH_covering_thickness) * 1)*2" y="((((RICH_height-RICH_entrance_vertical_gap)/2 - 2*RICH_covering_thickness)/2) * 1)*2" z="(((RICH_addend_Z_size-RICH_covering_thickness + RICH_entrance_thickness)/2) * 1)*2" lunit="mm"/> +<union name="rich_gas_PartBody_op01"> +<first ref="rich_gas_PartBody_op0"/> +<second ref="rich_gas_PartBody_op1"/> +<position name="rich_gas_PartBody__1_pos_0" x="0" y="((RICH_height/2 + RICH_entrance_vertical_gap/2)/2) * 1" z="(-RICH_length/2-RICH_addend_Z_size/2 + RICH_covering_thickness) * 1" unit="mm"/> +<rotationref ref="identity"/> +</union> +<box name="rich_gas_PartBody_op2" x="((RICH_width/2-RICH_covering_thickness) * 1)*2" y="((((RICH_height-RICH_entrance_vertical_gap)/2 - 2*RICH_covering_thickness)/2) * 1)*2" z="(((RICH_addend_Z_size-RICH_covering_thickness + RICH_entrance_thickness)/2) * 1)*2" lunit="mm"/> +<union name="rich_gas_PartBody_op012"> +<first ref="rich_gas_PartBody_op01"/> +<second ref="rich_gas_PartBody_op2"/> +<position name="rich_gas_PartBody__2_pos_01" x="0" y="(-(RICH_height/2 + RICH_entrance_vertical_gap/2)/2) * 1" z="(-RICH_length/2-RICH_addend_Z_size/2 + RICH_covering_thickness) * 1" unit="mm"/> +<rotationref ref="identity"/> +</union> +<cone name="rich_gas_PartBody_op3" rmin1="0.000000" rmax1="(RICH_pipe_outer_radius_at_entrance) * 1" rmin2="0.000000" rmax2="(RICH_pipe_outer_radius_at_exit) * 1" z="((RICH_length/2) * 1)*2" startphi="0.000000" deltaphi="360.000000" aunit="deg" lunit="mm"/> +<subtraction name="rich_gas_PartBody"> +<first ref="rich_gas_PartBody_op012"/> +<second ref="rich_gas_PartBody_op3"/> +<position name="rich_gas_PartBody__3_pos_012" x="0" y="0" z="(-(RICH_entrance_thickness-RICH_exit_thickness)/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</subtraction> +<box name="rich_container_PartBody_op0" x="((RICH_width/2) * 1)*2" y="((RICH_height/2) * 1)*2" z="((RICH_length/2) * 1)*2" lunit="mm"/> +<box name="rich_container_PartBody_op1" x="((RICH_width/2) * 1)*2" y="((((RICH_height-RICH_entrance_vertical_gap)/2)/2) * 1)*2" z="((RICH_addend_Z_size/2) * 1)*2" lunit="mm"/> +<union name="rich_container_PartBody_op01"> +<first ref="rich_container_PartBody_op0"/> +<second ref="rich_container_PartBody_op1"/> +<position name="rich_container_PartBody__1_pos_0" x="0" y="((RICH_height/2 + RICH_entrance_vertical_gap/2)/2) * 1" z="(-RICH_length/2-RICH_addend_Z_size/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</union> +<box name="rich_container_PartBody_op2" x="((RICH_width/2) * 1)*2" y="((((RICH_height-RICH_entrance_vertical_gap)/2)/2) * 1)*2" z="((RICH_addend_Z_size/2) * 1)*2" lunit="mm"/> +<union name="rich_container_PartBody"> +<first ref="rich_container_PartBody_op01"/> +<second ref="rich_container_PartBody_op2"/> +<position name="rich_container_PartBody__2_pos_01" x="0" y="(-(RICH_height/2 + RICH_entrance_vertical_gap/2)/2) * 1" z="(-RICH_length/2-RICH_addend_Z_size/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</union> +</solids> +<structure> +<volume name="pmt_pixel"> +<materialref ref="CsI"/> +<solidref ref="pmt_pixel_PartBody"/> +</volume> +<volume name="pmt_pixel_wide"> +<materialref ref="CsI"/> +<solidref ref="pmt_pixel_wide_PartBody"/> +</volume> +<volume name="pmt_pixel_vertical"> +<materialref ref="CsI"/> +<solidref ref="pmt_pixel_vertical_PartBody"/> +</volume> +<volume name="pmt_pixel_horisontal"> +<materialref ref="CsI"/> +<solidref ref="pmt_pixel_horisontal_PartBody"/> +</volume> +<volume name="pmt"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="pmt_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="pmt_pixel_wide"/> +<position name="pmt_pixel_wide_pos_pmt" x="(3*RICH_pixel_size_middle+RICH_pixel_size_surrounding/2) * 1" y="(3*RICH_pixel_size_middle+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="pmt_pixel_wide"/> +<position name="pmt_pixel_wide_pos_pmt" x="(-3*RICH_pixel_size_middle-RICH_pixel_size_surrounding/2) * 1" y="(3*RICH_pixel_size_middle+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="pmt_pixel_wide"/> +<position name="pmt_pixel_wide_pos_pmt" x="(3*RICH_pixel_size_middle+RICH_pixel_size_surrounding/2) * 1" y="(-3*RICH_pixel_size_middle-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="pmt_pixel_wide"/> +<position name="pmt_pixel_wide_pos_pmt" x="(-3*RICH_pixel_size_middle-RICH_pixel_size_surrounding/2) * 1" y="(-3*RICH_pixel_size_middle-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="11"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="12"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="13"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="14"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="15"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="16"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="17"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="18"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="19"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="20"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="21"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="22"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="23"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="24"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(-RICH_pixel_size_middle*1/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="25"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="26"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="27"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="28"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="29"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="30"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(-RICH_pixel_size_middle*3/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="31"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="32"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="33"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="34"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="35"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="36"> +<volumeref ref="pmt_pixel"/> +<position name="pmt_pixel_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+6" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+12" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+18" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="11"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+24" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="12"> +<volumeref ref="pmt_pixel_vertical"/> +<position name="pmt_pixel_vertical_pos_pmt" x="(-RICH_pixel_size_middle*5/2) * 1+30" y="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+6" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+12" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+18" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+24" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(-RICH_pixel_size_middle*3-RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+30" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+6" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+12" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+18" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="11"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+24" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="12"> +<volumeref ref="pmt_pixel_horisontal"/> +<position name="pmt_pixel_horisontal_pos_pmt" x="(RICH_pixel_size_middle*3+RICH_pixel_size_surrounding/2) * 1" y="(-RICH_pixel_size_middle*5/2) * 1+30" z="(RICH_pmt_depth/2-0.25) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="pmt_container"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="pmt_container_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="pmt"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="camera_module"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="camera_module_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="pmt_container"/> +<position name="pmt_container_pos_camera_module" x="(-RICH_pmt_size-RICH_camera_gap_size) * 1" y="((RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="pmt_container"/> +<position name="pmt_container_pos_camera_module" x="0" y="((RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="pmt_container"/> +<position name="pmt_container_pos_camera_module" x="(RICH_pmt_size+RICH_camera_gap_size) * 1" y="((RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="pmt_container"/> +<position name="pmt_container_pos_camera_module" x="(-RICH_pmt_size-RICH_camera_gap_size) * 1" y="(-(RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="pmt_container"/> +<position name="pmt_container_pos_camera_module" x="0" y="(-(RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="pmt_container"/> +<position name="pmt_container_pos_camera_module" x="(RICH_pmt_size+RICH_camera_gap_size) * 1" y="(-(RICH_pmt_size+RICH_camera_gap_size)/2) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="alu_frame"> +<materialref ref="aluminium"/> +<solidref ref="alu_frame_PartBody"/> +</volume> +<volume name="camera_strip"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="camera_strip_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="camera_module"/> +<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="camera_module"/> +<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+106" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="camera_module"/> +<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+212" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="camera_module"/> +<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+318" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="camera_module"/> +<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+424" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="camera_module"/> +<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+530" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="camera_module"/> +<position name="camera_module_pos_camera_strip" x="0" y="(-3*(2*RICH_pmt_size+2*RICH_camera_gap_size)) * 1+636" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="alu_frame"/> +<position name="alu_frame_pos_camera_strip" x="0" y="0" z="(-RICH_pmt_depth/2-5) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<assembly name="camera_container"> +<physvol copynumber="1"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-7+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-7+0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-7+0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-6+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-6+0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-6+0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-5+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-5+0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-5+0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-4+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-4+0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-4+0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-3+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-3+0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-3+0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-2+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-2+0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-2+0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(-1+0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(-1+0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(-1+0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(1-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(1-0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(1-0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(2-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(2-0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(2-0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(3-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(3-0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(3-0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="11"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(4-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(4-0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(4-0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="12"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(5-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(5-0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(5-0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="13"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(6-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(6-0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(6-0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="14"> +<volumeref ref="camera_strip"/> +<position name="camera_strip_pos_camera_container" x="((RICH_camera_radius-RICH_pmt_depth/2) * sin((RICH_camera_segment_angle*(7-0.5))*DEGtoRAD)) * 1" y="0" z="((RICH_camera_radius-RICH_pmt_depth/2) * cos((RICH_camera_segment_angle*(7-0.5))*DEGtoRAD)) * 1" unit="mm"/> +<rotation name="camera_strip_rot_camera_container" x="-(0)" y="-((RICH_camera_segment_angle*(7-0.5)) * 1)" z="-(0)" unit="deg"/> +</physvol> +</assembly> +<volume name="rich_cyl_pipe_section_vac"> +<materialref ref="vacuum"/> +<solidref ref="rich_cyl_pipe_section_vac_PartBody"/> +</volume> +<volume name="rich_cyl_pipe_section"> +<materialref ref="aluminium"/> +<solidref ref="rich_cyl_pipe_section_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="rich_cyl_pipe_section_vac"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="rich_pipe_flange"> +<materialref ref="aluminium"/> +<solidref ref="rich_pipe_flange_PartBody"/> +</volume> +<volume name="rich_pipe_section_vac"> +<materialref ref="vacuum"/> +<solidref ref="rich_pipe_section_vac_PartBody"/> +</volume> +<volume name="rich_pipe_section"> +<materialref ref="aluminium"/> +<solidref ref="rich_pipe_section_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="rich_pipe_section_vac"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="mirror_tile_type0"> +<materialref ref="RICHglass"/> +<solidref ref="mirror_tile_type0_PartBody"/> +</volume> +<volume name="mirror_tile_type1"> +<materialref ref="RICHglass"/> +<solidref ref="mirror_tile_type1_PartBody"/> +</volume> +<volume name="mirror_tile_type2"> +<materialref ref="RICHglass"/> +<solidref ref="mirror_tile_type2_PartBody"/> +</volume> +<volume name="mirror_tile_type3"> +<materialref ref="RICHglass"/> +<solidref ref="mirror_tile_type3_PartBody"/> +</volume> +<volume name="mirror_tile_type4"> +<materialref ref="RICHglass"/> +<solidref ref="mirror_tile_type4_PartBody"/> +</volume> +<volume name="mirror_tile_type5"> +<materialref ref="RICHglass"/> +<solidref ref="mirror_tile_type5_PartBody"/> +</volume> +<assembly name="mirror_full_half_no_misalign"> +<physvol copynumber="1"> +<volumeref ref="mirror_tile_type0"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mirror_tile_type0"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mirror_tile_type0"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mirror_tile_type0"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mirror_tile_type4"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type4_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mirror_tile_type5"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type5_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="mirror_tile_type0"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="mirror_tile_type0"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="mirror_tile_type0"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="mirror_tile_type0"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type0_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="mirror_tile_type1"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type1_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="mirror_tile_type2"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type2_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((-RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*1/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*3/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*5/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*7/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="mirror_tile_type3"/> +<positionref ref="central"/> +<rotation name="mirror_tile_type3_rot_mirror_full_half_no_misalign" x="-(0)" y="-(0)" z="-((RICH_mirror_phi_step*9/2) * 1)" unit="deg"/> +</physvol> +</assembly> +<volume name="rich_entrance"> +<materialref ref="kapton"/> +<solidref ref="rich_entrance_PartBody"/> +</volume> +<volume name="rich_exit"> +<materialref ref="kapton"/> +<solidref ref="rich_exit_PartBody"/> +</volume> +<volume name="Shielding_box_top"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_top_PartBody"/> +</volume> +<volume name="Shielding_box_back"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_back_PartBody"/> +</volume> +<volume name="Shielding_box_bottom"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_bottom_PartBody"/> +</volume> +<volume name="Shielding_box_top_horiz_add"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_top_horiz_add_PartBody"/> +</volume> +<volume name="Shielding_box_back_horiz_add"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_back_horiz_add_PartBody"/> +</volume> +<volume name="Shielding_box_back_horiz_add_sym"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_back_horiz_add_sym_PartBody"/> +</volume> +<volume name="Shielding_box_bottom_horiz_add"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_bottom_horiz_add_PartBody"/> +</volume> +<volume name="Shielding_box_bottom_horiz_add_sym"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_bottom_horiz_add_sym_PartBody"/> +</volume> +<volume name="Shielding_box_side"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_side_PartBody"/> +</volume> +<volume name="Shielding_box_side_sym"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_side_sym_PartBody"/> +</volume> +<volume name="Shielding_box_nose_horiz_add"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_nose_horiz_add_PartBody"/> +</volume> +<volume name="Shielding_box_small_piece"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_small_piece_PartBody"/> +</volume> +<volume name="Shielding_box_nose"> +<materialref ref="iron"/> +<solidref ref="Shielding_box_nose_PartBody"/> +</volume> +<assembly name="shielding_box_container"> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_top"/> +<position name="Shielding_box_top_pos_shielding_box_container" x="0" y="0" z="((Sh_box_vert_space+Sh_box_thickness_top)/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_back"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_bottom"/> +<position name="Shielding_box_bottom_pos_shielding_box_container" x="0" y="0" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_top_horiz_add"/> +<position name="Shielding_box_top_horiz_add_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmin-Sh_box_thickness_back)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(((Sh_box_Rmax+Sh_box_Rmin-Sh_box_thickness_back)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="((Sh_box_vert_space+Sh_box_thickness_top)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_top_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="Shielding_box_top_horiz_add"/> +<position name="Shielding_box_top_horiz_add_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmin-Sh_box_thickness_back)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-((Sh_box_Rmax+Sh_box_Rmin-Sh_box_thickness_back)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="((Sh_box_vert_space+Sh_box_thickness_top)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_top_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_back_horiz_add"/> +<position name="Shielding_box_back_horiz_add_pos_shielding_box_container" x="((Sh_box_Rmin-Sh_box_thickness_back/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="((Sh_box_Rmin-Sh_box_thickness_back/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="0" unit="mm"/> +<rotation name="Shielding_box_back_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_back_horiz_add_sym"/> +<position name="Shielding_box_back_horiz_add_sym_pos_shielding_box_container" x="((Sh_box_Rmin-Sh_box_thickness_back/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-(Sh_box_Rmin-Sh_box_thickness_back/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="0" unit="mm"/> +<rotation name="Shielding_box_back_horiz_add_sym_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_bottom_horiz_add"/> +<position name="Shielding_box_bottom_horiz_add_pos_shielding_box_container" x="(((Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_Rmin-Sh_box_thickness_back+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(((Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_Rmin-Sh_box_thickness_back+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_bottom_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_bottom_horiz_add_sym"/> +<position name="Shielding_box_bottom_horiz_add_sym_pos_shielding_box_container" x="(((Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_Rmin-Sh_box_thickness_back+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-((Sh_box_Rmax_bottom-Sh_box_thickness_nose+Sh_box_Rmin-Sh_box_thickness_back+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_bottom_horiz_add_sym_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_side"/> +<position name="Shielding_box_side_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmin)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(((Sh_box_Rmax+Sh_box_Rmin)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + (Sh_box_horiz_add+Sh_box_thickness_sides/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="0" unit="mm"/> +<rotation name="Shielding_box_side_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_side_sym"/> +<position name="Shielding_box_side_sym_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmin)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-((Sh_box_Rmax+Sh_box_Rmin)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="0" unit="mm"/> +<rotation name="Shielding_box_side_sym_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_nose_horiz_add"/> +<position name="Shielding_box_nose_horiz_add_pos_shielding_box_container" x="((Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)/2-Sh_box_thickness_nose/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="((Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)/2-Sh_box_thickness_nose/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="((-Sh_box_vert_space-Sh_box_nose_vert_size)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_nose_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="Shielding_box_nose_horiz_add"/> +<position name="Shielding_box_nose_horiz_add_pos_shielding_box_container" x="((Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)/2-Sh_box_thickness_nose/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-(Sh_box_Rmax_bottom+Sh_box_nose_vert_size*tan((Sh_box_nose_angle)*DEGtoRAD)/2-Sh_box_thickness_nose/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - ((Sh_box_horiz_add+Sh_box_thickness_sides)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="((-Sh_box_vert_space-Sh_box_nose_vert_size)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_nose_horiz_add_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_small_piece"/> +<position name="Shielding_box_small_piece_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmax_bottom+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(((Sh_box_Rmax+Sh_box_Rmax_bottom+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) + (Sh_box_horiz_add+Sh_box_thickness_sides/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_small_piece_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="Shielding_box_small_piece"/> +<position name="Shielding_box_small_piece_pos_shielding_box_container" x="(((Sh_box_Rmax+Sh_box_Rmax_bottom+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" y="(-((Sh_box_Rmax+Sh_box_Rmax_bottom+Sh_box_thickness_bottom*tan((Sh_box_nose_angle)*DEGtoRAD)/2)/2) * sin(((Sh_box_horiz_spread_angle/2))*DEGtoRAD) - (Sh_box_horiz_add+Sh_box_thickness_sides/2) * cos(((Sh_box_horiz_spread_angle/2))*DEGtoRAD)) * 1" z="(-(Sh_box_vert_space+Sh_box_thickness_bottom)/2) * 1" unit="mm"/> +<rotation name="Shielding_box_small_piece_rot_shielding_box_container" x="-(0)" y="-(0)" z="-((-Sh_box_horiz_spread_angle/2) * 1)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Shielding_box_nose"/> +<position name="Shielding_box_nose_pos_shielding_box_container" x="0" y="0" z="((-Sh_box_vert_space-Sh_box_nose_vert_size)/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +</assembly> +<volume name="sens_plane"> +<materialref ref="RICHgas_CO2_dis+"/> +<solidref ref="sens_plane_PartBody"/> +</volume> +<!-- +<volume name="Mirror"> +<materialref ref="RICHglass"/> +<solidref ref="Mirror_PartBody"/> +</volume> +<volume name="Camera"> +<materialref ref="CsI"/> +<solidref ref="Camera_PartBody"/> +</volume> +<volume name="Solid_behind_camera"> +<materialref ref="aluminium"/> +<solidref ref="Solid_behind_camera_PartBody"/> +</volume> +--> +<volume name="mainframe_part2_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="mainframe_part2_gas_PartBody"/> +</volume> +<volume name="mainframe_part3_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="mainframe_part3_gas_PartBody"/> +</volume> +<volume name="mainframe_part5_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="mainframe_part5_gas_PartBody"/> +</volume> +<volume name="mainframe_part8_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="mainframe_part8_gas_PartBody"/> +</volume> +<volume name="mainframe_part9_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="mainframe_part9_gas_PartBody"/> +</volume> +<volume name="mainframe_part10_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="mainframe_part10_gas_PartBody"/> +</volume> +<volume name="mainframe_part2"> +<materialref ref="aluminium"/> +<solidref ref="mainframe_part2_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="mainframe_part2_gas"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="mainframe_part3"> +<materialref ref="aluminium"/> +<solidref ref="mainframe_part3_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="mainframe_part3_gas"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="mainframe_part5"> +<materialref ref="aluminium"/> +<solidref ref="mainframe_part5_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="mainframe_part5_gas"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="mainframe_part8"> +<materialref ref="aluminium"/> +<solidref ref="mainframe_part8_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="mainframe_part8_gas"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="mainframe_part9"> +<materialref ref="aluminium"/> +<solidref ref="mainframe_part9_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="mainframe_part9_gas"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<volume name="mainframe_part10"> +<materialref ref="aluminium"/> +<solidref ref="mainframe_part10_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="mainframe_part10_gas"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<assembly name="mainframe_assembly"> +<physvol copynumber="1"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="-2579" y="0" z="511.95561" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="2579" y="0" z="511.95561" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="-2579" y="0" z="-511.95561" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="2579" y="0" z="-511.95561" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mainframe_part9"/> +<position name="mainframe_part9_pos_mainframe_assembly" x="0" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="511.95561" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mainframe_part9"/> +<position name="mainframe_part9_pos_mainframe_assembly" x="0" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-511.95561" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mainframe_part9"/> +<position name="mainframe_part9_pos_mainframe_assembly" x="0" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="511.95561" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mainframe_part9"/> +<position name="mainframe_part9_pos_mainframe_assembly" x="0" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-511.95561" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="-2579" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="-2579" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="2579" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="2579" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mainframe_part5"/> +<position name="mainframe_part5_pos_mainframe_assembly" x="1964.811997" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-917.898222" unit="mm"/> +<rotation name="mainframe_part5_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mainframe_part5"/> +<position name="mainframe_part5_pos_mainframe_assembly" x="1964.811997" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-917.898222" unit="mm"/> +<rotation name="mainframe_part5_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mainframe_part5"/> +<position name="mainframe_part5_pos_mainframe_assembly" x="-1964.811997" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-917.898222" unit="mm"/> +<rotation name="mainframe_part5_rot_mainframe_assembly" x="-(0)" y="-(31.991651000092)" z="-(180.0)" unit="deg"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mainframe_part5"/> +<position name="mainframe_part5_pos_mainframe_assembly" x="-1964.811997" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-917.898222" unit="mm"/> +<rotation name="mainframe_part5_rot_mainframe_assembly" x="-(0)" y="-(31.991651000092)" z="-(180.0)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mainframe_part3"/> +<position name="mainframe_part3_pos_mainframe_assembly" x="-1345" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-994.875" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mainframe_part3"/> +<position name="mainframe_part3_pos_mainframe_assembly" x="-1345" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-994.875" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mainframe_part3"/> +<position name="mainframe_part3_pos_mainframe_assembly" x="1345" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-994.875" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mainframe_part3"/> +<position name="mainframe_part3_pos_mainframe_assembly" x="1345" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-994.875" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="2151.316481" y="0" z="-801.395071" unit="mm"/> +<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="1781.11648" y="0" z="-1032.646704" unit="mm"/> +<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="1463.896048" y="0" z="-1230.803763" unit="mm"/> +<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(-31.991651000046)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="-2151.316481" y="0" z="-801.395071" unit="mm"/> +<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(31.991651000046)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="-1781.11648" y="0" z="-1032.646704" unit="mm"/> +<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(31.991651000046)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="mainframe_part8"/> +<position name="mainframe_part8_pos_mainframe_assembly" x="-1463.896048" y="0" z="-1230.803763" unit="mm"/> +<rotation name="mainframe_part8_rot_mainframe_assembly" x="-(0)" y="-(31.991651000046)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mainframe_part2"/> +<position name="mainframe_part2_pos_mainframe_assembly" x="0" y="1000" z="-1282.79439" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mainframe_part2"/> +<position name="mainframe_part2_pos_mainframe_assembly" x="0" y="-1000" z="-1282.79439" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="5"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="-1345" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="6"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="-1345" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="7"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="1345" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="8"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="1345" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="9"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="0" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="10"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="0" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="11"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="2579" y="878" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="12"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="2579" y="-878" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="13"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="-2579" y="878" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="14"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="-2579" y="-878" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="15"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="-1926" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="16"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="-1926" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="17"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="1926" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="18"> +<volumeref ref="mainframe_part10"/> +<position name="mainframe_part10_pos_mainframe_assembly" x="1926" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="0" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="3"> +<volumeref ref="mainframe_part2"/> +<position name="mainframe_part2_pos_mainframe_assembly" x="0" y="(RICH_height/2-RICH_covering_thickness-50) * 1" z="-1477.79439" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="4"> +<volumeref ref="mainframe_part2"/> +<position name="mainframe_part2_pos_mainframe_assembly" x="0" y="(-RICH_height/2+RICH_covering_thickness+50) * 1" z="-1477.79439" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +</assembly> +<volume name="rich_gas"> +<materialref ref="RICHgas_CO2_dis"/> +<solidref ref="rich_gas_PartBody"/> +<!-- +<physvol copynumber="1"> +<volumeref ref="shielding_box_container"/> +<position name="shielding_box_container_pos_rich_gas" x="0" y="(Camera_origin_Y_coord) * 1" z="(-1800-1900/2+Camera_origin_Z_coord) * 1" unit="mm"/> +<rotation name="shielding_box_container_rot_rich_gas" x="-((-90+Camera_full_Xrot) * 1)" y="-(0)" z="-(-90.0)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="shielding_box_container"/> +<position name="shielding_box_container_pos_rich_gas" x="0" y="(-Camera_origin_Y_coord) * 1" z="(-1800-1900/2+Camera_origin_Z_coord) * 1" unit="mm"/> +<rotation name="shielding_box_container_rot_rich_gas" x="-((90-Camera_full_Xrot) * 1)" y="-(0)" z="-(90.0)" unit="deg"/> +</physvol> +--> +<physvol copynumber="1"> +<volumeref ref="camera_container"/> +<position name="camera_container_pos_rich_gas" x="0" y="(Camera_origin_Y_coord + RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> +<rotation name="camera_container_rot_rich_gas" x="-((Camera_full_Xrot) * 1)" y="-(0)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="camera_container"/> +<position name="camera_container_pos_rich_gas" x="0" y="(-Camera_origin_Y_coord-RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> +<rotation name="camera_container_rot_rich_gas" x="-((-Camera_full_Xrot) * 1)" y="-(0)" z="-(0)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mirror_full_half_no_misalign"/> +<position name="mirror_full_half_no_misalign_pos_rich_gas" x="0" y="(Mirror_origin_Y_coord) * 1" z="(-1800-RICH_length/2+Mirror_origin_Z_coord) * 1" unit="mm"/> +<rotation name="mirror_full_half_no_misalign_rot_rich_gas" x="-(-90.0)" y="-(0)" z="-(-90.0)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="mirror_full_half_no_misalign"/> +<position name="mirror_full_half_no_misalign_pos_rich_gas" x="0" y="(-Mirror_origin_Y_coord) * 1" z="(-1800-RICH_length/2+Mirror_origin_Z_coord) * 1" unit="mm"/> +<rotation name="mirror_full_half_no_misalign_rot_rich_gas" x="-(90.0)" y="-(0)" z="-(90.0)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="sens_plane"/> +<position name="sens_plane_pos_rich_gas" x="0" y="0" z="-300" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="mainframe_assembly"/> +<position name="mainframe_assembly_pos_rich_gas" x="0" y="0" z="385.41939" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<!-- +<physvol copynumber="1"> +<volumeref ref="Mirror"/> +<position name="Mirror_pos_rich_gas" x="0" y="Mirror_origin_Y_coord * 1" z="(-1800-RICH_length/2+Mirror_origin_Z_coord) * 1" unit="mm"/> +<rotation name="Mirror_rot_rich_gas" x="-(-90.0)" y="-(0)" z="-(-90.0)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="Mirror"/> +<position name="Mirror_pos_rich_gas" x="0" y="(-Mirror_origin_Y_coord) * 1" z="(-1800-1900/2+Mirror_origin_Z_coord) * 1" unit="mm"/> +<rotation name="Mirror_rot_rich_gas" x="-(90.0)" y="-(0)" z="-(90.0)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Camera"/> +<position name="Camera_pos_rich_gas" x="0" y="(Camera_origin_Y_coord + RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord + RICH_camera_shift_Z) * 1" unit="mm"/> +<rotation name="Camera_rot_rich_gas" x="-((-90+Camera_full_Xrot) * 1)" y="-(0)" z="-(-90.0)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="Camera"/> +<position name="Camera_pos_rich_gas" x="0" y="(-Camera_origin_Y_coord-RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> +<rotation name="Camera_rot_rich_gas" x="-((90-Camera_full_Xrot) * 1)" y="-(0)" z="-(90.0)" unit="deg"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="Solid_behind_camera"/> +<position name="Solid_behind_camera_pos_rich_gas" x="0" y="(Camera_origin_Y_coord+RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> +<rotation name="Solid_behind_camera_rot_rich_gas" x="-((-90+Camera_full_Xrot) * 1)" y="-(0)" z="-(-90.0)" unit="deg"/> +</physvol> +<physvol copynumber="2"> +<volumeref ref="Solid_behind_camera"/> +<position name="Solid_behind_camera_pos_rich_gas" x="0" y="(-Camera_origin_Y_coord-RICH_camera_shift_Y) * 1" z="(-1800-RICH_length/2+Camera_origin_Z_coord+RICH_camera_shift_Z) * 1" unit="mm"/> +<rotation name="Solid_behind_camera_rot_rich_gas" x="-((90-Camera_full_Xrot) * 1)" y="-(0)" z="-(90.0)" unit="deg"/> +</physvol> +--> +</volume> +<volume name="rich_container"> +<materialref ref="aluminium"/> +<solidref ref="rich_container_PartBody"/> +<physvol copynumber="1"> +<volumeref ref="rich_gas"/> +<position name="rich_gas_pos_rich_container" x="0" y="0" z="((RICH_entrance_thickness-RICH_exit_thickness)/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="rich_entrance"/> +<position name="rich_entrance_pos_rich_container" x="0" y="0" z="(-RICH_length/2+RICH_entrance_thickness/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="rich_exit"/> +<position name="rich_exit_pos_rich_container" x="0" y="0" z="(RICH_length/2-RICH_exit_thickness/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="rich_pipe_section"/> +<positionref ref="central"/> +<rotationref ref="identity"/> +</physvol> +</volume> +<assembly name="rich_opt"> +<physvol copynumber="1"> +<volumeref ref="rich_container"/> +<position name="rich_container_pos_rich_opt" x="0" y="0" z="(1800 + RICH_length/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="rich_cyl_pipe_section"/> +<position name="rich_cyl_pipe_section_pos_rich_opt" x="0" y="0" z="(1800 - RICH_pipe_cyl_part_length/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +<physvol copynumber="1"> +<volumeref ref="rich_pipe_flange"/> +<position name="rich_pipe_flange_pos_rich_opt" x="0" y="0" z="(1800 - RICH_pipe_cyl_part_length + RICH_pipe_flange_thickness/2) * 1" unit="mm"/> +<rotationref ref="identity"/> +</physvol> +</assembly> +</structure> +<setup name="FAIRgeom" version="1.0"> +<world ref="rich_opt"/> +</setup> +</gdml> diff --git a/macro/sts/geometry/gdml/Import_GDML_Export_ROOT.c b/macro/sts/geometry/gdml/Import_GDML_Export_ROOT.c index 0addf3c703..92c2f1a0ee 100644 --- a/macro/sts/geometry/gdml/Import_GDML_Export_ROOT.c +++ b/macro/sts/geometry/gdml/Import_GDML_Export_ROOT.c @@ -1,24 +1,24 @@ -void Import_GDML_Export_ROOT() { - TGeoManager* gdml = new TGeoManager("gdml", "My 3D Project"); - - TGDMLParse parser; - // Define your input GDML file HERE - TGeoVolume* gdmlTop = parser.GDMLReadFile("cframe.gdml"); - - TGeoVolume* rootTop = new TGeoVolumeAssembly("geometryFromGDML"); - gGeoManager->SetTopVolume(rootTop); - - // Define your position HERE - TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); - // TGeoCombiTrans* posrot = new TGeoCombiTrans (-60., 0., 45., rot); - TGeoCombiTrans* posrot = new TGeoCombiTrans(-60., 0., 20., rot); - - rootTop->AddNode(gdmlTop, 1, posrot); - - gGeoManager->CloseGeometry(); - // Define you output ROOT file HERE - TFile* outfile = new TFile("cframe.geo.root", "RECREATE"); - - rootTop->Write(); - outfile->Close(); -} +void Import_GDML_Export_ROOT() { + TGeoManager* gdml = new TGeoManager("gdml", "My 3D Project"); + + TGDMLParse parser; + // Define your input GDML file HERE + TGeoVolume* gdmlTop = parser.GDMLReadFile("cframe.gdml"); + + TGeoVolume* rootTop = new TGeoVolumeAssembly("geometryFromGDML"); + gGeoManager->SetTopVolume(rootTop); + + // Define your position HERE + TGeoRotation* rot = new TGeoRotation("rot", 0., 0., 0.); + // TGeoCombiTrans* posrot = new TGeoCombiTrans (-60., 0., 45., rot); + TGeoCombiTrans* posrot = new TGeoCombiTrans(-60., 0., 20., rot); + + rootTop->AddNode(gdmlTop, 1, posrot); + + gGeoManager->CloseGeometry(); + // Define you output ROOT file HERE + TFile* outfile = new TFile("cframe.geo.root", "RECREATE"); + + rootTop->Write(); + outfile->Close(); +} diff --git a/macro/sts/matbudget_ana.C b/macro/sts/matbudget_ana.C index e702f40e6b..790b50b514 100644 --- a/macro/sts/matbudget_ana.C +++ b/macro/sts/matbudget_ana.C @@ -1,210 +1,210 @@ -#if !defined(__CINT__) || defined(__MAKECINT__) -#include "TCanvas.h" -#include "TClonesArray.h" -#include "TFile.h" -#include "TH1.h" -#include "TProfile2D.h" -#include "TROOT.h" -#include "TString.h" -#include "TStyle.h" -#include "TSystem.h" -#include "TTree.h" -#include "TVector3.h" - -#include "FairRadLenPoint.h" - -#include <iostream> -#include <vector> -using std::cout; -using std::endl; -using std::vector; -#endif - -// need to set this root include path: -// include path: -I/opt/cbm/fairsoft_jul15p1/installation/include/root -I/opt/cbm/fairroot_v-15.07-fairsoft_jul15p1/include -I/opt/cbm/fairsoft_jul15p1/installation/include -//.include $SIMPATH/include -//.include $FAIRROOTPATH/include - -//Int_t matbudget_ana(Int_t nEvents = 10 , const char* stsGeo = "v16v") -//Int_t matbudget_ana(Int_t nEvents = 1000000 , const char* stsGeo = "v16v") -Int_t matbudget_ana(Int_t nEvents = 10000000, const char* stsGeo = "v16v") { - - // Input file (MC) - TString stsVersion(stsGeo); - TString inFile = "data/matbudget." + stsVersion + ".mc.root"; - TFile* input = new TFile(inFile); - if (!input) { - cout - << "*** matbudget_ana: Input file " << inFile << " not found!\n" - << "Be sure to run matbudget_mc.C before for the respective STS geometry!" - << endl; - exit(1); - } - - // Output file (material maps) - TString outFile = "sts_matbudget_" + stsVersion + ".root"; - - // Input tree and branch - TTree* tree = (TTree*) input->Get("cbmsim"); - TClonesArray* points = new TClonesArray("FairRadLenPoint"); - tree->SetBranchAddress("RadLen", &points); - - // Create output histograms - TH1D* hisRadLen = new TH1D("hisRadLen", "Radiation Length", 1000, 0, 100); - const int nStations = 8; // number of STS stations - const int nBins = 1000; // number of bins in histograms (in both x and y) - const int rMax = 55; // maximal radius for histograms (for both x and y) - const double zRange = 1.4; - TProfile2D* hStationRadLen[nStations]; - TProfile2D* hStsRadLen; - double StsRadThick = 0; - - TString stsname = "Material Budget x/X_{0} [%], STS"; - hStsRadLen = - new TProfile2D(stsname, stsname, nBins, -rMax, rMax, nBins, -rMax, rMax); - - for (int i = 0; i < nStations; ++i) { - TString hisname = "Radiation Thickness [%],"; - hisname += " Station"; - hisname += i + 1; - TString name = "Material Budget x/X_{0} [%],"; - name += " Station "; - name += i + 1; - hStationRadLen[i] = - new TProfile2D(hisname, name, nBins, -rMax, rMax, nBins, -rMax, rMax); - } - - // Auxiliary variables - TVector3 vecs, veco; - std::map<int, int> trackHitMap; - - - // Event loop - int firstEvent = 0; - for (Int_t event = firstEvent; - event < (firstEvent + nEvents) && event < tree->GetEntriesFast(); - event++) { - tree->GetEntry(event); - if (0 == event % 10000) cout << "*** Processing event " << event << endl; - - const int nTracks = 1; - std::vector<double> RadLengthOnTrack( - nTracks, 0.0); //trackID, vector with points on track - std::vector<double> TrackLength( - nTracks, 0.0); //trackID, vector with points on track - - vector<double> RadThick(nStations, 0); - Double_t x = 0; - Double_t y = 0; - - // For this implementation to be correct, there should be only one MCTrack per event. - - // Point loop - for (Int_t iPoint = 0; iPoint < points->GetEntriesFast(); iPoint++) { - FairRadLenPoint* point = (FairRadLenPoint*) points->At(iPoint); - - // Get track position at entry and exit of material - TVector3 posIn, posOut, posDif; - posIn = point->GetPosition(); - posOut = point->GetPositionOut(); - posDif = posOut - posIn; - - // Midpoint between in and out - const TVector3 middle = (posOut + posIn); - x = middle.X() / 2; - y = middle.Y() / 2; - const double z = middle.Z() / 2; - - // Material budget per unit length - const double radThick = posDif.Mag() / point->GetRadLength(); - RadLengthOnTrack[point->GetTrackID()] += radThick; - TrackLength[point->GetTrackID()] += posDif.Mag(); - - // Determine station number - int iStation = - posIn.Z() / 10 - 3 + 0.5; // suppose equidistant stations at 30-100 cm - int iStationOut = posOut.Z() / 10 - 3 + 0.5; - if (iStationOut != iStation) continue; - if (iStation >= nStations || iStation < 0) continue; - RadThick[iStation] += radThick; - } - - StsRadThick = 0; - // Fill material budget map for each station - for (int i = 0; i < nStations; ++i) { - hStationRadLen[i]->Fill(x, y, RadThick[i] * 100); - StsRadThick += RadThick[i]; - } - - hStsRadLen->Fill(x, y, StsRadThick * 100); - - for (int k = 0; k < RadLengthOnTrack.size(); k++) - if (RadLengthOnTrack[k] > 0) hisRadLen->Fill(RadLengthOnTrack[k]); - - } // event loop - - - // Plotting the results - //single TCanvas* can1 = new TCanvas("c","c",800,800); - TCanvas* can1 = new TCanvas("c", "c", 1600, 800); - can1->Divide(nStations / 2, 2); - gStyle->SetPalette(1); - gStyle->SetOptStat(0); - - // Open output file - TFile* output = new TFile(outFile, "RECREATE"); - output->cd(); - - for (int iStation = 0; iStation < nStations; iStation++) { - can1->cd(iStation + 1); - //single int iStation = 7; - hStationRadLen[iStation]->GetXaxis()->SetTitle("x [cm]"); - hStationRadLen[iStation]->GetYaxis()->SetTitle("y [cm]"); - //hStationRadLen[iStation]->GetZaxis()->SetTitle("x/X_{0} [%]"); - //hStationRadLen[i]->GetZaxis()->SetTitle("radiation thickness [%]"); - hStationRadLen[iStation]->SetAxisRange(0, zRange, "Z"); - hStationRadLen[iStation]->Draw("colz"); - hStationRadLen[iStation]->Write(); - } - - // Plot file - TString plotFile = "sts_" + stsVersion + "_matbudget.png"; - can1->SaveAs(plotFile); - - //================================================================ - - // Plotting the results - TCanvas* can2 = new TCanvas("c", "c", 800, 800); - gStyle->SetPalette(1); - gStyle->SetOptStat(0); - - can2->cd(); - hStsRadLen->GetXaxis()->SetTitle("x [cm]"); - hStsRadLen->GetYaxis()->SetTitle("y [cm]"); - hStsRadLen->SetAxisRange(0, 10, "Z"); - hStsRadLen->Draw("colz"); - - // Plot file - plotFile = "sts_" + stsVersion + "_total_matbudget.png"; - can2->SaveAs(plotFile); - - //================================================================ - - TString thisStation(0); - can2->Clear(); - for (int iStation = 0; iStation < nStations; iStation++) { - hStationRadLen[iStation]->Draw("colz"); - // Plot file - thisStation.Form("%d", iStation + 1); - plotFile = - "sts_" + stsVersion + "_station_" + thisStation + "_matbudget.png"; - can2->SaveAs(plotFile); - } - - // Close files - input->Close(); - output->Close(); - cout << "Material budget maps written to " << outFile << endl; - - return 0; -} +#if !defined(__CINT__) || defined(__MAKECINT__) +#include "TCanvas.h" +#include "TClonesArray.h" +#include "TFile.h" +#include "TH1.h" +#include "TProfile2D.h" +#include "TROOT.h" +#include "TString.h" +#include "TStyle.h" +#include "TSystem.h" +#include "TTree.h" +#include "TVector3.h" + +#include "FairRadLenPoint.h" + +#include <iostream> +#include <vector> +using std::cout; +using std::endl; +using std::vector; +#endif + +// need to set this root include path: +// include path: -I/opt/cbm/fairsoft_jul15p1/installation/include/root -I/opt/cbm/fairroot_v-15.07-fairsoft_jul15p1/include -I/opt/cbm/fairsoft_jul15p1/installation/include +//.include $SIMPATH/include +//.include $FAIRROOTPATH/include + +//Int_t matbudget_ana(Int_t nEvents = 10 , const char* stsGeo = "v16v") +//Int_t matbudget_ana(Int_t nEvents = 1000000 , const char* stsGeo = "v16v") +Int_t matbudget_ana(Int_t nEvents = 10000000, const char* stsGeo = "v16v") { + + // Input file (MC) + TString stsVersion(stsGeo); + TString inFile = "data/matbudget." + stsVersion + ".mc.root"; + TFile* input = new TFile(inFile); + if (!input) { + cout + << "*** matbudget_ana: Input file " << inFile << " not found!\n" + << "Be sure to run matbudget_mc.C before for the respective STS geometry!" + << endl; + exit(1); + } + + // Output file (material maps) + TString outFile = "sts_matbudget_" + stsVersion + ".root"; + + // Input tree and branch + TTree* tree = (TTree*) input->Get("cbmsim"); + TClonesArray* points = new TClonesArray("FairRadLenPoint"); + tree->SetBranchAddress("RadLen", &points); + + // Create output histograms + TH1D* hisRadLen = new TH1D("hisRadLen", "Radiation Length", 1000, 0, 100); + const int nStations = 8; // number of STS stations + const int nBins = 1000; // number of bins in histograms (in both x and y) + const int rMax = 55; // maximal radius for histograms (for both x and y) + const double zRange = 1.4; + TProfile2D* hStationRadLen[nStations]; + TProfile2D* hStsRadLen; + double StsRadThick = 0; + + TString stsname = "Material Budget x/X_{0} [%], STS"; + hStsRadLen = + new TProfile2D(stsname, stsname, nBins, -rMax, rMax, nBins, -rMax, rMax); + + for (int i = 0; i < nStations; ++i) { + TString hisname = "Radiation Thickness [%],"; + hisname += " Station"; + hisname += i + 1; + TString name = "Material Budget x/X_{0} [%],"; + name += " Station "; + name += i + 1; + hStationRadLen[i] = + new TProfile2D(hisname, name, nBins, -rMax, rMax, nBins, -rMax, rMax); + } + + // Auxiliary variables + TVector3 vecs, veco; + std::map<int, int> trackHitMap; + + + // Event loop + int firstEvent = 0; + for (Int_t event = firstEvent; + event < (firstEvent + nEvents) && event < tree->GetEntriesFast(); + event++) { + tree->GetEntry(event); + if (0 == event % 10000) cout << "*** Processing event " << event << endl; + + const int nTracks = 1; + std::vector<double> RadLengthOnTrack( + nTracks, 0.0); //trackID, vector with points on track + std::vector<double> TrackLength( + nTracks, 0.0); //trackID, vector with points on track + + vector<double> RadThick(nStations, 0); + Double_t x = 0; + Double_t y = 0; + + // For this implementation to be correct, there should be only one MCTrack per event. + + // Point loop + for (Int_t iPoint = 0; iPoint < points->GetEntriesFast(); iPoint++) { + FairRadLenPoint* point = (FairRadLenPoint*) points->At(iPoint); + + // Get track position at entry and exit of material + TVector3 posIn, posOut, posDif; + posIn = point->GetPosition(); + posOut = point->GetPositionOut(); + posDif = posOut - posIn; + + // Midpoint between in and out + const TVector3 middle = (posOut + posIn); + x = middle.X() / 2; + y = middle.Y() / 2; + const double z = middle.Z() / 2; + + // Material budget per unit length + const double radThick = posDif.Mag() / point->GetRadLength(); + RadLengthOnTrack[point->GetTrackID()] += radThick; + TrackLength[point->GetTrackID()] += posDif.Mag(); + + // Determine station number + int iStation = + posIn.Z() / 10 - 3 + 0.5; // suppose equidistant stations at 30-100 cm + int iStationOut = posOut.Z() / 10 - 3 + 0.5; + if (iStationOut != iStation) continue; + if (iStation >= nStations || iStation < 0) continue; + RadThick[iStation] += radThick; + } + + StsRadThick = 0; + // Fill material budget map for each station + for (int i = 0; i < nStations; ++i) { + hStationRadLen[i]->Fill(x, y, RadThick[i] * 100); + StsRadThick += RadThick[i]; + } + + hStsRadLen->Fill(x, y, StsRadThick * 100); + + for (int k = 0; k < RadLengthOnTrack.size(); k++) + if (RadLengthOnTrack[k] > 0) hisRadLen->Fill(RadLengthOnTrack[k]); + + } // event loop + + + // Plotting the results + //single TCanvas* can1 = new TCanvas("c","c",800,800); + TCanvas* can1 = new TCanvas("c", "c", 1600, 800); + can1->Divide(nStations / 2, 2); + gStyle->SetPalette(1); + gStyle->SetOptStat(0); + + // Open output file + TFile* output = new TFile(outFile, "RECREATE"); + output->cd(); + + for (int iStation = 0; iStation < nStations; iStation++) { + can1->cd(iStation + 1); + //single int iStation = 7; + hStationRadLen[iStation]->GetXaxis()->SetTitle("x [cm]"); + hStationRadLen[iStation]->GetYaxis()->SetTitle("y [cm]"); + //hStationRadLen[iStation]->GetZaxis()->SetTitle("x/X_{0} [%]"); + //hStationRadLen[i]->GetZaxis()->SetTitle("radiation thickness [%]"); + hStationRadLen[iStation]->SetAxisRange(0, zRange, "Z"); + hStationRadLen[iStation]->Draw("colz"); + hStationRadLen[iStation]->Write(); + } + + // Plot file + TString plotFile = "sts_" + stsVersion + "_matbudget.png"; + can1->SaveAs(plotFile); + + //================================================================ + + // Plotting the results + TCanvas* can2 = new TCanvas("c", "c", 800, 800); + gStyle->SetPalette(1); + gStyle->SetOptStat(0); + + can2->cd(); + hStsRadLen->GetXaxis()->SetTitle("x [cm]"); + hStsRadLen->GetYaxis()->SetTitle("y [cm]"); + hStsRadLen->SetAxisRange(0, 10, "Z"); + hStsRadLen->Draw("colz"); + + // Plot file + plotFile = "sts_" + stsVersion + "_total_matbudget.png"; + can2->SaveAs(plotFile); + + //================================================================ + + TString thisStation(0); + can2->Clear(); + for (int iStation = 0; iStation < nStations; iStation++) { + hStationRadLen[iStation]->Draw("colz"); + // Plot file + thisStation.Form("%d", iStation + 1); + plotFile = + "sts_" + stsVersion + "_station_" + thisStation + "_matbudget.png"; + can2->SaveAs(plotFile); + } + + // Close files + input->Close(); + output->Close(); + cout << "Material budget maps written to " << outFile << endl; + + return 0; +} diff --git a/macro/sts/matbudget_ana_phi.C b/macro/sts/matbudget_ana_phi.C index 114799f6bc..950aeea3f6 100644 --- a/macro/sts/matbudget_ana_phi.C +++ b/macro/sts/matbudget_ana_phi.C @@ -1,214 +1,214 @@ -#if !defined(__CINT__) || defined(__MAKECINT__) -#include "TCanvas.h" -#include "TClonesArray.h" -#include "TFile.h" -#include "TH1.h" -#include "TProfile2D.h" -#include "TROOT.h" -#include "TString.h" -#include "TStyle.h" -#include "TSystem.h" -#include "TTree.h" -#include "TVector3.h" - -#include "FairRadLenPoint.h" - -#include <iostream> -#include <vector> -using std::cout; -using std::endl; -using std::vector; -#endif - -// need to set this root include path: -// include path: -I/opt/cbm/fairsoft_jul15p1/installation/include/root -I/opt/cbm/fairroot_v-15.07-fairsoft_jul15p1/include -I/opt/cbm/fairsoft_jul15p1/installation/include -//.include $SIMPATH/include -//.include $FAIRROOTPATH/include - -//Int_t matbudget_ana_phi(Int_t nEvents=100 , const char* stsGeo = "v15c") -//Int_t matbudget_ana_phi(Int_t nEvents=1000000 , const char* stsGeo = "v15c") -Int_t matbudget_ana_phi(Int_t nEvents = 10000000, const char* stsGeo = "v15c") { - - // Input file (MC) - TString stsVersion(stsGeo); - TString inFile = "data/matbudget." + stsVersion + ".mc.root"; - TFile* input = new TFile(inFile); - if (!input) { - cout - << "*** matbudget_ana: Input file " << inFile << " not found!\n" - << "Be sure to run matbudget_mc.C before for the respective STS geometry!" - << endl; - exit; - } - - // Output file (material maps) - TString outFile = "sts_matbudget_" + stsVersion + ".root"; - - // Input tree and branch - TTree* tree = (TTree*) input->Get("cbmsim"); - TClonesArray* points = new TClonesArray("FairRadLenPoint"); - tree->SetBranchAddress("RadLen", &points); - - // Create output histograms - TH1D* hisRadLen = new TH1D("hisRadLen", "Radiation Length", 1000, 0, 100); - const int nStations = 8; // number of STS stations - const int nBins = 1000; // number of bins in histograms (in both x and y) - // const int rMax = 55; // maximal radius for histograms (for both x and y) - const int phiMax = 180; // maximal phi range for histograms - const int thetaMax = 50; // maximal theta range for histograms - // const int radiusMax = 75; // maximal radius for histograms - double phiSta[nStations]; - double thetaSta[nStations]; - - - TProfile2D* hStaRadLen[nStations]; - for (int i = 0; i < nStations; ++i) { - TString name = "Material Budget x/X_{0} [%],"; - name += " Station "; - name += i + 1; - // hStaRadLen[i] = new TProfile2D(name, name, nBins,-rMax, rMax, nBins,-rMax, rMax); - hStaRadLen[i] = - new TProfile2D(name, name, nBins, -phiMax, phiMax, nBins, 0, thetaMax); - // hStaRadLen[i] = new TProfile2D(name, name, nBins, -phiMax, phiMax, nBins, 0, radiusMax); - } - - // Auxiliary variables - TVector3 vecs, veco; - std::map<int, int> trackHitMap; - - - // Event loop - int firstEvent = 0; - for (Int_t event = firstEvent; - event < (firstEvent + nEvents) && event < tree->GetEntriesFast(); - event++) { - tree->GetEntry(event); - if (0 == event % 10000) cout << "*** Processing event " << event << endl; - - const int nTracks = 1; - std::vector<double> RadLengthOnTrack( - nTracks, 0.0); //trackID, vector with points on track - std::vector<double> TrackLength( - nTracks, 0.0); //trackID, vector with points on track - - vector<double> RadThick(nStations, 0); - double x, y; - double theta, phi, radius; - - // For this implementation to be correct, there should be only one MCTrack per event. - - // Point loop - for (Int_t iPoint = 0; iPoint < points->GetEntriesFast(); iPoint++) { - FairRadLenPoint* point = (FairRadLenPoint*) points->At(iPoint); - - // Get track position at entry and exit of material - TVector3 posIn, posOut, posDif; - posIn = point->GetPosition(); - posOut = point->GetPositionOut(); - posDif = 0.5 * (posOut - posIn); - - // Midpoint between in and out - const TVector3 middle = (posOut + posIn); - x = middle.X() / 2; - y = middle.Y() / 2; - const double z = middle.Z() / 2; - - if (x == 0) { - if (y >= 0) - phi = 90; - else - phi = -90; - } else - phi = atan(y / x) * 180 / acos(-1.); - - if (x < 0) { - if (y >= 0) - phi += 180; - else - phi -= 180; - } - - radius = sqrt(x * x + y * y); - - if (z > 0) theta = atan(radius / z) * 180 / acos(-1.); - // theta = atan( sqrt(x*x + y*y) / z ) * 180 / acos(-1.); - - // cout << "x: " << x << " y: " << y << " r: " << radius << " z: " << z << " - phi: " << phi << " theta: " << theta; - - // Material budget per unit length - const double radThick = posDif.Mag() / point->GetRadLength(); - RadLengthOnTrack[point->GetTrackID()] += radThick; - TrackLength[point->GetTrackID()] += posDif.Mag(); - - // Determine station number - int iStation = - posIn.Z() / 10 - 3 + 0.5; // suppose equidistant stations at 30-100 cm - int iStationOut = posOut.Z() / 10 - 3 + 0.5; - if (iStationOut != iStation) continue; - if (iStation >= nStations || iStation < 0) continue; - - RadThick[iStation] += radThick; - phiSta[iStation] = phi; - // thetaSta[iStation] = theta; - thetaSta[iStation] = - atan(radius / (iStation * 10 + 30)) * 180 / acos(-1.); - - // cout << "i: " << iStation << " phi: " << phi << " z: " << z << " theta: " << theta - // << " correct: " << atan (radius / (iStation *10 + 30)) * 180 / acos(-1.) - // << " RadThick: " << RadThick[iStation]*100 << endl; - } - - // Fill material budget map for each station - for (int i = 0; i < nStations; ++i) { - // hStaRadLen[i]->Fill( x, y, RadThick[i]*100 ); - // hStaRadLen[i]->Fill( phi, theta, RadThick[i]*100 ); - hStaRadLen[i]->Fill(phiSta[i], thetaSta[i], RadThick[i] * 100); - // hStaRadLen[i]->Fill( phi, radius, RadThick[i]*100 ); - - // cout << "AA phi: " << phi << " theta: " << theta << endl; - } - - for (int k = 0; k < RadLengthOnTrack.size(); k++) - if (RadLengthOnTrack[k] > 0) hisRadLen->Fill(RadLengthOnTrack[k]); - - } // event loop - - - // Plotting the results - //single TCanvas* can1 = new TCanvas("c","c",800,800); - TCanvas* can1 = new TCanvas("c", "c", 1600, 800); - can1->Divide(nStations / 2, 2); - gStyle->SetPalette(1); - gStyle->SetOptStat(0); - - // Open output file - TFile* output = new TFile(outFile, "RECREATE"); - output->cd(); - - for (int iStation = 0; iStation < nStations; iStation++) { - can1->cd(iStation + 1); - //single int iStation = 7; - // hStaRadLen[iStation]->GetXaxis()->SetTitle("x [cm]"); - // hStaRadLen[iStation]->GetYaxis()->SetTitle("y [cm]"); - hStaRadLen[iStation]->GetXaxis()->SetTitle("phi [deg]"); - hStaRadLen[iStation]->GetYaxis()->SetTitle("theta [deg]"); - // hStaRadLen[iStation]->GetYaxis()->SetTitle("radius [cm]"); - //hStaRadLen[iStation]->GetZaxis()->SetTitle("x/X_{0} [%]"); - //hStaRadLen[i]->GetZaxis()->SetTitle("radiation thickness [%]"); - hStaRadLen[iStation]->SetAxisRange(0, 1.2, "Z"); - // hStaRadLen[iStation]->SetAxisRange(0, 2, "Z"); - hStaRadLen[iStation]->Draw("colz"); - hStaRadLen[iStation]->Write(); - } - - // Plot file - TString plotFile = "sts_" + stsVersion + "_matbudget.png"; - can1->SaveAs(plotFile); - - // Close files - input->Close(); - output->Close(); - cout << "Material budget maps written to " << outFile << endl; - - return 0; -} +#if !defined(__CINT__) || defined(__MAKECINT__) +#include "TCanvas.h" +#include "TClonesArray.h" +#include "TFile.h" +#include "TH1.h" +#include "TProfile2D.h" +#include "TROOT.h" +#include "TString.h" +#include "TStyle.h" +#include "TSystem.h" +#include "TTree.h" +#include "TVector3.h" + +#include "FairRadLenPoint.h" + +#include <iostream> +#include <vector> +using std::cout; +using std::endl; +using std::vector; +#endif + +// need to set this root include path: +// include path: -I/opt/cbm/fairsoft_jul15p1/installation/include/root -I/opt/cbm/fairroot_v-15.07-fairsoft_jul15p1/include -I/opt/cbm/fairsoft_jul15p1/installation/include +//.include $SIMPATH/include +//.include $FAIRROOTPATH/include + +//Int_t matbudget_ana_phi(Int_t nEvents=100 , const char* stsGeo = "v15c") +//Int_t matbudget_ana_phi(Int_t nEvents=1000000 , const char* stsGeo = "v15c") +Int_t matbudget_ana_phi(Int_t nEvents = 10000000, const char* stsGeo = "v15c") { + + // Input file (MC) + TString stsVersion(stsGeo); + TString inFile = "data/matbudget." + stsVersion + ".mc.root"; + TFile* input = new TFile(inFile); + if (!input) { + cout + << "*** matbudget_ana: Input file " << inFile << " not found!\n" + << "Be sure to run matbudget_mc.C before for the respective STS geometry!" + << endl; + exit; + } + + // Output file (material maps) + TString outFile = "sts_matbudget_" + stsVersion + ".root"; + + // Input tree and branch + TTree* tree = (TTree*) input->Get("cbmsim"); + TClonesArray* points = new TClonesArray("FairRadLenPoint"); + tree->SetBranchAddress("RadLen", &points); + + // Create output histograms + TH1D* hisRadLen = new TH1D("hisRadLen", "Radiation Length", 1000, 0, 100); + const int nStations = 8; // number of STS stations + const int nBins = 1000; // number of bins in histograms (in both x and y) + // const int rMax = 55; // maximal radius for histograms (for both x and y) + const int phiMax = 180; // maximal phi range for histograms + const int thetaMax = 50; // maximal theta range for histograms + // const int radiusMax = 75; // maximal radius for histograms + double phiSta[nStations]; + double thetaSta[nStations]; + + + TProfile2D* hStaRadLen[nStations]; + for (int i = 0; i < nStations; ++i) { + TString name = "Material Budget x/X_{0} [%],"; + name += " Station "; + name += i + 1; + // hStaRadLen[i] = new TProfile2D(name, name, nBins,-rMax, rMax, nBins,-rMax, rMax); + hStaRadLen[i] = + new TProfile2D(name, name, nBins, -phiMax, phiMax, nBins, 0, thetaMax); + // hStaRadLen[i] = new TProfile2D(name, name, nBins, -phiMax, phiMax, nBins, 0, radiusMax); + } + + // Auxiliary variables + TVector3 vecs, veco; + std::map<int, int> trackHitMap; + + + // Event loop + int firstEvent = 0; + for (Int_t event = firstEvent; + event < (firstEvent + nEvents) && event < tree->GetEntriesFast(); + event++) { + tree->GetEntry(event); + if (0 == event % 10000) cout << "*** Processing event " << event << endl; + + const int nTracks = 1; + std::vector<double> RadLengthOnTrack( + nTracks, 0.0); //trackID, vector with points on track + std::vector<double> TrackLength( + nTracks, 0.0); //trackID, vector with points on track + + vector<double> RadThick(nStations, 0); + double x, y; + double theta, phi, radius; + + // For this implementation to be correct, there should be only one MCTrack per event. + + // Point loop + for (Int_t iPoint = 0; iPoint < points->GetEntriesFast(); iPoint++) { + FairRadLenPoint* point = (FairRadLenPoint*) points->At(iPoint); + + // Get track position at entry and exit of material + TVector3 posIn, posOut, posDif; + posIn = point->GetPosition(); + posOut = point->GetPositionOut(); + posDif = 0.5 * (posOut - posIn); + + // Midpoint between in and out + const TVector3 middle = (posOut + posIn); + x = middle.X() / 2; + y = middle.Y() / 2; + const double z = middle.Z() / 2; + + if (x == 0) { + if (y >= 0) + phi = 90; + else + phi = -90; + } else + phi = atan(y / x) * 180 / acos(-1.); + + if (x < 0) { + if (y >= 0) + phi += 180; + else + phi -= 180; + } + + radius = sqrt(x * x + y * y); + + if (z > 0) theta = atan(radius / z) * 180 / acos(-1.); + // theta = atan( sqrt(x*x + y*y) / z ) * 180 / acos(-1.); + + // cout << "x: " << x << " y: " << y << " r: " << radius << " z: " << z << " - phi: " << phi << " theta: " << theta; + + // Material budget per unit length + const double radThick = posDif.Mag() / point->GetRadLength(); + RadLengthOnTrack[point->GetTrackID()] += radThick; + TrackLength[point->GetTrackID()] += posDif.Mag(); + + // Determine station number + int iStation = + posIn.Z() / 10 - 3 + 0.5; // suppose equidistant stations at 30-100 cm + int iStationOut = posOut.Z() / 10 - 3 + 0.5; + if (iStationOut != iStation) continue; + if (iStation >= nStations || iStation < 0) continue; + + RadThick[iStation] += radThick; + phiSta[iStation] = phi; + // thetaSta[iStation] = theta; + thetaSta[iStation] = + atan(radius / (iStation * 10 + 30)) * 180 / acos(-1.); + + // cout << "i: " << iStation << " phi: " << phi << " z: " << z << " theta: " << theta + // << " correct: " << atan (radius / (iStation *10 + 30)) * 180 / acos(-1.) + // << " RadThick: " << RadThick[iStation]*100 << endl; + } + + // Fill material budget map for each station + for (int i = 0; i < nStations; ++i) { + // hStaRadLen[i]->Fill( x, y, RadThick[i]*100 ); + // hStaRadLen[i]->Fill( phi, theta, RadThick[i]*100 ); + hStaRadLen[i]->Fill(phiSta[i], thetaSta[i], RadThick[i] * 100); + // hStaRadLen[i]->Fill( phi, radius, RadThick[i]*100 ); + + // cout << "AA phi: " << phi << " theta: " << theta << endl; + } + + for (int k = 0; k < RadLengthOnTrack.size(); k++) + if (RadLengthOnTrack[k] > 0) hisRadLen->Fill(RadLengthOnTrack[k]); + + } // event loop + + + // Plotting the results + //single TCanvas* can1 = new TCanvas("c","c",800,800); + TCanvas* can1 = new TCanvas("c", "c", 1600, 800); + can1->Divide(nStations / 2, 2); + gStyle->SetPalette(1); + gStyle->SetOptStat(0); + + // Open output file + TFile* output = new TFile(outFile, "RECREATE"); + output->cd(); + + for (int iStation = 0; iStation < nStations; iStation++) { + can1->cd(iStation + 1); + //single int iStation = 7; + // hStaRadLen[iStation]->GetXaxis()->SetTitle("x [cm]"); + // hStaRadLen[iStation]->GetYaxis()->SetTitle("y [cm]"); + hStaRadLen[iStation]->GetXaxis()->SetTitle("phi [deg]"); + hStaRadLen[iStation]->GetYaxis()->SetTitle("theta [deg]"); + // hStaRadLen[iStation]->GetYaxis()->SetTitle("radius [cm]"); + //hStaRadLen[iStation]->GetZaxis()->SetTitle("x/X_{0} [%]"); + //hStaRadLen[i]->GetZaxis()->SetTitle("radiation thickness [%]"); + hStaRadLen[iStation]->SetAxisRange(0, 1.2, "Z"); + // hStaRadLen[iStation]->SetAxisRange(0, 2, "Z"); + hStaRadLen[iStation]->Draw("colz"); + hStaRadLen[iStation]->Write(); + } + + // Plot file + TString plotFile = "sts_" + stsVersion + "_matbudget.png"; + can1->SaveAs(plotFile); + + // Close files + input->Close(); + output->Close(); + cout << "Material budget maps written to " << outFile << endl; + + return 0; +} diff --git a/macro/tof/beamtime/feb15/parUnpack_basic.txt b/macro/tof/beamtime/feb15/parUnpack_basic.txt index 398be237ff..f96ed59ec2 100644 --- a/macro/tof/beamtime/feb15/parUnpack_basic.txt +++ b/macro/tof/beamtime/feb15/parUnpack_basic.txt @@ -1,199 +1,199 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 1 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 0 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 31 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ - 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ - 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ - 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ - 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ - 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ - 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ - 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ - 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ - 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ - 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ - 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ - 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ - 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ - 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ - 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ - 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ - 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ - 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ - 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ - 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ - 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ - 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ - 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ - 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ - 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ - 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ - 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ - 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ - 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 45 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ - 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ - 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ - 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ - 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ - 5, 0x1, 0x8002, 0x0, 0xc000, 0x0, 30, \ - 6, 0x1, 0xb021, 0x0, 0x8002, 0x1, 32, \ - 7, 0x1, 0xb022, 0x0, 0x8002, 0x1, 32, \ - 8, 0x1, 0xb023, 0x0, 0x8002, 0x1, 32, \ - 9, 0x1, 0xb024, 0x0, 0x8002, 0x1, 32, \ - 10, 0x1, 0x8003, 0x0, 0x8003, 0x0, 30, \ - 11, 0x1, 0xb031, 0x0, 0x8003, 0x1, 32, \ - 12, 0x1, 0xb032, 0x0, 0x8003, 0x1, 32, \ - 13, 0x1, 0xb033, 0x0, 0x8003, 0x1, 32, \ - 14, 0x1, 0xb034, 0x0, 0x8003, 0x1, 32, \ - 15, 0x1, 0x8004, 0x0, 0x8004, 0x0, 30, \ - 16, 0x1, 0xb041, 0x0, 0x8004, 0x1, 32, \ - 17, 0x1, 0xb042, 0x0, 0x8004, 0x1, 32, \ - 18, 0x1, 0xb043, 0x0, 0x8004, 0x1, 32, \ - 19, 0x1, 0xb044, 0x0, 0x8004, 0x1, 32, \ - 20, 0x1, 0x8005, 0x0, 0x8005, 0x0, 30, \ - 21, 0x1, 0xb051, 0x0, 0x8005, 0x1, 32, \ - 22, 0x1, 0xb052, 0x0, 0x8005, 0x1, 32, \ - 23, 0x1, 0xb053, 0x0, 0x8005, 0x1, 32, \ - 24, 0x1, 0xb054, 0x0, 0x8005, 0x1, 32, \ - 25, 0x1, 0x0f11, 0x0, 0xc000, 0x1, 31, \ - 26, 0x1, 0x0f12, 0x0, 0xc000, 0x1, 31, \ - 27, 0x1, 0x0f13, 0x0, 0xc000, 0x1, 31, \ - 28, 0x1, 0x0f14, 0x0, 0xc000, 0x1, 31, \ - 29, 0x1, 0x0f21, 0x0, 0x8002, 0x1, 31, \ - 30, 0x1, 0x0f22, 0x0, 0x8002, 0x1, 31, \ - 31, 0x1, 0x0f23, 0x0, 0x8002, 0x1, 31, \ - 32, 0x1, 0x0f24, 0x0, 0x8002, 0x1, 31, \ - 33, 0x1, 0x0f41, 0x0, 0x8003, 0x1, 31, \ - 34, 0x1, 0x0f42, 0x0, 0x8003, 0x1, 31, \ - 35, 0x1, 0x0f43, 0x0, 0x8003, 0x1, 31, \ - 36, 0x1, 0x0f44, 0x0, 0x8003, 0x1, 31, \ - 37, 0x1, 0x0f51, 0x0, 0x8004, 0x1, 31, \ - 38, 0x1, 0x0f52, 0x0, 0x8004, 0x1, 31, \ - 39, 0x1, 0x0f53, 0x0, 0x8004, 0x1, 31, \ - 40, 0x1, 0x0f54, 0x0, 0x8004, 0x1, 31, \ - 41, 0x1, 0x0f61, 0x0, 0x8005, 0x1, 31, \ - 42, 0x1, 0x0f62, 0x0, 0x8005, 0x1, 31, \ - 43, 0x1, 0x0f63, 0x0, 0x8005, 0x1, 31, \ - 44, 0x1, 0x0f64, 0x0, 0x8005, 0x1, 31 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x1, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x1, 0x0, \ - 7, 0x1, 0x0, \ - 8, 0x0, 0x0, \ - 9, 0x1, 0x0, \ - 10, 0x2, 0x0, \ - 11, 0x3, 0x0, \ - 12, 0x4, 0x0, \ - 13, 0x5, 0x0, \ - 14, 0x6, 0x0, \ - 15, 0x7, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 1 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 1 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 0 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 31 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ + 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ + 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ + 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ + 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ + 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ + 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ + 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ + 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ + 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ + 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ + 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ + 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ + 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ + 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ + 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ + 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ + 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ + 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ + 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ + 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ + 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ + 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ + 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ + 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ + 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ + 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ + 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ + 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ + 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 45 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ + 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ + 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ + 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ + 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ + 5, 0x1, 0x8002, 0x0, 0xc000, 0x0, 30, \ + 6, 0x1, 0xb021, 0x0, 0x8002, 0x1, 32, \ + 7, 0x1, 0xb022, 0x0, 0x8002, 0x1, 32, \ + 8, 0x1, 0xb023, 0x0, 0x8002, 0x1, 32, \ + 9, 0x1, 0xb024, 0x0, 0x8002, 0x1, 32, \ + 10, 0x1, 0x8003, 0x0, 0x8003, 0x0, 30, \ + 11, 0x1, 0xb031, 0x0, 0x8003, 0x1, 32, \ + 12, 0x1, 0xb032, 0x0, 0x8003, 0x1, 32, \ + 13, 0x1, 0xb033, 0x0, 0x8003, 0x1, 32, \ + 14, 0x1, 0xb034, 0x0, 0x8003, 0x1, 32, \ + 15, 0x1, 0x8004, 0x0, 0x8004, 0x0, 30, \ + 16, 0x1, 0xb041, 0x0, 0x8004, 0x1, 32, \ + 17, 0x1, 0xb042, 0x0, 0x8004, 0x1, 32, \ + 18, 0x1, 0xb043, 0x0, 0x8004, 0x1, 32, \ + 19, 0x1, 0xb044, 0x0, 0x8004, 0x1, 32, \ + 20, 0x1, 0x8005, 0x0, 0x8005, 0x0, 30, \ + 21, 0x1, 0xb051, 0x0, 0x8005, 0x1, 32, \ + 22, 0x1, 0xb052, 0x0, 0x8005, 0x1, 32, \ + 23, 0x1, 0xb053, 0x0, 0x8005, 0x1, 32, \ + 24, 0x1, 0xb054, 0x0, 0x8005, 0x1, 32, \ + 25, 0x1, 0x0f11, 0x0, 0xc000, 0x1, 31, \ + 26, 0x1, 0x0f12, 0x0, 0xc000, 0x1, 31, \ + 27, 0x1, 0x0f13, 0x0, 0xc000, 0x1, 31, \ + 28, 0x1, 0x0f14, 0x0, 0xc000, 0x1, 31, \ + 29, 0x1, 0x0f21, 0x0, 0x8002, 0x1, 31, \ + 30, 0x1, 0x0f22, 0x0, 0x8002, 0x1, 31, \ + 31, 0x1, 0x0f23, 0x0, 0x8002, 0x1, 31, \ + 32, 0x1, 0x0f24, 0x0, 0x8002, 0x1, 31, \ + 33, 0x1, 0x0f41, 0x0, 0x8003, 0x1, 31, \ + 34, 0x1, 0x0f42, 0x0, 0x8003, 0x1, 31, \ + 35, 0x1, 0x0f43, 0x0, 0x8003, 0x1, 31, \ + 36, 0x1, 0x0f44, 0x0, 0x8003, 0x1, 31, \ + 37, 0x1, 0x0f51, 0x0, 0x8004, 0x1, 31, \ + 38, 0x1, 0x0f52, 0x0, 0x8004, 0x1, 31, \ + 39, 0x1, 0x0f53, 0x0, 0x8004, 0x1, 31, \ + 40, 0x1, 0x0f54, 0x0, 0x8004, 0x1, 31, \ + 41, 0x1, 0x0f61, 0x0, 0x8005, 0x1, 31, \ + 42, 0x1, 0x0f62, 0x0, 0x8005, 0x1, 31, \ + 43, 0x1, 0x0f63, 0x0, 0x8005, 0x1, 31, \ + 44, 0x1, 0x0f64, 0x0, 0x8005, 0x1, 31 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x1, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x1, 0x0, \ + 7, 0x1, 0x0, \ + 8, 0x0, 0x0, \ + 9, 0x1, 0x0, \ + 10, 0x2, 0x0, \ + 11, 0x3, 0x0, \ + 12, 0x4, 0x0, \ + 13, 0x5, 0x0, \ + 14, 0x6, 0x0, \ + 15, 0x7, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 1 +########################### diff --git a/macro/tof/beamtime/feb15/parUnpack_rates.txt b/macro/tof/beamtime/feb15/parUnpack_rates.txt index b66f27bedb..3beb99d491 100644 --- a/macro/tof/beamtime/feb15/parUnpack_rates.txt +++ b/macro/tof/beamtime/feb15/parUnpack_rates.txt @@ -1,203 +1,203 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 2 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 1 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 34 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// triglogscal= 14, // VULOM TRIGLOG board used as additional scaler board -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 1, 0x03000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ - 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ - 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ - 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ - 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ - 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ - 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ - 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ - 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ - 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ - 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ - 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ - 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ - 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ - 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ - 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ - 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ - 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ - 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ - 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ - 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ - 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ - 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ - 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ - 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ - 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ - 27, 1, 0x05000000, 0x09, 0x73636131, 0x31616373, 13, \ - 28, 1, 0x06000000, 0x09, 0x73636132, 0x32616373, 13, \ - 29, 1, 0x07000000, 0x09, 0x73636133, 0x33616373, 13, \ - 30, 1, 0x08000000, 0x09, 0x73636134, 0x34616373, 13, \ - 31, 1, 0x09000000, 0x09, 0x73636135, 0x35616373, 13, \ - 32, 0, 0x0A000000, 0x09, 0x73636136, 0x36616373, 13, \ - 33, 1, 0x0A000000, 0x09, 0x504d5453, 0x53544d50, 14 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 45 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x0, 0xc000, 0x0, 0xc000, 0x1, 30, \ - 1, 0x0, 0xb001, 0x0, 0xc000, 0x1, 32, \ - 2, 0x0, 0xb002, 0x0, 0xc000, 0x1, 32, \ - 3, 0x0, 0xb003, 0x0, 0xc000, 0x1, 32, \ - 4, 0x0, 0xb004, 0x0, 0xc000, 0x1, 32, \ - 5, 0x0, 0x8002, 0x0, 0xc000, 0x1, 30, \ - 6, 0x0, 0xb021, 0x0, 0x8002, 0x1, 32, \ - 7, 0x0, 0xb022, 0x0, 0x8002, 0x1, 32, \ - 8, 0x0, 0xb023, 0x0, 0x8002, 0x1, 32, \ - 9, 0x0, 0xb024, 0x0, 0x8002, 0x1, 32, \ - 10, 0x0, 0x8003, 0x0, 0x8003, 0x1, 30, \ - 11, 0x0, 0xb031, 0x0, 0x8003, 0x1, 32, \ - 12, 0x0, 0xb032, 0x0, 0x8003, 0x1, 32, \ - 13, 0x0, 0xb033, 0x0, 0x8003, 0x1, 32, \ - 14, 0x0, 0xb034, 0x0, 0x8003, 0x1, 32, \ - 15, 0x0, 0x8004, 0x0, 0x8004, 0x1, 30, \ - 16, 0x0, 0xb041, 0x0, 0x8004, 0x1, 32, \ - 17, 0x0, 0xb042, 0x0, 0x8004, 0x1, 32, \ - 18, 0x0, 0xb043, 0x0, 0x8004, 0x1, 32, \ - 19, 0x0, 0xb044, 0x0, 0x8004, 0x1, 32, \ - 20, 0x0, 0x8005, 0x0, 0x8005, 0x1, 30, \ - 21, 0x0, 0xb051, 0x0, 0x8005, 0x1, 32, \ - 22, 0x0, 0xb052, 0x0, 0x8005, 0x1, 32, \ - 23, 0x0, 0xb053, 0x0, 0x8005, 0x1, 32, \ - 24, 0x0, 0xb054, 0x0, 0x8005, 0x1, 32, \ - 25, 0x0, 0x0f11, 0x0, 0xc000, 0x1, 31, \ - 26, 0x0, 0x0f12, 0x0, 0xc000, 0x1, 31, \ - 27, 0x0, 0x0f13, 0x0, 0xc000, 0x1, 31, \ - 28, 0x0, 0x0f14, 0x0, 0xc000, 0x1, 31, \ - 29, 0x0, 0x0f21, 0x0, 0x8002, 0x1, 31, \ - 30, 0x0, 0x0f22, 0x0, 0x8002, 0x1, 31, \ - 31, 0x0, 0x0f23, 0x0, 0x8002, 0x1, 31, \ - 32, 0x0, 0x0f24, 0x0, 0x8002, 0x1, 31, \ - 33, 0x0, 0x0f41, 0x0, 0x8003, 0x1, 31, \ - 34, 0x0, 0x0f42, 0x0, 0x8003, 0x1, 31, \ - 35, 0x0, 0x0f43, 0x0, 0x8003, 0x1, 31, \ - 36, 0x0, 0x0f44, 0x0, 0x8003, 0x1, 31, \ - 37, 0x0, 0x0f51, 0x0, 0x8004, 0x1, 31, \ - 38, 0x0, 0x0f52, 0x0, 0x8004, 0x1, 31, \ - 39, 0x0, 0x0f53, 0x0, 0x8004, 0x1, 31, \ - 40, 0x0, 0x0f54, 0x0, 0x8004, 0x1, 31, \ - 41, 0x0, 0x0f61, 0x0, 0x8005, 0x1, 31, \ - 42, 0x0, 0x0f62, 0x0, 0x8005, 0x1, 31, \ - 43, 0x0, 0x0f63, 0x0, 0x8005, 0x1, 31, \ - 44, 0x0, 0x0f64, 0x0, 0x8005, 0x1, 31 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x1, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x1, 0x0, \ - 7, 0x1, 0x0, \ - 8, 0x0, 0x0, \ - 9, 0x1, 0x0, \ - 10, 0x2, 0x0, \ - 11, 0x3, 0x0, \ - 12, 0x4, 0x0, \ - 13, 0x5, 0x0, \ - 14, 0x6, 0x0, \ - 15, 0x7, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 1 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 2 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 1 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 34 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// triglogscal= 14, // VULOM TRIGLOG board used as additional scaler board +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 1, 0x03000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ + 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ + 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ + 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ + 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ + 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ + 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ + 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ + 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ + 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ + 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ + 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ + 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ + 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ + 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ + 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ + 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ + 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ + 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ + 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ + 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ + 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ + 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ + 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ + 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ + 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ + 27, 1, 0x05000000, 0x09, 0x73636131, 0x31616373, 13, \ + 28, 1, 0x06000000, 0x09, 0x73636132, 0x32616373, 13, \ + 29, 1, 0x07000000, 0x09, 0x73636133, 0x33616373, 13, \ + 30, 1, 0x08000000, 0x09, 0x73636134, 0x34616373, 13, \ + 31, 1, 0x09000000, 0x09, 0x73636135, 0x35616373, 13, \ + 32, 0, 0x0A000000, 0x09, 0x73636136, 0x36616373, 13, \ + 33, 1, 0x0A000000, 0x09, 0x504d5453, 0x53544d50, 14 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 45 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x0, 0xc000, 0x0, 0xc000, 0x1, 30, \ + 1, 0x0, 0xb001, 0x0, 0xc000, 0x1, 32, \ + 2, 0x0, 0xb002, 0x0, 0xc000, 0x1, 32, \ + 3, 0x0, 0xb003, 0x0, 0xc000, 0x1, 32, \ + 4, 0x0, 0xb004, 0x0, 0xc000, 0x1, 32, \ + 5, 0x0, 0x8002, 0x0, 0xc000, 0x1, 30, \ + 6, 0x0, 0xb021, 0x0, 0x8002, 0x1, 32, \ + 7, 0x0, 0xb022, 0x0, 0x8002, 0x1, 32, \ + 8, 0x0, 0xb023, 0x0, 0x8002, 0x1, 32, \ + 9, 0x0, 0xb024, 0x0, 0x8002, 0x1, 32, \ + 10, 0x0, 0x8003, 0x0, 0x8003, 0x1, 30, \ + 11, 0x0, 0xb031, 0x0, 0x8003, 0x1, 32, \ + 12, 0x0, 0xb032, 0x0, 0x8003, 0x1, 32, \ + 13, 0x0, 0xb033, 0x0, 0x8003, 0x1, 32, \ + 14, 0x0, 0xb034, 0x0, 0x8003, 0x1, 32, \ + 15, 0x0, 0x8004, 0x0, 0x8004, 0x1, 30, \ + 16, 0x0, 0xb041, 0x0, 0x8004, 0x1, 32, \ + 17, 0x0, 0xb042, 0x0, 0x8004, 0x1, 32, \ + 18, 0x0, 0xb043, 0x0, 0x8004, 0x1, 32, \ + 19, 0x0, 0xb044, 0x0, 0x8004, 0x1, 32, \ + 20, 0x0, 0x8005, 0x0, 0x8005, 0x1, 30, \ + 21, 0x0, 0xb051, 0x0, 0x8005, 0x1, 32, \ + 22, 0x0, 0xb052, 0x0, 0x8005, 0x1, 32, \ + 23, 0x0, 0xb053, 0x0, 0x8005, 0x1, 32, \ + 24, 0x0, 0xb054, 0x0, 0x8005, 0x1, 32, \ + 25, 0x0, 0x0f11, 0x0, 0xc000, 0x1, 31, \ + 26, 0x0, 0x0f12, 0x0, 0xc000, 0x1, 31, \ + 27, 0x0, 0x0f13, 0x0, 0xc000, 0x1, 31, \ + 28, 0x0, 0x0f14, 0x0, 0xc000, 0x1, 31, \ + 29, 0x0, 0x0f21, 0x0, 0x8002, 0x1, 31, \ + 30, 0x0, 0x0f22, 0x0, 0x8002, 0x1, 31, \ + 31, 0x0, 0x0f23, 0x0, 0x8002, 0x1, 31, \ + 32, 0x0, 0x0f24, 0x0, 0x8002, 0x1, 31, \ + 33, 0x0, 0x0f41, 0x0, 0x8003, 0x1, 31, \ + 34, 0x0, 0x0f42, 0x0, 0x8003, 0x1, 31, \ + 35, 0x0, 0x0f43, 0x0, 0x8003, 0x1, 31, \ + 36, 0x0, 0x0f44, 0x0, 0x8003, 0x1, 31, \ + 37, 0x0, 0x0f51, 0x0, 0x8004, 0x1, 31, \ + 38, 0x0, 0x0f52, 0x0, 0x8004, 0x1, 31, \ + 39, 0x0, 0x0f53, 0x0, 0x8004, 0x1, 31, \ + 40, 0x0, 0x0f54, 0x0, 0x8004, 0x1, 31, \ + 41, 0x0, 0x0f61, 0x0, 0x8005, 0x1, 31, \ + 42, 0x0, 0x0f62, 0x0, 0x8005, 0x1, 31, \ + 43, 0x0, 0x0f63, 0x0, 0x8005, 0x1, 31, \ + 44, 0x0, 0x0f64, 0x0, 0x8005, 0x1, 31 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x1, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x1, 0x0, \ + 7, 0x1, 0x0, \ + 8, 0x0, 0x0, \ + 9, 0x1, 0x0, \ + 10, 0x2, 0x0, \ + 11, 0x3, 0x0, \ + 12, 0x4, 0x0, \ + 13, 0x5, 0x0, \ + 14, 0x6, 0x0, \ + 15, 0x7, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 1 +########################### diff --git a/macro/tof/beamtime/lab16/parUnpCernNov2015.txt b/macro/tof/beamtime/lab16/parUnpCernNov2015.txt index ab9edd5d4d..7415908970 100644 --- a/macro/tof/beamtime/lab16/parUnpCernNov2015.txt +++ b/macro/tof/beamtime/lab16/parUnpCernNov2015.txt @@ -1,217 +1,217 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 2 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 0 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 31 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ - 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ - 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ - 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ - 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ - 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ - 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ - 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ - 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ - 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ - 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ - 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ - 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ - 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ - 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ - 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ - 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ - 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ - 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ - 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ - 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ - 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ - 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ - 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ - 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ - 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ - 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ - 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ - 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ - 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 63 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ - 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ - 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ - 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ - 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ - 5, 0x1, 0x8001, 0x0, 0x8001, 0x0, 30, \ - 6, 0x1, 0xb011, 0x0, 0x8001, 0x1, 32, \ - 7, 0x1, 0xb012, 0x0, 0x8001, 0x1, 32, \ - 8, 0x1, 0xb013, 0x0, 0x8001, 0x1, 32, \ - 9, 0x1, 0xb014, 0x0, 0x8001, 0x1, 32, \ - 10, 0x1, 0x8002, 0x0, 0x8002, 0x0, 30, \ - 11, 0x1, 0xb021, 0x0, 0x8002, 0x1, 32, \ - 12, 0x1, 0xb022, 0x0, 0x8002, 0x1, 32, \ - 13, 0x1, 0xb023, 0x0, 0x8002, 0x1, 32, \ - 14, 0x1, 0xb024, 0x0, 0x8002, 0x1, 32, \ - 15, 0x1, 0x8003, 0x0, 0x8003, 0x0, 30, \ - 16, 0x1, 0xb031, 0x0, 0x8003, 0x1, 32, \ - 17, 0x1, 0xb032, 0x0, 0x8003, 0x1, 32, \ - 18, 0x1, 0xb033, 0x0, 0x8003, 0x1, 32, \ - 19, 0x1, 0xb034, 0x0, 0x8003, 0x1, 32, \ - 20, 0x1, 0x8004, 0x0, 0x8004, 0x0, 30, \ - 21, 0x1, 0xb041, 0x0, 0x8004, 0x1, 32, \ - 22, 0x1, 0xb042, 0x0, 0x8004, 0x1, 32, \ - 23, 0x1, 0xb043, 0x0, 0x8004, 0x1, 32, \ - 24, 0x1, 0xb044, 0x0, 0x8004, 0x1, 32, \ - 25, 0x1, 0x0129, 0x0, 0x8002, 0x1, 31, \ - 26, 0x1, 0x0130, 0x0, 0x8002, 0x1, 31, \ - 27, 0x1, 0x0139, 0x0, 0xc000, 0x1, 31, \ - 28, 0x1, 0x0140, 0x0, 0xc000, 0x1, 31, \ - 29, 0x1, 0x0217, 0x0, 0x8004, 0x1, 31, \ - 30, 0x1, 0x0318, 0x0, 0x8004, 0x1, 31, \ - 31, 0x1, 0x0319, 0x0, 0x8004, 0x1, 31, \ - 32, 0x1, 0x0420, 0x0, 0x8004, 0x1, 31, \ - 33, 0x1, 0x0541, 0x0, 0xc000, 0x1, 31, \ - 34, 0x1, 0x0542, 0x0, 0x8003, 0x1, 31, \ - 35, 0x1, 0x0543, 0x0, 0x8003, 0x1, 31, \ - 36, 0x1, 0x0544, 0x0, 0x8003, 0x1, 31, \ - 37, 0x1, 0x0621, 0x0, 0x8001, 0x1, 31, \ - 38, 0x1, 0x0622, 0x0, 0x8001, 0x1, 31, \ - 39, 0x1, 0x0623, 0x0, 0x8001, 0x1, 31, \ - 40, 0x1, 0x0624, 0x0, 0x8001, 0x1, 31, \ - 41, 0x1, 0x0731, 0x0, 0xc000, 0x1, 31, \ - 42, 0x1, 0x0732, 0x0, 0xc000, 0x1, 31, \ - 43, 0x1, 0x0733, 0x0, 0xc000, 0x1, 31, \ - 44, 0x1, 0x0734, 0x0, 0xc000, 0x1, 31, \ - 45, 0x1, 0x0735, 0x0, 0xc000, 0x1, 31, \ - 46, 0x1, 0x0736, 0x0, 0xc000, 0x1, 31, \ - 47, 0x1, 0x0737, 0x0, 0xc000, 0x1, 31, \ - 48, 0x1, 0x0738, 0x0, 0xc000, 0x1, 31, \ - 49, 0x1, 0x0826, 0x0, 0x8001, 0x1, 31, \ - 50, 0x1, 0x0828, 0x0, 0x8001, 0x1, 31, \ - 51, 0x1, 0x0901, 0x0, 0x8002, 0x1, 31, \ - 52, 0x1, 0x0902, 0x0, 0x8002, 0x1, 31, \ - 53, 0x1, 0x0903, 0x0, 0x8002, 0x1, 31, \ - 54, 0x1, 0x0904, 0x0, 0x8002, 0x1, 31, \ - 55, 0x1, 0x0905, 0x0, 0x8003, 0x1, 31, \ - 56, 0x1, 0x0906, 0x0, 0x8003, 0x1, 31, \ - 57, 0x1, 0x0907, 0x0, 0x8003, 0x1, 31, \ - 58, 0x1, 0x0908, 0x0, 0x8003, 0x1, 31, \ - 59, 0x1, 0x0909, 0x0, 0x8004, 0x1, 31, \ - 60, 0x1, 0x0910, 0x0, 0x8004, 0x1, 31, \ - 61, 0x1, 0x0911, 0x0, 0x8004, 0x1, 31, \ - 62, 0x1, 0x0912, 0x0, 0x8004, 0x1, 31 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x0, 0x1, \ - 5, 0x1, 0x0, \ - 6, 0x2, 0x0, \ - 7, 0x3, 0x0, \ - 8, 0x4, 0x0, \ - 9, 0x5, 0x0, \ - 10, 0x6, 0x0, \ - 11, 0x7, 0x0, \ - 12, 0x1, 0x0, \ - 13, 0x1, 0x0, \ - 14, 0x1, 0x0, \ - 15, 0x1, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 0 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 2 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 0 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 31 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ + 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ + 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ + 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ + 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ + 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ + 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ + 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ + 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ + 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ + 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ + 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ + 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ + 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ + 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ + 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ + 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ + 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ + 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ + 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ + 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ + 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ + 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ + 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ + 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ + 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ + 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ + 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ + 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ + 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 63 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ + 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ + 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ + 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ + 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ + 5, 0x1, 0x8001, 0x0, 0x8001, 0x0, 30, \ + 6, 0x1, 0xb011, 0x0, 0x8001, 0x1, 32, \ + 7, 0x1, 0xb012, 0x0, 0x8001, 0x1, 32, \ + 8, 0x1, 0xb013, 0x0, 0x8001, 0x1, 32, \ + 9, 0x1, 0xb014, 0x0, 0x8001, 0x1, 32, \ + 10, 0x1, 0x8002, 0x0, 0x8002, 0x0, 30, \ + 11, 0x1, 0xb021, 0x0, 0x8002, 0x1, 32, \ + 12, 0x1, 0xb022, 0x0, 0x8002, 0x1, 32, \ + 13, 0x1, 0xb023, 0x0, 0x8002, 0x1, 32, \ + 14, 0x1, 0xb024, 0x0, 0x8002, 0x1, 32, \ + 15, 0x1, 0x8003, 0x0, 0x8003, 0x0, 30, \ + 16, 0x1, 0xb031, 0x0, 0x8003, 0x1, 32, \ + 17, 0x1, 0xb032, 0x0, 0x8003, 0x1, 32, \ + 18, 0x1, 0xb033, 0x0, 0x8003, 0x1, 32, \ + 19, 0x1, 0xb034, 0x0, 0x8003, 0x1, 32, \ + 20, 0x1, 0x8004, 0x0, 0x8004, 0x0, 30, \ + 21, 0x1, 0xb041, 0x0, 0x8004, 0x1, 32, \ + 22, 0x1, 0xb042, 0x0, 0x8004, 0x1, 32, \ + 23, 0x1, 0xb043, 0x0, 0x8004, 0x1, 32, \ + 24, 0x1, 0xb044, 0x0, 0x8004, 0x1, 32, \ + 25, 0x1, 0x0129, 0x0, 0x8002, 0x1, 31, \ + 26, 0x1, 0x0130, 0x0, 0x8002, 0x1, 31, \ + 27, 0x1, 0x0139, 0x0, 0xc000, 0x1, 31, \ + 28, 0x1, 0x0140, 0x0, 0xc000, 0x1, 31, \ + 29, 0x1, 0x0217, 0x0, 0x8004, 0x1, 31, \ + 30, 0x1, 0x0318, 0x0, 0x8004, 0x1, 31, \ + 31, 0x1, 0x0319, 0x0, 0x8004, 0x1, 31, \ + 32, 0x1, 0x0420, 0x0, 0x8004, 0x1, 31, \ + 33, 0x1, 0x0541, 0x0, 0xc000, 0x1, 31, \ + 34, 0x1, 0x0542, 0x0, 0x8003, 0x1, 31, \ + 35, 0x1, 0x0543, 0x0, 0x8003, 0x1, 31, \ + 36, 0x1, 0x0544, 0x0, 0x8003, 0x1, 31, \ + 37, 0x1, 0x0621, 0x0, 0x8001, 0x1, 31, \ + 38, 0x1, 0x0622, 0x0, 0x8001, 0x1, 31, \ + 39, 0x1, 0x0623, 0x0, 0x8001, 0x1, 31, \ + 40, 0x1, 0x0624, 0x0, 0x8001, 0x1, 31, \ + 41, 0x1, 0x0731, 0x0, 0xc000, 0x1, 31, \ + 42, 0x1, 0x0732, 0x0, 0xc000, 0x1, 31, \ + 43, 0x1, 0x0733, 0x0, 0xc000, 0x1, 31, \ + 44, 0x1, 0x0734, 0x0, 0xc000, 0x1, 31, \ + 45, 0x1, 0x0735, 0x0, 0xc000, 0x1, 31, \ + 46, 0x1, 0x0736, 0x0, 0xc000, 0x1, 31, \ + 47, 0x1, 0x0737, 0x0, 0xc000, 0x1, 31, \ + 48, 0x1, 0x0738, 0x0, 0xc000, 0x1, 31, \ + 49, 0x1, 0x0826, 0x0, 0x8001, 0x1, 31, \ + 50, 0x1, 0x0828, 0x0, 0x8001, 0x1, 31, \ + 51, 0x1, 0x0901, 0x0, 0x8002, 0x1, 31, \ + 52, 0x1, 0x0902, 0x0, 0x8002, 0x1, 31, \ + 53, 0x1, 0x0903, 0x0, 0x8002, 0x1, 31, \ + 54, 0x1, 0x0904, 0x0, 0x8002, 0x1, 31, \ + 55, 0x1, 0x0905, 0x0, 0x8003, 0x1, 31, \ + 56, 0x1, 0x0906, 0x0, 0x8003, 0x1, 31, \ + 57, 0x1, 0x0907, 0x0, 0x8003, 0x1, 31, \ + 58, 0x1, 0x0908, 0x0, 0x8003, 0x1, 31, \ + 59, 0x1, 0x0909, 0x0, 0x8004, 0x1, 31, \ + 60, 0x1, 0x0910, 0x0, 0x8004, 0x1, 31, \ + 61, 0x1, 0x0911, 0x0, 0x8004, 0x1, 31, \ + 62, 0x1, 0x0912, 0x0, 0x8004, 0x1, 31 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x0, 0x1, \ + 5, 0x1, 0x0, \ + 6, 0x2, 0x0, \ + 7, 0x3, 0x0, \ + 8, 0x4, 0x0, \ + 9, 0x5, 0x0, \ + 10, 0x6, 0x0, \ + 11, 0x7, 0x0, \ + 12, 0x1, 0x0, \ + 13, 0x1, 0x0, \ + 14, 0x1, 0x0, \ + 15, 0x1, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 0 +########################### diff --git a/macro/tof/beamtime/lab16/parUnpack_basic.txt b/macro/tof/beamtime/lab16/parUnpack_basic.txt index 5f1409909c..385783a240 100644 --- a/macro/tof/beamtime/lab16/parUnpack_basic.txt +++ b/macro/tof/beamtime/lab16/parUnpack_basic.txt @@ -1,177 +1,177 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 1 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 1 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 31 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ - 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ - 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ - 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ - 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ - 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ - 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ - 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ - 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ - 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ - 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ - 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ - 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ - 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ - 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ - 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ - 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ - 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ - 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ - 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ - 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ - 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ - 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ - 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ - 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ - 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ - 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ - 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ - 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ - 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 24 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ - 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ - 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ - 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ - 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ - 5, 0x1, 0x0318, 0x0, 0xc000, 0x1, 31, \ - 6, 0x1, 0x0319, 0x0, 0xc000, 0x1, 31, \ - 7, 0x1, 0x0217, 0x0, 0xc000, 0x1, 31, \ - 8, 0x1, 0x0901, 0x0, 0xc000, 0x1, 31, \ - 9, 0x1, 0x0902, 0x0, 0xc000, 0x1, 31, \ - 10, 0x1, 0x0903, 0x0, 0xc000, 0x1, 31, \ - 11, 0x1, 0x0904, 0x0, 0xc000, 0x1, 31, \ - 12, 0x1, 0x0905, 0x0, 0xc000, 0x1, 31, \ - 13, 0x1, 0x0906, 0x0, 0xc000, 0x1, 31, \ - 14, 0x1, 0x0907, 0x0, 0xc000, 0x1, 31, \ - 15, 0x1, 0x0908, 0x0, 0xc000, 0x1, 31, \ - 16, 0x1, 0x0909, 0x0, 0xc000, 0x1, 31, \ - 17, 0x1, 0x0910, 0x0, 0xc000, 0x1, 31, \ - 18, 0x1, 0x0911, 0x0, 0xc000, 0x1, 31, \ - 19, 0x1, 0x0912, 0x0, 0xc000, 0x1, 31, \ - 20, 0x1, 0x0731, 0x0, 0xc000, 0x1, 31, \ - 21, 0x1, 0x0732, 0x0, 0xc000, 0x1, 31, \ - 22, 0x1, 0x0733, 0x0, 0xc000, 0x1, 31, \ - 23, 0x1, 0x0734, 0x0, 0xc000, 0x1, 31 -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x1, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x1, 0x0, \ - 7, 0x1, 0x0, \ - 8, 0x1, 0x0, \ - 9, 0x1, 0x0, \ - 10, 0x1, 0x0, \ - 11, 0x1, 0x0, \ - 12, 0x1, 0x0, \ - 13, 0x1, 0x0, \ - 14, 0x1, 0x0, \ - 15, 0x1, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 0 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 1 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 1 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 31 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ + 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ + 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ + 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ + 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ + 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ + 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ + 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ + 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ + 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ + 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ + 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ + 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ + 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ + 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ + 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ + 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ + 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ + 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ + 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ + 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ + 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ + 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ + 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ + 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ + 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ + 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ + 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ + 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ + 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 24 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ + 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ + 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ + 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ + 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ + 5, 0x1, 0x0318, 0x0, 0xc000, 0x1, 31, \ + 6, 0x1, 0x0319, 0x0, 0xc000, 0x1, 31, \ + 7, 0x1, 0x0217, 0x0, 0xc000, 0x1, 31, \ + 8, 0x1, 0x0901, 0x0, 0xc000, 0x1, 31, \ + 9, 0x1, 0x0902, 0x0, 0xc000, 0x1, 31, \ + 10, 0x1, 0x0903, 0x0, 0xc000, 0x1, 31, \ + 11, 0x1, 0x0904, 0x0, 0xc000, 0x1, 31, \ + 12, 0x1, 0x0905, 0x0, 0xc000, 0x1, 31, \ + 13, 0x1, 0x0906, 0x0, 0xc000, 0x1, 31, \ + 14, 0x1, 0x0907, 0x0, 0xc000, 0x1, 31, \ + 15, 0x1, 0x0908, 0x0, 0xc000, 0x1, 31, \ + 16, 0x1, 0x0909, 0x0, 0xc000, 0x1, 31, \ + 17, 0x1, 0x0910, 0x0, 0xc000, 0x1, 31, \ + 18, 0x1, 0x0911, 0x0, 0xc000, 0x1, 31, \ + 19, 0x1, 0x0912, 0x0, 0xc000, 0x1, 31, \ + 20, 0x1, 0x0731, 0x0, 0xc000, 0x1, 31, \ + 21, 0x1, 0x0732, 0x0, 0xc000, 0x1, 31, \ + 22, 0x1, 0x0733, 0x0, 0xc000, 0x1, 31, \ + 23, 0x1, 0x0734, 0x0, 0xc000, 0x1, 31 +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x1, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x1, 0x0, \ + 7, 0x1, 0x0, \ + 8, 0x1, 0x0, \ + 9, 0x1, 0x0, \ + 10, 0x1, 0x0, \ + 11, 0x1, 0x0, \ + 12, 0x1, 0x0, \ + 13, 0x1, 0x0, \ + 14, 0x1, 0x0, \ + 15, 0x1, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 0 +########################### diff --git a/macro/tof/beamtime/lab16/parUnpack_rates.txt b/macro/tof/beamtime/lab16/parUnpack_rates.txt index 5054050b8a..ad0b2f770c 100644 --- a/macro/tof/beamtime/lab16/parUnpack_rates.txt +++ b/macro/tof/beamtime/lab16/parUnpack_rates.txt @@ -1,178 +1,178 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 2 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 1 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 8 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// triglogscal= 14, // VULOM TRIGLOG board used as additional scaler board -// orgen = 15, // VULOM Or Generation board (nov 2015) with more scalers than scaler2014 -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 1, 0x03000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 1, 0x04000000, 0x09, 0x504d5453, 0x53544d50, 14, \ - 2, 1, 0x05000000, 0x09, 0x73636131, 0x31616373, 15, \ - 3, 1, 0x06000000, 0x09, 0x73636132, 0x32616373, 15, \ - 4, 1, 0x07000000, 0x09, 0x73636133, 0x33616373, 15, \ - 5, 1, 0x08000000, 0x09, 0x73636134, 0x34616373, 15, \ - 6, 1, 0x09000000, 0x09, 0x73636135, 0x35616373, 15, \ - 7, 1, 0x0A000000, 0x09, 0x73636136, 0x36616373, 15 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 45 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x0, 0xc000, 0x0, 0xc000, 0x1, 30, \ - 1, 0x0, 0xb001, 0x0, 0xc000, 0x1, 32, \ - 2, 0x0, 0xb002, 0x0, 0xc000, 0x1, 32, \ - 3, 0x0, 0xb003, 0x0, 0xc000, 0x1, 32, \ - 4, 0x0, 0xb004, 0x0, 0xc000, 0x1, 32, \ - 5, 0x0, 0x8002, 0x0, 0xc000, 0x1, 30, \ - 6, 0x0, 0xb021, 0x0, 0x8002, 0x1, 32, \ - 7, 0x0, 0xb022, 0x0, 0x8002, 0x1, 32, \ - 8, 0x0, 0xb023, 0x0, 0x8002, 0x1, 32, \ - 9, 0x0, 0xb024, 0x0, 0x8002, 0x1, 32, \ - 10, 0x0, 0x8003, 0x0, 0x8003, 0x1, 30, \ - 11, 0x0, 0xb031, 0x0, 0x8003, 0x1, 32, \ - 12, 0x0, 0xb032, 0x0, 0x8003, 0x1, 32, \ - 13, 0x0, 0xb033, 0x0, 0x8003, 0x1, 32, \ - 14, 0x0, 0xb034, 0x0, 0x8003, 0x1, 32, \ - 15, 0x0, 0x8004, 0x0, 0x8004, 0x1, 30, \ - 16, 0x0, 0xb041, 0x0, 0x8004, 0x1, 32, \ - 17, 0x0, 0xb042, 0x0, 0x8004, 0x1, 32, \ - 18, 0x0, 0xb043, 0x0, 0x8004, 0x1, 32, \ - 19, 0x0, 0xb044, 0x0, 0x8004, 0x1, 32, \ - 20, 0x0, 0x8005, 0x0, 0x8005, 0x1, 30, \ - 21, 0x0, 0xb051, 0x0, 0x8005, 0x1, 32, \ - 22, 0x0, 0xb052, 0x0, 0x8005, 0x1, 32, \ - 23, 0x0, 0xb053, 0x0, 0x8005, 0x1, 32, \ - 24, 0x0, 0xb054, 0x0, 0x8005, 0x1, 32, \ - 25, 0x0, 0x0f11, 0x0, 0xc000, 0x1, 31, \ - 26, 0x0, 0x0f12, 0x0, 0xc000, 0x1, 31, \ - 27, 0x0, 0x0f13, 0x0, 0xc000, 0x1, 31, \ - 28, 0x0, 0x0f14, 0x0, 0xc000, 0x1, 31, \ - 29, 0x0, 0x0f21, 0x0, 0x8002, 0x1, 31, \ - 30, 0x0, 0x0f22, 0x0, 0x8002, 0x1, 31, \ - 31, 0x0, 0x0f23, 0x0, 0x8002, 0x1, 31, \ - 32, 0x0, 0x0f24, 0x0, 0x8002, 0x1, 31, \ - 33, 0x0, 0x0f41, 0x0, 0x8003, 0x1, 31, \ - 34, 0x0, 0x0f42, 0x0, 0x8003, 0x1, 31, \ - 35, 0x0, 0x0f43, 0x0, 0x8003, 0x1, 31, \ - 36, 0x0, 0x0f44, 0x0, 0x8003, 0x1, 31, \ - 37, 0x0, 0x0f51, 0x0, 0x8004, 0x1, 31, \ - 38, 0x0, 0x0f52, 0x0, 0x8004, 0x1, 31, \ - 39, 0x0, 0x0f53, 0x0, 0x8004, 0x1, 31, \ - 40, 0x0, 0x0f54, 0x0, 0x8004, 0x1, 31, \ - 41, 0x0, 0x0f61, 0x0, 0x8005, 0x1, 31, \ - 42, 0x0, 0x0f62, 0x0, 0x8005, 0x1, 31, \ - 43, 0x0, 0x0f63, 0x0, 0x8005, 0x1, 31, \ - 44, 0x0, 0x0f64, 0x0, 0x8005, 0x1, 31 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x1, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x1, 0x0, \ - 7, 0x1, 0x0, \ - 8, 0x0, 0x0, \ - 9, 0x1, 0x0, \ - 10, 0x2, 0x0, \ - 11, 0x3, 0x0, \ - 12, 0x4, 0x0, \ - 13, 0x5, 0x0, \ - 14, 0x6, 0x0, \ - 15, 0x7, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 1 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 2 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 1 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 8 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// triglogscal= 14, // VULOM TRIGLOG board used as additional scaler board +// orgen = 15, // VULOM Or Generation board (nov 2015) with more scalers than scaler2014 +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 1, 0x03000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 1, 0x04000000, 0x09, 0x504d5453, 0x53544d50, 14, \ + 2, 1, 0x05000000, 0x09, 0x73636131, 0x31616373, 15, \ + 3, 1, 0x06000000, 0x09, 0x73636132, 0x32616373, 15, \ + 4, 1, 0x07000000, 0x09, 0x73636133, 0x33616373, 15, \ + 5, 1, 0x08000000, 0x09, 0x73636134, 0x34616373, 15, \ + 6, 1, 0x09000000, 0x09, 0x73636135, 0x35616373, 15, \ + 7, 1, 0x0A000000, 0x09, 0x73636136, 0x36616373, 15 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 45 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x0, 0xc000, 0x0, 0xc000, 0x1, 30, \ + 1, 0x0, 0xb001, 0x0, 0xc000, 0x1, 32, \ + 2, 0x0, 0xb002, 0x0, 0xc000, 0x1, 32, \ + 3, 0x0, 0xb003, 0x0, 0xc000, 0x1, 32, \ + 4, 0x0, 0xb004, 0x0, 0xc000, 0x1, 32, \ + 5, 0x0, 0x8002, 0x0, 0xc000, 0x1, 30, \ + 6, 0x0, 0xb021, 0x0, 0x8002, 0x1, 32, \ + 7, 0x0, 0xb022, 0x0, 0x8002, 0x1, 32, \ + 8, 0x0, 0xb023, 0x0, 0x8002, 0x1, 32, \ + 9, 0x0, 0xb024, 0x0, 0x8002, 0x1, 32, \ + 10, 0x0, 0x8003, 0x0, 0x8003, 0x1, 30, \ + 11, 0x0, 0xb031, 0x0, 0x8003, 0x1, 32, \ + 12, 0x0, 0xb032, 0x0, 0x8003, 0x1, 32, \ + 13, 0x0, 0xb033, 0x0, 0x8003, 0x1, 32, \ + 14, 0x0, 0xb034, 0x0, 0x8003, 0x1, 32, \ + 15, 0x0, 0x8004, 0x0, 0x8004, 0x1, 30, \ + 16, 0x0, 0xb041, 0x0, 0x8004, 0x1, 32, \ + 17, 0x0, 0xb042, 0x0, 0x8004, 0x1, 32, \ + 18, 0x0, 0xb043, 0x0, 0x8004, 0x1, 32, \ + 19, 0x0, 0xb044, 0x0, 0x8004, 0x1, 32, \ + 20, 0x0, 0x8005, 0x0, 0x8005, 0x1, 30, \ + 21, 0x0, 0xb051, 0x0, 0x8005, 0x1, 32, \ + 22, 0x0, 0xb052, 0x0, 0x8005, 0x1, 32, \ + 23, 0x0, 0xb053, 0x0, 0x8005, 0x1, 32, \ + 24, 0x0, 0xb054, 0x0, 0x8005, 0x1, 32, \ + 25, 0x0, 0x0f11, 0x0, 0xc000, 0x1, 31, \ + 26, 0x0, 0x0f12, 0x0, 0xc000, 0x1, 31, \ + 27, 0x0, 0x0f13, 0x0, 0xc000, 0x1, 31, \ + 28, 0x0, 0x0f14, 0x0, 0xc000, 0x1, 31, \ + 29, 0x0, 0x0f21, 0x0, 0x8002, 0x1, 31, \ + 30, 0x0, 0x0f22, 0x0, 0x8002, 0x1, 31, \ + 31, 0x0, 0x0f23, 0x0, 0x8002, 0x1, 31, \ + 32, 0x0, 0x0f24, 0x0, 0x8002, 0x1, 31, \ + 33, 0x0, 0x0f41, 0x0, 0x8003, 0x1, 31, \ + 34, 0x0, 0x0f42, 0x0, 0x8003, 0x1, 31, \ + 35, 0x0, 0x0f43, 0x0, 0x8003, 0x1, 31, \ + 36, 0x0, 0x0f44, 0x0, 0x8003, 0x1, 31, \ + 37, 0x0, 0x0f51, 0x0, 0x8004, 0x1, 31, \ + 38, 0x0, 0x0f52, 0x0, 0x8004, 0x1, 31, \ + 39, 0x0, 0x0f53, 0x0, 0x8004, 0x1, 31, \ + 40, 0x0, 0x0f54, 0x0, 0x8004, 0x1, 31, \ + 41, 0x0, 0x0f61, 0x0, 0x8005, 0x1, 31, \ + 42, 0x0, 0x0f62, 0x0, 0x8005, 0x1, 31, \ + 43, 0x0, 0x0f63, 0x0, 0x8005, 0x1, 31, \ + 44, 0x0, 0x0f64, 0x0, 0x8005, 0x1, 31 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x1, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x1, 0x0, \ + 7, 0x1, 0x0, \ + 8, 0x0, 0x0, \ + 9, 0x1, 0x0, \ + 10, 0x2, 0x0, \ + 11, 0x3, 0x0, \ + 12, 0x4, 0x0, \ + 13, 0x5, 0x0, \ + 14, 0x6, 0x0, \ + 15, 0x7, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 1 +########################### diff --git a/macro/tof/beamtime/nov15/parUnpCernNov2015.txt b/macro/tof/beamtime/nov15/parUnpCernNov2015.txt index 2e9b2bf05d..9d8d58ff8a 100644 --- a/macro/tof/beamtime/nov15/parUnpCernNov2015.txt +++ b/macro/tof/beamtime/nov15/parUnpCernNov2015.txt @@ -1,217 +1,217 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 2 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 0 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 31 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ - 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ - 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ - 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ - 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ - 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ - 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ - 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ - 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ - 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ - 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ - 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ - 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ - 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ - 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ - 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ - 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ - 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ - 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ - 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ - 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ - 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ - 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ - 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ - 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ - 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ - 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ - 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ - 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ - 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 63 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ - 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ - 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ - 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ - 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ - 5, 0x1, 0x8001, 0x0, 0x8001, 0x0, 30, \ - 6, 0x1, 0xb011, 0x0, 0x8001, 0x1, 32, \ - 7, 0x1, 0xb012, 0x0, 0x8001, 0x1, 32, \ - 8, 0x1, 0xb013, 0x0, 0x8001, 0x1, 32, \ - 9, 0x1, 0xb014, 0x0, 0x8001, 0x1, 32, \ - 10, 0x1, 0x8002, 0x0, 0x8002, 0x0, 30, \ - 11, 0x1, 0xb021, 0x0, 0x8002, 0x1, 32, \ - 12, 0x1, 0xb022, 0x0, 0x8002, 0x1, 32, \ - 13, 0x1, 0xb023, 0x0, 0x8002, 0x1, 32, \ - 14, 0x1, 0xb024, 0x0, 0x8002, 0x1, 32, \ - 15, 0x1, 0x8003, 0x0, 0x8003, 0x0, 30, \ - 16, 0x1, 0xb031, 0x0, 0x8003, 0x1, 32, \ - 17, 0x1, 0xb032, 0x0, 0x8003, 0x1, 32, \ - 18, 0x1, 0xb033, 0x0, 0x8003, 0x1, 32, \ - 19, 0x1, 0xb034, 0x0, 0x8003, 0x1, 32, \ - 20, 0x1, 0x8004, 0x0, 0x8004, 0x0, 30, \ - 21, 0x1, 0xb041, 0x0, 0x8004, 0x1, 32, \ - 22, 0x1, 0xb042, 0x0, 0x8004, 0x1, 32, \ - 23, 0x1, 0xb043, 0x0, 0x8004, 0x1, 32, \ - 24, 0x1, 0xb044, 0x0, 0x8004, 0x1, 32, \ - 25, 0x1, 0x0129, 0x0, 0x8002, 0x1, 31, \ - 26, 0x1, 0x0130, 0x0, 0x8002, 0x1, 31, \ - 27, 0x1, 0x0139, 0x0, 0xc000, 0x1, 31, \ - 28, 0x1, 0x0140, 0x0, 0xc000, 0x1, 31, \ - 29, 0x1, 0x0217, 0x0, 0x8004, 0x1, 31, \ - 30, 0x1, 0x0318, 0x0, 0x8004, 0x1, 31, \ - 31, 0x1, 0x0319, 0x0, 0x8004, 0x1, 31, \ - 32, 0x1, 0x0420, 0x0, 0x8004, 0x1, 31, \ - 33, 0x1, 0x0541, 0x0, 0xc000, 0x1, 31, \ - 34, 0x1, 0x0542, 0x0, 0x8003, 0x1, 31, \ - 35, 0x1, 0x0543, 0x0, 0x8003, 0x1, 31, \ - 36, 0x1, 0x0544, 0x0, 0x8003, 0x1, 31, \ - 37, 0x1, 0x0621, 0x0, 0x8001, 0x1, 31, \ - 38, 0x1, 0x0622, 0x0, 0x8001, 0x1, 31, \ - 39, 0x1, 0x0623, 0x0, 0x8001, 0x1, 31, \ - 40, 0x1, 0x0624, 0x0, 0x8001, 0x1, 31, \ - 41, 0x1, 0x0731, 0x0, 0xc000, 0x1, 31, \ - 42, 0x1, 0x0732, 0x0, 0xc000, 0x1, 31, \ - 43, 0x1, 0x0733, 0x0, 0xc000, 0x1, 31, \ - 44, 0x1, 0x0734, 0x0, 0xc000, 0x1, 31, \ - 45, 0x1, 0x0735, 0x0, 0xc000, 0x1, 31, \ - 46, 0x1, 0x0736, 0x0, 0xc000, 0x1, 31, \ - 47, 0x1, 0x0737, 0x0, 0xc000, 0x1, 31, \ - 48, 0x1, 0x0738, 0x0, 0xc000, 0x1, 31, \ - 49, 0x1, 0x0826, 0x0, 0x8001, 0x1, 31, \ - 50, 0x1, 0x0828, 0x0, 0x8001, 0x1, 31, \ - 51, 0x1, 0x0901, 0x0, 0x8002, 0x1, 31, \ - 52, 0x1, 0x0902, 0x0, 0x8002, 0x1, 31, \ - 53, 0x1, 0x0903, 0x0, 0x8002, 0x1, 31, \ - 54, 0x1, 0x0904, 0x0, 0x8002, 0x1, 31, \ - 55, 0x1, 0x0905, 0x0, 0x8003, 0x1, 31, \ - 56, 0x1, 0x0906, 0x0, 0x8003, 0x1, 31, \ - 57, 0x1, 0x0907, 0x0, 0x8003, 0x1, 31, \ - 58, 0x1, 0x0908, 0x0, 0x8003, 0x1, 31, \ - 59, 0x1, 0x0909, 0x0, 0x8004, 0x1, 31, \ - 60, 0x1, 0x0910, 0x0, 0x8004, 0x1, 31, \ - 61, 0x1, 0x0911, 0x0, 0x8004, 0x1, 31, \ - 62, 0x1, 0x0912, 0x0, 0x8004, 0x1, 31 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x0, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x2, 0x0, \ - 7, 0x3, 0x0, \ - 8, 0x4, 0x0, \ - 9, 0x5, 0x0, \ - 10, 0x6, 0x0, \ - 11, 0x7, 0x0, \ - 12, 0x1, 0x0, \ - 13, 0x1, 0x0, \ - 14, 0x1, 0x0, \ - 15, 0x1, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 0 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 2 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 0 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 31 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ + 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ + 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ + 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ + 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ + 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ + 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ + 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ + 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ + 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ + 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ + 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ + 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ + 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ + 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ + 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ + 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ + 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ + 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ + 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ + 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ + 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ + 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ + 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ + 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ + 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ + 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ + 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ + 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ + 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 63 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ + 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ + 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ + 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ + 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ + 5, 0x1, 0x8001, 0x0, 0x8001, 0x0, 30, \ + 6, 0x1, 0xb011, 0x0, 0x8001, 0x1, 32, \ + 7, 0x1, 0xb012, 0x0, 0x8001, 0x1, 32, \ + 8, 0x1, 0xb013, 0x0, 0x8001, 0x1, 32, \ + 9, 0x1, 0xb014, 0x0, 0x8001, 0x1, 32, \ + 10, 0x1, 0x8002, 0x0, 0x8002, 0x0, 30, \ + 11, 0x1, 0xb021, 0x0, 0x8002, 0x1, 32, \ + 12, 0x1, 0xb022, 0x0, 0x8002, 0x1, 32, \ + 13, 0x1, 0xb023, 0x0, 0x8002, 0x1, 32, \ + 14, 0x1, 0xb024, 0x0, 0x8002, 0x1, 32, \ + 15, 0x1, 0x8003, 0x0, 0x8003, 0x0, 30, \ + 16, 0x1, 0xb031, 0x0, 0x8003, 0x1, 32, \ + 17, 0x1, 0xb032, 0x0, 0x8003, 0x1, 32, \ + 18, 0x1, 0xb033, 0x0, 0x8003, 0x1, 32, \ + 19, 0x1, 0xb034, 0x0, 0x8003, 0x1, 32, \ + 20, 0x1, 0x8004, 0x0, 0x8004, 0x0, 30, \ + 21, 0x1, 0xb041, 0x0, 0x8004, 0x1, 32, \ + 22, 0x1, 0xb042, 0x0, 0x8004, 0x1, 32, \ + 23, 0x1, 0xb043, 0x0, 0x8004, 0x1, 32, \ + 24, 0x1, 0xb044, 0x0, 0x8004, 0x1, 32, \ + 25, 0x1, 0x0129, 0x0, 0x8002, 0x1, 31, \ + 26, 0x1, 0x0130, 0x0, 0x8002, 0x1, 31, \ + 27, 0x1, 0x0139, 0x0, 0xc000, 0x1, 31, \ + 28, 0x1, 0x0140, 0x0, 0xc000, 0x1, 31, \ + 29, 0x1, 0x0217, 0x0, 0x8004, 0x1, 31, \ + 30, 0x1, 0x0318, 0x0, 0x8004, 0x1, 31, \ + 31, 0x1, 0x0319, 0x0, 0x8004, 0x1, 31, \ + 32, 0x1, 0x0420, 0x0, 0x8004, 0x1, 31, \ + 33, 0x1, 0x0541, 0x0, 0xc000, 0x1, 31, \ + 34, 0x1, 0x0542, 0x0, 0x8003, 0x1, 31, \ + 35, 0x1, 0x0543, 0x0, 0x8003, 0x1, 31, \ + 36, 0x1, 0x0544, 0x0, 0x8003, 0x1, 31, \ + 37, 0x1, 0x0621, 0x0, 0x8001, 0x1, 31, \ + 38, 0x1, 0x0622, 0x0, 0x8001, 0x1, 31, \ + 39, 0x1, 0x0623, 0x0, 0x8001, 0x1, 31, \ + 40, 0x1, 0x0624, 0x0, 0x8001, 0x1, 31, \ + 41, 0x1, 0x0731, 0x0, 0xc000, 0x1, 31, \ + 42, 0x1, 0x0732, 0x0, 0xc000, 0x1, 31, \ + 43, 0x1, 0x0733, 0x0, 0xc000, 0x1, 31, \ + 44, 0x1, 0x0734, 0x0, 0xc000, 0x1, 31, \ + 45, 0x1, 0x0735, 0x0, 0xc000, 0x1, 31, \ + 46, 0x1, 0x0736, 0x0, 0xc000, 0x1, 31, \ + 47, 0x1, 0x0737, 0x0, 0xc000, 0x1, 31, \ + 48, 0x1, 0x0738, 0x0, 0xc000, 0x1, 31, \ + 49, 0x1, 0x0826, 0x0, 0x8001, 0x1, 31, \ + 50, 0x1, 0x0828, 0x0, 0x8001, 0x1, 31, \ + 51, 0x1, 0x0901, 0x0, 0x8002, 0x1, 31, \ + 52, 0x1, 0x0902, 0x0, 0x8002, 0x1, 31, \ + 53, 0x1, 0x0903, 0x0, 0x8002, 0x1, 31, \ + 54, 0x1, 0x0904, 0x0, 0x8002, 0x1, 31, \ + 55, 0x1, 0x0905, 0x0, 0x8003, 0x1, 31, \ + 56, 0x1, 0x0906, 0x0, 0x8003, 0x1, 31, \ + 57, 0x1, 0x0907, 0x0, 0x8003, 0x1, 31, \ + 58, 0x1, 0x0908, 0x0, 0x8003, 0x1, 31, \ + 59, 0x1, 0x0909, 0x0, 0x8004, 0x1, 31, \ + 60, 0x1, 0x0910, 0x0, 0x8004, 0x1, 31, \ + 61, 0x1, 0x0911, 0x0, 0x8004, 0x1, 31, \ + 62, 0x1, 0x0912, 0x0, 0x8004, 0x1, 31 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x0, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x2, 0x0, \ + 7, 0x3, 0x0, \ + 8, 0x4, 0x0, \ + 9, 0x5, 0x0, \ + 10, 0x6, 0x0, \ + 11, 0x7, 0x0, \ + 12, 0x1, 0x0, \ + 13, 0x1, 0x0, \ + 14, 0x1, 0x0, \ + 15, 0x1, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 0 +########################### diff --git a/macro/tof/beamtime/nov15/parUnpack_basic.txt b/macro/tof/beamtime/nov15/parUnpack_basic.txt index 4268461eac..fdcf231256 100644 --- a/macro/tof/beamtime/nov15/parUnpack_basic.txt +++ b/macro/tof/beamtime/nov15/parUnpack_basic.txt @@ -1,172 +1,172 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 2 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 1 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 31 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ - 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ - 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ - 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ - 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ - 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ - 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ - 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ - 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ - 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ - 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ - 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ - 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ - 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ - 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ - 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ - 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ - 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ - 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ - 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ - 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ - 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ - 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ - 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ - 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ - 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ - 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ - 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ - 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ - 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 18 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ - 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ - 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ - 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ - 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ - 5, 0x1, 0x8001, 0x0, 0x8001, 0x0, 30, \ - 6, 0x1, 0xb011, 0x0, 0x8001, 0x1, 32, \ - 7, 0x1, 0xb012, 0x0, 0x8001, 0x1, 32, \ - 8, 0x1, 0xb013, 0x0, 0x8001, 0x1, 32, \ - 9, 0x1, 0xb014, 0x0, 0x8001, 0x1, 32, \ - 10, 0x1, 0x09c1, 0x0, 0x8001, 0x1, 31, \ - 11, 0x1, 0x0942, 0x0, 0x8001, 0x1, 31, \ - 12, 0x1, 0x0903, 0x0, 0x8001, 0x1, 31, \ - 13, 0x1, 0x0984, 0x0, 0x8001, 0x1, 31, \ - 14, 0x1, 0x0ac5, 0x0, 0xc000, 0x1, 31, \ - 15, 0x1, 0x0a46, 0x0, 0xc000, 0x1, 31, \ - 16, 0x1, 0x0a07, 0x0, 0xc000, 0x1, 31, \ - 17, 0x1, 0x0a88, 0x0, 0xc000, 0x1, 31 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x1, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x1, 0x0, \ - 7, 0x1, 0x0, \ - 8, 0x1, 0x0, \ - 9, 0x1, 0x0, \ - 10, 0x1, 0x0, \ - 11, 0x1, 0x0, \ - 12, 0x1, 0x0, \ - 13, 0x1, 0x0, \ - 14, 0x1, 0x0, \ - 15, 0x1, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 0 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 2 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 1 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 31 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ + 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ + 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ + 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ + 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ + 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ + 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ + 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ + 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ + 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ + 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ + 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ + 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ + 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ + 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ + 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ + 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ + 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ + 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ + 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ + 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ + 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ + 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ + 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ + 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ + 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ + 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ + 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ + 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ + 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 18 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ + 1, 0x1, 0xb001, 0x0, 0xc000, 0x0, 32, \ + 2, 0x1, 0xb002, 0x0, 0xc000, 0x0, 32, \ + 3, 0x1, 0xb003, 0x0, 0xc000, 0x0, 32, \ + 4, 0x1, 0xb004, 0x0, 0xc000, 0x0, 32, \ + 5, 0x1, 0x8001, 0x0, 0x8001, 0x0, 30, \ + 6, 0x1, 0xb011, 0x0, 0x8001, 0x1, 32, \ + 7, 0x1, 0xb012, 0x0, 0x8001, 0x1, 32, \ + 8, 0x1, 0xb013, 0x0, 0x8001, 0x1, 32, \ + 9, 0x1, 0xb014, 0x0, 0x8001, 0x1, 32, \ + 10, 0x1, 0x09c1, 0x0, 0x8001, 0x1, 31, \ + 11, 0x1, 0x0942, 0x0, 0x8001, 0x1, 31, \ + 12, 0x1, 0x0903, 0x0, 0x8001, 0x1, 31, \ + 13, 0x1, 0x0984, 0x0, 0x8001, 0x1, 31, \ + 14, 0x1, 0x0ac5, 0x0, 0xc000, 0x1, 31, \ + 15, 0x1, 0x0a46, 0x0, 0xc000, 0x1, 31, \ + 16, 0x1, 0x0a07, 0x0, 0xc000, 0x1, 31, \ + 17, 0x1, 0x0a88, 0x0, 0xc000, 0x1, 31 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x1, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x1, 0x0, \ + 7, 0x1, 0x0, \ + 8, 0x1, 0x0, \ + 9, 0x1, 0x0, \ + 10, 0x1, 0x0, \ + 11, 0x1, 0x0, \ + 12, 0x1, 0x0, \ + 13, 0x1, 0x0, \ + 14, 0x1, 0x0, \ + 15, 0x1, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 0 +########################### diff --git a/macro/tof/beamtime/nov15/parUnpack_rates.txt b/macro/tof/beamtime/nov15/parUnpack_rates.txt index 5054050b8a..ad0b2f770c 100644 --- a/macro/tof/beamtime/nov15/parUnpack_rates.txt +++ b/macro/tof/beamtime/nov15/parUnpack_rates.txt @@ -1,178 +1,178 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 2 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 1 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 8 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// triglogscal= 14, // VULOM TRIGLOG board used as additional scaler board -// orgen = 15, // VULOM Or Generation board (nov 2015) with more scalers than scaler2014 -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 1, 0x03000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 1, 0x04000000, 0x09, 0x504d5453, 0x53544d50, 14, \ - 2, 1, 0x05000000, 0x09, 0x73636131, 0x31616373, 15, \ - 3, 1, 0x06000000, 0x09, 0x73636132, 0x32616373, 15, \ - 4, 1, 0x07000000, 0x09, 0x73636133, 0x33616373, 15, \ - 5, 1, 0x08000000, 0x09, 0x73636134, 0x34616373, 15, \ - 6, 1, 0x09000000, 0x09, 0x73636135, 0x35616373, 15, \ - 7, 1, 0x0A000000, 0x09, 0x73636136, 0x36616373, 15 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 45 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x0, 0xc000, 0x0, 0xc000, 0x1, 30, \ - 1, 0x0, 0xb001, 0x0, 0xc000, 0x1, 32, \ - 2, 0x0, 0xb002, 0x0, 0xc000, 0x1, 32, \ - 3, 0x0, 0xb003, 0x0, 0xc000, 0x1, 32, \ - 4, 0x0, 0xb004, 0x0, 0xc000, 0x1, 32, \ - 5, 0x0, 0x8002, 0x0, 0xc000, 0x1, 30, \ - 6, 0x0, 0xb021, 0x0, 0x8002, 0x1, 32, \ - 7, 0x0, 0xb022, 0x0, 0x8002, 0x1, 32, \ - 8, 0x0, 0xb023, 0x0, 0x8002, 0x1, 32, \ - 9, 0x0, 0xb024, 0x0, 0x8002, 0x1, 32, \ - 10, 0x0, 0x8003, 0x0, 0x8003, 0x1, 30, \ - 11, 0x0, 0xb031, 0x0, 0x8003, 0x1, 32, \ - 12, 0x0, 0xb032, 0x0, 0x8003, 0x1, 32, \ - 13, 0x0, 0xb033, 0x0, 0x8003, 0x1, 32, \ - 14, 0x0, 0xb034, 0x0, 0x8003, 0x1, 32, \ - 15, 0x0, 0x8004, 0x0, 0x8004, 0x1, 30, \ - 16, 0x0, 0xb041, 0x0, 0x8004, 0x1, 32, \ - 17, 0x0, 0xb042, 0x0, 0x8004, 0x1, 32, \ - 18, 0x0, 0xb043, 0x0, 0x8004, 0x1, 32, \ - 19, 0x0, 0xb044, 0x0, 0x8004, 0x1, 32, \ - 20, 0x0, 0x8005, 0x0, 0x8005, 0x1, 30, \ - 21, 0x0, 0xb051, 0x0, 0x8005, 0x1, 32, \ - 22, 0x0, 0xb052, 0x0, 0x8005, 0x1, 32, \ - 23, 0x0, 0xb053, 0x0, 0x8005, 0x1, 32, \ - 24, 0x0, 0xb054, 0x0, 0x8005, 0x1, 32, \ - 25, 0x0, 0x0f11, 0x0, 0xc000, 0x1, 31, \ - 26, 0x0, 0x0f12, 0x0, 0xc000, 0x1, 31, \ - 27, 0x0, 0x0f13, 0x0, 0xc000, 0x1, 31, \ - 28, 0x0, 0x0f14, 0x0, 0xc000, 0x1, 31, \ - 29, 0x0, 0x0f21, 0x0, 0x8002, 0x1, 31, \ - 30, 0x0, 0x0f22, 0x0, 0x8002, 0x1, 31, \ - 31, 0x0, 0x0f23, 0x0, 0x8002, 0x1, 31, \ - 32, 0x0, 0x0f24, 0x0, 0x8002, 0x1, 31, \ - 33, 0x0, 0x0f41, 0x0, 0x8003, 0x1, 31, \ - 34, 0x0, 0x0f42, 0x0, 0x8003, 0x1, 31, \ - 35, 0x0, 0x0f43, 0x0, 0x8003, 0x1, 31, \ - 36, 0x0, 0x0f44, 0x0, 0x8003, 0x1, 31, \ - 37, 0x0, 0x0f51, 0x0, 0x8004, 0x1, 31, \ - 38, 0x0, 0x0f52, 0x0, 0x8004, 0x1, 31, \ - 39, 0x0, 0x0f53, 0x0, 0x8004, 0x1, 31, \ - 40, 0x0, 0x0f54, 0x0, 0x8004, 0x1, 31, \ - 41, 0x0, 0x0f61, 0x0, 0x8005, 0x1, 31, \ - 42, 0x0, 0x0f62, 0x0, 0x8005, 0x1, 31, \ - 43, 0x0, 0x0f63, 0x0, 0x8005, 0x1, 31, \ - 44, 0x0, 0x0f64, 0x0, 0x8005, 0x1, 31 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x1, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x1, 0x0, \ - 7, 0x1, 0x0, \ - 8, 0x0, 0x0, \ - 9, 0x1, 0x0, \ - 10, 0x2, 0x0, \ - 11, 0x3, 0x0, \ - 12, 0x4, 0x0, \ - 13, 0x5, 0x0, \ - 14, 0x6, 0x0, \ - 15, 0x7, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 1 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 2 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 1 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 8 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// triglogscal= 14, // VULOM TRIGLOG board used as additional scaler board +// orgen = 15, // VULOM Or Generation board (nov 2015) with more scalers than scaler2014 +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 1, 0x03000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 1, 0x04000000, 0x09, 0x504d5453, 0x53544d50, 14, \ + 2, 1, 0x05000000, 0x09, 0x73636131, 0x31616373, 15, \ + 3, 1, 0x06000000, 0x09, 0x73636132, 0x32616373, 15, \ + 4, 1, 0x07000000, 0x09, 0x73636133, 0x33616373, 15, \ + 5, 1, 0x08000000, 0x09, 0x73636134, 0x34616373, 15, \ + 6, 1, 0x09000000, 0x09, 0x73636135, 0x35616373, 15, \ + 7, 1, 0x0A000000, 0x09, 0x73636136, 0x36616373, 15 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 45 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x0, 0xc000, 0x0, 0xc000, 0x1, 30, \ + 1, 0x0, 0xb001, 0x0, 0xc000, 0x1, 32, \ + 2, 0x0, 0xb002, 0x0, 0xc000, 0x1, 32, \ + 3, 0x0, 0xb003, 0x0, 0xc000, 0x1, 32, \ + 4, 0x0, 0xb004, 0x0, 0xc000, 0x1, 32, \ + 5, 0x0, 0x8002, 0x0, 0xc000, 0x1, 30, \ + 6, 0x0, 0xb021, 0x0, 0x8002, 0x1, 32, \ + 7, 0x0, 0xb022, 0x0, 0x8002, 0x1, 32, \ + 8, 0x0, 0xb023, 0x0, 0x8002, 0x1, 32, \ + 9, 0x0, 0xb024, 0x0, 0x8002, 0x1, 32, \ + 10, 0x0, 0x8003, 0x0, 0x8003, 0x1, 30, \ + 11, 0x0, 0xb031, 0x0, 0x8003, 0x1, 32, \ + 12, 0x0, 0xb032, 0x0, 0x8003, 0x1, 32, \ + 13, 0x0, 0xb033, 0x0, 0x8003, 0x1, 32, \ + 14, 0x0, 0xb034, 0x0, 0x8003, 0x1, 32, \ + 15, 0x0, 0x8004, 0x0, 0x8004, 0x1, 30, \ + 16, 0x0, 0xb041, 0x0, 0x8004, 0x1, 32, \ + 17, 0x0, 0xb042, 0x0, 0x8004, 0x1, 32, \ + 18, 0x0, 0xb043, 0x0, 0x8004, 0x1, 32, \ + 19, 0x0, 0xb044, 0x0, 0x8004, 0x1, 32, \ + 20, 0x0, 0x8005, 0x0, 0x8005, 0x1, 30, \ + 21, 0x0, 0xb051, 0x0, 0x8005, 0x1, 32, \ + 22, 0x0, 0xb052, 0x0, 0x8005, 0x1, 32, \ + 23, 0x0, 0xb053, 0x0, 0x8005, 0x1, 32, \ + 24, 0x0, 0xb054, 0x0, 0x8005, 0x1, 32, \ + 25, 0x0, 0x0f11, 0x0, 0xc000, 0x1, 31, \ + 26, 0x0, 0x0f12, 0x0, 0xc000, 0x1, 31, \ + 27, 0x0, 0x0f13, 0x0, 0xc000, 0x1, 31, \ + 28, 0x0, 0x0f14, 0x0, 0xc000, 0x1, 31, \ + 29, 0x0, 0x0f21, 0x0, 0x8002, 0x1, 31, \ + 30, 0x0, 0x0f22, 0x0, 0x8002, 0x1, 31, \ + 31, 0x0, 0x0f23, 0x0, 0x8002, 0x1, 31, \ + 32, 0x0, 0x0f24, 0x0, 0x8002, 0x1, 31, \ + 33, 0x0, 0x0f41, 0x0, 0x8003, 0x1, 31, \ + 34, 0x0, 0x0f42, 0x0, 0x8003, 0x1, 31, \ + 35, 0x0, 0x0f43, 0x0, 0x8003, 0x1, 31, \ + 36, 0x0, 0x0f44, 0x0, 0x8003, 0x1, 31, \ + 37, 0x0, 0x0f51, 0x0, 0x8004, 0x1, 31, \ + 38, 0x0, 0x0f52, 0x0, 0x8004, 0x1, 31, \ + 39, 0x0, 0x0f53, 0x0, 0x8004, 0x1, 31, \ + 40, 0x0, 0x0f54, 0x0, 0x8004, 0x1, 31, \ + 41, 0x0, 0x0f61, 0x0, 0x8005, 0x1, 31, \ + 42, 0x0, 0x0f62, 0x0, 0x8005, 0x1, 31, \ + 43, 0x0, 0x0f63, 0x0, 0x8005, 0x1, 31, \ + 44, 0x0, 0x0f64, 0x0, 0x8005, 0x1, 31 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x1, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x1, 0x0, \ + 7, 0x1, 0x0, \ + 8, 0x0, 0x0, \ + 9, 0x1, 0x0, \ + 10, 0x2, 0x0, \ + 11, 0x3, 0x0, \ + 12, 0x4, 0x0, \ + 13, 0x5, 0x0, \ + 14, 0x6, 0x0, \ + 15, 0x7, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 1 +########################### diff --git a/macro/tof/beamtime/thuqa/parUnpack_basic.txt b/macro/tof/beamtime/thuqa/parUnpack_basic.txt index 9e44b8de28..e2109dc1e6 100644 --- a/macro/tof/beamtime/thuqa/parUnpack_basic.txt +++ b/macro/tof/beamtime/thuqa/parUnpack_basic.txt @@ -1,159 +1,159 @@ -############################################################################## -# Class: TMbsUnpackTofPar -# Context: TestDefaultContext -############################################################################## -[TMbsUnpackTofPar] -//---------------------------------------------------------------------------- -//******************************// -// Input selector // -//******************************// -// GETEVT__FILE 1 <- LMD File -// GETEVT__STREAM 2 <- Stream client -// GETEVT__TRANS 3 <- Transport client -// GETEVT__EVENT 4 <- Event client -// GETEVT__REVSERV 5 <- Remote event client -MbsSourceMode: Int_t 2 -// Switch ON/OFF the writing of data in the output root file of cbmroot analysis -WriteDataInCbmOut: Int_t 1 -// Switch ON/OFF debug tests in VFTX unpacker -VftxDebug: Int_t 0 -// Number of possible VME boards in the MBS event -MbsNbVmeBoards: Int_t 31 -// BoardTypes -// undef = 0, // unknown type, default value -// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips -// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) -// triglog = 10, // VULOM TRIGLOG board -// scalormu = 11, // VULOM Scaler Or Multiplicity board -// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now -// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime -// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards -// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board -// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) -// BoardIndex Active Address AddMod TokenA TokenB Type -MbsVmeMapping: Int_t \ - 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ - 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ - 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ - 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ - 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ - 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ - 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ - 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ - 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ - 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ - 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ - 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ - 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ - 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ - 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ - 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ - 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ - 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ - 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ - 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ - 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ - 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ - 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ - 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ - 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ - 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ - 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ - 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ - 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ - 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ - 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 -// Number of possible Non-VME boards in the MBS event -NbNonVmeBoards: Int_t 5 -//============================================================================== -// General structure -// BoardIndex Active RocIndx AddMod TokenA TokenB Type -//------------------------------------------------------------------------------ -// BoardTypes -// 0: unknown -- default -// 4: get4 -- GET4 chips -// 30: trbseb -- subevent builder on central TRB-FPGA -// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC -// 32: trbhub -- hub on peripheral TRB-FPGA -//============================================================================== -// TRB specific structure -// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType -//------------------------------------------------------------------------------ -// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) -// FpgaInData: FPGA TRBnet endpoint sends data (0x1) -// FpgaAddr: FPGA TRBnet endpoint address -// [niu]: field not in use -// SebAddr: subevent builder's TRBnet endpoint address -// UnpackTdc: unpack data from this TDC (0x1) -// FpgaType: see BoardTypes above -//============================================================================== -// -NonVmeMapping: Int_t \ - 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ - 1, 0x1, 0x0001, 0x0, 0xc000, 0x1, 31, \ - 2, 0x1, 0x0002, 0x0, 0xc000, 0x1, 31, \ - 3, 0x1, 0x0003, 0x0, 0xc000, 0x1, 31, \ - 4, 0x1, 0x0004, 0x0, 0xc000, 0x1, 31 -// -// Trigger from the Triglog board for which event are jump by Calib, mapping and conv -// For now only jumping work for GET4 data!! -//TriggerRejection: Int_t 15 -TriggerRejection: Int_t -1 -//============================================================================== -// TriggerChannel | TriggerType | TriggerUnpack -//------------------------------------------------------------------------------ -// TriggerChannel (as defined in the CTS) -// max. range: 0 - 15 -//------------------------------------------------------------------------------ -// TriggerType (as defined in the CTS) -// max. range: 0x0 - 0xf -// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") -// types without a reference time signal: 0x8 - 0xf -// calibration (ToT stretching offset): 0xd -// -// In case of a trigger concidence, only a uniquely assigned trigger type -// allows to unambigously identify the trigger which actually triggered -// the event. -// All 8 possible trigger signal inputs should have assigned a different -// trigger type from 0x0 to 0x7. To all disabled trigger channels, please -// assign a higher trigger type (0x8 - 0xf exclusive 0xd). -//------------------------------------------------------------------------------ -// TriggerUnpack -// 0x1: only consider events in which this trigger channel was asserted -// (if this unpack bit is set for several trigger channels, all of -// them must have been asserted for the event to be unpacked) -// 0x0: do not care whether this trigger channel was asserted or not -// (if this unpack bit is not set for all trigger channels, each -// incoming event is unpacked) -//============================================================================== -NbCtsTrigChs: Int_t 16 -CtsTriggerMap: Int_t \ - 0, 0x1, 0x0, \ - 1, 0x1, 0x0, \ - 2, 0x1, 0x0, \ - 3, 0x1, 0x0, \ - 4, 0x1, 0x0, \ - 5, 0x1, 0x0, \ - 6, 0x1, 0x0, \ - 7, 0x1, 0x0, \ - 8, 0x1, 0x0, \ - 9, 0x1, 0x0, \ - 10, 0x1, 0x0, \ - 11, 0x1, 0x0, \ - 12, 0x1, 0x0, \ - 13, 0x1, 0x0, \ - 14, 0x1, 0x0, \ - 15, 0x1, 0x0 -// -//============================================================================== -// The unpacking algorithms support both double edge measurement methods -// implemented for the TRB-TDC. -// - 128-bit mode: separate edge detection in different TDC channels -// 1 TDC TIME and 1 TDC EPOCH word for both edges -// - 96-bit mode: joint edge detection in the same TDC channel -// 1 TDC TIME word per edge and 1 joint TDC EPOCH word -// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any -// other value will result in 128-bit mode unpacking. -//============================================================================== -TrbTdcBitMode: Int_t 0 -########################### +############################################################################## +# Class: TMbsUnpackTofPar +# Context: TestDefaultContext +############################################################################## +[TMbsUnpackTofPar] +//---------------------------------------------------------------------------- +//******************************// +// Input selector // +//******************************// +// GETEVT__FILE 1 <- LMD File +// GETEVT__STREAM 2 <- Stream client +// GETEVT__TRANS 3 <- Transport client +// GETEVT__EVENT 4 <- Event client +// GETEVT__REVSERV 5 <- Remote event client +MbsSourceMode: Int_t 2 +// Switch ON/OFF the writing of data in the output root file of cbmroot analysis +WriteDataInCbmOut: Int_t 1 +// Switch ON/OFF debug tests in VFTX unpacker +VftxDebug: Int_t 0 +// Number of possible VME boards in the MBS event +MbsNbVmeBoards: Int_t 31 +// BoardTypes +// undef = 0, // unknown type, default value +// caenV1290 = 1, // CAEN v1290A and CAEN v1290N VME boards based on HPTDC chips +// vftx = 2, // FPGA TDC of the VFTX family (E. Bayer dev.) +// triglog = 10, // VULOM TRIGLOG board +// scalormu = 11, // VULOM Scaler Or Multiplicity board +// scalormubig= 12, // VULOM Scaler Or Multiplicity board 32 channel version ? not used for now +// scaler2014 = 13, // VULOM Scaler Or/And board used in the GSI April 2014 TOF beamtime +// caenv965 = 20, // CAEN v965A and CAEN v965N VME QDC boards +// lecroy1182 = 21, // LECROY 1182 VME QDC/ADC board +// vulqfwread = 22 // VULOM QFW board (Charge to Frequency Converter Readout) +// BoardIndex Active Address AddMod TokenA TokenB Type +MbsVmeMapping: Int_t \ + 0, 0, 0x14000000, 0x09, 0x74726c6f, 0x6f6c7274, 10, \ + 1, 0, 0x0F000000, 0x09, 0x74646331, 0x31636474, 1, \ + 2, 0, 0x11000000, 0x09, 0x74646332, 0x32636474, 1, \ + 3, 0, 0x12000000, 0x09, 0x74646333, 0x33636474, 1, \ + 4, 0, 0x14000000, 0x09, 0x74646334, 0x34636474, 1, \ + 5, 0, 0x15000000, 0x09, 0x74646335, 0x35636474, 1, \ + 6, 0, 0x17000000, 0x09, 0x74646336, 0x36636474, 1, \ + 7, 0, 0x18000000, 0x09, 0x74646337, 0x37636474, 1, \ + 8, 0, 0x19000000, 0x09, 0x74646338, 0x38636474, 1, \ + 9, 0, 0x03000000, 0x09, 0x66706731, 0x31677066, 2, \ + 10, 0, 0x04000000, 0x09, 0x66706732, 0x32677066, 2, \ + 11, 0, 0x05000000, 0x09, 0x66706733, 0x33677066, 2, \ + 12, 0, 0x06000000, 0x09, 0x66706734, 0x34677066, 2, \ + 13, 0, 0x07000000, 0x09, 0x66706735, 0x35677066, 2, \ + 14, 0, 0x08000000, 0x09, 0x66706736, 0x36677066, 2, \ + 15, 0, 0x09000000, 0x09, 0x66706737, 0x37677066, 2, \ + 16, 0, 0x0A000000, 0x09, 0x66706738, 0x38677066, 2, \ + 17, 0, 0x0B000000, 0x09, 0x66706739, 0x39677066, 2, \ + 18, 0, 0x0C000000, 0x09, 0x6670673a, 0x3a677066, 2, \ + 19, 0, 0x0D000000, 0x09, 0x6670673b, 0x3b677066, 2, \ + 20, 0, 0x0A000000, 0x09, 0x71646332, 0x32636471, 20, \ + 21, 0, 0x0B000000, 0x09, 0x71646333, 0x33636471, 20, \ + 22, 0, 0x00600000, 0x39, 0x31313832, 0x32383131, 21, \ + 23, 0, 0x00700000, 0x39, 0x31313833, 0x33383131, 21, \ + 24, 0, 0x07000000, 0x09, 0x71667731, 0x31776671, 22, \ + 25, 0, 0x12000000, 0x09, 0x73636f6d, 0x6d6f6373, 11, \ + 26, 0, 0x13000000, 0x09, 0x736f6d62, 0x626d6f73, 11, \ + 27, 0, 0x06000000, 0x09, 0x73636131, 0x31616373, 13, \ + 28, 0, 0x08000000, 0x09, 0x73636132, 0x32616373, 13, \ + 29, 0, 0x10000000, 0x09, 0x73636133, 0x33616373, 13, \ + 30, 0, 0x12000000, 0x09, 0x73636134, 0x34616373, 13 +// Number of possible Non-VME boards in the MBS event +NbNonVmeBoards: Int_t 5 +//============================================================================== +// General structure +// BoardIndex Active RocIndx AddMod TokenA TokenB Type +//------------------------------------------------------------------------------ +// BoardTypes +// 0: unknown -- default +// 4: get4 -- GET4 chips +// 30: trbseb -- subevent builder on central TRB-FPGA +// 31: trbtdc -- TDC on peripheral TRB-FPGA or FEE-TDC +// 32: trbhub -- hub on peripheral TRB-FPGA +//============================================================================== +// TRB specific structure +// BoardIndex UnpackTdc FpgaAddr [niu] SebAddr FpgaInData FpgaType +//------------------------------------------------------------------------------ +// BoardIndex: consecutively numbered index (0...NbNonVmeBoards-1) +// FpgaInData: FPGA TRBnet endpoint sends data (0x1) +// FpgaAddr: FPGA TRBnet endpoint address +// [niu]: field not in use +// SebAddr: subevent builder's TRBnet endpoint address +// UnpackTdc: unpack data from this TDC (0x1) +// FpgaType: see BoardTypes above +//============================================================================== +// +NonVmeMapping: Int_t \ + 0, 0x1, 0xc000, 0x0, 0xc000, 0x0, 30, \ + 1, 0x1, 0x0001, 0x0, 0xc000, 0x1, 31, \ + 2, 0x1, 0x0002, 0x0, 0xc000, 0x1, 31, \ + 3, 0x1, 0x0003, 0x0, 0xc000, 0x1, 31, \ + 4, 0x1, 0x0004, 0x0, 0xc000, 0x1, 31 +// +// Trigger from the Triglog board for which event are jump by Calib, mapping and conv +// For now only jumping work for GET4 data!! +//TriggerRejection: Int_t 15 +TriggerRejection: Int_t -1 +//============================================================================== +// TriggerChannel | TriggerType | TriggerUnpack +//------------------------------------------------------------------------------ +// TriggerChannel (as defined in the CTS) +// max. range: 0 - 15 +//------------------------------------------------------------------------------ +// TriggerType (as defined in the CTS) +// max. range: 0x0 - 0xf +// types generating a reference time signal: 0x0 - 0x7 ("physics triggers") +// types without a reference time signal: 0x8 - 0xf +// calibration (ToT stretching offset): 0xd +// +// In case of a trigger concidence, only a uniquely assigned trigger type +// allows to unambigously identify the trigger which actually triggered +// the event. +// All 8 possible trigger signal inputs should have assigned a different +// trigger type from 0x0 to 0x7. To all disabled trigger channels, please +// assign a higher trigger type (0x8 - 0xf exclusive 0xd). +//------------------------------------------------------------------------------ +// TriggerUnpack +// 0x1: only consider events in which this trigger channel was asserted +// (if this unpack bit is set for several trigger channels, all of +// them must have been asserted for the event to be unpacked) +// 0x0: do not care whether this trigger channel was asserted or not +// (if this unpack bit is not set for all trigger channels, each +// incoming event is unpacked) +//============================================================================== +NbCtsTrigChs: Int_t 16 +CtsTriggerMap: Int_t \ + 0, 0x1, 0x0, \ + 1, 0x1, 0x0, \ + 2, 0x1, 0x0, \ + 3, 0x1, 0x0, \ + 4, 0x1, 0x0, \ + 5, 0x1, 0x0, \ + 6, 0x1, 0x0, \ + 7, 0x1, 0x0, \ + 8, 0x1, 0x0, \ + 9, 0x1, 0x0, \ + 10, 0x1, 0x0, \ + 11, 0x1, 0x0, \ + 12, 0x1, 0x0, \ + 13, 0x1, 0x0, \ + 14, 0x1, 0x0, \ + 15, 0x1, 0x0 +// +//============================================================================== +// The unpacking algorithms support both double edge measurement methods +// implemented for the TRB-TDC. +// - 128-bit mode: separate edge detection in different TDC channels +// 1 TDC TIME and 1 TDC EPOCH word for both edges +// - 96-bit mode: joint edge detection in the same TDC channel +// 1 TDC TIME word per edge and 1 joint TDC EPOCH word +// To enable 96-bit mode unpacking, set 'TrbTdcBitMode' to '1'. Setting any +// other value will result in 128-bit mode unpacking. +//============================================================================== +TrbTdcBitMode: Int_t 0 +########################### diff --git a/macro/tof/geometry/TOF_10M.dat b/macro/tof/geometry/TOF_10M.dat index 88a4755b84..69b496f961 100644 --- a/macro/tof/geometry/TOF_10M.dat +++ b/macro/tof/geometry/TOF_10M.dat @@ -1,219 +1,219 @@ -# X Y Z mod pos -1 -5399 4005 9034 b l -2 -5399 3453 8899 b l -3 -5399 2999 9034 b l -4 -5399 2461 8899 b l -5 -5399 1993 9034 b l -6 -5399 1470 8899 b l -7 -5399 988 9034 b l -8 -5399 500 9169 b l -9 -5399 0 9304 b l -10 -5399 -500 9169 b l -11 -5399 -988 9034 b l -12 -5399 -1470 8899 b l -13 -5399 -1993 9034 b l -14 -5399 -2461 8899 b l -15 -5399 -2999 9034 b l -16 -5399 -3453 8899 b l -17 -5399 -4005 9034 b l -18 -4079 4128 9304 b l -19 -4079 3573 9169 b l -20 -4079 3120 9304 b l -21 -4079 2578 9169 b l -22 -4079 2110 9304 b l -23 -4079 1585 9169 b l -24 -4079 1105 9304 b l -25 -4082 750 9447 s l -26 -4232 510 9577 s l -27 -4082 250 9447 s l -28 -4232 0 9577 s l -29 -4082 -250 9447 s l -30 -4232 -510 9577 s l -31 -4082 -750 9447 s l -32 -4079 -1105 9304 b l -33 -4079 -1585 9169 b l -34 -4079 -2110 9304 b l -35 -4079 -2578 9169 b l -36 -4079 -3120 9304 b l -37 -4079 -3573 9169 b l -38 -4079 -4128 9304 b l -39 -2767 4195 9447 s l -40 -2867 4002 9577 s l -41 -2767 3695 9447 s l -42 -2867 3492 9577 s l -43 -2767 3195 9447 s l -44 -2867 2982 9577 s l -45 -2767 2695 9447 s l -46 -2867 2477 9577 s l -47 -2767 2195 9447 s l -48 -2867 1972 9577 s l -49 -2767 1659 9447 s l -50 -2867 1467 9577 s l -51 -2767 1250 9712 s l -52 -2867 1020 9842 s l -53 -2767 750 9712 s l -54 -2867 510 9842 s l -55 -2767 250 9712 s l -56 -2867 0 9842 s l -57 -2767 -250 9712 s l -58 -2867 -510 9842 s l -59 -2767 -750 9712 s l -60 -2867 -1020 9842 s l -61 -2767 -1250 9712 s l -62 -2867 -1467 9577 s l -63 -2767 -1659 9447 s l -64 -2867 -1972 9577 s l -65 -2767 -2195 9447 s l -66 -2867 -2477 9577 s l -67 -2767 -2695 9447 s l -68 -2867 -2982 9577 s l -69 -2767 -3195 9447 s l -70 -2867 -3492 9577 s l -71 -2767 -3695 9447 s l -72 -2867 -4002 9577 s l -73 -2767 -4195 9447 s l -74 -1417 4250 9712 s l -75 -1467 4058 9842 s l -76 -1417 3750 9712 s l -77 -1467 3548 9842 s l -78 -1417 3250 9712 s l -79 -1467 3038 9842 s l -80 -1417 2750 9712 s l -81 -1467 2533 9842 s l -82 -1417 2250 9712 s l -83 -1467 2028 9842 s l -84 -1417 1750 9712 s l -85 -1467 1523 9842 s l -86 -1467 -1523 9842 s l -87 -1417 -1750 9712 s l -88 -1467 -2028 9842 s l -89 -1417 -2250 9712 s l -90 -1467 -2533 9842 s l -91 -1417 -2750 9712 s l -92 -1467 -3038 9842 s l -93 -1417 -3250 9712 s l -94 -1467 -3548 9842 s l -95 -1417 -3750 9712 s l -96 -1467 -4058 9842 s l -97 -1417 -4250 9712 s l -98 0 4255 10000 s m -99 0 4053 10130 s m -100 0 3755 10000 s m -101 0 3547 10130 s m -102 0 3255 10000 s m -103 0 3041 10130 s m -104 0 2755 10000 s m -105 0 2535 10130 s m -106 0 2255 10000 s m -107 0 2029 10130 s m -108 0 1755 10000 s m -109 0 1523 10130 s m -110 0 -1523 10130 s m -111 0 -1755 10000 s m -112 0 -2029 10130 s m -113 0 -2255 10000 s m -114 0 -2535 10130 s m -115 0 -2755 10000 s m -116 0 -3041 10130 s m -117 0 -3255 10000 s m -118 0 -3547 10130 s m -119 0 -3755 10000 s m -120 0 -4053 10130 s m -121 0 -4255 10000 s m -122 1417 4250 9712 s r -123 1467 4058 9842 s r -124 1417 3750 9712 s r -125 1467 3548 9842 s r -126 1417 3250 9712 s r -127 1467 3038 9842 s r -128 1417 2750 9712 s r -129 1467 2533 9842 s r -130 1417 2250 9712 s r -131 1467 2028 9842 s r -132 1417 1750 9712 s r -133 1467 1523 9842 s r -134 1467 -1523 9842 s r -135 1417 -1750 9712 s r -136 1467 -2028 9842 s r -137 1417 -2250 9712 s r -138 1467 -2533 9842 s r -139 1417 -2750 9712 s r -140 1467 -3038 9842 s r -141 1417 -3250 9712 s r -142 1467 -3548 9842 s r -143 1417 -3750 9712 s r -144 1467 -4058 9842 s r -145 1417 -4250 9712 s r -146 2767 4195 9447 s r -147 2867 4002 9577 s r -148 2767 3695 9447 s r -149 2867 3492 9577 s r -150 2767 3195 9447 s r -151 2867 2982 9577 s r -152 2767 2695 9447 s r -153 2867 2477 9577 s r -154 2767 2195 9447 s r -155 2867 1972 9577 s r -156 2767 1659 9447 s r -157 2867 1467 9577 s r -158 2767 1250 9712 s r -159 2867 1020 9842 s r -160 2767 750 9712 s r -161 2867 510 9842 s r -162 2767 250 9712 s r -163 2867 0 9842 s r -164 2767 -250 9712 s r -165 2867 -510 9842 s r -166 2767 -750 9712 s r -167 2867 -1020 9842 s r -168 2767 -1250 9712 s r -169 2867 -1467 9577 s r -170 2767 -1659 9447 s r -171 2867 -1972 9577 s r -172 2767 -2195 9447 s r -173 2867 -2477 9577 s r -174 2767 -2695 9447 s r -175 2867 -2982 9577 s r -176 2767 -3195 9447 s r -177 2867 -3492 9577 s r -178 2767 -3695 9447 s r -179 2867 -4002 9577 s r -180 2767 -4195 9447 s r -181 4079 4128 9304 b r -182 4079 3573 9169 b r -183 4079 3120 9304 b r -184 4079 2578 9169 b r -185 4079 2110 9304 b r -186 4079 1585 9169 b r -187 4079 1105 9304 b r -188 4082 750 9447 s r -189 4232 510 9577 s r -190 4082 250 9447 s r -191 4232 0 9577 s r -192 4082 -250 9447 s r -193 4232 -510 9577 s r -194 4082 -750 9447 s r -195 4079 -1105 9304 b r -196 4079 -1585 9169 b r -197 4079 -2110 9304 b r -198 4079 -2578 9169 b r -199 4079 -3120 9304 b r -200 4079 -3573 9169 b r -201 4079 -4128 9304 b r -202 5399 4005 9034 b r -203 5399 3453 8899 b r -204 5399 2999 9034 b r -205 5399 2461 8899 b r -206 5399 1993 9034 b r -207 5399 1470 8899 b r -208 5399 988 9034 b r -209 5399 500 9169 b r -210 5399 0 9304 b r -211 5399 -500 9169 b r -212 5399 -988 9034 b r -213 5399 -1470 8899 b r -214 5399 -1993 9034 b r -215 5399 -2461 8899 b r -216 5399 -2999 9034 b r -217 5399 -3453 8899 b r -218 5399 -4005 9034 b r +# X Y Z mod pos +1 -5399 4005 9034 b l +2 -5399 3453 8899 b l +3 -5399 2999 9034 b l +4 -5399 2461 8899 b l +5 -5399 1993 9034 b l +6 -5399 1470 8899 b l +7 -5399 988 9034 b l +8 -5399 500 9169 b l +9 -5399 0 9304 b l +10 -5399 -500 9169 b l +11 -5399 -988 9034 b l +12 -5399 -1470 8899 b l +13 -5399 -1993 9034 b l +14 -5399 -2461 8899 b l +15 -5399 -2999 9034 b l +16 -5399 -3453 8899 b l +17 -5399 -4005 9034 b l +18 -4079 4128 9304 b l +19 -4079 3573 9169 b l +20 -4079 3120 9304 b l +21 -4079 2578 9169 b l +22 -4079 2110 9304 b l +23 -4079 1585 9169 b l +24 -4079 1105 9304 b l +25 -4082 750 9447 s l +26 -4232 510 9577 s l +27 -4082 250 9447 s l +28 -4232 0 9577 s l +29 -4082 -250 9447 s l +30 -4232 -510 9577 s l +31 -4082 -750 9447 s l +32 -4079 -1105 9304 b l +33 -4079 -1585 9169 b l +34 -4079 -2110 9304 b l +35 -4079 -2578 9169 b l +36 -4079 -3120 9304 b l +37 -4079 -3573 9169 b l +38 -4079 -4128 9304 b l +39 -2767 4195 9447 s l +40 -2867 4002 9577 s l +41 -2767 3695 9447 s l +42 -2867 3492 9577 s l +43 -2767 3195 9447 s l +44 -2867 2982 9577 s l +45 -2767 2695 9447 s l +46 -2867 2477 9577 s l +47 -2767 2195 9447 s l +48 -2867 1972 9577 s l +49 -2767 1659 9447 s l +50 -2867 1467 9577 s l +51 -2767 1250 9712 s l +52 -2867 1020 9842 s l +53 -2767 750 9712 s l +54 -2867 510 9842 s l +55 -2767 250 9712 s l +56 -2867 0 9842 s l +57 -2767 -250 9712 s l +58 -2867 -510 9842 s l +59 -2767 -750 9712 s l +60 -2867 -1020 9842 s l +61 -2767 -1250 9712 s l +62 -2867 -1467 9577 s l +63 -2767 -1659 9447 s l +64 -2867 -1972 9577 s l +65 -2767 -2195 9447 s l +66 -2867 -2477 9577 s l +67 -2767 -2695 9447 s l +68 -2867 -2982 9577 s l +69 -2767 -3195 9447 s l +70 -2867 -3492 9577 s l +71 -2767 -3695 9447 s l +72 -2867 -4002 9577 s l +73 -2767 -4195 9447 s l +74 -1417 4250 9712 s l +75 -1467 4058 9842 s l +76 -1417 3750 9712 s l +77 -1467 3548 9842 s l +78 -1417 3250 9712 s l +79 -1467 3038 9842 s l +80 -1417 2750 9712 s l +81 -1467 2533 9842 s l +82 -1417 2250 9712 s l +83 -1467 2028 9842 s l +84 -1417 1750 9712 s l +85 -1467 1523 9842 s l +86 -1467 -1523 9842 s l +87 -1417 -1750 9712 s l +88 -1467 -2028 9842 s l +89 -1417 -2250 9712 s l +90 -1467 -2533 9842 s l +91 -1417 -2750 9712 s l +92 -1467 -3038 9842 s l +93 -1417 -3250 9712 s l +94 -1467 -3548 9842 s l +95 -1417 -3750 9712 s l +96 -1467 -4058 9842 s l +97 -1417 -4250 9712 s l +98 0 4255 10000 s m +99 0 4053 10130 s m +100 0 3755 10000 s m +101 0 3547 10130 s m +102 0 3255 10000 s m +103 0 3041 10130 s m +104 0 2755 10000 s m +105 0 2535 10130 s m +106 0 2255 10000 s m +107 0 2029 10130 s m +108 0 1755 10000 s m +109 0 1523 10130 s m +110 0 -1523 10130 s m +111 0 -1755 10000 s m +112 0 -2029 10130 s m +113 0 -2255 10000 s m +114 0 -2535 10130 s m +115 0 -2755 10000 s m +116 0 -3041 10130 s m +117 0 -3255 10000 s m +118 0 -3547 10130 s m +119 0 -3755 10000 s m +120 0 -4053 10130 s m +121 0 -4255 10000 s m +122 1417 4250 9712 s r +123 1467 4058 9842 s r +124 1417 3750 9712 s r +125 1467 3548 9842 s r +126 1417 3250 9712 s r +127 1467 3038 9842 s r +128 1417 2750 9712 s r +129 1467 2533 9842 s r +130 1417 2250 9712 s r +131 1467 2028 9842 s r +132 1417 1750 9712 s r +133 1467 1523 9842 s r +134 1467 -1523 9842 s r +135 1417 -1750 9712 s r +136 1467 -2028 9842 s r +137 1417 -2250 9712 s r +138 1467 -2533 9842 s r +139 1417 -2750 9712 s r +140 1467 -3038 9842 s r +141 1417 -3250 9712 s r +142 1467 -3548 9842 s r +143 1417 -3750 9712 s r +144 1467 -4058 9842 s r +145 1417 -4250 9712 s r +146 2767 4195 9447 s r +147 2867 4002 9577 s r +148 2767 3695 9447 s r +149 2867 3492 9577 s r +150 2767 3195 9447 s r +151 2867 2982 9577 s r +152 2767 2695 9447 s r +153 2867 2477 9577 s r +154 2767 2195 9447 s r +155 2867 1972 9577 s r +156 2767 1659 9447 s r +157 2867 1467 9577 s r +158 2767 1250 9712 s r +159 2867 1020 9842 s r +160 2767 750 9712 s r +161 2867 510 9842 s r +162 2767 250 9712 s r +163 2867 0 9842 s r +164 2767 -250 9712 s r +165 2867 -510 9842 s r +166 2767 -750 9712 s r +167 2867 -1020 9842 s r +168 2767 -1250 9712 s r +169 2867 -1467 9577 s r +170 2767 -1659 9447 s r +171 2867 -1972 9577 s r +172 2767 -2195 9447 s r +173 2867 -2477 9577 s r +174 2767 -2695 9447 s r +175 2867 -2982 9577 s r +176 2767 -3195 9447 s r +177 2867 -3492 9577 s r +178 2767 -3695 9447 s r +179 2867 -4002 9577 s r +180 2767 -4195 9447 s r +181 4079 4128 9304 b r +182 4079 3573 9169 b r +183 4079 3120 9304 b r +184 4079 2578 9169 b r +185 4079 2110 9304 b r +186 4079 1585 9169 b r +187 4079 1105 9304 b r +188 4082 750 9447 s r +189 4232 510 9577 s r +190 4082 250 9447 s r +191 4232 0 9577 s r +192 4082 -250 9447 s r +193 4232 -510 9577 s r +194 4082 -750 9447 s r +195 4079 -1105 9304 b r +196 4079 -1585 9169 b r +197 4079 -2110 9304 b r +198 4079 -2578 9169 b r +199 4079 -3120 9304 b r +200 4079 -3573 9169 b r +201 4079 -4128 9304 b r +202 5399 4005 9034 b r +203 5399 3453 8899 b r +204 5399 2999 9034 b r +205 5399 2461 8899 b r +206 5399 1993 9034 b r +207 5399 1470 8899 b r +208 5399 988 9034 b r +209 5399 500 9169 b r +210 5399 0 9304 b r +211 5399 -500 9169 b r +212 5399 -988 9034 b r +213 5399 -1470 8899 b r +214 5399 -1993 9034 b r +215 5399 -2461 8899 b r +216 5399 -2999 9034 b r +217 5399 -3453 8899 b r +218 5399 -4005 9034 b r diff --git a/macro/tools/skimming_reco.C b/macro/tools/skimming_reco.C index 9343c9b8ff..ba2754950e 100644 --- a/macro/tools/skimming_reco.C +++ b/macro/tools/skimming_reco.C @@ -1,97 +1,97 @@ -#include "Riostream.h" -#include "TError.h" -#include "TFile.h" -#include "TFolder.h" -#include "TGrid.h" -#include "TLeaf.h" -#include "TSystem.h" -#include "TTree.h" - -#include "TCollection.h" -#include "TList.h" -#include "TObjArray.h" -#include "TObjString.h" - - -void DisableBranches(TTree* tree); - -void skimming_reco(TString inFile) { - - // I/O files - TString outFile = inFile; - outFile.ReplaceAll(".root", "skim.root"); - - TTree::SetMaxTreeSize(90000000000); - - /// set root ignore level to supress: - // Could not find the real data member 'PrimaryVertex' when constructing the branch 'PrimaryVertex' - - /// gErrorIgnoreLevel = kPrint, kInfo, kWarning, kError, kBreak, kSysError, kFatal; - gErrorIgnoreLevel = kFatal; - - - //Get old file, old tree and set top branch address - TFile* oldfile = new TFile(inFile.Data()); - TTree* oldtree = (TTree*) oldfile->Get("cbmsim"); - - // disable all branches not needed - DisableBranches(oldtree); - - //Create a new file (a skimmed clone of old tree) - TFile* newfile = new TFile(outFile.Data(), "recreate"); - - // get the tree and clone - TTree* newtree = oldtree->CloneTree(-1, "fast"); - newtree->AutoSave(); - - // get basic branch lists (needed by the FairFileSource) - TList* list = dynamic_cast<TList*>(oldfile->Get("BranchList")); - TFolder* added = dynamic_cast<TFolder*>(oldfile->Get("cbmout")); - newfile->cd(); - if (list) list->Write("BranchList", TObject::kSingleKey); - if (added) added->Write(); - - // close the file - newfile->Close(); - delete newfile; - - delete oldfile; -} - -void DisableBranches(TTree* tree) { - TObjArray* list = tree->GetListOfLeaves(); - TIter next((TCollection*) list); - TLeaf* leaf; - - // list of branches not needed/wanted - TObjArray branchesToDelete; - branchesToDelete.SetOwner(kTRUE); - // branchesToDelete.Add(new TObjString("Mvd")); - branchesToDelete.Add(new TObjString("Digi")); - branchesToDelete.Add(new TObjString("Cluster")); - - TIter nit(&branchesToDelete); - - // default is to keep all bracnhes - tree->SetBranchStatus("*", 1); - - Bool_t on(kFALSE); - - while ((leaf = static_cast<TLeaf*>(next()))) { - TString name(leaf->GetName()); - if ((name.EndsWith("_") || name.EndsWith("."))) { - // Printf("check: %s",leaf->GetName()); - TObjString* str; - nit.Reset(); - on = kTRUE; - while ((str = static_cast<TObjString*>(nit()))) { - if (name.Contains(str->String()) && name.EndsWith("_")) { on = kFALSE; } - } - } - // switch of branch copy - if (!on) { - // Printf("remove: %s",leaf->GetName()); - leaf->GetBranch()->SetStatus(0); - } - } -} +#include "Riostream.h" +#include "TError.h" +#include "TFile.h" +#include "TFolder.h" +#include "TGrid.h" +#include "TLeaf.h" +#include "TSystem.h" +#include "TTree.h" + +#include "TCollection.h" +#include "TList.h" +#include "TObjArray.h" +#include "TObjString.h" + + +void DisableBranches(TTree* tree); + +void skimming_reco(TString inFile) { + + // I/O files + TString outFile = inFile; + outFile.ReplaceAll(".root", "skim.root"); + + TTree::SetMaxTreeSize(90000000000); + + /// set root ignore level to supress: + // Could not find the real data member 'PrimaryVertex' when constructing the branch 'PrimaryVertex' + + /// gErrorIgnoreLevel = kPrint, kInfo, kWarning, kError, kBreak, kSysError, kFatal; + gErrorIgnoreLevel = kFatal; + + + //Get old file, old tree and set top branch address + TFile* oldfile = new TFile(inFile.Data()); + TTree* oldtree = (TTree*) oldfile->Get("cbmsim"); + + // disable all branches not needed + DisableBranches(oldtree); + + //Create a new file (a skimmed clone of old tree) + TFile* newfile = new TFile(outFile.Data(), "recreate"); + + // get the tree and clone + TTree* newtree = oldtree->CloneTree(-1, "fast"); + newtree->AutoSave(); + + // get basic branch lists (needed by the FairFileSource) + TList* list = dynamic_cast<TList*>(oldfile->Get("BranchList")); + TFolder* added = dynamic_cast<TFolder*>(oldfile->Get("cbmout")); + newfile->cd(); + if (list) list->Write("BranchList", TObject::kSingleKey); + if (added) added->Write(); + + // close the file + newfile->Close(); + delete newfile; + + delete oldfile; +} + +void DisableBranches(TTree* tree) { + TObjArray* list = tree->GetListOfLeaves(); + TIter next((TCollection*) list); + TLeaf* leaf; + + // list of branches not needed/wanted + TObjArray branchesToDelete; + branchesToDelete.SetOwner(kTRUE); + // branchesToDelete.Add(new TObjString("Mvd")); + branchesToDelete.Add(new TObjString("Digi")); + branchesToDelete.Add(new TObjString("Cluster")); + + TIter nit(&branchesToDelete); + + // default is to keep all bracnhes + tree->SetBranchStatus("*", 1); + + Bool_t on(kFALSE); + + while ((leaf = static_cast<TLeaf*>(next()))) { + TString name(leaf->GetName()); + if ((name.EndsWith("_") || name.EndsWith("."))) { + // Printf("check: %s",leaf->GetName()); + TObjString* str; + nit.Reset(); + on = kTRUE; + while ((str = static_cast<TObjString*>(nit()))) { + if (name.Contains(str->String()) && name.EndsWith("_")) { on = kFALSE; } + } + } + // switch of branch copy + if (!on) { + // Printf("remove: %s",leaf->GetName()); + leaf->GetBranch()->SetStatus(0); + } + } +} diff --git a/macro/tracking/lx/run_reco.C b/macro/tracking/lx/run_reco.C index 50af0fdb2f..e60ef9e3f7 100644 --- a/macro/tracking/lx/run_reco.C +++ b/macro/tracking/lx/run_reco.C @@ -1,401 +1,401 @@ -void run_reco(int index = -1) { - Int_t nEvents = 1000; - const char* setupName = "sis100_muon_jpsi"; - //const char* setupName = "sis100_electron"; - TString system = "auau"; - TString beam = "8gev"; - TString trigger = "mbias"; - TString part = "omega"; - TString channel = "mpmm"; - //TString channel = "epem"; - - bool useSig = true; - bool useBg = false; - bool sigAscii = false; - bool useIdeal = false; - bool isEvByEv = true; - bool isML = true; - - if (!useSig && !useBg) { - cout << "At least one of the signal or background must be set!" << endl; - return; - } - - TString partDir = "charm"; - - if (part != "jpsi") partDir = "cktA"; - - char str[5]; - sprintf(str, "%05d", index); - - char str2[4]; - sprintf(str2, "%04d", index); - - TString suffix = ""; - - if (useBg) suffix += "." + trigger; - - if (useSig) { - if (sigAscii) - suffix += ".ascii"; - else - suffix += "." + part; - } - - TString inOutDir; - - if (index >= 0) - inOutDir = - "/lustre/nyx/cbm/users/tablyaz/Lx/runs/data" + TString(str) + "/"; - else - inOutDir = "/data.local/cbmrootdata/"; - - TString inFile = - inOutDir + setupName + ".mc." + system + "." + beam + suffix + ".root"; - TString globalParFile = - inOutDir + setupName + ".param." + system + "." + beam + suffix + ".root"; - TString outFile = - inOutDir + setupName + ".reco." + system + "." + beam + suffix + ".root"; - - TString myName = "run_reco_lx"; // this macro's name for screen output - TString srcDir = gSystem->Getenv("VMCWORKDIR"); - - Int_t iVerbose = 1; - TStopwatch timer; - timer.Start(); - - gROOT->LoadMacro("$VMCWORKDIR/macro/littrack/loadlibs.C"); - loadlibs(); - gSystem->Load("libLxTrack.so"); - gSystem->Load("libLittrack.so"); - - FairRunAna* run = new FairRunAna; - run->SetUseFairLinks(1); - run->SetInputFile(inFile); - run->SetOutputFile(outFile); - run->SetGenerateRunInfo(kTRUE); - - CbmMCDataManager* mcManager = new CbmMCDataManager; - mcManager->AddFile(inFile); - run->AddTask(mcManager); - - // ----- Load the geometry setup ------------------------------------- - std::cout << std::endl; - TString setupFile = srcDir + "/geometry/setup/setup_" + setupName + ".C"; - TString setupFunct = "setup_"; - setupFunct = setupFunct + setupName + "()"; - std::cout << "-I- : Loading macro " << setupFile << std::endl; - gROOT->LoadMacro(setupFile); - gROOT->ProcessLine(setupFunct); - CbmSetup* setup = CbmSetup::Instance(); - // ------------------------------------------------------------------------ - - //if (nofNoiseE > 0) - //{ - //LxGenNoiseElectrons* elGenerator = new LxGenNoiseElectrons; - //elGenerator->SetNofNoiseE(nofNoiseE); - //run->AddTask(elGenerator); - //} - - TList* parFileList = new TList(); - - if (useIdeal) { - TString muchDigiFileName = - srcDir + "/parameters/much/much_v15c_digi_sector.root"; - CbmMuchHitProducerIdeal* muchHPIdeal = - new CbmMuchHitProducerIdeal(muchDigiFileName.Data()); - run->AddTask(muchHPIdeal); - - CbmTrdHitProducerIdeal* trdHPIdeal = new CbmTrdHitProducerIdeal; - run->AddTask(trdHPIdeal); - } else { - TString geoTag; - - if (setup->GetGeoTag(kTrd, geoTag)) { - TObjString* trdFile = - new TObjString(srcDir + "/parameters/trd/trd_" + geoTag + ".digi.par"); - parFileList->Add(trdFile); - std::cout << "-I- : Using parameter file " << trdFile->GetString() - << std::endl; - } - - // - TOF digitisation parameters - if (setup->GetGeoTag(kTof, geoTag)) { - TObjString* tofFile = - new TObjString(srcDir + "/parameters/tof/tof_" + geoTag + ".digi.par"); - parFileList->Add(tofFile); - std::cout << "-I- " << myName << ": Using parameter file " - << tofFile->GetString() << std::endl; - TObjString* tofBdfFile = new TObjString(srcDir + "/parameters/tof/tof_" - + geoTag + ".digibdf.par"); - parFileList->Add(tofBdfFile); - std::cout << "-I- " << myName << ": Using parameter file " - << tofBdfFile->GetString() << std::endl; - } - // ------------------------------------------------------------------------ - - // ----- MVD Digitiser ------------------------------------------------- - if (setup->IsActive(kMvd)) { - FairTask* mvdDigi = new CbmMvdDigitizer("MVD Digitiser", 0); - run->AddTask(mvdDigi); - std::cout << "-I- digitize: Added task " << mvdDigi->GetName() - << std::endl; - } - // ------------------------------------------------------------------------- - - - // ----- STS Digitiser ------------------------------------------------- - if (setup->IsActive(kSts)) { - - Double_t dynRange = 40960.; // Dynamic range [e] - Double_t threshold = 4000.; // Digitisation threshold [e] - Int_t nAdc = 4096; // Number of ADC channels (12 bit) - Double_t timeResolution = 5.; // time resolution [ns] - Double_t deadTime = - 9999999.; // infinite dead time (integrate entire event) - Double_t noise = 0.; // ENC [e] - Int_t digiModel = 1; // User sensor type DSSD - - // The following settings correspond to a validated implementation. - // Changing them is on your own risk. - Int_t eLossModel = 1; // Energy loss model: uniform - Bool_t useLorentzShift = kFALSE; // Deactivate Lorentz shift - Bool_t useDiffusion = kFALSE; // Deactivate diffusion - Bool_t useCrossTalk = kFALSE; // Deactivate cross talk - - CbmStsDigitize* stsDigi = new CbmStsDigitize(digiModel); - stsDigi->SetProcesses( - eLossModel, useLorentzShift, useDiffusion, useCrossTalk); - stsDigi->SetParameters( - dynRange, threshold, nAdc, timeResolution, deadTime, noise); - run->AddTask(stsDigi); - } - // ------------------------------------------------------------------------- - - // ----- MUCH Digitiser ------------------------------------------------ - if (setup->IsActive(kMuch)) { - - // --- Parameter file name - TString geoTag; - setup->GetGeoTag(kMuch, geoTag); - std::cout << geoTag(0, 4) << std::endl; - TString parFile = gSystem->Getenv("VMCWORKDIR"); - parFile = - parFile + "/parameters/much/much_" + geoTag(0, 4) + "_digi_sector.root"; - std::cout << "Using parameter file " << parFile << std::endl; - - // --- Digitiser for GEM - FairTask* gemDigi = new CbmMuchDigitizeGem(parFile.Data()); - run->AddTask(gemDigi); - std::cout << "-I- digitize: Added task " << gemDigi->GetName() - << std::endl; - - // --- Digitiser for Straws - FairTask* strawDigi = new CbmMuchDigitizeStraws(parFile.Data()); - run->AddTask(strawDigi); - std::cout << "-I- digitize: Added task " << strawDigi->GetName() - << std::endl; - } - // ------------------------------------------------------------------------- - - - // ----- TRD Digitiser ------------------------------------------------- - if (setup->IsActive(kTrd)) { - CbmTrdRadiator* radiator = new CbmTrdRadiator(kTRUE, "K++"); - FairTask* trdDigi = new CbmTrdDigitizerPRF(radiator); - run->AddTask(trdDigi); - std::cout << "-I- digitize: Added task " << trdDigi->GetName() - << std::endl; - } - // ------------------------------------------------------------------------- - - // ----- TOF Digitiser ------------------------------------------------- - if (setup->IsActive(kTof)) { - Int_t iVerbose = 0; - CbmTofDigitizerBDF* tofDigi = - new CbmTofDigitizerBDF("TOF Digitizer BDF", iVerbose); - tofDigi->SetOutputBranchPersistent("TofDigi", kFALSE); - tofDigi->SetOutputBranchPersistent("TofDigiMatchPoints", kFALSE); - TString paramDir = gSystem->Getenv("VMCWORKDIR"); - tofDigi->SetInputFileName( - paramDir - + "/parameters/tof/test_bdf_input.root"); // Required as input file name not read anymore by param class - run->AddTask(tofDigi); - - std::cout << "-I- digitize: Added task " << tofDigi->GetName() - << std::endl; - } - // ------------------------------------------------------------------------- - - // ----- Local reconstruction in MVD ---------------------------------- - if (setup->IsActive(kMvd)) { - - CbmMvdClusterfinder* mvdCluster = - new CbmMvdClusterfinder("MVD Cluster Finder", 0, 0); - run->AddTask(mvdCluster); - std::cout << "-I- : Added task " << mvdCluster->GetName() << std::endl; - - CbmMvdHitfinder* mvdHit = new CbmMvdHitfinder("MVD Hit Finder", 0, 0); - mvdHit->UseClusterfinder(kTRUE); - run->AddTask(mvdHit); - std::cout << "-I- : Added task " << mvdHit->GetName() << std::endl; - } - // ------------------------------------------------------------------------ - - - // ----- Local reconstruction in STS ---------------------------------- - if (setup->IsActive(kSts)) { - - FairTask* stsCluster = new CbmStsFindClusters(); - run->AddTask(stsCluster); - std::cout << "-I- : Added task " << stsCluster->GetName() << std::endl; - - FairTask* stsHit = new CbmStsFindHits(); - run->AddTask(stsHit); - std::cout << "-I- : Added task " << stsHit->GetName() << std::endl; - } - // ------------------------------------------------------------------------ - - // ----- Local reconstruction in MUCH --------------------------------- - if (setup->IsActive(kMuch)) { - - // --- Parameter file name - TString geoTag; - setup->GetGeoTag(kMuch, geoTag); - std::cout << geoTag(0, 4) << std::endl; - TString parFile = gSystem->Getenv("VMCWORKDIR"); - parFile = - parFile + "/parameters/much/much_" + geoTag(0, 4) + "_digi_sector.root"; - std::cout << "Using parameter file " << parFile << std::endl; - - // --- Hit finder for GEMs - FairTask* muchHitGem = new CbmMuchFindHitsGem(parFile.Data()); - run->AddTask(muchHitGem); - - // --- Hit finder for Straws - CbmMuchFindHitsStraws* strawFindHits = - new CbmMuchFindHitsStraws(parFile.Data()); - run->AddTask(strawFindHits); - } - - // ----- Local reconstruction in TRD ---------------------------------- - if (setup->IsActive(kTrd)) { - - Double_t triggerThreshold = 0.5e-6; // SIS100 - Bool_t triangularPads = false; // Bucharest triangular pad-plane layout - CbmTrdClusterFinderFast* trdCluster = new CbmTrdClusterFinderFast(); - trdCluster->SetNeighbourTrigger(true); - trdCluster->SetTriggerThreshold(triggerThreshold); - trdCluster->SetNeighbourRowTrigger(false); - trdCluster->SetPrimaryClusterRowMerger(true); - trdCluster->SetTriangularPads(triangularPads); - run->AddTask(trdCluster); - std::cout << "-I- : Added task " << trdCluster->GetName() << std::endl; - - CbmTrdHitProducerCluster* trdHit = new CbmTrdHitProducerCluster(); - trdHit->SetTriangularPads(triangularPads); - run->AddTask(trdHit); - std::cout << "-I- : Added task " << trdHit->GetName() << std::endl; - } - // ------------------------------------------------------------------------ - - // ----- Local reconstruction in TOF ---------------------------------- - if (setup->IsActive(kTof)) { - CbmTofSimpClusterizer* tofCluster = - new CbmTofSimpClusterizer("TOF Simple Clusterizer", 0); - tofCluster->SetOutputBranchPersistent("TofHit", kTRUE); - tofCluster->SetOutputBranchPersistent("TofDigiMatch", kTRUE); - run->AddTask(tofCluster); - std::cout << "-I- : Added task " << tofCluster->GetName() << std::endl; - } - // ------------------------------------------------------------------------- - } - - // ----- Track finding in (MVD+) STS ----------------------------------------- - CbmKF* kalman = new CbmKF(); - run->AddTask(kalman); - CbmL1* l1 = new CbmL1(); - // --- Material budget file names - if (setup->IsActive(kMvd)) { - TString geoTag; - setup->GetGeoTag(kMvd, geoTag); - TString parFile = gSystem->Getenv("VMCWORKDIR"); - parFile = parFile + "/parameters/mvd/mvd_matbudget_" + geoTag + ".root"; - std::cout << "Using material budget file " << parFile << std::endl; - l1->SetMvdMaterialBudgetFileName(parFile.Data()); - } - if (setup->IsActive(kSts)) { - TString geoTag; - setup->GetGeoTag(kSts, geoTag); - TString parFile = gSystem->Getenv("VMCWORKDIR"); - parFile = parFile + "/parameters/sts/sts_matbudget_" + geoTag + ".root"; - std::cout << "Using material budget file " << parFile << std::endl; - l1->SetStsMaterialBudgetFileName(parFile.Data()); - } - run->AddTask(l1); - std::cout << "-I- : Added task " << l1->GetName() << std::endl; - - CbmStsTrackFinder* stsTrackFinder = new CbmL1StsTrackFinder(); - FairTask* stsFindTracks = - new CbmStsFindTracks(0, stsTrackFinder, setup->IsActive(kMvd)); - run->AddTask(stsFindTracks); - std::cout << "-I- : Added task " << stsFindTracks->GetName() << std::endl; - // ------------------------------------------------------------------------- - - TString setupString(setupName); - - if (setupString.Contains("electron")) { - LxTBTrdFinder* lxTbFinder = new LxTBTrdFinder; - run->AddTask(lxTbFinder); - } else { - if (isML) { - LxTBMLFinder* lxTbFinder = new LxTBMLFinder; - lxTbFinder->SetEvByEv(isEvByEv); - run->AddTask(lxTbFinder); - } else { - LxTBFinder* lxTbFinder = new LxTBFinder; - lxTbFinder->SetEvByEv(isEvByEv); - lxTbFinder->SetSignalParticle(part.Data()); - lxTbFinder->SetUseIdeal(useIdeal); - lxTbFinder->SetUseAsciiSig(sigAscii); - lxTbFinder->SetNEvents(nEvents); - run->AddTask(lxTbFinder); - } - } - - - // ----- Parameter database -------------------------------------------- - FairRuntimeDb* rtdb = run->GetRuntimeDb(); - FairParRootFileIo* parIo1 = new FairParRootFileIo(); - parIo1->open(globalParFile.Data()); - rtdb->setFirstInput(parIo1); - rtdb->setOutput(parIo1); - - if (!useIdeal) { - FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); - parIo2->open(parFileList, "in"); - rtdb->setSecondInput(parIo2); - } - - rtdb->saveOutput(); - // ------------------------------------------------------------------------ - - // ----- Initialize and run -------------------------------------------- - run->Init(); - //run->Run(900, 1000); - run->Run(0, nEvents); - // ------------------------------------------------------------------------ - - // ----- Finish ------------------------------------------------------- - timer.Stop(); - cout << "Macro finished successfully." << endl; - cout << "Output file is " << inFile << endl; - cout << "Parameter file is " << globalParFile << endl; - cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() - << " s" << endl; - cout << endl; - // ------------------------------------------------------------------------ - - cout << " Test passed" << endl; - cout << " All ok " << endl; -} +void run_reco(int index = -1) { + Int_t nEvents = 1000; + const char* setupName = "sis100_muon_jpsi"; + //const char* setupName = "sis100_electron"; + TString system = "auau"; + TString beam = "8gev"; + TString trigger = "mbias"; + TString part = "omega"; + TString channel = "mpmm"; + //TString channel = "epem"; + + bool useSig = true; + bool useBg = false; + bool sigAscii = false; + bool useIdeal = false; + bool isEvByEv = true; + bool isML = true; + + if (!useSig && !useBg) { + cout << "At least one of the signal or background must be set!" << endl; + return; + } + + TString partDir = "charm"; + + if (part != "jpsi") partDir = "cktA"; + + char str[5]; + sprintf(str, "%05d", index); + + char str2[4]; + sprintf(str2, "%04d", index); + + TString suffix = ""; + + if (useBg) suffix += "." + trigger; + + if (useSig) { + if (sigAscii) + suffix += ".ascii"; + else + suffix += "." + part; + } + + TString inOutDir; + + if (index >= 0) + inOutDir = + "/lustre/nyx/cbm/users/tablyaz/Lx/runs/data" + TString(str) + "/"; + else + inOutDir = "/data.local/cbmrootdata/"; + + TString inFile = + inOutDir + setupName + ".mc." + system + "." + beam + suffix + ".root"; + TString globalParFile = + inOutDir + setupName + ".param." + system + "." + beam + suffix + ".root"; + TString outFile = + inOutDir + setupName + ".reco." + system + "." + beam + suffix + ".root"; + + TString myName = "run_reco_lx"; // this macro's name for screen output + TString srcDir = gSystem->Getenv("VMCWORKDIR"); + + Int_t iVerbose = 1; + TStopwatch timer; + timer.Start(); + + gROOT->LoadMacro("$VMCWORKDIR/macro/littrack/loadlibs.C"); + loadlibs(); + gSystem->Load("libLxTrack.so"); + gSystem->Load("libLittrack.so"); + + FairRunAna* run = new FairRunAna; + run->SetUseFairLinks(1); + run->SetInputFile(inFile); + run->SetOutputFile(outFile); + run->SetGenerateRunInfo(kTRUE); + + CbmMCDataManager* mcManager = new CbmMCDataManager; + mcManager->AddFile(inFile); + run->AddTask(mcManager); + + // ----- Load the geometry setup ------------------------------------- + std::cout << std::endl; + TString setupFile = srcDir + "/geometry/setup/setup_" + setupName + ".C"; + TString setupFunct = "setup_"; + setupFunct = setupFunct + setupName + "()"; + std::cout << "-I- : Loading macro " << setupFile << std::endl; + gROOT->LoadMacro(setupFile); + gROOT->ProcessLine(setupFunct); + CbmSetup* setup = CbmSetup::Instance(); + // ------------------------------------------------------------------------ + + //if (nofNoiseE > 0) + //{ + //LxGenNoiseElectrons* elGenerator = new LxGenNoiseElectrons; + //elGenerator->SetNofNoiseE(nofNoiseE); + //run->AddTask(elGenerator); + //} + + TList* parFileList = new TList(); + + if (useIdeal) { + TString muchDigiFileName = + srcDir + "/parameters/much/much_v15c_digi_sector.root"; + CbmMuchHitProducerIdeal* muchHPIdeal = + new CbmMuchHitProducerIdeal(muchDigiFileName.Data()); + run->AddTask(muchHPIdeal); + + CbmTrdHitProducerIdeal* trdHPIdeal = new CbmTrdHitProducerIdeal; + run->AddTask(trdHPIdeal); + } else { + TString geoTag; + + if (setup->GetGeoTag(kTrd, geoTag)) { + TObjString* trdFile = + new TObjString(srcDir + "/parameters/trd/trd_" + geoTag + ".digi.par"); + parFileList->Add(trdFile); + std::cout << "-I- : Using parameter file " << trdFile->GetString() + << std::endl; + } + + // - TOF digitisation parameters + if (setup->GetGeoTag(kTof, geoTag)) { + TObjString* tofFile = + new TObjString(srcDir + "/parameters/tof/tof_" + geoTag + ".digi.par"); + parFileList->Add(tofFile); + std::cout << "-I- " << myName << ": Using parameter file " + << tofFile->GetString() << std::endl; + TObjString* tofBdfFile = new TObjString(srcDir + "/parameters/tof/tof_" + + geoTag + ".digibdf.par"); + parFileList->Add(tofBdfFile); + std::cout << "-I- " << myName << ": Using parameter file " + << tofBdfFile->GetString() << std::endl; + } + // ------------------------------------------------------------------------ + + // ----- MVD Digitiser ------------------------------------------------- + if (setup->IsActive(kMvd)) { + FairTask* mvdDigi = new CbmMvdDigitizer("MVD Digitiser", 0); + run->AddTask(mvdDigi); + std::cout << "-I- digitize: Added task " << mvdDigi->GetName() + << std::endl; + } + // ------------------------------------------------------------------------- + + + // ----- STS Digitiser ------------------------------------------------- + if (setup->IsActive(kSts)) { + + Double_t dynRange = 40960.; // Dynamic range [e] + Double_t threshold = 4000.; // Digitisation threshold [e] + Int_t nAdc = 4096; // Number of ADC channels (12 bit) + Double_t timeResolution = 5.; // time resolution [ns] + Double_t deadTime = + 9999999.; // infinite dead time (integrate entire event) + Double_t noise = 0.; // ENC [e] + Int_t digiModel = 1; // User sensor type DSSD + + // The following settings correspond to a validated implementation. + // Changing them is on your own risk. + Int_t eLossModel = 1; // Energy loss model: uniform + Bool_t useLorentzShift = kFALSE; // Deactivate Lorentz shift + Bool_t useDiffusion = kFALSE; // Deactivate diffusion + Bool_t useCrossTalk = kFALSE; // Deactivate cross talk + + CbmStsDigitize* stsDigi = new CbmStsDigitize(digiModel); + stsDigi->SetProcesses( + eLossModel, useLorentzShift, useDiffusion, useCrossTalk); + stsDigi->SetParameters( + dynRange, threshold, nAdc, timeResolution, deadTime, noise); + run->AddTask(stsDigi); + } + // ------------------------------------------------------------------------- + + // ----- MUCH Digitiser ------------------------------------------------ + if (setup->IsActive(kMuch)) { + + // --- Parameter file name + TString geoTag; + setup->GetGeoTag(kMuch, geoTag); + std::cout << geoTag(0, 4) << std::endl; + TString parFile = gSystem->Getenv("VMCWORKDIR"); + parFile = + parFile + "/parameters/much/much_" + geoTag(0, 4) + "_digi_sector.root"; + std::cout << "Using parameter file " << parFile << std::endl; + + // --- Digitiser for GEM + FairTask* gemDigi = new CbmMuchDigitizeGem(parFile.Data()); + run->AddTask(gemDigi); + std::cout << "-I- digitize: Added task " << gemDigi->GetName() + << std::endl; + + // --- Digitiser for Straws + FairTask* strawDigi = new CbmMuchDigitizeStraws(parFile.Data()); + run->AddTask(strawDigi); + std::cout << "-I- digitize: Added task " << strawDigi->GetName() + << std::endl; + } + // ------------------------------------------------------------------------- + + + // ----- TRD Digitiser ------------------------------------------------- + if (setup->IsActive(kTrd)) { + CbmTrdRadiator* radiator = new CbmTrdRadiator(kTRUE, "K++"); + FairTask* trdDigi = new CbmTrdDigitizerPRF(radiator); + run->AddTask(trdDigi); + std::cout << "-I- digitize: Added task " << trdDigi->GetName() + << std::endl; + } + // ------------------------------------------------------------------------- + + // ----- TOF Digitiser ------------------------------------------------- + if (setup->IsActive(kTof)) { + Int_t iVerbose = 0; + CbmTofDigitizerBDF* tofDigi = + new CbmTofDigitizerBDF("TOF Digitizer BDF", iVerbose); + tofDigi->SetOutputBranchPersistent("TofDigi", kFALSE); + tofDigi->SetOutputBranchPersistent("TofDigiMatchPoints", kFALSE); + TString paramDir = gSystem->Getenv("VMCWORKDIR"); + tofDigi->SetInputFileName( + paramDir + + "/parameters/tof/test_bdf_input.root"); // Required as input file name not read anymore by param class + run->AddTask(tofDigi); + + std::cout << "-I- digitize: Added task " << tofDigi->GetName() + << std::endl; + } + // ------------------------------------------------------------------------- + + // ----- Local reconstruction in MVD ---------------------------------- + if (setup->IsActive(kMvd)) { + + CbmMvdClusterfinder* mvdCluster = + new CbmMvdClusterfinder("MVD Cluster Finder", 0, 0); + run->AddTask(mvdCluster); + std::cout << "-I- : Added task " << mvdCluster->GetName() << std::endl; + + CbmMvdHitfinder* mvdHit = new CbmMvdHitfinder("MVD Hit Finder", 0, 0); + mvdHit->UseClusterfinder(kTRUE); + run->AddTask(mvdHit); + std::cout << "-I- : Added task " << mvdHit->GetName() << std::endl; + } + // ------------------------------------------------------------------------ + + + // ----- Local reconstruction in STS ---------------------------------- + if (setup->IsActive(kSts)) { + + FairTask* stsCluster = new CbmStsFindClusters(); + run->AddTask(stsCluster); + std::cout << "-I- : Added task " << stsCluster->GetName() << std::endl; + + FairTask* stsHit = new CbmStsFindHits(); + run->AddTask(stsHit); + std::cout << "-I- : Added task " << stsHit->GetName() << std::endl; + } + // ------------------------------------------------------------------------ + + // ----- Local reconstruction in MUCH --------------------------------- + if (setup->IsActive(kMuch)) { + + // --- Parameter file name + TString geoTag; + setup->GetGeoTag(kMuch, geoTag); + std::cout << geoTag(0, 4) << std::endl; + TString parFile = gSystem->Getenv("VMCWORKDIR"); + parFile = + parFile + "/parameters/much/much_" + geoTag(0, 4) + "_digi_sector.root"; + std::cout << "Using parameter file " << parFile << std::endl; + + // --- Hit finder for GEMs + FairTask* muchHitGem = new CbmMuchFindHitsGem(parFile.Data()); + run->AddTask(muchHitGem); + + // --- Hit finder for Straws + CbmMuchFindHitsStraws* strawFindHits = + new CbmMuchFindHitsStraws(parFile.Data()); + run->AddTask(strawFindHits); + } + + // ----- Local reconstruction in TRD ---------------------------------- + if (setup->IsActive(kTrd)) { + + Double_t triggerThreshold = 0.5e-6; // SIS100 + Bool_t triangularPads = false; // Bucharest triangular pad-plane layout + CbmTrdClusterFinderFast* trdCluster = new CbmTrdClusterFinderFast(); + trdCluster->SetNeighbourTrigger(true); + trdCluster->SetTriggerThreshold(triggerThreshold); + trdCluster->SetNeighbourRowTrigger(false); + trdCluster->SetPrimaryClusterRowMerger(true); + trdCluster->SetTriangularPads(triangularPads); + run->AddTask(trdCluster); + std::cout << "-I- : Added task " << trdCluster->GetName() << std::endl; + + CbmTrdHitProducerCluster* trdHit = new CbmTrdHitProducerCluster(); + trdHit->SetTriangularPads(triangularPads); + run->AddTask(trdHit); + std::cout << "-I- : Added task " << trdHit->GetName() << std::endl; + } + // ------------------------------------------------------------------------ + + // ----- Local reconstruction in TOF ---------------------------------- + if (setup->IsActive(kTof)) { + CbmTofSimpClusterizer* tofCluster = + new CbmTofSimpClusterizer("TOF Simple Clusterizer", 0); + tofCluster->SetOutputBranchPersistent("TofHit", kTRUE); + tofCluster->SetOutputBranchPersistent("TofDigiMatch", kTRUE); + run->AddTask(tofCluster); + std::cout << "-I- : Added task " << tofCluster->GetName() << std::endl; + } + // ------------------------------------------------------------------------- + } + + // ----- Track finding in (MVD+) STS ----------------------------------------- + CbmKF* kalman = new CbmKF(); + run->AddTask(kalman); + CbmL1* l1 = new CbmL1(); + // --- Material budget file names + if (setup->IsActive(kMvd)) { + TString geoTag; + setup->GetGeoTag(kMvd, geoTag); + TString parFile = gSystem->Getenv("VMCWORKDIR"); + parFile = parFile + "/parameters/mvd/mvd_matbudget_" + geoTag + ".root"; + std::cout << "Using material budget file " << parFile << std::endl; + l1->SetMvdMaterialBudgetFileName(parFile.Data()); + } + if (setup->IsActive(kSts)) { + TString geoTag; + setup->GetGeoTag(kSts, geoTag); + TString parFile = gSystem->Getenv("VMCWORKDIR"); + parFile = parFile + "/parameters/sts/sts_matbudget_" + geoTag + ".root"; + std::cout << "Using material budget file " << parFile << std::endl; + l1->SetStsMaterialBudgetFileName(parFile.Data()); + } + run->AddTask(l1); + std::cout << "-I- : Added task " << l1->GetName() << std::endl; + + CbmStsTrackFinder* stsTrackFinder = new CbmL1StsTrackFinder(); + FairTask* stsFindTracks = + new CbmStsFindTracks(0, stsTrackFinder, setup->IsActive(kMvd)); + run->AddTask(stsFindTracks); + std::cout << "-I- : Added task " << stsFindTracks->GetName() << std::endl; + // ------------------------------------------------------------------------- + + TString setupString(setupName); + + if (setupString.Contains("electron")) { + LxTBTrdFinder* lxTbFinder = new LxTBTrdFinder; + run->AddTask(lxTbFinder); + } else { + if (isML) { + LxTBMLFinder* lxTbFinder = new LxTBMLFinder; + lxTbFinder->SetEvByEv(isEvByEv); + run->AddTask(lxTbFinder); + } else { + LxTBFinder* lxTbFinder = new LxTBFinder; + lxTbFinder->SetEvByEv(isEvByEv); + lxTbFinder->SetSignalParticle(part.Data()); + lxTbFinder->SetUseIdeal(useIdeal); + lxTbFinder->SetUseAsciiSig(sigAscii); + lxTbFinder->SetNEvents(nEvents); + run->AddTask(lxTbFinder); + } + } + + + // ----- Parameter database -------------------------------------------- + FairRuntimeDb* rtdb = run->GetRuntimeDb(); + FairParRootFileIo* parIo1 = new FairParRootFileIo(); + parIo1->open(globalParFile.Data()); + rtdb->setFirstInput(parIo1); + rtdb->setOutput(parIo1); + + if (!useIdeal) { + FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); + parIo2->open(parFileList, "in"); + rtdb->setSecondInput(parIo2); + } + + rtdb->saveOutput(); + // ------------------------------------------------------------------------ + + // ----- Initialize and run -------------------------------------------- + run->Init(); + //run->Run(900, 1000); + run->Run(0, nEvents); + // ------------------------------------------------------------------------ + + // ----- Finish ------------------------------------------------------- + timer.Stop(); + cout << "Macro finished successfully." << endl; + cout << "Output file is " << inFile << endl; + cout << "Parameter file is " << globalParFile << endl; + cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() + << " s" << endl; + cout << endl; + // ------------------------------------------------------------------------ + + cout << " Test passed" << endl; + cout << " All ok " << endl; +} diff --git a/macro/tracking/lx/run_stat.C b/macro/tracking/lx/run_stat.C index 266f6aa03e..32cfb0117d 100644 --- a/macro/tracking/lx/run_stat.C +++ b/macro/tracking/lx/run_stat.C @@ -1,214 +1,214 @@ -void run_stat(int index = -1) { - Int_t nEvents = 1000; - const char* setupName = "sis100_electron"; - //const char* setupName = "sis100_muon_jpsi"; - TString system = "auau"; - TString beam = "10gev"; - TString trigger = "mbias"; //"centr"; - TString part = "jpsi"; - TString channel = "epem"; - //TString channel = "mpmm"; - - bool useSig = true; - bool useBg = false; - bool sigAscii = false; - - if (!useSig && !useBg) { - cout << "At least one of the signal or background must be set!" << endl; - return; - } - - TString partDir = "charm"; - - if (part != "jpsi") partDir = "cktA"; - - char str[5]; - sprintf(str, "%05d", index); - - char str2[4]; - sprintf(str2, "%04d", index); - - TString suffix = ""; - - if (useBg) suffix += "." + trigger; - - if (useSig) { - if (sigAscii) - suffix += ".ascii"; - else - suffix += "." + part; - } - - TString inOutDir; - - if (index >= 0) - inOutDir = - "/lustre/nyx/cbm/users/tablyaz/Lx/runs/data" + TString(str) + "/"; - else - inOutDir = "/data.local/cbmrootdata/"; - - TString inFile = - inOutDir + setupName + ".mc." + system + "." + beam + suffix + ".root"; - TString globalParFile = - inOutDir + setupName + ".param." + system + "." + beam + suffix + ".root"; - TString outFile = - inOutDir + setupName + ".reco." + system + "." + beam + suffix + ".root"; - - TString srcDir = gSystem->Getenv("VMCWORKDIR"); - - Int_t iVerbose = 1; - TStopwatch timer; - timer.Start(); - - gROOT->LoadMacro("$VMCWORKDIR/macro/littrack/loadlibs.C"); - loadlibs(); - gSystem->Load("libLxTrack.so"); - - FairRunAna* run = new FairRunAna; - run->SetUseFairLinks(1); - run->SetInputFile(inFile); - run->SetOutputFile(outFile); - - CbmMCDataManager* mcManager = new CbmMCDataManager; - mcManager->AddFile(inFile); - run->AddTask(mcManager); - - // ----- Load the geometry setup ------------------------------------- - std::cout << std::endl; - TString setupFile = srcDir + "/geometry/setup/setup_" + setupName + ".C"; - TString setupFunct = "setup_"; - setupFunct = setupFunct + setupName + "()"; - std::cout << "-I- : Loading macro " << setupFile << std::endl; - gROOT->LoadMacro(setupFile); - gROOT->ProcessLine(setupFunct); - CbmSetup* setup = CbmSetup::Instance(); - // ------------------------------------------------------------------------ - - TList* parFileList = new TList(); - /*TString geoTag; - - if (setup->GetGeoTag(kTrd, geoTag)) - { - TObjString* trdFile = new TObjString(srcDir + "/parameters/trd/trd_" + geoTag + ".digi.par"); - parFileList->Add(trdFile); - std::cout << "-I- : Using parameter file " << trdFile->GetString() << std::endl; - } - - // ----- MUCH Digitiser ------------------------------------------------ - if (setup->IsActive(kMuch)) - { - // --- Parameter file name - TString geoTag; - setup->GetGeoTag(kMuch, geoTag); - std::cout << geoTag(0, 4) << std::endl; - TString parFile = gSystem->Getenv("VMCWORKDIR"); - parFile = parFile + "/parameters/much/much_" + geoTag(0, 4) - + "_digi_sector.root"; - std::cout << "Using parameter file " << parFile << std::endl; - - // --- Digitiser for GEM - FairTask* gemDigi = new CbmMuchDigitizeGem(parFile.Data()); - run->AddTask(gemDigi); - std::cout << "-I- digitize: Added task " << gemDigi->GetName() - << std::endl; - - // --- Digitiser for Straws - FairTask* strawDigi = new CbmMuchDigitizeStraws(parFile.Data()); - run->AddTask(strawDigi); - std::cout << "-I- digitize: Added task " << strawDigi->GetName() - << std::endl; - } - // ------------------------------------------------------------------------- - - - // ----- TRD Digitiser ------------------------------------------------- - if (setup->IsActive(kTrd)) - { - CbmTrdRadiator *radiator = new CbmTrdRadiator(kTRUE, "K++"); - FairTask* trdDigi = new CbmTrdDigitizerPRF(radiator); - run->AddTask(trdDigi); - std::cout << "-I- digitize: Added task " << trdDigi->GetName() - << std::endl; - } - // ------------------------------------------------------------------------- - - // ----- Local reconstruction in MUCH --------------------------------- - if (setup->IsActive(kMuch)) - { - // --- Parameter file name - TString geoTag; - setup->GetGeoTag(kMuch, geoTag); - std::cout << geoTag(0, 4) << std::endl; - TString parFile = gSystem->Getenv("VMCWORKDIR"); - parFile = parFile + "/parameters/much/much_" + geoTag(0, 4) - + "_digi_sector.root"; - std::cout << "Using parameter file " << parFile << std::endl; - - // --- Hit finder for GEMs - FairTask* muchHitGem = new CbmMuchFindHitsGem(parFile.Data()); - run->AddTask(muchHitGem); - - // --- Hit finder for Straws - CbmMuchFindHitsStraws* strawFindHits = - new CbmMuchFindHitsStraws(parFile.Data()); - run->AddTask(strawFindHits); - - } - - - - // ----- Local reconstruction in TRD ---------------------------------- - if (setup->IsActive(kTrd)) - { - - Double_t triggerThreshold = 0.5e-6; // SIS100 - Bool_t triangularPads = false; // Bucharest triangular pad-plane layout - CbmTrdClusterFinderFast* trdCluster = new CbmTrdClusterFinderFast(); - trdCluster->SetNeighbourTrigger(true); - trdCluster->SetTriggerThreshold(triggerThreshold); - trdCluster->SetNeighbourRowTrigger(false); - trdCluster->SetPrimaryClusterRowMerger(true); - trdCluster->SetTriangularPads(triangularPads); - run->AddTask(trdCluster); - std::cout << "-I- : Added task " << trdCluster->GetName() << std::endl; - - CbmTrdHitProducerCluster* trdHit = new CbmTrdHitProducerCluster(); - trdHit->SetTriangularPads(triangularPads); - run->AddTask(trdHit); - std::cout << "-I- : Added task " << trdHit->GetName() << std::endl; - - } - // ------------------------------------------------------------------------ - */ - - LxCalcStats* calcStats = new LxCalcStats; - run->AddTask(calcStats); - - - // ----- Parameter database -------------------------------------------- - FairRuntimeDb* rtdb = run->GetRuntimeDb(); - FairParRootFileIo* parIo1 = new FairParRootFileIo(); - parIo1->open(globalParFile.Data()); - rtdb->setFirstInput(parIo1); - rtdb->setOutput(parIo1); - rtdb->saveOutput(); - // ------------------------------------------------------------------------ - - // ----- Initialize and run -------------------------------------------- - run->Init(); - //run->Run(900, 1000); - run->Run(0, nEvents); - // ------------------------------------------------------------------------ - - // ----- Finish ------------------------------------------------------- - timer.Stop(); - cout << "Macro finished successfully." << endl; - cout << "Output file is " << inFile << endl; - cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() - << " s" << endl; - cout << endl; - // ------------------------------------------------------------------------ - - cout << " Test passed" << endl; - cout << " All ok " << endl; -} +void run_stat(int index = -1) { + Int_t nEvents = 1000; + const char* setupName = "sis100_electron"; + //const char* setupName = "sis100_muon_jpsi"; + TString system = "auau"; + TString beam = "10gev"; + TString trigger = "mbias"; //"centr"; + TString part = "jpsi"; + TString channel = "epem"; + //TString channel = "mpmm"; + + bool useSig = true; + bool useBg = false; + bool sigAscii = false; + + if (!useSig && !useBg) { + cout << "At least one of the signal or background must be set!" << endl; + return; + } + + TString partDir = "charm"; + + if (part != "jpsi") partDir = "cktA"; + + char str[5]; + sprintf(str, "%05d", index); + + char str2[4]; + sprintf(str2, "%04d", index); + + TString suffix = ""; + + if (useBg) suffix += "." + trigger; + + if (useSig) { + if (sigAscii) + suffix += ".ascii"; + else + suffix += "." + part; + } + + TString inOutDir; + + if (index >= 0) + inOutDir = + "/lustre/nyx/cbm/users/tablyaz/Lx/runs/data" + TString(str) + "/"; + else + inOutDir = "/data.local/cbmrootdata/"; + + TString inFile = + inOutDir + setupName + ".mc." + system + "." + beam + suffix + ".root"; + TString globalParFile = + inOutDir + setupName + ".param." + system + "." + beam + suffix + ".root"; + TString outFile = + inOutDir + setupName + ".reco." + system + "." + beam + suffix + ".root"; + + TString srcDir = gSystem->Getenv("VMCWORKDIR"); + + Int_t iVerbose = 1; + TStopwatch timer; + timer.Start(); + + gROOT->LoadMacro("$VMCWORKDIR/macro/littrack/loadlibs.C"); + loadlibs(); + gSystem->Load("libLxTrack.so"); + + FairRunAna* run = new FairRunAna; + run->SetUseFairLinks(1); + run->SetInputFile(inFile); + run->SetOutputFile(outFile); + + CbmMCDataManager* mcManager = new CbmMCDataManager; + mcManager->AddFile(inFile); + run->AddTask(mcManager); + + // ----- Load the geometry setup ------------------------------------- + std::cout << std::endl; + TString setupFile = srcDir + "/geometry/setup/setup_" + setupName + ".C"; + TString setupFunct = "setup_"; + setupFunct = setupFunct + setupName + "()"; + std::cout << "-I- : Loading macro " << setupFile << std::endl; + gROOT->LoadMacro(setupFile); + gROOT->ProcessLine(setupFunct); + CbmSetup* setup = CbmSetup::Instance(); + // ------------------------------------------------------------------------ + + TList* parFileList = new TList(); + /*TString geoTag; + + if (setup->GetGeoTag(kTrd, geoTag)) + { + TObjString* trdFile = new TObjString(srcDir + "/parameters/trd/trd_" + geoTag + ".digi.par"); + parFileList->Add(trdFile); + std::cout << "-I- : Using parameter file " << trdFile->GetString() << std::endl; + } + + // ----- MUCH Digitiser ------------------------------------------------ + if (setup->IsActive(kMuch)) + { + // --- Parameter file name + TString geoTag; + setup->GetGeoTag(kMuch, geoTag); + std::cout << geoTag(0, 4) << std::endl; + TString parFile = gSystem->Getenv("VMCWORKDIR"); + parFile = parFile + "/parameters/much/much_" + geoTag(0, 4) + + "_digi_sector.root"; + std::cout << "Using parameter file " << parFile << std::endl; + + // --- Digitiser for GEM + FairTask* gemDigi = new CbmMuchDigitizeGem(parFile.Data()); + run->AddTask(gemDigi); + std::cout << "-I- digitize: Added task " << gemDigi->GetName() + << std::endl; + + // --- Digitiser for Straws + FairTask* strawDigi = new CbmMuchDigitizeStraws(parFile.Data()); + run->AddTask(strawDigi); + std::cout << "-I- digitize: Added task " << strawDigi->GetName() + << std::endl; + } + // ------------------------------------------------------------------------- + + + // ----- TRD Digitiser ------------------------------------------------- + if (setup->IsActive(kTrd)) + { + CbmTrdRadiator *radiator = new CbmTrdRadiator(kTRUE, "K++"); + FairTask* trdDigi = new CbmTrdDigitizerPRF(radiator); + run->AddTask(trdDigi); + std::cout << "-I- digitize: Added task " << trdDigi->GetName() + << std::endl; + } + // ------------------------------------------------------------------------- + + // ----- Local reconstruction in MUCH --------------------------------- + if (setup->IsActive(kMuch)) + { + // --- Parameter file name + TString geoTag; + setup->GetGeoTag(kMuch, geoTag); + std::cout << geoTag(0, 4) << std::endl; + TString parFile = gSystem->Getenv("VMCWORKDIR"); + parFile = parFile + "/parameters/much/much_" + geoTag(0, 4) + + "_digi_sector.root"; + std::cout << "Using parameter file " << parFile << std::endl; + + // --- Hit finder for GEMs + FairTask* muchHitGem = new CbmMuchFindHitsGem(parFile.Data()); + run->AddTask(muchHitGem); + + // --- Hit finder for Straws + CbmMuchFindHitsStraws* strawFindHits = + new CbmMuchFindHitsStraws(parFile.Data()); + run->AddTask(strawFindHits); + + } + + + + // ----- Local reconstruction in TRD ---------------------------------- + if (setup->IsActive(kTrd)) + { + + Double_t triggerThreshold = 0.5e-6; // SIS100 + Bool_t triangularPads = false; // Bucharest triangular pad-plane layout + CbmTrdClusterFinderFast* trdCluster = new CbmTrdClusterFinderFast(); + trdCluster->SetNeighbourTrigger(true); + trdCluster->SetTriggerThreshold(triggerThreshold); + trdCluster->SetNeighbourRowTrigger(false); + trdCluster->SetPrimaryClusterRowMerger(true); + trdCluster->SetTriangularPads(triangularPads); + run->AddTask(trdCluster); + std::cout << "-I- : Added task " << trdCluster->GetName() << std::endl; + + CbmTrdHitProducerCluster* trdHit = new CbmTrdHitProducerCluster(); + trdHit->SetTriangularPads(triangularPads); + run->AddTask(trdHit); + std::cout << "-I- : Added task " << trdHit->GetName() << std::endl; + + } + // ------------------------------------------------------------------------ + */ + + LxCalcStats* calcStats = new LxCalcStats; + run->AddTask(calcStats); + + + // ----- Parameter database -------------------------------------------- + FairRuntimeDb* rtdb = run->GetRuntimeDb(); + FairParRootFileIo* parIo1 = new FairParRootFileIo(); + parIo1->open(globalParFile.Data()); + rtdb->setFirstInput(parIo1); + rtdb->setOutput(parIo1); + rtdb->saveOutput(); + // ------------------------------------------------------------------------ + + // ----- Initialize and run -------------------------------------------- + run->Init(); + //run->Run(900, 1000); + run->Run(0, nEvents); + // ------------------------------------------------------------------------ + + // ----- Finish ------------------------------------------------------- + timer.Stop(); + cout << "Macro finished successfully." << endl; + cout << "Output file is " << inFile << endl; + cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() + << " s" << endl; + cout << endl; + // ------------------------------------------------------------------------ + + cout << " Test passed" << endl; + cout << " All ok " << endl; +} diff --git a/macro/trd/elid/q-p1.5.dat b/macro/trd/elid/q-p1.5.dat index 16701c76f4..2c1c7a48b7 100644 --- a/macro/trd/elid/q-p1.5.dat +++ b/macro/trd/elid/q-p1.5.dat @@ -1,100 +1,100 @@ - 0.280000 0.055758 0.001324 0.004404 0.001221 - 0.840000 0.315158 0.003147 0.034556 0.003422 - 1.400000 0.387040 0.003488 0.102989 0.005907 - 1.960000 0.296959 0.003055 0.126027 0.006534 - 2.520000 0.207192 0.002552 0.111798 0.006154 - 3.080000 0.136033 0.002068 0.089099 0.005494 - 3.640000 0.087975 0.001663 0.081646 0.005259 - 4.200000 0.060787 0.001382 0.060642 0.004533 - 4.760000 0.042557 0.001157 0.057932 0.004430 - 5.320000 0.030991 0.000987 0.049123 0.004079 - 5.880000 0.023416 0.000858 0.047768 0.004023 - 6.440000 0.018418 0.000761 0.055560 0.004339 - 7.000000 0.014741 0.000681 0.055899 0.004352 - 7.559999 0.013767 0.000658 0.053866 0.004272 - 8.120000 0.010341 0.000570 0.046413 0.003965 - 8.680000 0.009492 0.000546 0.052511 0.004218 - 9.240001 0.007166 0.000475 0.054544 0.004299 - 9.800001 0.006569 0.000454 0.046074 0.003951 - 10.360002 0.005689 0.000423 0.039637 0.003664 - 10.920002 0.004212 0.000364 0.042348 0.003788 - 11.480002 0.004589 0.000380 0.043364 0.003833 - 12.040003 0.003992 0.000354 0.042348 0.003788 - 12.600003 0.003426 0.000328 0.036588 0.003521 - 13.160004 0.002923 0.000303 0.032184 0.003302 - 13.720004 0.002357 0.000272 0.033539 0.003371 - 14.280005 0.002232 0.000265 0.027780 0.003068 - 14.840005 0.002200 0.000263 0.029813 0.003178 - 15.400005 0.001980 0.000249 0.024392 0.002875 - 15.960006 0.001540 0.000220 0.015584 0.002298 - 16.520006 0.001414 0.000211 0.022021 0.002731 - 17.080006 0.001509 0.000218 0.018972 0.002535 - 17.640005 0.001414 0.000211 0.016939 0.002396 - 18.200005 0.001414 0.000211 0.016939 0.002396 - 18.760004 0.000849 0.000163 0.021343 0.002689 - 19.320004 0.001037 0.000181 0.015245 0.002273 - 19.880003 0.000817 0.000160 0.016939 0.002396 - 20.440002 0.000817 0.000160 0.010163 0.001856 - 21.000002 0.000911 0.000169 0.010163 0.001856 - 21.560001 0.001006 0.000178 0.010502 0.001886 - 22.120001 0.000849 0.000163 0.007453 0.001589 - 22.680000 0.000880 0.000166 0.007792 0.001625 - 23.240000 0.000503 0.000126 0.011857 0.002004 - 23.799999 0.000880 0.000166 0.005759 0.001397 - 24.359999 0.000471 0.000122 0.009486 0.001793 - 24.919998 0.000817 0.000160 0.005759 0.001397 - 25.479998 0.000471 0.000122 0.006776 0.001515 - 26.039997 0.000440 0.000118 0.004404 0.001221 - 26.599997 0.000566 0.000133 0.005759 0.001397 - 27.159996 0.000597 0.000137 0.004065 0.001174 - 27.719995 0.000251 0.000089 0.004065 0.001174 - 28.279995 0.000377 0.000109 0.005082 0.001312 - 28.839994 0.000346 0.000104 0.004065 0.001174 - 29.399994 0.000220 0.000083 0.003049 0.001016 - 29.959993 0.000251 0.000089 0.002371 0.000896 - 30.519993 0.000440 0.000118 0.003049 0.001016 - 31.079992 0.000189 0.000077 0.004404 0.001221 - 31.639992 0.000314 0.000099 0.002033 0.000830 - 32.199993 0.000220 0.000083 0.002371 0.000896 - 32.759995 0.000283 0.000094 0.003388 0.001071 - 33.319996 0.000346 0.000104 0.002710 0.000958 - 33.879997 0.000189 0.000077 0.001355 0.000678 - 34.439999 0.000189 0.000077 0.001016 0.000587 - 35.000000 0.000314 0.000099 0.000339 0.000339 - 35.560001 0.000220 0.000083 0.000339 0.000339 - 36.120003 0.000220 0.000083 0.001355 0.000678 - 36.680004 0.000189 0.000077 0.001355 0.000678 - 37.240005 0.000126 0.000063 0.001016 0.000587 - 37.800007 0.000283 0.000094 0.001694 0.000758 - 38.360008 0.000220 0.000083 0.000678 0.000479 - 38.920010 0.000220 0.000083 0.001016 0.000587 - 39.480011 0.000063 0.000044 0.000339 0.000339 - 40.040012 0.000189 0.000077 0.002371 0.000896 - 40.600014 0.000126 0.000063 0.001016 0.000587 - 41.160015 0.000126 0.000063 0.000000 0.000000 - 41.720016 0.000094 0.000054 0.000000 0.000000 - 42.280018 0.000189 0.000077 0.000339 0.000339 - 42.840019 0.000126 0.000063 0.001016 0.000587 - 43.400021 0.000157 0.000070 0.000339 0.000339 - 43.960022 0.000094 0.000054 0.000339 0.000339 - 44.520023 0.000126 0.000063 0.000678 0.000479 - 45.080025 0.000251 0.000089 0.001016 0.000587 - 45.640026 0.000126 0.000063 0.001016 0.000587 - 46.200027 0.000157 0.000070 0.000000 0.000000 - 46.760029 0.000094 0.000054 0.000000 0.000000 - 47.320030 0.000094 0.000054 0.000339 0.000339 - 47.880032 0.000189 0.000077 0.000000 0.000000 - 48.440033 0.000094 0.000054 0.000339 0.000339 - 49.000034 0.000000 0.000000 0.000339 0.000339 - 49.560036 0.000126 0.000063 0.000339 0.000339 - 50.120037 0.000031 0.000031 0.000339 0.000339 - 50.680038 0.000157 0.000070 0.000339 0.000339 - 51.240040 0.000126 0.000063 0.000339 0.000339 - 51.800041 0.000000 0.000000 0.000339 0.000339 - 52.360043 0.000031 0.000031 0.000000 0.000000 - 52.920044 0.000157 0.000070 0.000000 0.000000 - 53.480045 0.000063 0.000044 0.000339 0.000339 - 54.040047 0.000000 0.000000 0.000339 0.000339 - 54.600048 0.000063 0.000044 0.000000 0.000000 - 55.160049 0.000063 0.000044 0.000339 0.000339 + 0.280000 0.055758 0.001324 0.004404 0.001221 + 0.840000 0.315158 0.003147 0.034556 0.003422 + 1.400000 0.387040 0.003488 0.102989 0.005907 + 1.960000 0.296959 0.003055 0.126027 0.006534 + 2.520000 0.207192 0.002552 0.111798 0.006154 + 3.080000 0.136033 0.002068 0.089099 0.005494 + 3.640000 0.087975 0.001663 0.081646 0.005259 + 4.200000 0.060787 0.001382 0.060642 0.004533 + 4.760000 0.042557 0.001157 0.057932 0.004430 + 5.320000 0.030991 0.000987 0.049123 0.004079 + 5.880000 0.023416 0.000858 0.047768 0.004023 + 6.440000 0.018418 0.000761 0.055560 0.004339 + 7.000000 0.014741 0.000681 0.055899 0.004352 + 7.559999 0.013767 0.000658 0.053866 0.004272 + 8.120000 0.010341 0.000570 0.046413 0.003965 + 8.680000 0.009492 0.000546 0.052511 0.004218 + 9.240001 0.007166 0.000475 0.054544 0.004299 + 9.800001 0.006569 0.000454 0.046074 0.003951 + 10.360002 0.005689 0.000423 0.039637 0.003664 + 10.920002 0.004212 0.000364 0.042348 0.003788 + 11.480002 0.004589 0.000380 0.043364 0.003833 + 12.040003 0.003992 0.000354 0.042348 0.003788 + 12.600003 0.003426 0.000328 0.036588 0.003521 + 13.160004 0.002923 0.000303 0.032184 0.003302 + 13.720004 0.002357 0.000272 0.033539 0.003371 + 14.280005 0.002232 0.000265 0.027780 0.003068 + 14.840005 0.002200 0.000263 0.029813 0.003178 + 15.400005 0.001980 0.000249 0.024392 0.002875 + 15.960006 0.001540 0.000220 0.015584 0.002298 + 16.520006 0.001414 0.000211 0.022021 0.002731 + 17.080006 0.001509 0.000218 0.018972 0.002535 + 17.640005 0.001414 0.000211 0.016939 0.002396 + 18.200005 0.001414 0.000211 0.016939 0.002396 + 18.760004 0.000849 0.000163 0.021343 0.002689 + 19.320004 0.001037 0.000181 0.015245 0.002273 + 19.880003 0.000817 0.000160 0.016939 0.002396 + 20.440002 0.000817 0.000160 0.010163 0.001856 + 21.000002 0.000911 0.000169 0.010163 0.001856 + 21.560001 0.001006 0.000178 0.010502 0.001886 + 22.120001 0.000849 0.000163 0.007453 0.001589 + 22.680000 0.000880 0.000166 0.007792 0.001625 + 23.240000 0.000503 0.000126 0.011857 0.002004 + 23.799999 0.000880 0.000166 0.005759 0.001397 + 24.359999 0.000471 0.000122 0.009486 0.001793 + 24.919998 0.000817 0.000160 0.005759 0.001397 + 25.479998 0.000471 0.000122 0.006776 0.001515 + 26.039997 0.000440 0.000118 0.004404 0.001221 + 26.599997 0.000566 0.000133 0.005759 0.001397 + 27.159996 0.000597 0.000137 0.004065 0.001174 + 27.719995 0.000251 0.000089 0.004065 0.001174 + 28.279995 0.000377 0.000109 0.005082 0.001312 + 28.839994 0.000346 0.000104 0.004065 0.001174 + 29.399994 0.000220 0.000083 0.003049 0.001016 + 29.959993 0.000251 0.000089 0.002371 0.000896 + 30.519993 0.000440 0.000118 0.003049 0.001016 + 31.079992 0.000189 0.000077 0.004404 0.001221 + 31.639992 0.000314 0.000099 0.002033 0.000830 + 32.199993 0.000220 0.000083 0.002371 0.000896 + 32.759995 0.000283 0.000094 0.003388 0.001071 + 33.319996 0.000346 0.000104 0.002710 0.000958 + 33.879997 0.000189 0.000077 0.001355 0.000678 + 34.439999 0.000189 0.000077 0.001016 0.000587 + 35.000000 0.000314 0.000099 0.000339 0.000339 + 35.560001 0.000220 0.000083 0.000339 0.000339 + 36.120003 0.000220 0.000083 0.001355 0.000678 + 36.680004 0.000189 0.000077 0.001355 0.000678 + 37.240005 0.000126 0.000063 0.001016 0.000587 + 37.800007 0.000283 0.000094 0.001694 0.000758 + 38.360008 0.000220 0.000083 0.000678 0.000479 + 38.920010 0.000220 0.000083 0.001016 0.000587 + 39.480011 0.000063 0.000044 0.000339 0.000339 + 40.040012 0.000189 0.000077 0.002371 0.000896 + 40.600014 0.000126 0.000063 0.001016 0.000587 + 41.160015 0.000126 0.000063 0.000000 0.000000 + 41.720016 0.000094 0.000054 0.000000 0.000000 + 42.280018 0.000189 0.000077 0.000339 0.000339 + 42.840019 0.000126 0.000063 0.001016 0.000587 + 43.400021 0.000157 0.000070 0.000339 0.000339 + 43.960022 0.000094 0.000054 0.000339 0.000339 + 44.520023 0.000126 0.000063 0.000678 0.000479 + 45.080025 0.000251 0.000089 0.001016 0.000587 + 45.640026 0.000126 0.000063 0.001016 0.000587 + 46.200027 0.000157 0.000070 0.000000 0.000000 + 46.760029 0.000094 0.000054 0.000000 0.000000 + 47.320030 0.000094 0.000054 0.000339 0.000339 + 47.880032 0.000189 0.000077 0.000000 0.000000 + 48.440033 0.000094 0.000054 0.000339 0.000339 + 49.000034 0.000000 0.000000 0.000339 0.000339 + 49.560036 0.000126 0.000063 0.000339 0.000339 + 50.120037 0.000031 0.000031 0.000339 0.000339 + 50.680038 0.000157 0.000070 0.000339 0.000339 + 51.240040 0.000126 0.000063 0.000339 0.000339 + 51.800041 0.000000 0.000000 0.000339 0.000339 + 52.360043 0.000031 0.000031 0.000000 0.000000 + 52.920044 0.000157 0.000070 0.000000 0.000000 + 53.480045 0.000063 0.000044 0.000339 0.000339 + 54.040047 0.000000 0.000000 0.000339 0.000339 + 54.600048 0.000063 0.000044 0.000000 0.000000 + 55.160049 0.000063 0.000044 0.000339 0.000339 55.720001 0.000031 0.000031 0.000000 0.000000 \ No newline at end of file -- GitLab