diff --git a/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx b/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx index fd1ffff0df085a6cf1f7393425a38544155fe5fa..1fb64a504567838fa12130b4a590db8b8e086552 100644 --- a/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx +++ b/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx @@ -30,10 +30,26 @@ using namespace NPUNITS; using namespace std; ClassImp(SamuraiFieldMap); +//////////////////////////////////////////////////////////////////////////////// +TVector3 SamuraiFieldMap::PropagateToFDC2(TVector3 pos, TVector3 dir, double angle,double R){ + // go to FDC2 frame reference + pos.RotateY(-angle); + dir.RotateY(-angle); + + double deltaZ=R-pos.Z(); + dir*=deltaZ/dir.Z(); + pos+=dir; + cout << pos.Z() << " " << R << endl; + pos.SetX(pos.X()); + pos.RotateY(angle); + return pos; +} + //////////////////////////////////////////////////////////////////////////////// std::vector< TVector3 > SamuraiFieldMap::Propagate(double rmax, double Brho, TVector3 pos, TVector3 dir){ pos.RotateY(m_angle); dir.RotateY(m_angle); + dir=dir.Unit(); // Property of a particle with the correct Brho: // We assume a 4He to compute v // The choice of the particle is of no importance @@ -95,7 +111,11 @@ std::vector< TVector3 > SamuraiFieldMap::Propagate(double rmax, double Brho, TVe r = sqrt(pos.X()*pos.X()+pos.Z()*pos.Z()); count++; } - + imp=imp.Unit(); + pos = PropagateToFDC2(pos, imp, (59.930-90.0)*deg, 3686.77 + 880.745/2.); + pos.RotateY(-m_angle); + track.push_back(pos); + return track; } diff --git a/NPLib/Detectors/Samurai/SamuraiFieldMap.h b/NPLib/Detectors/Samurai/SamuraiFieldMap.h index 5b8b220575f6cfa43d33053eee4262a368d882b7..2adcf8da856cb5e03ade90b6fe0197ffdbf9ad08 100644 --- a/NPLib/Detectors/Samurai/SamuraiFieldMap.h +++ b/NPLib/Detectors/Samurai/SamuraiFieldMap.h @@ -69,7 +69,7 @@ class SamuraiFieldMap{ // return a 3D track of the particle in the field std::vector< TVector3 > Propagate(double rmax, double Brho, TVector3 pos, TVector3 dir); void func(NPL::Particle& N, TVector3 pos, TVector3 dir, TVector3& new_pos, TVector3& new_dir); - //TVector3 PropagateToFDC2(double angle,double); + TVector3 PropagateToFDC2(TVector3 pos, TVector3 dir,double angle,double R); // ClassDef(SamuraiFieldMap,1); };