class LOpticsOpt: public THaTrackingDetector


 LOpticsOpt

 HRS optics matrix optimization class
 Based on THaVDC

 Units used:
        For X, Y, and Z coordinates of track    -  meters
        For Theta and Phi angles of track       -  tan(angle)
        For Momentums, Masses                   -  GeV, GeV/c^2

 Author: Jin Huang <jinhuang@jlab.org>


Function Members (Methods)

public:
LOpticsOpt(const char* name = "Optimizer", const char* description = "Optimizer for HRS Optics", THaApparatus* apparatus = 0)
virtual~LOpticsOpt()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
UInt_tArray2Matrix(const Double_t* Array)
UInt_tArray2Matrix(const Double_t* Array, vector<THaMatrixElement>& Matrix)
virtual Int_tTHaAnalysisObject::Begin(THaRunBase* r = 0)
virtual voidTObject::Browse(TBrowser* b)
boolTHaSpectrometerDetector::CalcInterceptCoords(THaTrack* track, Double_t& x, Double_t& y)
voidCalcMatrix(const Double_t x, vector<THaMatrixElement>& matrix)
boolTHaSpectrometerDetector::CalcPathLen(THaTrack* track, Double_t& t)
Double_tCalcTarget2FPLen(const vector<THaMatrixElement>& matrix, const Double_t** powers)
voidCalcTargetCoords(THaTrack* track, const LOpticsOpt::ECoordTypes mode)
Double_tCalcTargetVar(const vector<THaMatrixElement>& matrix, const Double_t** powers)
TCanvas*CheckDp()
TCanvas*CheckDpVSAngle()
TCanvas*CheckDpVSCutID()
boolTHaSpectrometerDetector::CheckIntercept(THaTrack* track)
TCanvas*CheckSieve()
TCanvas*CheckVertex()
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidClear(Option_t* opt = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tCoarseTrack(TClonesArray& tracks)
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual Int_tConstructTracks(TClonesArray* tracks = 0, Int_t flag = 0)
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 = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
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_tFindVertices(TClonesArray& tracks)
virtual Int_tFineTrack(TClonesArray& tracks)
static voidTHaAnalysisObject::GeoToSph(Double_t th_geo, Double_t ph_geo, Double_t& th_sph, Double_t& ph_sph)
THaApparatus*THaDetector::GetApparatus() const
const char*THaAnalysisObject::GetConfig() const
virtual const char*THaAnalysisObject::GetDBFileName() const
Int_tTHaAnalysisObject::GetDebug() const
THaDetMap*THaDetectorBase::GetDetMap() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
TDatimeTHaAnalysisObject::GetInitDate() const
virtual const char*TNamed::GetName() const
Int_tTHaDetectorBase::GetNelem() 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
const char*THaAnalysisObject::GetPrefix() 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& date)
virtual Int_tTHaAnalysisObject::InitOutput(THaOutput*)
virtual voidTObject::Inspect() constMENU
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_tTHaTrackingDetector::IsPid()
virtual Bool_tTNamed::IsSortable() const
virtual Bool_tTHaTrackingDetector::IsTracking()
Bool_tTObject::IsZombie() const
Int_tLoadDataBase(TString DataBaseName)
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)
UInt_tLoadRawData(TString DataFileName, UInt_t NLoad = MaxNRawData)
virtual voidTNamed::ls(Option_t* option = "") const
UInt_tMatrix2Array(Double_t* Array, Bool_t* FreeParaFlag = 0)
UInt_tMatrix2Array(Double_t* Array, const vector<THaMatrixElement>& Matrix, Bool_t* FreeParaFlag = 0)
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)
TNamed&TNamed::operator=(const TNamed& rhs)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
voidPrepareDp()
voidPrepareSieve()
voidPrepareVertex()
virtual voidPrint(Option_t* opt) const
voidTHaDetectorBase::PrintDetMap(Option_t* opt = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
Int_tSaveDataBase(TString DataBaseName)
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
Double_tScatMom(Double_t DM, Double_t Ma, Double_t P0, Double_t Theta)
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)
virtual voidTHaDetector::SetApparatus(THaApparatus*)
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 voidTObject::SetDrawOption(Option_t* option = "")MENU
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 voidTNamed::SetTitle(const char* title = "")MENU
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)
Double_tSumSquareDp(Bool_t IncludeExtraData = kFALSE)
Double_tSumSquareDPhi()
Double_tSumSquareDTgY()
Double_tSumSquareDTgYAverFoils()
Double_tSumSquareDTh()
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()
Double_tVerifyMatrix_Dp()
Double_tVerifyMatrix_Sieve()
Double_tVerifyMatrix_Vertex()
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:
virtual THaTrack*THaTrackingDetector::AddTrack(TClonesArray& tracks, Double_t x, Double_t y, Double_t theta, Double_t phi, THaTrackID* ID = NULL)
boolTHaSpectrometerDetector::CalcTrackIntercept(THaTrack* track, Double_t& t, Double_t& ycross, Double_t& xcross)
virtual voidTHaSpectrometerDetector::DefineAxes(Double_t rotation_angle)
virtual Int_tTHaAnalysisObject::DefineVariables(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
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 voidTHaDetector::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_tTHaAnalysisObject::ReadDatabase(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()

Data Members

public:
enum { MaxNEventData
MaxNRawData
kNUM_PRECOMP_POW
};
enum CommonIdx { kCutID
kX
kTh
kY
kPhi
kBeamX
kBeamY
kL_tr_tg_th
kL_tr_tg_ph
};
enum ExtraSieveIdx { kRealTh
kRealPhi
kRealTgX
kRealThMatrix
kCalcTh
kCalcPh
};
enum ExtraVertexIdx { kL_tr_tg_y
kRealTgY
kRealReactZ
kCalcTgY
kCalcReactZ
};
enum ExtraDpIdx { kL_tr_tg_dp
kL_tr_p
kurb_e
kRunNum
kExtraDataFlag
kKineID
kCentralp
kRadiLossDp
kScatterAngle
kDpKinOffsets
kRealDpKin
kRealDpKinMatrix
kCalcDpKinMatrix
kCalcDpKin
kRealDpKinExcitations
};
enum { kStageMask
kInvalid
kCoarse
kFine
kReassigned
kMultiTrack
kBadTrack
kOnlyFastest
kTDCbits
kHardTDCcut
kSoftTDCcut
kIgnoreNegDrift
kCoarseOnly
};
enum ECoordTypes { kTransport
kRotatingTransport
};
enum EFPMatrixElemTags { T000
Y000
P000
};
enum { kPORDER
};
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:
Double_tfArbitaryDpKinShift[100]compensate bias due to dp event selections, array of [KineID]
Double_tfArbitaryVertexShift[100]compensate bias due to event selections, array of [FoilID]
vector<THaMatrixElement>*fCurrentMatrixElems
vector<THaMatrixElement>fDMatrixElems
vector<THaMatrixElement>fFPMatrixElemsmatrix elements used in
vector<THaMatrixElement>fLMatrixElemsPath-length corrections (meters)
UInt_tfNCalibDatafor dp calib only
UInt_tfNRawData
vector<THaMatrixElement>fPMatrixElems
vector<THaMatrixElement>fPTAMatrixElemsinvolves abs(theta_fp)
TVector3fPointingOffsetOptical point in lab coordinate system
LOpticsOpt::EventDatafRawData[1000000][fNRawData]
TRotationfTCSInHCStransformations vector from TCS to HCS
vector<THaMatrixElement>fTMatrixElems
vector<THaMatrixElement>fYMatrixElems
vector<THaMatrixElement>fYTAMatrixElemsinvolves abs(theta_fp)
static const Double_tTHaAnalysisObject::kBig= 1.e38; // default junk value
protected:
TStringTHaAnalysisObject::fConfigConfiguration to use from database
Int_tTHaAnalysisObject::fDebugDebug level
THaDetMap*THaDetectorBase::fDetMapHardware channel map for this detector
TDatimeTHaAnalysisObject::fInitDateDate passed to Init
Bool_tTHaAnalysisObject::fIsInitFlag indicating that ReadDatabase done
Bool_tTHaAnalysisObject::fIsSetupFlag indicating that DefineVariables done.
TStringTNamed::fNameobject identifier
Int_tTHaDetectorBase::fNelemNumber of detector elements (paddles, mirrors)
Bool_tTHaAnalysisObject::fOKOutFlag indicating object-output prepared
TVector3THaDetectorBase::fOriginCenter position of detector (m)
char*THaAnalysisObject::fPrefixName prefix for global variables
UInt_tTHaAnalysisObject::fPropertiesProperties of this object (see EProperties)
Float_tTHaDetectorBase::fSize[3]Detector size in x,y,z (m) - x,y are half-widths
THaAnalysisObject::EStatusTHaAnalysisObject::fStatusInitialization status flag
TStringTNamed::fTitleobject title
TVector3THaSpectrometerDetector::fXaxX axis of the detector plane
TVector3THaSpectrometerDetector::fYaxY axis of the detector plane
TVector3THaSpectrometerDetector::fZaxNormal to the detector plane

Class Charts

Inheritance Chart:
THaTrackingDetector
LOpticsOpt

Function documentation

Double_t SumSquareDp(Bool_t IncludeExtraData = kFALSE)
return square sum of diff between calculated dp_kin and expected dp_kin
Double_t SumSquareDTh(void)
return square sum of diff between calculated tg_th and expected tg_th
Double_t SumSquareDPhi(void)
return square sum of diff between calculated tg_ph and expected tg_ph
Double_t SumSquareDTgY(void)
Double_t SumSquareDTgYAverFoils(void)
void PrepareSieve(void)
calculate kRealTh, kRealPhi
void PrepareVertex(void)
calculate kRealTgY, kRealReactZ
void PrepareDp(void)
calate expected dp_kin, dp_kin offsets ....
Fill up fRawData[].Data[] kKineID thr kRealDpKin
TCanvas * CheckSieve()
Visualize Sieve Plane
TCanvas * CheckVertex()
Visualize ReactZ spectrum
TCanvas * CheckDp()
Visualize 1D hitogram of dp_kin
TCanvas * CheckDpVSAngle()
TCanvas * CheckDpVSCutID()
Visualize 2D hitogram of Sieve Hole+Foil ID VS dp_kin
Double_t VerifyMatrix_Sieve(void)
static summarize difference between tg_th, th_ph caculated from current database and those in root file
Double_t VerifyMatrix_Vertex(void)
static summarize difference between tg_y caculated from current database and those in root file
Double_t VerifyMatrix_Dp(void)
LOpticsOpt(const char* name = "Optimizer", const char* description = "Optimizer for HRS Optics", THaApparatus* apparatus = 0)
 Constructor
Int_t LoadDataBase(TString DataBaseName)
 Read VDC database
~LOpticsOpt()
 Destructor.
void CalcTargetCoords(THaTrack* track, const LOpticsOpt::ECoordTypes mode)
 calculates target coordinates from focal plane coordinates
void CalcMatrix(const Double_t x, vector<THaMatrixElement>& matrix)
 calculates the values of the matrix elements for a given location
 by evaluating a polynomial in x of order it->order with
 coefficients given by it->poly
Double_t CalcTargetVar(const vector<THaMatrixElement>& matrix, const Double_t** powers)
 calculates the value of a variable at the target
 the x-dependence is already in the matrix, so only 1-3 (or np) used
Double_t CalcTarget2FPLen(const vector<THaMatrixElement>& matrix, const Double_t** powers)
 calculates distance from the nominal target position (z=0)
 to the transport plane
UInt_t LoadRawData(TString DataFileName, UInt_t NLoad = MaxNRawData)
load "f51" ascii data file to Rawdata[]
UInt_t Matrix2Array(Double_t* Array, const vector<THaMatrixElement>& Matrix, Bool_t* FreeParaFlag = 0)
Matrix -> Array
 	DEBUG_INFO("Matrix2Array","Entry Point");
UInt_t Array2Matrix(const Double_t* Array, vector<THaMatrixElement>& Matrix)
Array -> fCurrentMatrixElems
 	DEBUG_INFO("Array2Matrix","Entry Point");
void Print(Option_t* opt) const
Print current matrix
Int_t SaveDataBase(TString DataBaseName)
THaAnalysisObject::EStatus Init(const TDatime& date)
 Initialize VDC. Calls standard Init(), then initializes subdetectors.
Int_t ConstructTracks(TClonesArray* tracks = 0, Int_t flag = 0)
void Clear(Option_t* opt = "")
Int_t Decode(const THaEvData& )
Int_t CoarseTrack(TClonesArray& tracks)
Int_t FineTrack(TClonesArray& tracks)
Int_t FindVertices(TClonesArray& tracks)
 Calculate the target location and momentum at the target.
 Assumes that CoarseTrack() and FineTrack() have both been called.
UInt_t Matrix2Array(Double_t* Array, Bool_t* FreeParaFlag = 0)
{assert(fCurrentMatrixElems);return Matrix2Array(Array,(*fCurrentMatrixElems),FreeParaFlag);}
UInt_t Array2Matrix(const Double_t* Array)
{assert(fCurrentMatrixElems);return Array2Matrix(Array,(*fCurrentMatrixElems));}
Double_t ScatMom(Double_t DM, Double_t Ma, Double_t P0, Double_t Theta)
Calc Scattered Electron Momentum
 Assuming Electron with P0, Scattering on a fix target of Mass Ma Assuming
 recoil system is a resonance of DM and scattering angle is Theta.

Last change: Sat Aug 29 01:15:07 2009
Last generated: 2009-08-29 01:15

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.