11 #include "THaSpectrometer.h"
28 const
char* spectro, const
char* beam ) :
29 THaReactionPoint(name, description, spectro, beam)
40 DefineVariables( kDelete );
48 if( !IsOK() )
return -1;
50 Int_t ntracks = fSpectro->GetNTracks();
51 if( ntracks == 0 )
return 0;
54 if( !tracks )
return -2;
56 TVector3 beam_org, beam_ray( 0.0, 0.0, 1.0 );
58 beam_org = fBeam->GetPosition();
59 beam_ray = fBeam->GetDirection();
63 for(
Int_t i = 0; i<ntracks; i++ ) {
64 THaTrack* theTrack =
static_cast<THaTrack*
>( tracks->
At(i) );
66 if( !theTrack || !theTrack->HasTarget() )
68 TVector3 pointing_off=fSpectro->GetPointingOffset();
71 Double_t ytar_off=theTrack->GetTY()+pointing_off(1);
72 Double_t yptar = theTrack->GetTPhi();
73 Double_t ztarg=(ytar_off-beam_org(0)*(costheta-yptar*sintheta))/(-sintheta-yptar*costheta);
74 v.
SetXYZ(beam_org(0),beam_org(1),ztarg);
75 theTrack->SetVertex(v);
76 if( theTrack == fSpectro->GetGoldenTrack() ) {
77 fVertex = theTrack->GetVertex();
virtual ~THcReactionPoint()
void SetXYZ(Double_t x, Double_t y, Double_t z)
Calculate vertex coordinates.
TObject * At(Int_t idx) const
ClassImp(THcReactionPoint) THcReactionPoint
virtual Int_t Process(const THaEvData &)