Hall A ROOT/C++ Analyzer (podd)
Loading...
Searching...
No Matches
THaGoldenTrack.cxx
Go to the documentation of this file.
1//*-- Author : Ole Hansen 04-Apr-03
2
4//
5// THaGoldenTrack
6//
7// Simple convenience class that makes a spectrometer's GoldenTrack
8// directly available through global variables.
9//
11
12#include "THaGoldenTrack.h"
13#include "THaSpectrometer.h"
14#include "THaTrack.h"
15#include "TClonesArray.h"
16#include "VarDef.h"
17
19
20//_____________________________________________________________________________
21THaGoldenTrack::THaGoldenTrack( const char* name, const char* description,
22 const char* spectro ) :
23 THaPhysicsModule(name,description), fIndex(-1), fGoldBeta(kBig),
24 fTrack(nullptr), fSpectroName(spectro), fSpectro(nullptr)
25{
26 // Normal constructor.
27
28}
29
30//_____________________________________________________________________________
32{
33 // Destructor
34
36}
37
38//_____________________________________________________________________________
40{
42 fTrkIfo.Clear(opt); fIndex = -1; fGoldBeta = kBig; fTrack = nullptr;
43}
44
45//_____________________________________________________________________________
47{
48 // Initialize the module.
49 // Locate the spectrometer apparatus named in fSpectroName and save
50 // pointer to it.
51
52 // Standard initialization. Calls this object's DefineVariables().
53 if( THaPhysicsModule::Init( run_time ) != kOK )
54 return fStatus;
55
56 fSpectro = static_cast<THaSpectrometer*>
57 ( FindModule( fSpectroName.Data(), "THaSpectrometer"));
58
59 return fStatus;
60}
61
62//_____________________________________________________________________________
64{
65 // Define/delete global variables.
66
67 const char* var_prefix = "fTrkIfo.";
68
69 const RVarDef var1[] = {
70 { "x", "Target x coordinate", "fX"},
71 { "y", "Target y coordinate", "fY"},
72 { "th", "Tangent of target theta angle", "fTheta"},
73 { "ph", "Tangent of target phi angle", "fPhi"},
74 { "dp", "Target delta", "fDp"},
75 { "p", "Lab momentum x (GeV)", "fP"},
76 { "px", "Lab momentum x (GeV)", "GetPx()"},
77 { "py", "Lab momentum y (GeV)", "GetPy()"},
78 { "pz", "Lab momentum z (GeV)", "GetPz()"},
79 { "ok", "Data valid status flag (1=ok)", "fOK" },
80 { nullptr }
81 };
82 Int_t ret = DefineVarsFromList( var1, mode, var_prefix );
83 if( ret )
84 return ret;
85
86 const RVarDef var2[] = {
87 { "index", "Index of Golden Track", "fIndex" },
88 { "beta", "Beta of Golden Track", "fGoldBeta" },
89 { nullptr }
90 };
91 return DefineVarsFromList( var2, mode );
92}
93
94//_____________________________________________________________________________
96{
97 // Calculate corrections and adjust the track parameters.
98
99 if( !IsOK() ) return -1;
100
102 if( !fTrack ) return 1;
103 if( !(fTrack->HasTarget())) return 2;
104
105 // Save data in out TrackInfo (copying necessary because the track
106 // pointer may change every event, and the global variable system
107 // currently does not handle this)
108 fTrkIfo = *fTrack;
109
111
112 // Find the track's index
113 Int_t ntracks = fSpectro->GetNTracks();
114 if( ntracks == 1 )
115 fIndex = 0;
116 else { // ntracks>1
118 for( Int_t i=0; i<ntracks; i++ ) {
119 if( tracks->At(i) == fTrack ) {
120 fIndex = i;
121 break;
122 }
123 }
124 }
125
126 fDataValid = true;
127 return 0;
128}
int Int_t
const Data_t kBig
Definition DataType.h:15
const char Option_t
Option_t Option_t TPoint TPoint const char mode
char name[80]
static Int_t DefineVarsFromList(const void *list, EType type, EMode mode, const char *def_prefix, const TObject *obj, const char *prefix, const char *here, const char *comment_subst="")
THaAnalysisObject * FindModule(const char *name, const char *classname, bool do_error=true)
Bool_t IsOK() const
THaTrack * fTrack
THaGoldenTrack(const char *name, const char *description, const char *spectro="")
virtual Int_t DefineVariables(EMode mode=kDefine)
THaTrackInfo fTrkIfo
virtual void Clear(Option_t *opt="")
virtual Int_t Process(const THaEvData &evdata)
THaSpectrometer * fSpectro
virtual ~THaGoldenTrack()
virtual void Clear(Option_t *opt="")
THaTrack * GetGoldenTrack() const
Int_t GetNTracks() const
TClonesArray * GetTracks() const
void Clear(Option_t *opt="")
Double_t GetBeta() const
Definition THaTrack.h:125
bool HasTarget() const
Definition THaTrack.h:138
const char * Data() const
ClassImp(TPyArg)
void tracks()
size_t fIndex