diff --git a/NPLib/Detectors/Sofia/TSofFissionFragment.cxx b/NPLib/Detectors/Sofia/TSofFissionFragment.cxx index 6e3c3b22e1aa5227a4e1bbfbe8faef0274444c8a..c9ed1d005f7230999ea445726819367dc2ca509d 100644 --- a/NPLib/Detectors/Sofia/TSofFissionFragment.cxx +++ b/NPLib/Detectors/Sofia/TSofFissionFragment.cxx @@ -64,6 +64,7 @@ void TSofFissionFragment::Clear() { fFF_PosY1.clear(); fFF_PosY2.clear(); fFF_PosY3.clear(); + fFF_FlightPath.clear(); fFF_Zsum = -1; fFF_iZsum = -1; diff --git a/NPLib/Detectors/Sofia/TSofFissionFragment.h b/NPLib/Detectors/Sofia/TSofFissionFragment.h index 0ee84c937522866d2795ce1dc6cb47891902e85e..2290d8472bb95c3fec935e723fd704de849a856e 100644 --- a/NPLib/Detectors/Sofia/TSofFissionFragment.h +++ b/NPLib/Detectors/Sofia/TSofFissionFragment.h @@ -55,6 +55,7 @@ class TSofFissionFragment : public TObject { vector<double> fFF_PosY1; vector<double> fFF_PosY2; vector<double> fFF_PosY3; + vector<double> fFF_FlightPath; double fFF_Zsum; int fFF_iZsum; @@ -103,6 +104,7 @@ class TSofFissionFragment : public TObject { inline void SetPosY1(double val){fFF_PosY1.push_back(val);};//! inline void SetPosY2(double val){fFF_PosY2.push_back(val);};//! inline void SetPosY3(double val){fFF_PosY3.push_back(val);};//! + inline void SetFlightPath(double val){fFF_FlightPath.push_back(val);};//! ////////////////////// GETTERS //////////////////////// @@ -134,6 +136,7 @@ class TSofFissionFragment : public TObject { inline double GetPosY1(int i) const {return fFF_PosY1[i];}//! inline double GetPosY2(int i) const {return fFF_PosY2[i];}//! inline double GetPosY3(int i) const {return fFF_PosY3[i];}//! + inline double GetFlightPath(int i) const {return fFF_FlightPath[i];}//! ////////////////////////////////////////////////////////////// diff --git a/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx b/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx index d0fe83970968a5d7abea62fca7637f05e2048e73..5add799dc4a0dcd041d0cd220488ec063e3c1e8c 100644 --- a/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx +++ b/NPLib/Detectors/Sofia/TSofTwimPhysics.cxx @@ -169,13 +169,29 @@ void TSofTwimPhysics::BuildPhysicalEvent() { } static CalibrationManager* Cal = CalibrationManager::getInstance(); + if(Esec1>0){ Esec1 = Cal->ApplyCalibration("SofTwim/SEC1_ALIGN",Esec1); EnergySection.push_back(Esec1); DriftTime.push_back(DTsec1); SectionNbr.push_back(1); - Theta1 = atan((AnodeDriftTime[0][11]-AnodeDriftTime[0][3])/(7*31.)); + double xsum=0; + double x2sum=0; + double ysum=0; + double xysum=0; + for(int p=0; p<12; p++){ + double Z = p*31; + double X = AnodeDriftTime[0][p+2]; + + xsum = xsum + Z; + ysum = ysum + X; + x2sum = x2sum + pow(Z,2); + xysum = xysum + X*Z; + } + + double p1 = (12*xysum -xsum*ysum)/(12*x2sum - xsum*xsum); + Theta1 = p1; Theta.push_back(-Theta1); } if(Esec2>0){ @@ -184,7 +200,22 @@ void TSofTwimPhysics::BuildPhysicalEvent() { DriftTime.push_back(DTsec2); SectionNbr.push_back(2); - Theta2 = atan((AnodeDriftTime[1][11]-AnodeDriftTime[1][3])/(7*31.)); + double xsum=0; + double x2sum=0; + double ysum=0; + double xysum=0; + for(int p=0; p<12; p++){ + double Z = p*31; + double X = AnodeDriftTime[1][p+2]; + + xsum = xsum + Z; + ysum = ysum + X; + x2sum = x2sum + pow(Z,2); + xysum = xysum + X*Z; + } + + double p1 = (12*xysum -xsum*ysum)/(12*x2sum - xsum*xsum); + Theta2 = p1; Theta.push_back(-Theta2); } if(Esec3>0){ @@ -193,7 +224,22 @@ void TSofTwimPhysics::BuildPhysicalEvent() { DriftTime.push_back(DTsec3); SectionNbr.push_back(3); - Theta3 = atan((AnodeDriftTime[2][11]-AnodeDriftTime[2][3])/(7*31.)); + double xsum=0; + double x2sum=0; + double ysum=0; + double xysum=0; + for(int p=0; p<12; p++){ + double Z = p*31; + double X = AnodeDriftTime[2][p+2]; + + xsum = xsum + Z; + ysum = ysum + X; + x2sum = x2sum + pow(Z,2); + xysum = xysum + X*Z; + } + + double p1 = (12*xysum -xsum*ysum)/(12*x2sum - xsum*xsum); + Theta3 = p1; Theta.push_back(-Theta3); } if(Esec4>0){ @@ -202,7 +248,22 @@ void TSofTwimPhysics::BuildPhysicalEvent() { DriftTime.push_back(DTsec4); SectionNbr.push_back(4); - Theta4 = atan((AnodeDriftTime[3][11]-AnodeDriftTime[3][3])/(7*31.)); + double xsum=0; + double x2sum=0; + double ysum=0; + double xysum=0; + for(int p=0; p<12; p++){ + double Z = p*31; + double X = AnodeDriftTime[3][p+2]; + + xsum = xsum + Z; + ysum = ysum + X; + x2sum = x2sum + pow(Z,2); + xysum = xysum + X*Z; + } + + double p1 = (12*xysum -xsum*ysum)/(12*x2sum - xsum*xsum); + Theta4 = p1; Theta.push_back(-Theta4); } diff --git a/Projects/s455/Analysis.cxx b/Projects/s455/Analysis.cxx index 6ed3caddd5d827cfaffea17e903d4f46b3218fc3..4bb6f84a58c26775956d0c61e6a2c549fbc1427c 100644 --- a/Projects/s455/Analysis.cxx +++ b/Projects/s455/Analysis.cxx @@ -60,6 +60,7 @@ struct TofPair double xc = 0; double yc = 0; double zc = 0; + double flight_path = 0; }; @@ -560,8 +561,10 @@ void Analysis::FissionFragmentAnalysis(){ double Theta0 = 20.*deg; double XA = 0; double ZA = 2328.; - //double ZA = 2328.-4434.; - double ZG = 2724+1075;//4434.; + double Zfission = 335.; + double ZGlad_entrance = 2724.; + double Leff_init = 2150.; + double ZG = ZGlad_entrance+Leff_init/2; double ZMW3 = 8483; double XMW3 = -(ZMW3-ZG)*tan(Theta0); double ZMW2 = 2576; @@ -574,32 +577,49 @@ void Analysis::FissionFragmentAnalysis(){ TVector3 InitPos[2]; TVector3 InitDir[2]; TVector3 FinalPos[2]; + double XC = 0; + double ZC = 0; + double Leff = 0; for(int i=0; i<2; i++){ XA = TofHit[i].DT; - TofHit[i].xc = (XA+(ZG-ZA)*tan(TofHit[i].theta_in)) / (1-tan(Tilt)*tan(TofHit[i].theta_in)); - TofHit[i].yc = TofHit[i].y*0.5; - TofHit[i].zc = ZG + TofHit[i].xc*tan(Tilt); - - X3lab = TofHit[i].x3*cos(Theta0) + XMW3; - Z3lab = TofHit[i].x3*sin(Theta0) + ZMW3; - TofHit[i].x3lab = X3lab; - TofHit[i].z3lab = Z3lab; - - InitPos[i] = TVector3(XA,0,ZA); - InitDir[i] = TVector3(sin(TofHit[i].theta_in),0,cos(TofHit[i].theta_in)); - FinalPos[i] = TVector3(X3lab,0,Z3lab); - - vC = TVector3(TofHit[i].xc,0,TofHit[i].zc); - vOut = TVector3(X3lab-TofHit[i].xc,0,Z3lab-TofHit[i].zc); - - double PathLength = vC.Mag() + vOut.Mag() + 74.; - PathLength = PathLength/1000.; - double angle = vZ.Angle(vOut); - - TofHit[i].velocity = PathLength/TofHit[i].tof; - TofHit[i].beta = TofHit[i].velocity * m/ns / NPUNITS::c_light; - TofHit[i].theta_out = angle; - TofHit[i].x2twim = XA + (ZMW2-ZA)*tan(TofHit[i].theta_in); + if(XA != -1e6){ + ZG = ZGlad_entrance+Leff_init/2; + XC = (XA+(ZG-ZA)*tan(TofHit[i].theta_in)) / (1-tan(Tilt)*tan(TofHit[i].theta_in)); + ZC = ZG + XC*tan(Tilt); + + /*int ix = (int)(XC - m_GladField->GetXmin())/50; + int iy = (int)(ZC - m_GladField->GetYmin())/50; + Leff = m_GladField->GetLeff(ix,iy); + ZG = ZGlad_entrance + Leff/2; + XC = (XA+(ZG-ZA)*tan(TofHit[i].theta_in)) / (1-tan(Tilt)*tan(TofHit[i].theta_in)); + ZC = ZG + XC*tan(Tilt);*/ + + TofHit[i].xc = XC; + TofHit[i].yc = TofHit[i].y*0.5; + TofHit[i].zc = ZC; + + X3lab = TofHit[i].x3*cos(Theta0) + XMW3; + Z3lab = TofHit[i].x3*sin(Theta0) + ZMW3; + TofHit[i].x3lab = X3lab; + TofHit[i].z3lab = Z3lab; + + InitPos[i] = TVector3(XA,0,ZA); + InitDir[i] = TVector3(sin(TofHit[i].theta_in),0,cos(TofHit[i].theta_in)); + FinalPos[i] = TVector3(X3lab,0,Z3lab); + + vC = TVector3(TofHit[i].xc,0,TofHit[i].zc); + vOut = TVector3(X3lab-TofHit[i].xc,0,Z3lab-TofHit[i].zc); + + double PathLength = vC.Mag() + vOut.Mag() + 74.; + PathLength = PathLength/1000.; + double angle = vZ.Angle(vOut); + + TofHit[i].flight_path = PathLength; + TofHit[i].velocity = PathLength/TofHit[i].tof; + TofHit[i].beta = TofHit[i].velocity * m/ns / NPUNITS::c_light; + TofHit[i].theta_out = angle; + TofHit[i].x2twim = XA + (ZMW2-ZA)*tan(TofHit[i].theta_in); + } } Z1 = TofHit[0].Esec; @@ -634,9 +654,9 @@ void Analysis::FissionFragmentAnalysis(){ double Brho2 = MagB*rho2; /*double Brho1 = 0; - double Brho2 = 0; - Brho1 = m_GladField->FindBrho(InitPos[0], InitDir[0], FinalPos[0]); - Brho2 = m_GladField->FindBrho(InitPos[1], InitDir[1], FinalPos[1]); + double Brho2 = 0; + Brho1 = m_GladField->FindBrho(InitPos[0], InitDir[0], FinalPos[0]); + Brho2 = m_GladField->FindBrho(InitPos[1], InitDir[1], FinalPos[1]); //cout << Brho1 << " " << Brho2 << endl;*/ Beta_Z1 = TofHit[0].beta; @@ -669,16 +689,11 @@ void Analysis::FissionFragmentAnalysis(){ SofFF->SetPosY3(TofHit[0].y3); SofFF->SetPosY3(TofHit[1].y3); - //SofFF->SetPosX3(TofHit[0].x3lab); - //SofFF->SetPosX3(TofHit[1].x3lab); - - SofFF->SetThetaIn(TofHit[0].theta_in); SofFF->SetThetaIn(TofHit[1].theta_in); SofFF->SetThetaOut(TofHit[0].theta_out); SofFF->SetThetaOut(TofHit[1].theta_out); - SofFF->SetBeta(Beta_Z1); SofFF->SetBeta(Beta_Z2); SofFF->SetGamma(Gamma1); @@ -699,9 +714,11 @@ void Analysis::FissionFragmentAnalysis(){ SofFF->SetSection(TofHit[0].section); SofFF->SetSection(TofHit[1].section); - SofFF->SetZsum(Zsum); SofFF->SetiZsum(iZsum); + + SofFF->SetFlightPath(TofHit[0].flight_path); + SofFF->SetFlightPath(TofHit[1].flight_path); } } } @@ -827,7 +844,7 @@ void Analysis::InitParameter(){ fK_LS2 = -30e-8; fBrho0 = 12.3255; - fRunID = 5; + fRunID = 12; // Beam parameter // fZBeta_p0 = 1; diff --git a/Projects/s455/RunToTreat.txt b/Projects/s455/RunToTreat.txt index b75d3cc6c9dc688c12cacd76a16a57996db3b0b6..96e1b4884bedc4fb8ffeaf46974e7f539bd1bf8e 100644 --- a/Projects/s455/RunToTreat.txt +++ b/Projects/s455/RunToTreat.txt @@ -55,8 +55,8 @@ RootFileName %/media/sofia/s455/raw/run_raw_0401.root %% 187Pb - /media/sofia/s455/raw/run_raw_0402.root - /media/sofia/s455/raw/run_raw_0403.root + %/media/sofia/s455/raw/run_raw_0402.root + %/media/sofia/s455/raw/run_raw_0403.root %% 184Hg %/media/sofia/s455/raw/run_raw_0404.root @@ -85,6 +85,6 @@ RootFileName %/media/sofia/s455/raw/run_raw_0426.root %% 197At - %/media/sofia/s455/raw/run_raw_0427.root - %/media/sofia/s455/raw/run_raw_0428.root - %/media/sofia/s455/raw/run_raw_0429.root + /media/sofia/s455/raw/run_raw_0427.root + /media/sofia/s455/raw/run_raw_0428.root + /media/sofia/s455/raw/run_raw_0429.root diff --git a/Projects/s455/calibration/SofSci/SofSci_physics.cal b/Projects/s455/calibration/SofSci/SofSci_physics.cal index b5d5734487c506da72a4aeca02535cd84b096df9..8778ee911a3131c0216c0cc52ad439b9029ffaff 100644 --- a/Projects/s455/calibration/SofSci/SofSci_physics.cal +++ b/Projects/s455/calibration/SofSci/SofSci_physics.cal @@ -1,4 +1,4 @@ -SofSci_TOF2INV_V -8.04267 0.00737389 +SofSci_TOF2INV_V -8.0515 0.00737389 SofSci_LENGTH_S2 135.614 -SofSci_DET1_POSPAR 90 54.6 +SofSci_DET1_POSPAR 45.0 80.0 SofSci_DET2_POSPAR 943.287 86.652 diff --git a/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal b/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal index 80e81ae3897bce71419200ca0b7240f56bc754df..37d3efaaa6803eb42745b0b186822b5f6513519a 100644 --- a/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal +++ b/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal @@ -1,3 +1,3 @@ -SofTrim_SEC1_ALIGN 14.3427 1.02007 +SofTrim_SEC1_ALIGN -457.863 1.03809 SofTrim_SEC2_ALIGN 0 1 -SofTrim_SEC3_ALIGN -2905.47 1.2027 +SofTrim_SEC3_ALIGN -2599.29 1.18757