diff --git a/NPLib/Physics/TInteractionCoordinates.cxx b/NPLib/Physics/TInteractionCoordinates.cxx index f9fafcc1c6b12686bd9dadad00bbfa27b97ab601..340696b472d4a82c4a3d4273f0c7cda2eb0985cf 100644 --- a/NPLib/Physics/TInteractionCoordinates.cxx +++ b/NPLib/Physics/TInteractionCoordinates.cxx @@ -57,14 +57,14 @@ void TInteractionCoordinates::Dump() const{ for(unsigned int i = 0 ; i < size ; i++){ cout << " Interaction " << i << " of " << size << endl; cout << "Energy And Time : " << endl; - cout << "Energy : " << fDetected_Energy[0] << endl; - cout << "Time : " << fDetected_Time[0] << endl; + cout << "Energy : " << fDetected_Energy[i] << endl; + cout << "Time : " << fDetected_Time[i] << endl; cout << "Interaction position : " << endl; - cout << "\tX : " << fDetected_Position_X[0] << endl; - cout << "\tY : " << fDetected_Position_Y[0] << endl; - cout << "\tZ : " << fDetected_Position_Z[0] << endl; + cout << "\tX : " << fDetected_Position_X[i] << endl; + cout << "\tY : " << fDetected_Position_Y[i] << endl; + cout << "\tZ : " << fDetected_Position_Z[i] << endl; cout << "Incident particle angles : " << endl; - cout << "\tTheta : " << fDetected_Angle_Theta[0] << endl; - cout << "\tPhi : " << fDetected_Angle_Phi[0] << endl; + cout << "\tTheta : " << fDetected_Angle_Theta[i] << endl; + cout << "\tPhi : " << fDetected_Angle_Phi[i] << endl; } } diff --git a/NPSimulation/Detectors/MUST2/MUST2Array.cc b/NPSimulation/Detectors/MUST2/MUST2Array.cc index 1fd12b6eb100b5c2f43280aefc162da4e5e3aeaa..0935d0d23dd352df9d450b4b7ca979107bf69836 100644 --- a/NPSimulation/Detectors/MUST2/MUST2Array.cc +++ b/NPSimulation/Detectors/MUST2/MUST2Array.cc @@ -719,7 +719,6 @@ void MUST2Array::InitializeRootOutput(){ // Read sensitive part and fill the Root tree. // Called at in the EventAction::EndOfEventAvtion void MUST2Array::ReadSensitive(const G4Event*){ - G4String DetectorNumber; m_Event->Clear(); ////////////////////////////////////////////////////////////////////////////////////// @@ -873,7 +872,7 @@ void MUST2Array::InitializeScorers() { bool already_exist = false; m_StripScorer = CheckScorer("MUST2_StripScorer",already_exist); m_SiLiScorer = CheckScorer("MUST2_SiLiScorer",already_exist); - m_CsIScorer = CheckScorer("MUST2_CsIScorer",already_exist); + m_CsIScorer = CheckScorer("MUST2_CsIScorer",already_exist); // if the scorer were created previously nothing else need to be made if(already_exist) return; diff --git a/NPSimulation/Detectors/Plastic/Plastic.cc b/NPSimulation/Detectors/Plastic/Plastic.cc index 7db84040408e48103f61adda9790e68768c32234..07d0d270be0b85c860a87853c8d29ccddd8fbe5a 100644 --- a/NPSimulation/Detectors/Plastic/Plastic.cc +++ b/NPSimulation/Detectors/Plastic/Plastic.cc @@ -348,18 +348,10 @@ void Plastic::ReadSensitive(const G4Event* event){ std::map<G4int, G4int*>::iterator DetectorNumber_itr; std::map<G4int, G4double*>::iterator Energy_itr; std::map<G4int, G4double*>::iterator Time_itr; - std::map<G4int, G4double*>::iterator Pos_X_itr; - std::map<G4int, G4double*>::iterator Pos_Y_itr; - std::map<G4int, G4double*>::iterator Pos_Z_itr; - std::map<G4int, G4double*>::iterator Angle_Theta_itr; NPS::HitsMap<G4int>* DetectorNumberHitMap; NPS::HitsMap<G4double>* EnergyHitMap; NPS::HitsMap<G4double>* TimeHitMap; - NPS::HitsMap<G4double>* PosXHitMap; - NPS::HitsMap<G4double>* PosYHitMap; - NPS::HitsMap<G4double>* PosZHitMap; - NPS::HitsMap<G4double>* AngleThetaHitMap; ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// @@ -385,38 +377,12 @@ void Plastic::ReadSensitive(const G4Event* event){ TimeHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID)) ; Time_itr = TimeHitMap->GetMap()->begin() ; - //Interaction Coordinate X - collectionName = "PlasticScorer/InterCoordX"; - G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName); - PosXHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID)); - Pos_X_itr = PosXHitMap->GetMap()->begin(); - - //Interaction Coordinate Y - collectionName = "PlasticScorer/InterCoordY"; - G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName); - PosYHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID)); - Pos_Y_itr = PosYHitMap->GetMap()->begin(); - - //Interaction Coordinate Z - collectionName = "PlasticScorer/InterCoordZ"; - G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName); - PosZHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID)); - Pos_Z_itr = PosZHitMap->GetMap()->begin(); - - //Interaction Coordinate Theta - collectionName = "PlasticScorer/InterCoordTheta"; - G4int InterCoordThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName); - AngleThetaHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordThetaCollectionID)); - Angle_Theta_itr = AngleThetaHitMap->GetMap()->begin(); - G4int sizeN = DetectorNumberHitMap->entries() ; G4int sizeE = EnergyHitMap->entries() ; G4int sizeT = TimeHitMap->entries() ; vector<double> energy; - vector<double> time; - vector<int> det; - - + vector<double> time; + vector<int> det; // Loop on Plastic Number for (G4int l = 0 ; l < sizeN ; l++) { @@ -441,56 +407,11 @@ void Plastic::ReadSensitive(const G4Event* event){ for (G4int h = 0 ; h < sizeT ; h++) { G4int TTrackID = Time_itr->first - N ; G4double T = *(Time_itr->second) ; - if (TTrackID == NTrackID) { + if (TTrackID == NTrackID) { time.push_back(RandGauss::shoot(T, ResoTime)) ; - } + } Time_itr++; } - - // Pos X - Pos_X_itr = PosXHitMap->GetMap()->begin(); - for (G4int h = 0 ; h < PosXHitMap->entries() ; h++) { - G4int PosXTrackID = Pos_X_itr->first - N ; - G4double PosX = *(Pos_X_itr->second) ; - if (PosXTrackID == NTrackID) { - ms_InterCoord->SetDetectedPositionX(PosX) ; - } - Pos_X_itr++; - } - - // Pos Y - Pos_Y_itr = PosYHitMap->GetMap()->begin(); - for (G4int h = 0 ; h < PosYHitMap->entries() ; h++) { - G4int PosYTrackID = Pos_Y_itr->first - N ; - G4double PosY = *(Pos_Y_itr->second) ; - if (PosYTrackID == NTrackID) { - ms_InterCoord->SetDetectedPositionY(PosY) ; - } - Pos_Y_itr++; - } - - // Pos Z - Pos_Z_itr = PosZHitMap->GetMap()->begin(); - for (G4int h = 0 ; h < PosZHitMap->entries() ; h++) { - G4int PosZTrackID = Pos_Z_itr->first - N ; - G4double PosZ = *(Pos_Z_itr->second) ; - if (PosZTrackID == NTrackID) { - ms_InterCoord->SetDetectedPositionZ(PosZ) ; - } - Pos_Z_itr++; - } - - // Angle Theta - Angle_Theta_itr = AngleThetaHitMap->GetMap()->begin(); - for (G4int h = 0 ; h < AngleThetaHitMap->entries() ; h++) { - G4int AngleThetaTrackID = Angle_Theta_itr->first - N ; - G4double Theta = *(Angle_Theta_itr->second) ; - if (AngleThetaTrackID == NTrackID) { - ms_InterCoord->SetDetectedAngleTheta(Theta) ; - } - Angle_Theta_itr++; - } - } DetectorNumber_itr++; } @@ -504,11 +425,6 @@ void Plastic::ReadSensitive(const G4Event* event){ TimeHitMap->clear() ; DetectorNumberHitMap->clear() ; EnergyHitMap->clear() ; - PosXHitMap->clear() ; - PosYHitMap->clear() ; - PosZHitMap->clear() ; - AngleThetaHitMap->clear(); - } @@ -522,18 +438,10 @@ void Plastic::InitializeScorers() { G4VPrimitiveScorer* DetNbr = new PSDetectorNumber("PlasticNumber","Plastic", 0) ; G4VPrimitiveScorer* Energy = new PSEnergy("Energy","Plastic", 0) ; G4VPrimitiveScorer* Time = new PSTOF("Time","Plastic", 0) ; - G4VPrimitiveScorer* InteractionCoordinatesX = new OBSOLETEGENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","Plastic", 0); - G4VPrimitiveScorer* InteractionCoordinatesY = new OBSOLETEGENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","Plastic", 0); - G4VPrimitiveScorer* InteractionCoordinatesZ = new OBSOLETEGENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","Plastic", 0); - G4VPrimitiveScorer* InteractionCoordinatesTheta = new OBSOLETEGENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordTheta","Plastic", 0); //and register it to the multifunctionnal detector m_PlasticScorer->RegisterPrimitive(DetNbr) ; m_PlasticScorer->RegisterPrimitive(Energy) ; m_PlasticScorer->RegisterPrimitive(Time) ; - m_PlasticScorer->RegisterPrimitive(InteractionCoordinatesX); - m_PlasticScorer->RegisterPrimitive(InteractionCoordinatesY); - m_PlasticScorer->RegisterPrimitive(InteractionCoordinatesZ); - m_PlasticScorer->RegisterPrimitive(InteractionCoordinatesTheta); G4SDManager::GetSDMpointer()->AddNewDetector(m_PlasticScorer) ; } diff --git a/NPSimulation/Scorers/CalorimeterScorers.cc b/NPSimulation/Scorers/CalorimeterScorers.cc index f02767659316c997393d71521dc731885870f612..621b3738dd3eb3511c5d5687e7d0b9d78421405c 100644 --- a/NPSimulation/Scorers/CalorimeterScorers.cc +++ b/NPSimulation/Scorers/CalorimeterScorers.cc @@ -45,8 +45,6 @@ vector<CalorimeterData>::iterator CalorimeterDataVector::find(const unsigned int return m_Data.end(); } - - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... PS_Calorimeter::PS_Calorimeter(G4String name, vector<G4int> NestingLevel,G4int depth) :G4VPrimitiveScorer(name, depth){ @@ -68,7 +66,6 @@ G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){ t_Level.push_back(aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i])); } - // Check if the particle has interact before, if yes, add up the energies. vector<CalorimeterData>::iterator it; it = m_Data.find(CalorimeterData::CalculateIndex(t_Level)); @@ -83,8 +80,8 @@ G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){ } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void PS_Calorimeter::Initialize(G4HCofThisEvent* HCE){ - m_Data.clear(); +void PS_Calorimeter::Initialize(G4HCofThisEvent*){ + clear(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -94,6 +91,7 @@ void PS_Calorimeter::EndOfEvent(G4HCofThisEvent*){ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void PS_Calorimeter::clear(){ m_Data.clear(); + t_Level.clear(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/NPSimulation/Scorers/DSSDScorers.cc b/NPSimulation/Scorers/DSSDScorers.cc index dec8a8e7c7e670ee6e22ae3e9fe80e2aab3f57f7..ecaffbfc06d0017703a710b70d7926808b2d2223 100644 --- a/NPSimulation/Scorers/DSSDScorers.cc +++ b/NPSimulation/Scorers/DSSDScorers.cc @@ -395,10 +395,8 @@ G4bool PS_Resistive::ProcessHits(G4Step* aStep, G4TouchableHistory*){ } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void PS_Resistive::Initialize(G4HCofThisEvent* HCE){ - m_HitUp.clear(); - m_HitDown.clear(); - m_HitBack.clear(); +void PS_Resistive::Initialize(G4HCofThisEvent* ){ + clear(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/NPSimulation/Scorers/InteractionScorers.cc b/NPSimulation/Scorers/InteractionScorers.cc index ee474ca5047124a1de06942512390bf3261960bb..8813c72c1413c6e4e0e12847a675ec90cb752255 100644 --- a/NPSimulation/Scorers/InteractionScorers.cc +++ b/NPSimulation/Scorers/InteractionScorers.cc @@ -60,7 +60,8 @@ G4bool PS_Interactions::ProcessHits(G4Step* aStep, G4TouchableHistory*){ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void PS_Interactions::Initialize(G4HCofThisEvent*){ - // Clear is called by EventAction + // Clear is called by EventAction + } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -70,7 +71,7 @@ void PS_Interactions::EndOfEvent(G4HCofThisEvent*){ for(unsigned int i = 0 ; i < size ; i++) m_InterractionCoordinates->SetInteraction(m_DataVector[i]->GetEnergy(),m_DataVector[i]->GetTime(),m_DataVector[i]->GetPositionX(),m_DataVector[i]->GetPositionY(),m_DataVector[i]->GetPositionZ(),m_DataVector[i]->GetTheta()/deg,m_DataVector[i]->GetPhi()/deg); - m_DataVector.clear(); + clear(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/Projects/e748/Analysis.cxx b/Projects/e748/Analysis.cxx index 376c1dd901c721db230647806bffb4ec1d9645ff..f479a3ece801f9e46a80a0a6fd8e741242028636 100644 --- a/Projects/e748/Analysis.cxx +++ b/Projects/e748/Analysis.cxx @@ -22,6 +22,7 @@ #include<iostream> using namespace std; #include"Analysis.h" +#include"NPFunction.h" #include"NPAnalysisFactory.h" #include"NPDetectorManager.h" #include"NPOptionManager.h" @@ -59,14 +60,16 @@ void Analysis::Init(){ ZTarget = 0; TimeCorr=0; TargetThickness = m_DetectorManager->GetTargetThickness(); - // Energy loss table: the G4Table are generated by the simulation - He3CD2 = EnergyLoss("Example/He3_CD2.G4table","G4Table",10 ); - He3Al = EnergyLoss("Example/He3_Al.G4table","G4Table",10); - He3Si = EnergyLoss("Example/He3_Si.G4table","G4Table",10); - BeamCD2 = EnergyLoss("Be12_CD2.G4table","G4Table",10); - BeamMylar = EnergyLoss("Be12_Mylar.G4table","G4Table",10); - BeamIsobutane = EnergyLoss("Be12_iC4H10.G4table","G4Table",10); - + string TargetMaterial = m_DetectorManager->GetTargetMaterial(); + // energy losses + string light=NPL::ChangeNameToG4Standard(myReaction->GetNucleus3()->GetName()); + string beam=NPL::ChangeNameToG4Standard(myReaction->GetNucleus1()->GetName()); + LightTarget = NPL::EnergyLoss(light+"_"+TargetMaterial+".G4table","G4Table",10 ); + LightAl = NPL::EnergyLoss(light+"_Al.G4table","G4Table",10); + LightSi = NPL::EnergyLoss(light+"_Si.G4table","G4Table",10); + BeamTarget = NPL::EnergyLoss(beam+"_"+TargetMaterial+".G4table","G4Table",10); + BeamMylar= NPL::EnergyLoss(beam+"_Mylar.G4table","G4Table",10); + BeamIsobutane = EnergyLoss(beam+"_iC4H10.G4table","G4Table",10); } //////////////////////////////////////////////////////////////////////////////// @@ -82,7 +85,7 @@ void Analysis::TreatEvent(){ filename = filename.substr(0,minor_pos); size_t major_pos = filename.rfind("_"); run_major = atoi(filename.substr(major_pos+1,4).c_str()); - // Get the Init information on beam position and energy + // Get the Init information on beam position and energy // and apply by hand the experimental resolution // This is because the beam diagnosis are not simulated // PPAC position resolution on target is assumed to be 1mm @@ -93,127 +96,133 @@ void Analysis::TreatEvent(){ // Beam energy is measured using F3 and F2 plastic TOF //double BeamEnergy= myReaction-> GetBeamEnergy()* MeV; //////////////////////////// LOOP on MUST2 Hit ////////////////// - for(unsigned int countMust2 = 0 ; countMust2 < M2->Si_E.size() ; countMust2++){ + for(unsigned int countMust2 = 0 ; countMust2 < M2->Si_E.size() ; countMust2++){ /* //Part 0 : Get the usefull Data */ - // MUST2 */ - int X = M2->Si_X[countMust2]; - int Y = M2->Si_Y[countMust2]; - int TelescopeNumber = M2->TelescopeNumber[countMust2]; - Si_X_M2 = X ; - Si_Y_M2 = Y ; - - if(TelescopeNumber<9){ - DetectorNumber = TelescopeNumber ; + // MUST2 */ + int X = M2->Si_X[countMust2]; + int Y = M2->Si_Y[countMust2]; + int TelescopeNumber = M2->TelescopeNumber[countMust2]; + Si_X_M2 = X ; + Si_Y_M2 = Y ; + + if(TelescopeNumber<9){ + DetectorNumber = TelescopeNumber ; + + /* // Part 1 : Impact Angle */ + ThetaM2Surface = 0; + ThetaNormalTarget = 0; + if(XTarget>-1000 && YTarget>-1000){ + TVector3 BeamImpact(XTarget,YTarget,0); + TVector3 HitDirection = M2 -> GetPositionOfInteraction(countMust2) - BeamImpact ; + ThetaLab = HitDirection.Angle( BeamDirection ); + + ThetaM2Surface = HitDirection.Angle(- M2 -> GetTelescopeNormal(countMust2) ); + ThetaNormalTarget = HitDirection.Angle( TVector3(0,0,1) ) ; + X_M2 = M2 -> GetPositionOfInteraction(countMust2).X() ; + Y_M2 = M2 -> GetPositionOfInteraction(countMust2).Y() ; + Z_M2 = M2 -> GetPositionOfInteraction(countMust2).Z() ; + + // Beam Energy from Cav Time of Flight // + + // Beam speed from Beam Energy + + // double BeamSpeed = 10.8727 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.276825; // mm/ns + //double BeamSpeed = 5.17952 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.305315; // mm/ns + //double BeamSpeed = 11.0476 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.278917; // mm/ns + //double BeamSpeed = 7.20255 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.293392; // mm/ns + + double BeamSpeed = 20.0747+ ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.237811; // mm/ns + + // Beam Energy before CATS1 + static double c2 = 299.792458*299.792458;// mm/ns + double gamma = 1./sqrt(1-BeamSpeed*BeamSpeed/c2); + BeamEnergy= 11200.962140*(gamma-1); + double BeamAngle= BeamDirection.Angle(TVector3(0,0,1)); + double gammaCav = (BeamEnergy+11200.962140) / 11200.962140 ; + double BeamSpeedCav = sqrt(c2*(1-1/(gammaCav*gammaCav))); - /* // Part 1 : Impact Angle */ - ThetaM2Surface = 0; - ThetaNormalTarget = 0; - if(XTarget>-1000 && YTarget>-1000){ - TVector3 BeamImpact(XTarget,YTarget,0); - TVector3 HitDirection = M2 -> GetPositionOfInteraction(countMust2) - BeamImpact ; - ThetaLab = HitDirection.Angle( BeamDirection ); - - ThetaM2Surface = HitDirection.Angle(- M2 -> GetTelescopeNormal(countMust2) ); - ThetaNormalTarget = HitDirection.Angle( TVector3(0,0,1) ) ; - X_M2 = M2 -> GetPositionOfInteraction(countMust2).X() ; - Y_M2 = M2 -> GetPositionOfInteraction(countMust2).Y() ; - Z_M2 = M2 -> GetPositionOfInteraction(countMust2).Z() ; - - // Beam Energy from Cav Time of Flight // - - // Beam speed from Beam Energy - - // double BeamSpeed = 10.8727 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.276825; // mm/ns - //double BeamSpeed = 5.17952 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.305315; // mm/ns - double BeamSpeed = 11.0476 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.278917; // mm/ns - - // Beam Energy before CATS1 - static double c2 = 299.792458*299.792458;// mm/ns - double gamma = 1./sqrt(1-BeamSpeed*BeamSpeed/c2); - BeamEnergy= 11200.962140*(gamma-1); - double BeamAngle= BeamDirection.Angle(TVector3(0,0,1)); - - // Beam Energy and speed after CATS1 - double BeamEnergyC1 = BeamMylar.Slow(BeamEnergy,1.2*micrometer,BeamAngle); - BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3.,BeamAngle); - BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,0.9*micrometer,BeamAngle); - BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3,BeamAngle); - BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,0.9*micrometer,BeamAngle); - BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3.,BeamAngle); - BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,1.2*micrometer,BeamAngle); - - double gammaC1 = (BeamEnergyC1+11200.962140) / 11200.962140 ; - double BeamSpeedC1 = sqrt(c2*(1-1/(gammaC1*gammaC1))); - TVector3 C1toC2 = TVector3(CATS->PositionX[1],CATS->PositionY[1],CATS->PositionZ[1]) - - TVector3(CATS->PositionX[0],CATS->PositionY[0],CATS->PositionZ[0]) ; - TimeCorr = C1toC2.Mag()/BeamSpeedC1; - - // Beam Energy and speed after CATS2 - double BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC1,1.2*micrometer,BeamAngle); - BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3.,BeamAngle); - BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,0.9*micrometer,BeamAngle); - BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3,BeamAngle); - BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,0.9*micrometer,BeamAngle); - BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3.,BeamAngle); - BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,1.2*micrometer,BeamAngle); - - double gammaC2 = (BeamEnergyC2+11200.962140) / 11200.962140; - double BeamSpeedC2 = sqrt(c2*(1-1/(gammaC2*gammaC2))); - TVector3 C2toTarget = BeamImpact-TVector3(CATS->PositionX[1],CATS->PositionY[1],CATS->PositionZ[1]); - TimeCorr += C2toTarget.Mag()/BeamSpeedC2; - - // slow down beam inside the target - BeamEnergy = BeamCD2.Slow(BeamEnergyC2,TargetThickness*0.5,BeamDirection.Angle(TVector3(0,0,1))); - myReaction->SetBeamEnergy(BeamEnergy); - - } - - - else{ - BeamDirection = TVector3(-1000,-1000,-1000); - ThetaM2Surface = -1000 ; - ThetaNormalTarget = -1000 ; - } - -/* // Part 2 : Impact Energy */ - Energy = ELab = E_M2 = 0; - Si_E_M2 = M2->Si_E[countMust2]; - CsI_E_M2= M2->CsI_E[countMust2]; - -/* // if CsI */ -/* /1* if(CsI_E_M2>0 ){ *1/ */ -/* /1* // The energy in CsI is calculate form dE/dx Table because *1/ */ -/* /1* // 20um resolution is poor *1/ */ -/* /1* Energy = *1/ */ -/* /1* He3Si.EvaluateEnergyFromDeltaE(Si_E_M2,300*micrometer, *1/ */ -/* /1* ThetaM2Surface, 0.01*MeV, *1/ */ -/* /1* 450.*MeV,0.001*MeV ,1000); *1/ */ -/* /1* E_M2=CsI_E_M2; *1/ */ -/* /1* } *1/ */ - -/* /1* else *1/ */ - - - - - Energy = Si_E_M2; - - E_M2 += Si_E_M2; - -/* // Evaluate energy using the thickness */ - ELab = He3Al.EvaluateInitialEnergy( Energy,0.4*micrometer , ThetaM2Surface); -/* // Target Correction */ - ELab = He3CD2.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget); - -/* // Part 3 : Excitation Energy Calculation */ - Ex = myReaction -> ReconstructRelativistic( ELab , ThetaLab ); - - -/* // Part 4 : Theta CM Calculation */ - ThetaCM = myReaction -> EnergyLabToThetaCM( ELab , ThetaLab)/deg; - ThetaLab=ThetaLab/deg; - - } + // Beam Energy and speed after CATS1 + double BeamEnergyC1 = BeamMylar.Slow(BeamEnergy,1.2*micrometer,BeamAngle); + BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3.,BeamAngle); + BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,0.9*micrometer,BeamAngle); + BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3,BeamAngle); + BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,0.9*micrometer,BeamAngle); + BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3.,BeamAngle); + BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,1.2*micrometer,BeamAngle); + double gammaC1 = (BeamEnergyC1+11200.962140) / 11200.962140 ; + double BeamSpeedC1 = sqrt(c2*(1-1/(gammaC1*gammaC1))); + TVector3 C1toC2 = TVector3(CATS->PositionX[1],CATS->PositionY[1],CATS->PositionZ[1]) + - TVector3(CATS->PositionX[0],CATS->PositionY[0],CATS->PositionZ[0]) ; + TimeCorr = C1toC2.Mag()/BeamSpeedC1; + + // Beam Energy and speed after CATS2 + double BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC1,1.2*micrometer,BeamAngle); + BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3.,BeamAngle); + BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,0.9*micrometer,BeamAngle); + BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3,BeamAngle); + BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,0.9*micrometer,BeamAngle); + BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3.,BeamAngle); + BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,1.2*micrometer,BeamAngle); + + double gammaC2 = (BeamEnergyC2+11200.962140) / 11200.962140; + double BeamSpeedC2 = sqrt(c2*(1-1/(gammaC2*gammaC2))); + TVector3 C2toTarget = BeamImpact-TVector3(CATS->PositionX[1],CATS->PositionY[1],CATS->PositionZ[1]); + TimeCorr += C2toTarget.Mag()/BeamSpeedC2; + // slow down beam inside the target + BeamEnergy = BeamTarget.Slow(BeamEnergyC2,TargetThickness*0.5,BeamDirection.Angle(TVector3(0,0,1))); + myReaction->SetBeamEnergy(BeamEnergy); + + + ParticleLength=HitDirection.Mag(); + + } + + + else{ + BeamDirection = TVector3(-1000,-1000,-1000); + ThetaM2Surface = -1000 ; + ThetaNormalTarget = -1000 ; + } + + /* // Part 2 : Impact Energy */ + Energy = ELab = E_M2 = 0; + Si_E_M2 = M2->Si_E[countMust2]; + CsI_E_M2= M2->CsI_E[countMust2]; + + /* // if CsI */ + /* /1* if(CsI_E_M2>0 ){ *1/ */ + /* /1* // The energy in CsI is calculate form dE/dx Table because *1/ */ + /* /1* // 20um resolution is poor *1/ */ + /* /1* Energy = *1/ */ + /* /1* LightSi.EvaluateEnergyFromDeltaE(Si_E_M2,300*micrometer, *1/ */ + /* /1* ThetaM2Surface, 0.01*MeV, *1/ */ + /* /1* 450.*MeV,0.001*MeV ,1000); *1/ */ + /* /1* E_M2=CsI_E_M2; *1/ */ + /* /1* } *1/ */ + + /* /1* else *1/ */ + + + + + Energy = Si_E_M2; + + E_M2 += Si_E_M2; + + /* // Evaluate energy using the thickness */ + ELab = LightAl.EvaluateInitialEnergy( Energy,0.4*micrometer , ThetaM2Surface); + /* // Target Correction */ + ELab = LightTarget.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget); + + /* // Part 3 : Excitation Energy Calculation */ + Ex = myReaction -> ReconstructRelativistic( ELab , ThetaLab ); + + + /* // Part 4 : Theta CM Calculation */ + ThetaCM = myReaction -> EnergyLabToThetaCM( ELab , ThetaLab)/deg; + ThetaLab=ThetaLab/deg; + + } }//end loop MUST2 } @@ -240,35 +249,35 @@ void Analysis::InitOutputBranch() { RootOutput::getInstance()->GetTree()->Branch("RunMajor",&run_major,"RunMajor/I"); RootOutput::getInstance()->GetTree()->Branch("RunMinor",&run_minor,"RunMinor/I"); -/* RootOutput::getInstance()->GetTree()->Branch("ADC_CHIO_V15",&vADC_CHIO_V15,"ADC_CHIO_V15/s"); - RootOutput::getInstance()->GetTree()->Branch("ADC_VOIE_29",&vADC_VOIE_29,"ADC_VOIE_29/s"); - RootOutput::getInstance()->GetTree()->Branch("CHIO",&vCHIO,"CHIO/s"); - RootOutput::getInstance()->GetTree()->Branch("CONFDEC",&vCONFDEC,"CONFDEC/s"); - RootOutput::getInstance()->GetTree()->Branch("CONFDEC_AGAVA",&vCONFDEC_AGAVA,"CONFDEC_AGAVA/s"); - RootOutput::getInstance()->GetTree()->Branch("DATATRIG",&vDATATRIG,"DATATRIG/s"); - RootOutput::getInstance()->GetTree()->Branch("DATATRIG_CHIO",&vDATATRIG_CHIO,"DATATRIG_CHIO/s"); - RootOutput::getInstance()->GetTree()->Branch("E1D6",&vE1D6,"E1D6/s"); - RootOutput::getInstance()->GetTree()->Branch("E2D6",&vE2D6,"E2D6/s"); - RootOutput::getInstance()->GetTree()->Branch("ED4",&vED4,"ED4/s"); - RootOutput::getInstance()->GetTree()->Branch("EXL_HF",&vEXL_HF,"EXL_HF/s"); - RootOutput::getInstance()->GetTree()->Branch("GALD4X",&vGALD4X,"GALD4X/s"); - RootOutput::getInstance()->GetTree()->Branch("GALD4Y",&vGALD4Y,"GALD4Y/s"); - RootOutput::getInstance()->GetTree()->Branch("QCaviar",&vQCaviar,"QCaviar/s"); - RootOutput::getInstance()->GetTree()->Branch("QPlast",&vQPlast,"QPlast/s"); - RootOutput::getInstance()->GetTree()->Branch("TCAVHF",&vTCAVHF,"TCAVHF/s"); - RootOutput::getInstance()->GetTree()->Branch("TE1D6CAV",&vTE1D6CAV,"TE1D6CAV/s"); - RootOutput::getInstance()->GetTree()->Branch("TE1D6GAL",&vTE1D6GAL,"TE1D6GAL/s"); - RootOutput::getInstance()->GetTree()->Branch("TE1D6HF",&vTE1D6HF,"TE1D6HF/s"); - RootOutput::getInstance()->GetTree()->Branch("TED4HF",&vTED4HF,"TED4HF/s"); - RootOutput::getInstance()->GetTree()->Branch("TGALD4HF",&vTGALD4HF,"TGALD4HF/s"); - RootOutput::getInstance()->GetTree()->Branch("T_CATS1_2",&vT_CATS1_2,"T_CATS1_2/s"); - RootOutput::getInstance()->GetTree()->Branch("T_CATS1_CAV",&vT_CATS1_CAV,"T_CATS1_CAV/s"); - RootOutput::getInstance()->GetTree()->Branch("T_MUVI_CATS1",&vT_MUVI_CATS1,"T_MUVI_CATS1/s"); - RootOutput::getInstance()->GetTree()->Branch("T_PL_CATS1",&vT_PL_CATS1,"T_PL_CATS1/s"); - RootOutput::getInstance()->GetTree()->Branch("T_PL_CATS2",&vT_PL_CATS2,"T_PL_CATS2/s"); - RootOutput::getInstance()->GetTree()->Branch("T_PL_CHIO",&vT_PL_CHIO,"T_PL_CHIO/s"); - RootOutput::getInstance()->GetTree()->Branch("T_PLchCATS1",&vT_PLchCATS1,"T_PLchCATS1/s"); -*/ + /* RootOutput::getInstance()->GetTree()->Branch("ADC_CHIO_V15",&vADC_CHIO_V15,"ADC_CHIO_V15/s"); + RootOutput::getInstance()->GetTree()->Branch("ADC_VOIE_29",&vADC_VOIE_29,"ADC_VOIE_29/s"); + RootOutput::getInstance()->GetTree()->Branch("CHIO",&vCHIO,"CHIO/s"); + RootOutput::getInstance()->GetTree()->Branch("CONFDEC",&vCONFDEC,"CONFDEC/s"); + RootOutput::getInstance()->GetTree()->Branch("CONFDEC_AGAVA",&vCONFDEC_AGAVA,"CONFDEC_AGAVA/s"); + RootOutput::getInstance()->GetTree()->Branch("DATATRIG",&vDATATRIG,"DATATRIG/s"); + RootOutput::getInstance()->GetTree()->Branch("DATATRIG_CHIO",&vDATATRIG_CHIO,"DATATRIG_CHIO/s"); + RootOutput::getInstance()->GetTree()->Branch("E1D6",&vE1D6,"E1D6/s"); + RootOutput::getInstance()->GetTree()->Branch("E2D6",&vE2D6,"E2D6/s"); + RootOutput::getInstance()->GetTree()->Branch("ED4",&vED4,"ED4/s"); + RootOutput::getInstance()->GetTree()->Branch("EXL_HF",&vEXL_HF,"EXL_HF/s"); + RootOutput::getInstance()->GetTree()->Branch("GALD4X",&vGALD4X,"GALD4X/s"); + RootOutput::getInstance()->GetTree()->Branch("GALD4Y",&vGALD4Y,"GALD4Y/s"); + RootOutput::getInstance()->GetTree()->Branch("QCaviar",&vQCaviar,"QCaviar/s"); + RootOutput::getInstance()->GetTree()->Branch("QPlast",&vQPlast,"QPlast/s"); + RootOutput::getInstance()->GetTree()->Branch("TCAVHF",&vTCAVHF,"TCAVHF/s"); + RootOutput::getInstance()->GetTree()->Branch("TE1D6CAV",&vTE1D6CAV,"TE1D6CAV/s"); + RootOutput::getInstance()->GetTree()->Branch("TE1D6GAL",&vTE1D6GAL,"TE1D6GAL/s"); + RootOutput::getInstance()->GetTree()->Branch("TE1D6HF",&vTE1D6HF,"TE1D6HF/s"); + RootOutput::getInstance()->GetTree()->Branch("TED4HF",&vTED4HF,"TED4HF/s"); + RootOutput::getInstance()->GetTree()->Branch("TGALD4HF",&vTGALD4HF,"TGALD4HF/s"); + RootOutput::getInstance()->GetTree()->Branch("T_CATS1_2",&vT_CATS1_2,"T_CATS1_2/s"); + RootOutput::getInstance()->GetTree()->Branch("T_CATS1_CAV",&vT_CATS1_CAV,"T_CATS1_CAV/s"); + RootOutput::getInstance()->GetTree()->Branch("T_MUVI_CATS1",&vT_MUVI_CATS1,"T_MUVI_CATS1/s"); + RootOutput::getInstance()->GetTree()->Branch("T_PL_CATS1",&vT_PL_CATS1,"T_PL_CATS1/s"); + RootOutput::getInstance()->GetTree()->Branch("T_PL_CATS2",&vT_PL_CATS2,"T_PL_CATS2/s"); + RootOutput::getInstance()->GetTree()->Branch("T_PL_CHIO",&vT_PL_CHIO,"T_PL_CHIO/s"); + RootOutput::getInstance()->GetTree()->Branch("T_PLchCATS1",&vT_PLchCATS1,"T_PLchCATS1/s"); + */ } //////////////////////////////////////////////////////////////////////////////// @@ -276,37 +285,37 @@ void Analysis::InitInputBranch(){ /* RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); */ /* RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true ); */ /* RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); */ - + RootInput:: getInstance()->GetChain()->SetBranchAddress("GATCONF",&vGATCONF); - /* RootInput:: getInstance()->GetChain()->SetBranchAddress("ADC_CHIO_V15",&vADC_CHIO_V15); - RootInput:: getInstance()->GetChain()->SetBranchAddress("ADC_VOIE_29",&vADC_VOIE_29); - RootInput:: getInstance()->GetChain()->SetBranchAddress("CHIO",&vCHIO); - RootInput:: getInstance()->GetChain()->SetBranchAddress("CONFDEC",&vCONFDEC); - RootInput:: getInstance()->GetChain()->SetBranchAddress("CONFDEC_AGAVA",&vCONFDEC_AGAVA); - RootInput:: getInstance()->GetChain()->SetBranchAddress("DATATRIG",&vDATATRIG); - RootInput:: getInstance()->GetChain()->SetBranchAddress("DATATRIG_CHIO",&vDATATRIG_CHIO); - RootInput:: getInstance()->GetChain()->SetBranchAddress("E1D6",&vE1D6); - RootInput:: getInstance()->GetChain()->SetBranchAddress("E2D6",&vE2D6); - RootInput:: getInstance()->GetChain()->SetBranchAddress("ED4",&vED4); - RootInput:: getInstance()->GetChain()->SetBranchAddress("EXL_HF",&vEXL_HF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("GALD4X",&vGALD4X); - RootInput:: getInstance()->GetChain()->SetBranchAddress("GALD4Y",&vGALD4Y); - RootInput:: getInstance()->GetChain()->SetBranchAddress("QCaviar",&vQCaviar); - RootInput:: getInstance()->GetChain()->SetBranchAddress("QPlast",&vQPlast); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TCAVHF",&vTCAVHF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6CAV",&vTE1D6CAV); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6GAL",&vTE1D6GAL); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6HF",&vTE1D6HF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TED4HF",&vTED4HF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TGALD4HF",&vTGALD4HF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_CATS1_2",&vT_CATS1_2); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_CATS1_CAV",&vT_CATS1_CAV); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_MUVI_CATS1",&vT_MUVI_CATS1); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CATS1",&vT_PL_CATS1); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CATS2",&vT_PL_CATS2); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CHIO",&vT_PL_CHIO); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PLchCATS1",&vT_PLchCATS1); -*/ + /* RootInput:: getInstance()->GetChain()->SetBranchAddress("ADC_CHIO_V15",&vADC_CHIO_V15); + RootInput:: getInstance()->GetChain()->SetBranchAddress("ADC_VOIE_29",&vADC_VOIE_29); + RootInput:: getInstance()->GetChain()->SetBranchAddress("CHIO",&vCHIO); + RootInput:: getInstance()->GetChain()->SetBranchAddress("CONFDEC",&vCONFDEC); + RootInput:: getInstance()->GetChain()->SetBranchAddress("CONFDEC_AGAVA",&vCONFDEC_AGAVA); + RootInput:: getInstance()->GetChain()->SetBranchAddress("DATATRIG",&vDATATRIG); + RootInput:: getInstance()->GetChain()->SetBranchAddress("DATATRIG_CHIO",&vDATATRIG_CHIO); + RootInput:: getInstance()->GetChain()->SetBranchAddress("E1D6",&vE1D6); + RootInput:: getInstance()->GetChain()->SetBranchAddress("E2D6",&vE2D6); + RootInput:: getInstance()->GetChain()->SetBranchAddress("ED4",&vED4); + RootInput:: getInstance()->GetChain()->SetBranchAddress("EXL_HF",&vEXL_HF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("GALD4X",&vGALD4X); + RootInput:: getInstance()->GetChain()->SetBranchAddress("GALD4Y",&vGALD4Y); + RootInput:: getInstance()->GetChain()->SetBranchAddress("QCaviar",&vQCaviar); + RootInput:: getInstance()->GetChain()->SetBranchAddress("QPlast",&vQPlast); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TCAVHF",&vTCAVHF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6CAV",&vTE1D6CAV); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6GAL",&vTE1D6GAL); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6HF",&vTE1D6HF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TED4HF",&vTED4HF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TGALD4HF",&vTGALD4HF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_CATS1_2",&vT_CATS1_2); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_CATS1_CAV",&vT_CATS1_CAV); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_MUVI_CATS1",&vT_MUVI_CATS1); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CATS1",&vT_PL_CATS1); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CATS2",&vT_PL_CATS2); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CHIO",&vT_PL_CHIO); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PLchCATS1",&vT_PLchCATS1); + */ } //////////////////////////////////////////////////////////////////////////////// @@ -336,13 +345,13 @@ NPL::VAnalysis* Analysis::Construct(){ // Registering the construct method to the factory // //////////////////////////////////////////////////////////////////////////////// extern "C"{ -class proxy{ - public: - proxy(){ - NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct); - } -}; + class proxy{ + public: + proxy(){ + NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct); + } + }; -proxy p; + proxy p; } diff --git a/Projects/e748/Analysis.h b/Projects/e748/Analysis.h index 6bac47cdcb550985ba913f5ed81119a7689000a6..4566a7d1b8bcd24fb172e7f152612c3a9d684869 100644 --- a/Projects/e748/Analysis.h +++ b/Projects/e748/Analysis.h @@ -74,10 +74,10 @@ class Analysis: public NPL::VAnalysis{ double BeamEnergy; int run_major; int run_minor; - NPL::EnergyLoss He3CD2 ; - NPL::EnergyLoss He3Al ; - NPL::EnergyLoss He3Si ; - NPL::EnergyLoss BeamCD2 ; + NPL::EnergyLoss LightTarget; + NPL::EnergyLoss LightAl ; + NPL::EnergyLoss LightSi ; + NPL::EnergyLoss BeamTarget ; NPL::EnergyLoss BeamMylar ; NPL::EnergyLoss BeamIsobutane ; diff --git a/Projects/e748/e748.detector b/Projects/e748/e748.detector index 90336a06ac1a2a26bb9f421b822cd4081433e7eb..a1821cf6bf1ff828386a6b7e428a0faf8e32e2f2 100644 --- a/Projects/e748/e748.detector +++ b/Projects/e748/e748.detector @@ -116,7 +116,7 @@ CATSDetector ModularLeaf DefaultValue= -1000 - Leafs= QPlast QCaviar CHIO T_CATS1_CAV T_CATS1_2 T_MUVI_CATS1 T_PL_CATS2 EXL_HF T_PL_CHIO T_PL_CATS1 + Leafs= QPlast QCaviar CHIO T_CATS1_CAV T_CATS1_2 T_MUVI_CATS1 T_PL_CATS2 EXL_HF T_PL_CHIO T_PL_CATS E1D6 Chio_dig Pos= -30. -30. 600. mm