class HMdcGeomParF: public HReconstructor

_HADES_CLASS_DESCRIPTION


 HMdcGeomParF    (ongoing work)

 Performs the MDC software alignment and writes a modified
 HMdcGeomPar in the root file.

 The execute() function makes nothing. All functionality is
 implemented in the finalize() function, where it takes the
 TTree results from HMdcAligner. Performs calls to TMinuit
 trying to minimize the distance to Z axis. For the obtained
 parameters, makes the control histograms and returns ascii
 file and new geometrical parameters container.


Function Members (Methods)

public:
HMdcGeomParF()
HMdcGeomParF(Int_t sector, Int_t modA, Int_t modB)
HMdcGeomParF(const Text_t* name, const Text_t* title, Int_t sector, Int_t modA)
HMdcGeomParF(const Text_t* name, const Text_t* title, Int_t sector, Int_t modA, Int_t modB, Int_t modC = -1, Int_t modD = -1)
virtual~HMdcGeomParF()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidHReconstructor::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual Bool_tHReconstructor::connectTask(HTask* task, Int_t n = 0)
virtual voidTNamed::Copy(TObject& named) const
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 voidTObject::Error(const char* method, const char* msgfmt) const
virtual Int_texecute()
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
voidexecute0()
voidexecute1()
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)
voidfillHistograms(Int_t index)
voidfillRotLab(Float_t prim, Float_t segu, Float_t terc)
voidfillRotMatrix(Int_t i, Float_t prim, Float_t segu, Float_t terc)
voidfillTransLab(Float_t x, Float_t y, Float_t z)
voidfillTranslation(Int_t i, Float_t x, Float_t y, Float_t z)
virtual Bool_tfinalize()
HGeomVectorfindEulerAngles(HGeomRotation rot)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidfindZComponent()
virtual HTask*HReconstructor::getComposite()
virtual voidHReconstructor::getConnections()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual HTask*HTask::getOwner()
HGeomRotationgetRotLab()
HGeomRotationgetRotMatrix(Int_t i)
TObjArrayHReconstructor::getTable()
virtual HTask*HReconstructor::getTask(const Char_t* name)
virtual const char*TNamed::GetTitle() const
HGeomVectorgetTransLab()
HGeomVectorgetTranslation(Int_t i)
TTree*getTree()
virtual UInt_tTObject::GetUniqueID() 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 Bool_tinit()
voidinitDefaults()
Bool_tinitDelayed()
voidinitMinimization()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tHReconstructor::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
virtual voidHReconstructor::isTimed(Bool_t flag = kTRUE)
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
voidminfit(Int_t fix, Float_t fE, Float_t sE, Float_t tE, Float_t fT, Float_t sT, Float_t tT)
virtual HTask*HReconstructor::next(Int_t& errCode)
virtual Bool_tTObject::Notify()
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)
HTask&HTask::operator=(const HTask&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual voidHReconstructor::printTimer()
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Bool_treinit()
voidTObject::ResetBit(UInt_t f)
virtual voidHReconstructor::resetTimer()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidHReconstructor::setActive(Bool_t state)MENU
voidsetAngleCut(Float_t aCut)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual Bool_tHTask::setConnections()
voidsetControlHistoOff()
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidsetEulerAngles(Int_t, Float_t f, Float_t s, Float_t t)
voidsetEulerLabAngles(Float_t f, Float_t s, Float_t t)
voidsetFix(Int_t fix)
voidsetGeomAuxPar()
voidsetGeomParManOn()
voidsetHistograms()
voidsetInitValue(Float_t x, Float_t y, Float_t z)
voidsetIterCriteria(Float_t cri)
voidsetLimits(Float_t l0, Float_t l1, Float_t l2, Float_t l3, Float_t l4, Float_t l5)
voidHTask::setManual()
voidsetMinimization(Int_t select = 1)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidsetNoCut()
static voidTObject::SetObjectStat(Bool_t stat)
voidsetOutputAscii(TString name)
voidsetOutputRoot(TString name)
virtual voidHTask::setOwner(HTask* atask)
voidsetParContainers()
voidsetRelParams(HGeomVector*& ang, HGeomVector*& tra)
voidsetSearchLimits(Float_t x, Float_t y)
voidsetSteps(Float_t s0, Float_t s1, Float_t s2, Float_t s3, Float_t s4, Float_t s5)
voidsetTargetFinderFor2Mods()
virtual voidTNamed::SetTitle(const char* title = "")MENU
voidsetTukeyConstant(Float_t cte, Float_t step = 1, Float_t res = 1, Float_t end = 0.4)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidsetUnitErrors()
voidsetYPosCut(Float_t aYCut)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual Int_tTNamed::Sizeof() const
voidstoreInFile()
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_ttargetFinder(ofstream* fout)
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
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
voidwriteGeomParContainer()
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

public:
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
TH3F**fDisCTuk! distance to (0,0,0)
TH1F**fDisCenter! distance to (0,0,0)
TH1F**fDisZ! distance to Z axis
Float_t*fLimits! Limits for minimization
TH2F**fPlanex! projection on planes
TH2F**fPlaney!
TH2F**fPlanez!
TH1F**fProxY! x proj for fPlaney
TH1F**fProxZ! x proj for fPlanez
TH1F**fProyX! y proj for fPlanex
TH1F**fProyZ! y proj for fPlanez
TH1F**fProzX! z proj for fPlanex
TH1F**fProzY! z proj for fPlaney
Float_t*fSteps! Step for minimization
TH1F**fTarCut! z proj. of min. distance to Z axis point
TH1F**fTarMDC! z proj. of min. distance to Z axis point
TH1F**fTarMDCCut! z proj. of min. distance to Z axis point
TH1F**fTarTuk! z proj. of min. distance to Z axis point
TH1F**fTarTukW! z proj. of min. distance to Z axis point
TH1F**fTargets! z proj. of min. distance to Z axis point
TH2F**fZVsRho! z vs. rho
TH2F**fZVsTheta! z vs. theta
protected:
Bool_tHReconstructor::fActiveActive flag
Float_tfAngleCut! Min. theo. angle allowed in 1MDC alignment
Float_tfConstTukey! Tukey constant in 1 MDC target finder
Int_tfCount! Valid hits for alignment
Float_tfEndTukey! Last Tukey constant checked in the method
Double_t*fError! Errors in tranformation
Double_tfErrorLab[6]! Errors in tranformation
HGeomVector*fEuler! Euler angles
HGeomVectorfEulerLab! Euler angles
HGeomVector*fEulerResult! Euler angles from HMdcAligner
Int_tfFix! Fixing parameters in minimization
Int_tfHistNum! Number of histogram families
Bool_tfHistoOff! Control histograms on flag
TList*HReconstructor::fHistogramsList of histograms generated by this reconstructor.
HCategory*fHitCat! category of Hits in the MDCs (for one MDC)
TClonesArray*fHits! Hits matched in HMdcAligner
HGeomVectorfInitValue! Init value for targetFinder()
Bool_tHTask::fIsTimedtimer flag
HIterator*fIter1! Iterator on the category
Float_tfIterCriteria! Iteration criteria in minimization
HLocationfLoc! MDC location (sector,moduleA,moduleB...)
Bool_tfManual! Manual parameters input flag
HMdcGeomPar*fMdcGeomPar! geometrical MDC parameters
Int_tfMin! Minimization flag
Int_tfNEntries! Number of events
TStringTNamed::fNameobject identifier
TStringfNameAscii! file name
TStringfNameRoot! file name
Int_tfNumMods! Number of MDCs
TFile*fOutFile! Output file
TObjArrayHReconstructor::fOutputs
Float_tfResultTukey! Tukey constant for which the calculations are made
HGeomRotationfRotLab! rotation matrix (MDCB)=(fRotLab)*(MDCA)+(T)
HGeomRotation*fRotMat! rotation matrix (MDCB)=(fRotMat)*(MDCA)+(T)
Float_tfStepTukey! Size of the step between different Tukey constant
Bool_tfTFFor2Mods!
TStopwatchHReconstructor::fTimerTask timer
TStringTNamed::fTitleobject title
HGeomVectorfTransLab! Internal translation
HGeomVector*fTransResult! Internal translation from HMdcAligner
HGeomVector*fTranslation! Internal translation
TTree*fTree! TTree with the data pairs
Bool_tfUseAngleCut! Select Hits for 1MDC alignment
Bool_tfUseCut! Control the Tree used (with or without cuts)
Bool_tfUseInitValue! Selects the init value mode
Bool_tfUseUnitErrors!
Bool_tfUseYPosCut! Select Hits for 1MDC alignment
Float_tfYPosCut! Min. Hit Y coord. allowed in 1MDC alignment
Float_tfZHiCut
Float_tfZLoCut! Window dimension
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HMdcGeomParF(const Text_t* name, const Text_t* title, Int_t sector, Int_t modA)
 Constructor for only one MDC

void initDefaults(void)
 Inits common defaults

void initMinimization(void)
void setRelParams(HGeomVector*& ang, HGeomVector*& tra)
				HGeomVector*& ang2,HGeomVector*& tra2,
				HGeomVector*& ang3,HGeomVector*& tra3)

 Sets the pointers to previous results of HMdcAligner.
 This function should be called in the macro


    if(fNumMods>3) {
    fEulerResult[2] = ang3;        //MDC A - MDC D
    fTransResult[2] = tra3;
    fEulerResult[1] = ang2;        //MDC B - MDC D
    fTransResult[1] = tra2;
    fEulerResult[0] = ang;         //MDC C - MDC D
    fTransResult[0] = tra;
    }
    else if(fNumMods>2) {
    fEulerResult[1] = ang2;        //MDC A - MDC C
    fTransResult[1] = tra2;
    fEulerResult[0] = ang;         //MDC B - MDC C
    fTransResult[0] = tra;
    }
    else {
    fEulerResult[0] = ang;         //MDC A - MDC B
    fTransResult[0] = tra;
    }

void setOutputAscii(TString name)
 Sets ascii output for results and debugging.

void setOutputRoot(TString name)
 Sets Root output

void setTukeyConstant(Float_t cte, Float_t step = 1, Float_t res = 1, Float_t end = 0.4)
 Sets the Tukey constant in the weigth determination
 for 1 MDC target finder
 The function arguments are:
   cte   the initial Tukey constant
   step  the step between tukey calculations
   res   the tukey value for which the calculations on the output file are made
   end   the last accepted Tukey value

void setInitValue(Float_t x, Float_t y, Float_t z)
 Sets the init value
 for 1MDC target determination

void setTargetFinderFor2Mods(void)
 Sets targetFinder call for two modules

cout << "WARNING in setGeomParManOn()
void setUnitErrors(void)
 introduce unit errors in Hits

void setFix(Int_t fix)
 Fix a parameter set in minimization
 Z translation is always fixed for Minuit.
 1...6 parameter number (Minuit parameters begin in 0, then param+1)
 20    fixes translations
 30    fixes rotations
void setNoCut(void)
 Set the TTree from the HMdcAligner selection
 When fUseCut=kFALSE it is used a TClonesArray
 of Hits without cuts in the distributions peak fit
void setAngleCut(Float_t aCut)
 Sets a cut in the 1 MDC target finder.
 Introducing a positive valu: the cut
 eliminates in the fit the low incidence angle tracks,
 trying to get more resolution in Z target determination
 Introducing a negative value: the cut
 eliminates in the fit the large incidence angle tracks,
 trying to eliminate fails in reconstruction due to
 larger distances between planes than in parameters
 or any tracking systematics in the reconstruction
void setYPosCut(Float_t aYCut)
 Sets a cut in the 1 MDC target finder.
 The cut eliminates in the fit the tracks closer
 to the beam line, which pushes the target estimate
 towards positive values of Z.
HGeomVector findEulerAngles(HGeomRotation rot)
 From the relative rotation, get the euler angles (radians)

 From an Euler rotation (see Dahlinger paper for the convention)
 the euler angles are:
 euler[0] = atan2(rot(5)/sin(euler[1]),rot(2)/sin(euler[1]))
 euler[1] = acos (rot(8))    with possible change of sign
 euler[2] = atan2(rot(7)/sin(euler[1]),-rot(6)/sin(euler[1]))

void execute1(void)
 Only one MDC. Trying to find out the point where all
 tracks point to.

void execute0(void)
 Filling Hits of a frustum. Trying to find out the point where all
 tracks point to.

Bool_t targetFinder(ofstream* fout)
 target finder algorithm

HMdcGeomParF(void)
HMdcGeomParF(Int_t sector, Int_t modA, Int_t modB)
HMdcGeomParF(const Text_t* name, const Text_t* title, Int_t sector, Int_t modA, Int_t modB, Int_t modC = -1, Int_t modD = -1)
~HMdcGeomParF(void)
Bool_t init(void)
Bool_t reinit(void)
Bool_t initDelayed(void)
Bool_t finalize(void)
Int_t execute(void)
void setParContainers(void)
void setGeomAuxPar(void)
void setHistograms(void)
void setControlHistoOff(void)
void setMinimization(Int_t select = 1)
void fillRotMatrix(Int_t i, Float_t prim, Float_t segu, Float_t terc)
void fillTranslation(Int_t i, Float_t x, Float_t y, Float_t z)
void fillRotLab(Float_t prim, Float_t segu, Float_t terc)
void fillTransLab(Float_t x, Float_t y, Float_t z)
void setEulerAngles(Int_t , Float_t f, Float_t s, Float_t t)
void setEulerLabAngles(Float_t f, Float_t s, Float_t t)
void setSearchLimits(Float_t x, Float_t y)
void setIterCriteria(Float_t cri)
void setSteps(Float_t s0, Float_t s1, Float_t s2, Float_t s3, Float_t s4, Float_t s5)
void minfit(Int_t fix, Float_t fE, Float_t sE, Float_t tE, Float_t fT, Float_t sT, Float_t tT)
TTree* getTree(void)
{return fTree;}
HGeomRotation getRotMatrix(Int_t i)
{return fRotMat[i];}
HGeomVector getTranslation(Int_t i)
{return fTranslation[i];}
HGeomRotation getRotLab(void)
{return fRotLab;}
HGeomVector getTransLab(void)
{return fTransLab;}
void fillHistograms(Int_t index)
void storeInFile(void)
void writeGeomParContainer(void)

Last change: Sat May 22 13:02:09 2010
Last generated: 2010-05-22 13:02

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.