class THaScintPlane: public THaSubDetector


 THaScintPlane

 Class for trigger plane  consisting of multiple
 paddles with phototubes on both ends. paddles
 is supposed to be along y axis.

 Supports F1TDC



	Author : Copy from AGen Lib neutron detection
	Modify History:
		Jin Huang <mailto:jinhuang@jlab.org>    July 2007
			make database file supporting comment
			disable Multi Hit which is for neutron detection
      Jin Huang    Mar 2007
          Threshold of error reference per event that will pop up warnings


Function Members (Methods)

public:
THaScintPlane()
THaScintPlane(const char* name, const char* description, THaDetectorBase* parent)
virtual~THaScintPlane()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
Int_tAreRefChOkay() const
virtual Int_tTHaAnalysisObject::Begin(THaRunBase* r = 0)
virtual voidTObject::Browse(TBrowser* b)
Int_tBuildAllBars(TClonesArray& trks)
Int_tBuildCompleteBars(TClonesArray& trks)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTHaAnalysisObject::Clear(Option_t*)
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tCoarseProcess(TClonesArray& tracks)
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual Int_tDecode(const THaEvData&)
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_tTHaAnalysisObject::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)
Int_tTHaDetectorBase::FillDetMap(const vector<Int_t>& values, UInt_t flags = 0, const char* here = "FillDetMap")
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Int_tFineProcess(TClonesArray& tracks)
static voidTHaAnalysisObject::GeoToSph(Double_t th_geo, Double_t ph_geo, Double_t& th_sph, Double_t& ph_sph)
THaApparatus*THaSubDetector::GetApparatus() const
THaScintBar*GetBar(Int_t i) const
const THaAdcHit*GetBarHitA(const char side, const THaScintBar *const ptr, const int n = 0) const
const THaTdcHit*GetBarHitT(const char side, const THaScintBar *const ptr, const int n = 0) const
TClonesArray*GetBars() const
const char*THaAnalysisObject::GetConfig() const
Int_tTHaAnalysisObject::GetDebug() const
THaDetectorBase*THaSubDetector::GetDetector() const
THaDetMap*THaDetectorBase::GetDetMap() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
THaScintHit*GetHit(Int_t i) const
TClonesArray*GetHits() const
virtual const char*TObject::GetIconName() const
TDatimeTHaAnalysisObject::GetInitDate() const
const THaAdcHit*GetLaHit(Int_t i) const
TClonesArray*GetLaHits() const
const THaTdcHit*GetLtHit(Int_t i) const
TClonesArray*GetLtHits() const
THaDetector*THaSubDetector::GetMainDetector() const
virtual const char*TNamed::GetName() const
Int_tGetNBars() const
Int_tTHaDetectorBase::GetNelem() const
Int_tGetNHits() const
Int_tGetNLaHits() const
Int_tGetNLtHits() const
Int_tGetNPartHits() const
Int_tGetNRaHits() const
Int_tGetNRefCh() const
Int_tGetNRefHits() const
Int_tGetNRtHits() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
const TVector3&THaDetectorBase::GetOrigin() const
THaDetectorBase*THaSubDetector::GetParent() const
const THaPartialHit*GetPartHit(Int_t i) const
TClonesArray*GetPartHits() const
const char*THaAnalysisObject::GetPrefix() const
const THaAdcHit*GetRaHit(Int_t i) const
TClonesArray*GetRaHits() const
TClonesArray*GetRefCh() const
const THaScintPMT*GetRefCh(Int_t i) const
const THaTdcHit*GetRefHit(Int_t i) const
TClonesArray*GetRefHits() const
const THaTdcHit*GetRtHit(Int_t i) const
TClonesArray*GetRtHits() const
const Float_t*THaDetectorBase::GetSize() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
Float_tTHaDetectorBase::GetXSize() const
Float_tTHaDetectorBase::GetYSize() const
Float_tTHaDetectorBase::GetZSize() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() 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_tInitOutput(THaOutput* output)
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
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
virtual Bool_tIsPid()
virtual Bool_tTNamed::IsSortable() const
Bool_tIsTracking()
Bool_tTObject::IsZombie() 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_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)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
voidTHaDetectorBase::PrintDetMap(Option_t* opt = "") const
virtual Int_tTObject::Read(const char* name)
char*ReadNumberSignStartComment(FILE* fp, char* buf, const int len)
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)
voidTHaSubDetector::SetDetector(THaDetectorBase* det)
virtual voidTObject::SetDrawOption(Option_t* option = "")
static voidTObject::SetDtorOnly(void* obj)
virtual voidTHaAnalysisObject::SetName(const char* name)
virtual voidTHaAnalysisObject::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTHaSubDetector::SetParent(THaDetectorBase*)
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 voidTObject::UseCurrentStyle()
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:
voidClearEvent()
virtual Int_tDefineVariables(THaAnalysisObject::EMode mode = kDefine)
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
voidDeleteArrays()
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*THaSubDetector::GetDBFileName() const
Int_tGetParameter(FILE* file, const TString tag, Double_t* value)
Int_tGetTable(FILE* file, const TString tag, Double_t* value, const Int_t maxval, int* first, int* last)
virtual const char*THaAnalysisObject::Here(const char*) const
virtual voidTHaSubDetector::MakePrefix()
voidTObject::MakeZombie()
virtual FILE*THaAnalysisObject::OpenFile(const TDatime& date)
virtual FILE*THaAnalysisObject::OpenRunDBFile(const TDatime& date)
THaScintPlane&operator=(const THaScintPlane&)
static char*THaAnalysisObject::ReadComment(FILE* fp, char* buf, const int len)
virtual Int_tReadDatabase(const TDatime& date)
virtual Int_tTHaDetectorBase::ReadGeometry(FILE* file, const TDatime& date, Bool_t required = kFALSE)
virtual Int_tTHaAnalysisObject::ReadRunDatabase(const TDatime& date)
virtual Int_tTHaAnalysisObject::RemoveVariables()
virtual Double_tTimeWalkCorrection(THaScintPMT* pmt, Double_t ADC, Double_t time)

Data Members

public:
enum ESide { kLeft
kRight
};
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_t*Energy[fNBars]
Double_t*TDIFF[fNBars]
Double_t*TOF[fNBars]
Double_t*T_tot[fNBars]
Double_t*Y_dev[fNBars]
Double_t*Y_pred[fNBars]
Double_t*Ya_pos[fNBars]
Double_t*Yt_pos[fNBars]
Double_t*fAngle[fNBars]
TClonesArray*fBars
TStringTHaAnalysisObject::fConfigConfiguration to use from database
Int_tTHaAnalysisObject::fDebugDebug level
THaDetMap*THaDetectorBase::fDetMapHardware channel map for this detector
Int_tfErrorReferenceChCounthow many event got no reference channel
Double_tfErrorReferenceChRateWarningThreshold
Int_tfEventCounthow many event processed
TClonesArray*fHitsHits in paddles
TDatimeTHaAnalysisObject::fInitDateDate passed to Init
Bool_tTHaAnalysisObject::fIsInitFlag indicating that ReadDatabase done
Bool_tTHaAnalysisObject::fIsSetupFlag indicating that DefineVariables done.
Int_tfLANhitNumber of Left paddles ADC amplitudes */
Double_t*fLE[fNBars]
Double_t*fLT[fNBars]
Int_tfLTNhitNumber of Left paddles TDC times */
Int_t*fLTcounter[fNBars]
TClonesArray*fLaHits
Int_t*fLaIndex![fNBars] // left-adc
Double_t*fLpedcA[fNBars]
Double_t*fLrawA[fNBars]
TClonesArray*fLtHits
Int_t*fLtIndex![fNBars] // for left-tdc
Int_tfNBars
Int_tfNPaddlesHit
Int_tfNRefHitsNumber of refch that were hit
TStringTNamed::fNameobject identifier
Int_tTHaDetectorBase::fNelemNumber of detector elements (paddles, mirrors)
Bool_tTHaAnalysisObject::fOKOutFlag indicating object-output prepared
TVector3THaDetectorBase::fOriginCenter position of detector (m)
TClonesArray*fPartHits
char*THaAnalysisObject::fPrefixName prefix for global variables
UInt_tTHaAnalysisObject::fPropertiesProperties of this object (see EProperties)
Int_tfRANhitNumber of Right paddles ADC amplitudes */
Double_t*fRE[fNBars]
Double_t*fRT[fNBars]
Int_tfRTNhitNumber of Right paddles TDC times */
Int_t*fRTcounter[fNBars]
TClonesArray*fRaHits
Int_t*fRaIndex![fNBars] // right-adc
TClonesArray*fRefChreference channels for pipeline tdc
TClonesArray*fRefHits
Bool_tfRefOkay
Double_t*fRpedcA[fNBars]
Double_t*fRrawA[fNBars]
TClonesArray*fRtHits
Int_t*fRtIndex![fNBars] // right-tdc
Float_tTHaDetectorBase::fSize[3]Detector size in x,y,z (m) - x,y are half-widths
THaAnalysisObject::EStatusTHaAnalysisObject::fStatusInitialization status flag
TStringTNamed::fTitleobject title
Bool_tfTooManyErrRefChflag whether there are too much error reference
TVector3fXax
Int_t*hitcounter[fNBars]

Class Charts

Inheritance Chart:
TObject
TNamed
THaAnalysisObject
THaDetectorBase
THaSubDetector
THaScintPlane

Function documentation

THaScintPlane(const char* name, const char* description, THaDetectorBase* parent)
THaScintPlane( )
 default constructors for input/output
Int_t GetParameter(FILE* file, const TString tag, Double_t* value)
Int_t GetTable(FILE* file, const TString tag, Double_t* value, const Int_t maxval, int* first, int* last)
Int_t ReadDatabase(const TDatime& date)
 Read this detector's parameters from the database file 'fi'.
 This function is called by THaDetectorBase::Init() once at the
 beginning of the analysis.
 'date' contains the date/time of the run being analyzed.
THaAnalysisObject::EStatus Init(const TDatime& run_time)
 Extra initialization for scintillator plane: set up DataDest map
Int_t DefineVariables(THaAnalysisObject::EMode mode = kDefine)
 Initialize global variables and lookup table for decoder
Int_t InitOutput(THaOutput* output)
 Use the tree to store output
~THaScintPlane()
 Destructor. Remove variables from global list.
void DeleteArrays()
 Delete member arrays. Used by destructor.
void ClearEvent()
 Reset per-event data.
Double_t TimeWalkCorrection(THaScintPMT* pmt, Double_t ADC, Double_t time)
 Calculate the time-walk correction. The timewalk might be
 dependent upon the specific PMT, so information about exactly
 which PMT fired is required.
Int_t Decode(const THaEvData& )
 Decode scintillator data, correct TDC times and ADC amplitudes, and copy
 the data to the local data members.
Int_t CoarseProcess(TClonesArray& tracks)
Int_t BuildAllBars(TClonesArray& trks)
 go through ALL the hits and build not only the complete hits, but also
 the partial hits
Int_t FineProcess(TClonesArray& tracks)
TODO: add fine proc code
const THaTdcHit* GetBarHitT(const char side, const THaScintBar *const ptr, const int n = 0) const
 return matching Tdc from bar ptr on side, the n'th Tdc signal
const THaAdcHit* GetBarHitA(const char side, const THaScintBar *const ptr, const int n = 0) const
 return matching Adc from bar ptr on side, return n'th signal (over-doingit)
Int_t BuildCompleteBars(TClonesArray& trks)
 idea: for each TDC fire, construct a full hit from the ADC and other side TDC
      since multi-hit TDCs, right now constructing a set for each combination
char* ReadNumberSignStartComment(FILE* fp, char* buf, const int len)
 Read blank and comment lines
 return NULL if is not comment line
Bool_t IsTracking()
Int_t              ConstructTracks( TClonesArray * tracks = NULL ) {return 0;}
{ return kFALSE; }
Bool_t IsPid()
{ return kFALSE; }
Int_t GetNBars()
Int_t              CombineHits( TClonesArray& trks );       // build plane clusters
 Public Get and Set functions for Hit Information
{ return fBars->GetLast()+1; }
Int_t GetNHits()
 Per Event
{ return fHits->GetLast()+1; }
Int_t GetNRefHits()
{ return fRefHits->GetLast()+1;}
Int_t GetNLtHits()
{ return fLtHits->GetLast()+1; }
Int_t GetNRtHits()
{ return fRtHits->GetLast()+1; }
Int_t GetNLaHits()
{ return fLaHits->GetLast()+1; }
Int_t GetNRaHits()
{ return fRaHits->GetLast()+1; }
Int_t GetNPartHits()
Int_t GetNCombinedHits() const { return fCombHits->GetLast()+1; }
{ return fPartHits->GetLast()+1;}
TClonesArray* GetBars()
{return fBars;}
THaScintBar* GetBar(Int_t i) const
{return (THaScintBar*)fBars->At(i);}
TClonesArray* GetHits()
{return fHits;}
THaScintHit* GetHit(Int_t i) const
{return (THaScintHit*)fHits->At(i);}
TClonesArray* GetRefHits()
TClonesArray* GetCombinedHits() const {return fCombHits;}
THaMultiHit* GetCombHit(Int_t i) const
  {return (THaMultiHit*)fCombHits->At(i);}
{return fRefHits;}
const THaTdcHit* GetRefHit(Int_t i) const
{return (THaTdcHit*)fRefHits->At(i);}
TClonesArray* GetLtHits()
{return fLtHits;}
const THaTdcHit* GetLtHit(Int_t i) const
{return (THaTdcHit*)fLtHits->At(i);}
TClonesArray* GetRtHits()
{return fRtHits;}
const THaTdcHit* GetRtHit(Int_t i) const
{return (THaTdcHit*)fRtHits->At(i);}
TClonesArray* GetLaHits()
{return fLaHits;}
const THaAdcHit* GetLaHit(Int_t i) const
{return (THaAdcHit*)fLaHits->At(i);}
TClonesArray* GetRaHits()
{return fRaHits;}
const THaAdcHit* GetRaHit(Int_t i) const
{return (THaAdcHit*)fRaHits->At(i);}
Int_t GetNRefCh()
{ return fRefCh->GetLast()+1; }
TClonesArray* GetRefCh(Int_t i) const
{ return fRefCh; }
const THaScintPMT* GetRefCh(Int_t i) const
{ return (THaScintPMT*)fRefCh->At(i);}
Int_t AreRefChOkay()
{ return ( fRefOkay ? 1 : 0 ); }
TClonesArray* GetPartHits()
{return fPartHits;}
const THaPartialHit* GetPartHit(Int_t i) const
{return (THaPartialHit*)fPartHits->At(i);}
THaScintPlane& operator=(const THaScintPlane& )
{return *this; }

Last update: Tue Jul 7 19:26:18 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.