class THaBigBite: public THaSpectrometer


 THaBigBite

 Base class for general purpose bigbite detector (spectrometer)



 Author: Jin Huang <mailto:jinhuang@jlab.org>   July 2007
        Base on work of Olivier Gayou, AGen Lib, and Ole Hansen
    Modify History:
      Jan 2008    Jin Huang <mailto:jinhuang@jlab.org>
          add support to new MWDC class
      Jan 2008    Jin Huang <mailto:jinhuang@jlab.org>
          add new child class THaOptics



This is a base class for the Hall A BigBite spectrometer (BB).
Ready for AddDetector() of THaTriggerPlane, THaMWDC, TreeSearch::MWDC, THaBBTotalShower



SPECIAL CONFIGURATIONS of BB (e.g. more detectors, different
detectors) can be supported in on e of three ways:

1. Use the AddDetector() method to include a new detector
in this apparatus.  The detector will be decoded properly,
and its variables will be available for cuts and histograms.

2. Write a derived class that creates the detector in the
constructor. An example is THaBigBiteTpMwdc specially
designed for hardron package.



TECHNICALLY, THaBigBite is a standard THaSpectrometer with support of

1.Optics class THaOptics and its heritage classes.
For detailed infomation about THaOptics support, please see documentation of THaOptics

2.Special requirements of old AGen version of MWDC (THaMWDC), including reorder
of process and read out of environment variables.

Environmental variable USE_AGEN_MWDC controls whether THaMWDC is supported.
if USE_AGEN_MWDC=1, then SWITCH_RECONSTRUCT_ORDER will be turned on, as well as
a collection of supportive functions & variables will be defined.

In the case of SWITCH_RECONSTRUCT_ORDER=1 :
Reconstruct process is different from standard THaSpectrometer. That's
Loop over all THaNonTrackingDetectors and call their CoarseProcess() methods.
Loop over all THaTrackingDetectors and call their CoarseTrack() methods.
Loop over all THaNonTrackingDetectors and call their FineProcess() methods.
Loop over all THaTrackingDetectors and call their FineTrack() methods.
In this way, THaMWDC could get hit info from THaTriggerPlane, which will
dramatically speed track reconstruction.
Environmental Variable SWITCH_RECONSTRUCT_ORDER controls
whether or not to change order of steps in Reconstruct()

Function Members (Methods)

public:
THaBigBite(const char* name, const char* description)
virtual~THaBigBite()
voidTObject::AbstractMethod(const char* method) const
virtual Int_tTHaSpectrometer::AddDetector(THaDetector* det)
virtual Int_tTHaSpectrometer::AddPidParticle(const char* shortname, const char* name, Double_t mass, Int_t charge = 0)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual Int_tTHaApparatus::Begin(THaRunBase* r = 0)
virtual voidTObject::Browse(TBrowser* b)
virtual Int_tTHaSpectrometer::CalcPID()
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTHaSpectrometer::Clear(Option_t* opt = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTHaSpectrometer::CoarseReconstruct()
virtual Int_tTHaSpectrometer::CoarseTrack()
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual Int_tDebugPort(void* p)
virtual Int_tTHaApparatus::Decode(const THaEvData&)
virtual voidTHaSpectrometer::DefinePidParticles()
virtual Int_tDefineVariables(THaAnalysisObject::EMode mode)
static Int_tTHaAnalysisObject::DefineVarsFromList(const void* list, THaAnalysisObject::EType type, THaAnalysisObject::EMode mode, const char* var_prefix, const TObject* obj, const char* prefix, const char* here)
virtual voidTObject::Delete(Option_t* option = "")
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() const
virtual TObject*TObject::DrawClone(Option_t* option = "") const
virtual voidTObject::Dump() const
virtual Int_tTHaApparatus::End(THaRunBase* r = 0)
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Int_tFindVertices(TClonesArray& tracks)
static voidTHaAnalysisObject::GeoToSph(Double_t th_geo, Double_t ph_geo, Double_t& th_sph, Double_t& ph_sph)
Double_tTHaSpectrometer::GetCollDist() const
const char*THaAnalysisObject::GetConfig() const
virtual const char*THaAnalysisObject::GetDBFileName() const
Int_tTHaAnalysisObject::GetDebug() const
virtual THaDetector*THaApparatus::GetDetector(const char* name)
const TList*THaApparatus::GetDetectors()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
THaTrack*THaSpectrometer::GetGoldenTrack() const
virtual const char*TObject::GetIconName() const
TDatimeTHaAnalysisObject::GetInitDate() const
virtual const char*TNamed::GetName() const
Int_tTHaSpectrometer::GetNpidDetectors() const
Int_tTHaSpectrometer::GetNpidParticles() const
Int_tTHaSpectrometer::GetNTracks() const
Int_tTHaApparatus::GetNumDets() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
THaOptics*GetOptics() const
virtual Option_t*TObject::GetOption() const
Double_tTHaSpectrometer::GetPcentral() const
Double_tTHaSpectrometer::GetPhiGeo() const
Double_tTHaSpectrometer::GetPhiSph() const
const THaPidDetector*THaSpectrometer::GetPidDetector(Int_t i) const
const THaParticleInfo*THaSpectrometer::GetPidParticleInfo(Int_t i) const
const TVector3&THaSpectrometer::GetPointingOffset() const
const char*THaAnalysisObject::GetPrefix() const
static const RVarDef*THaTrackingModule::GetRVarDef()
Double_tTHaSpectrometer::GetThetaGeo() const
Double_tTHaSpectrometer::GetThetaSph() const
virtual const char*TNamed::GetTitle() const
const TRotation&THaSpectrometer::GetToLabRot() const
const TRotation&THaSpectrometer::GetToTraRot() const
THaTrack*THaTrackingModule::GetTrack()
THaTrackInfo*THaTrackingModule::GetTrackInfo()
TClonesArray*THaSpectrometer::GetTrackPID() const
TClonesArray*THaSpectrometer::GetTracks() const
virtual Double_tGetTriggerTimingOffset()
virtual UInt_tTObject::GetUniqueID() const
virtual const TVector3&THaSpectrometer::GetVertex() const
virtual const TVector3&THaVertexModule::GetVertexError() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual Bool_tTHaSpectrometer::HasVertex() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual THaAnalysisObject::EStatusInit(const TDatime& run_time)
virtual Int_tTHaAnalysisObject::InitOutput(THaOutput*)
virtual voidTObject::Inspect() const
static Bool_tTHaAnalysisObject::IntersectPlaneWithRay(const TVector3& xax, const TVector3& yax, const TVector3& org, const TVector3& ray_start, const TVector3& ray_vect, Double_t& length, TVector3& intersect)
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tTHaSpectrometer::IsDone(UInt_t stage) const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTHaAnalysisObject::IsInit() const
Bool_tTHaAnalysisObject::IsOK() const
Bool_tTHaAnalysisObject::IsOKOut()
Bool_tTObject::IsOnHeap() const
Bool_tTHaSpectrometer::IsPID() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
voidTHaSpectrometer::LabToTransport(const TVector3& vertex, const TVector3& pvect, Double_t* ray) const
virtual voidTHaSpectrometer::LabToTransport(const TVector3& vertex, const TVector3& pvect, TVector3& tvertex, Double_t* ray) const
static Int_tTHaAnalysisObject::LoadDB(FILE* file, const TDatime& date, const DBRequest* request, const char* prefix = "", Int_t search = 0)
static Int_tTHaAnalysisObject::LoadDB(FILE* file, const TDatime& date, const TagDef* tags, const char* prefix = "", Int_t search = 0)
static Int_tTHaAnalysisObject::LoadDBvalue(FILE* file, const TDatime& date, const char* tag, Double_t& value)
static Int_tTHaAnalysisObject::LoadDBvalue(FILE* file, const TDatime& date, const char* tag, Int_t& value)
static Int_tTHaAnalysisObject::LoadDBvalue(FILE* file, const TDatime& date, const char* tag, string& text)
static Int_tTHaAnalysisObject::LoadDBvalue(FILE* file, const TDatime& date, const char* tag, TString& text)
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tMountOptics(THaOptics*)
virtual Bool_tTObject::Notify()
static FILE*THaAnalysisObject::OpenFile(const char* name, const TDatime& date, const char* here = "OpenFile()", const char* filemode = "r", const int debug_flag = 1)
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TNamed&TNamed::operator=(const TNamed& rhs)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTHaApparatus::Print(Option_t* opt = "") const
virtual Int_tTObject::Read(const char* name)
virtual Int_tTHaSpectrometer::Reconstruct()
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") const
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
static Int_tTHaAnalysisObject::SeekDBconfig(FILE* file, const char* tag, const char* label = "config", Bool_t end_on_tag = false)
static Int_tTHaAnalysisObject::SeekDBdate(FILE* file, const TDatime& date, Bool_t end_on_tag = false)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidTHaAnalysisObject::SetConfig(const char* label)
virtual voidTHaAnalysisObject::SetDebug(Int_t level)
virtual voidTHaApparatus::SetDebugAll(Int_t level)
virtual voidTObject::SetDrawOption(Option_t* option = "")
static voidTObject::SetDtorOnly(void* obj)
voidTHaSpectrometer::SetGoldenTrack(THaTrack* t)
virtual voidTHaAnalysisObject::SetName(const char* name)
virtual voidTHaAnalysisObject::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidTHaSpectrometer::SetPID(Bool_t b = kTRUE)
virtual voidTNamed::SetTitle(const char* title = "")
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual Int_tTNamed::Sizeof() const
static voidTHaAnalysisObject::SphToGeo(Double_t th_sph, Double_t ph_sph, Double_t& th_geo, Double_t& ph_geo)
THaAnalysisObject::EStatusTHaAnalysisObject::Status() const
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual Int_tTHaSpectrometer::Track()
virtual Int_tTrackCalc()
virtual voidTHaSpectrometer::TrackToLab(THaTrack& track, TVector3& pvect) const
virtual voidTHaSpectrometer::TransportToLab(Double_t p, Double_t th, Double_t ph, TVector3& pvect) const
voidTHaTrackingModule::TrkIfoClear()
virtual voidTObject::UseCurrentStyle()
virtual voidTHaVertexModule::VertexClear()
static vector<std::string>THaAnalysisObject::vsplit(const string& s)
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
Int_tTHaAnalysisObject::DefineVarsFromList(const VarDef* list, THaAnalysisObject::EMode mode = kDefine, const char* var_prefix = "") const
Int_tTHaAnalysisObject::DefineVarsFromList(const RVarDef* list, THaAnalysisObject::EMode mode = kDefine, const char* var_prefix = "") const
Int_tTHaAnalysisObject::DefineVarsFromList(const void* list, THaAnalysisObject::EType type, THaAnalysisObject::EMode mode, const char* var_prefix = "") const
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
THaAnalysisObject*THaAnalysisObject::FindModule(const char* name, const char* classname, bool do_error = true)
static vector<std::string>THaAnalysisObject::GetDBFileList(const char* name, const TDatime& date, const char* here = "GetDBFileList()")
virtual const char*THaAnalysisObject::Here(const char*) const
virtual voidTHaApparatus::MakePrefix()
voidTObject::MakeZombie()
virtual FILE*THaAnalysisObject::OpenFile(const TDatime& date)
virtual FILE*THaAnalysisObject::OpenRunDBFile(const TDatime& date)
static char*THaAnalysisObject::ReadComment(FILE* fp, char* buf, const int len)
virtual Int_tReadDatabase(const TDatime& date)
virtual Int_tTHaSpectrometer::ReadRunDatabase(const TDatime& date)
virtual Int_tTHaAnalysisObject::RemoveVariables()

Data Members

public:
enum THaSpectrometer::EStagesDone { kCoarseTrack
kCoarseRecon
kTracking
kReconstruct
};
enum THaAnalysisObject::EStatus { kOK
kNotinit
kInitError
kFileError
};
enum THaAnalysisObject::EType { kVarDef
kRVarDef
};
enum THaAnalysisObject::EMode { kDefine
kDelete
};
enum THaAnalysisObject::EProperties { kNeedsRunDB
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
static const Double_tTHaAnalysisObject::kBig= 1.e38; // default junk value
protected:
Double_tTHaSpectrometer::fCollDistDistance from collimator to target center (m)
TStringTHaAnalysisObject::fConfigConfiguration to use from database
Double_tTHaSpectrometer::fCosPhGeoin geographical coordinates
Double_tTHaSpectrometer::fCosPhSphspherical coordinates
Double_tTHaSpectrometer::fCosThGeoSine and cosine of central angles
Double_tTHaSpectrometer::fCosThSphSine and cosine of central angles in
Int_tTHaAnalysisObject::fDebugDebug level
TList*THaApparatus::fDetectorsList of all detectors for this apparatus
THaTrack*THaSpectrometer::fGoldenTrackGolden track within fTracks
TDatimeTHaAnalysisObject::fInitDateDate passed to Init
Bool_tTHaAnalysisObject::fIsInitFlag indicating that ReadDatabase done
Bool_tTHaAnalysisObject::fIsSetupFlag indicating that DefineVariables done.
TStringTNamed::fNameobject identifier
TList*THaSpectrometer::fNonTrackingDetectorsNon-tracking detectors
Bool_tTHaAnalysisObject::fOKOutFlag indicating object-output prepared
TReffOpticspointer to optics calculation class
Bool_tTHaSpectrometer::fPIDPID enabled
Double_tTHaSpectrometer::fPcentralCentral momentum (GeV)
Double_tTHaSpectrometer::fPhiGeoOut-of-plane geographic central angle (rad)
Double_tTHaSpectrometer::fPhiSphCentral angles in spherical coords. (rad)
TObjArray*THaSpectrometer::fPidDetectorsPID detectors
TObjArray*THaSpectrometer::fPidParticlesParticles for which we want PID
TVector3THaSpectrometer::fPointingOffsetOptical point in lab coordinate system
char*THaAnalysisObject::fPrefixName prefix for global variables
UInt_tTHaAnalysisObject::fPropertiesProperties of this object (see EProperties)
Double_tTHaSpectrometer::fSinPhGeo
Double_tTHaSpectrometer::fSinPhSph
Double_tTHaSpectrometer::fSinThGeo
Double_tTHaSpectrometer::fSinThSph
UInt_tTHaSpectrometer::fStagesDoneBitfield of completed analysis stages
THaAnalysisObject::EStatusTHaAnalysisObject::fStatusInitialization status flag
Double_tTHaSpectrometer::fThetaGeoIn-plane geographic central angle (rad)
Double_tTHaSpectrometer::fThetaSph
TStringTNamed::fTitleobject title
TRotationTHaSpectrometer::fToLabRotRotation matrix from TRANSPORT to lab
TRotationTHaSpectrometer::fToTraRotRotation matrix from lab to TRANSPORT
TClonesArray*THaSpectrometer::fTrackPIDPID info for the tracks
TList*THaSpectrometer::fTrackingDetectorsTracking detectors
TClonesArray*THaSpectrometer::fTracksTracks
Double_tfTriggerTimingOffsetReal_TDC = TDC(common-stop) - fTriggerTimingOffset. It's up to derived class to clear and update according to its trigger setup.
THaTrack*THaTrackingModule::fTrk! Pointer to associated track
THaTrackInfoTHaTrackingModule::fTrkIfoTrack information
TVector3THaVertexModule::fVertexVertex position (m)
TVector3THaVertexModule::fVertexErrorUncertainties in fVertex coordinates
Bool_tTHaVertexModule::fVertexOK
static const Int_tTHaSpectrometer::kInitTrackMultiplicity

Class Charts

Inheritance Chart:
TObject
TNamed
THaAnalysisObject
THaApparatus
THaTrackingModule
THaVertexModule
THaSpectrometer
THaBigBite
THaBigBiteE06010
THaBigBiteTpMwdc

Function documentation

Int_t DebugPort(void* p)
~THaBigBite()
THaBigBite(const char* name, const char* description)
Bool_t MountOptics(THaOptics* )
mount a optics class to the Spectrometer.
return true if successful.
Notice: This function have to be called before Init() to make sure readdatebase
        is called for the optics class.
Int_t DefineVariables(THaAnalysisObject::EMode mode)
 Define/delete standard variables for a spectrometer (tracks etc.)
 Can be overridden or extended by derived (actual) apparatuses
Int_t FindVertices(TClonesArray& tracks)
 Reconstruct target coordinates for all tracks found in the focal plane.
THaAnalysisObject::EStatus Init(const TDatime& run_time)
Int_t ReadDatabase(const TDatime& date)
Int_t TrackCalc()
Double_t GetTriggerTimingOffset()
Trigger Correction

{return fTriggerTimingOffset;}
THaOptics * GetOptics()
{return (THaOptics *)(fOptics.GetObject());}

Author: Jin Huang July 2007
Last update: Tue Jul 7 19:26:16 2009

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.