mirror of
https://github.com/gwm17/Mask.git
synced 2024-11-22 18:28:51 -05:00
Fix another bug in the SABRE geometry. Tilt needs to be flipped again in calc (minus implicitly handled in equation).
This commit is contained in:
parent
96a9aef685
commit
5a8f8730f5
|
@ -248,6 +248,7 @@ double SabreArray::RunConsistencyCheck()
|
||||||
if(channels.first != -1)
|
if(channels.first != -1)
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,8 +194,9 @@ ROOT::Math::XYZPoint SabreDetector::GetTrajectoryCoordinates(double theta, doubl
|
||||||
if(m_translation.Vect().X() != 0.0 || m_translation.Vect().Y() != 0.0)
|
if(m_translation.Vect().X() != 0.0 || m_translation.Vect().Y() != 0.0)
|
||||||
return ROOT::Math::XYZPoint();
|
return ROOT::Math::XYZPoint();
|
||||||
|
|
||||||
|
double tilt = -1.0*m_tilt;
|
||||||
//Calculate the *potential* phi in the flat detector
|
//Calculate the *potential* phi in the flat detector
|
||||||
double phi_numerator = std::cos(m_tilt)*(std::sin(phi)*std::cos(m_centerPhi) - std::sin(m_centerPhi)*std::cos(phi));
|
double phi_numerator = std::cos(tilt)*(std::sin(phi)*std::cos(m_centerPhi) - std::sin(m_centerPhi)*std::cos(phi));
|
||||||
double phi_denominator = std::cos(m_centerPhi)*std::cos(phi) + std::sin(m_centerPhi)*std::sin(phi);
|
double phi_denominator = std::cos(m_centerPhi)*std::cos(phi) + std::sin(m_centerPhi)*std::sin(phi);
|
||||||
double phi_flat = std::atan2(phi_numerator, phi_denominator);
|
double phi_flat = std::atan2(phi_numerator, phi_denominator);
|
||||||
if(phi_flat < 0)
|
if(phi_flat < 0)
|
||||||
|
@ -203,13 +204,13 @@ ROOT::Math::XYZPoint SabreDetector::GetTrajectoryCoordinates(double theta, doubl
|
||||||
|
|
||||||
//Calculate the *potential* R in the flat detector
|
//Calculate the *potential* R in the flat detector
|
||||||
double r_numerator = m_translation.Vect().Z()*std::cos(phi)*std::sin(theta);
|
double r_numerator = m_translation.Vect().Z()*std::cos(phi)*std::sin(theta);
|
||||||
double r_denominator = std::cos(phi_flat)*std::cos(m_centerPhi)*std::cos(m_tilt)*std::cos(theta) -
|
double r_denominator = std::cos(phi_flat)*std::cos(m_centerPhi)*std::cos(tilt)*std::cos(theta) -
|
||||||
std::sin(phi_flat)*std::sin(m_centerPhi)*std::cos(theta) -
|
std::sin(phi_flat)*std::sin(m_centerPhi)*std::cos(theta) -
|
||||||
std::cos(phi_flat)*std::sin(m_tilt)*std::cos(phi)*std::sin(theta);
|
std::cos(phi_flat)*std::sin(tilt)*std::cos(phi)*std::sin(theta);
|
||||||
double r_flat = r_numerator/r_denominator;
|
double r_flat = r_numerator/r_denominator;
|
||||||
|
|
||||||
//Calculate the distance from the origin to the hit on the detector
|
//Calculate the distance from the origin to the hit on the detector
|
||||||
double R_to_detector = (r_flat*std::cos(phi_flat)*std::sin(m_tilt) + m_translation.Vect().Z())/std::cos(theta);
|
double R_to_detector = (r_flat*std::cos(phi_flat)*std::sin(tilt) + m_translation.Vect().Z())/std::cos(theta);
|
||||||
double xhit = R_to_detector*std::sin(theta)*std::cos(phi);
|
double xhit = R_to_detector*std::sin(theta)*std::cos(phi);
|
||||||
double yhit = R_to_detector*std::sin(theta)*std::sin(phi);
|
double yhit = R_to_detector*std::sin(theta)*std::sin(phi);
|
||||||
double zhit = R_to_detector*std::cos(theta);
|
double zhit = R_to_detector*std::cos(theta);
|
||||||
|
@ -244,8 +245,9 @@ std::pair<int, int> SabreDetector::GetTrajectoryRingWedge(double theta, double p
|
||||||
if(m_translation.Vect().X() != 0.0 || m_translation.Vect().Y() != 0.0)
|
if(m_translation.Vect().X() != 0.0 || m_translation.Vect().Y() != 0.0)
|
||||||
return std::make_pair(-1, -1);
|
return std::make_pair(-1, -1);
|
||||||
|
|
||||||
|
double tilt = -1.0*m_tilt;
|
||||||
//Calculate the *potential* phi in the flat detector
|
//Calculate the *potential* phi in the flat detector
|
||||||
double phi_numerator = std::cos(m_tilt)*(std::sin(phi)*std::cos(m_centerPhi) - std::sin(m_centerPhi)*std::cos(phi));
|
double phi_numerator = std::cos(tilt)*(std::sin(phi)*std::cos(m_centerPhi) - std::sin(m_centerPhi)*std::cos(phi));
|
||||||
double phi_denominator = std::cos(m_centerPhi)*std::cos(phi) + std::sin(m_centerPhi)*std::sin(phi);
|
double phi_denominator = std::cos(m_centerPhi)*std::cos(phi) + std::sin(m_centerPhi)*std::sin(phi);
|
||||||
double phi_flat = std::atan2(phi_numerator, phi_denominator);
|
double phi_flat = std::atan2(phi_numerator, phi_denominator);
|
||||||
if(phi_flat < 0)
|
if(phi_flat < 0)
|
||||||
|
@ -253,15 +255,11 @@ std::pair<int, int> SabreDetector::GetTrajectoryRingWedge(double theta, double p
|
||||||
|
|
||||||
//Calculate the *potential* R in the flat detector
|
//Calculate the *potential* R in the flat detector
|
||||||
double r_numerator = m_translation.Vect().Z()*std::cos(phi)*std::sin(theta);
|
double r_numerator = m_translation.Vect().Z()*std::cos(phi)*std::sin(theta);
|
||||||
double r_denominator = std::cos(phi_flat)*std::cos(m_centerPhi)*std::cos(m_tilt)*std::cos(theta) -
|
double r_denominator = std::cos(phi_flat)*std::cos(m_centerPhi)*std::cos(tilt)*std::cos(theta) -
|
||||||
std::sin(phi_flat)*std::sin(m_centerPhi)*std::cos(theta) -
|
std::sin(phi_flat)*std::sin(m_centerPhi)*std::cos(theta) -
|
||||||
std::cos(phi_flat)*std::sin(m_tilt)*std::cos(phi)*std::sin(theta);
|
std::cos(phi_flat)*std::sin(tilt)*std::cos(phi)*std::sin(theta);
|
||||||
double r_flat = r_numerator/r_denominator;
|
double r_flat = r_numerator/r_denominator;
|
||||||
|
|
||||||
//Calculate the distance from the origin to the hit on the detector
|
|
||||||
//double R_to_detector = (r_flat*std::cos(phi_flat)*std::sin(m_tilt) + m_translation.GetZ())/std::cos(theta);
|
|
||||||
|
|
||||||
|
|
||||||
//Check to see if our flat coords fall inside the flat detector
|
//Check to see if our flat coords fall inside the flat detector
|
||||||
if(IsInside(r_flat, phi_flat))
|
if(IsInside(r_flat, phi_flat))
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,7 +28,7 @@ int main(int argc, char** argv)
|
||||||
std::string mapfile = "./etc/sabreDeadChannels_May2022.txt";
|
std::string mapfile = "./etc/sabreDeadChannels_May2022.txt";
|
||||||
sabre.SetDeadChannelMap(mapfile);
|
sabre.SetDeadChannelMap(mapfile);
|
||||||
sabre.CalculateEfficiency(inputname, outputname, statsname);
|
sabre.CalculateEfficiency(inputname, outputname, statsname);
|
||||||
//std::cout<<"Running consistency check(1=success): "<<sabre.RunConsistencyCheck()<<std::endl;
|
//std::cout<<"Running consistency check(0=success): "<<sabre.RunConsistencyCheck()<<std::endl;
|
||||||
//sabre.DrawDetectorSystem("/data1/gwm17/10B3He/Feb2021/simulation/SABREGeo.txt");
|
//sabre.DrawDetectorSystem("/data1/gwm17/10B3He/Feb2021/simulation/SABREGeo.txt");
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user