class HMdcAligner: public HReconstructor

Function Members (Methods)

public:
HMdcAligner()
HMdcAligner(Int_t sector, Int_t modA, Int_t modB)
HMdcAligner(const Text_t* name, const Text_t* title, Int_t sector, Int_t modA)
HMdcAligner(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~HMdcAligner()
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)
voiddivideInZones(Int_t loop, HGeomRotation rot, HGeomVector tran)
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)
voidexecute1()
voidexecute2()
voidexecute3()
voidexecute4()
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, Int_t select = 0)
voidfillRotMatrix(Int_t ind, Float_t prim, Float_t segu, Float_t terc)
voidfillTranslation(Int_t ind, Float_t x, Float_t y, Float_t z)
virtual Bool_tfinalize()
voidfindAbsolutePosition(HGeomRotation* rot, HGeomVector* vect)
HGeomVectorfindEulerAngles(HGeomRotation rot)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
HGeomVectorfindProjPoint(HMdcHit* pHit, HGeomRotation rot, HGeomVector tra, Float_t* slopes)
voidfindRotXGeometrically(Int_t iter = 0)
voidfindRotXYBySampling(Int_t angleIter = 1, Int_t iter = 0)
voidfindRotYGeometrically(Int_t iter = 0)
voidfindRotZGeometrically(Int_t iter = 0)
voidfitHistograms(Int_t index)
virtual HTask*HReconstructor::getComposite()
virtual voidHReconstructor::getConnections()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Float_t*getErrors()
TClonesArray*getHits()
virtual const char*TObject::GetIconName() const
HGeomVectorgetLocalTarget(HGeomRotation rot, HGeomVector tran)
Int_tgetMinFlag()
virtual const char*TNamed::GetName() const
Int_tgetNumMods()
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()
Int_tgetRelParams(HGeomVector*& ang, HGeomVector*& tra)
Float_t*getResZonX()
Float_t*getResZonY()
HGeomRotationgetRotMatrix(Int_t i)
Int_tgetStrategy()
TObjArrayHReconstructor::getTable()
virtual HTask*HReconstructor::getTask(const Char_t* name)
virtual const char*TNamed::GetTitle() const
HGeomVectorgetTranslation(Int_t i)
TTree*getTree()
virtual UInt_tTObject::GetUniqueID() const
Bool_tgetUseModErrors()
Bool_tgetUseUnitErrors()
Float_t*getWeights()
Float_t*getZonesX()
Float_t*getZonesY()
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()
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_tisInsideWindow(Int_t plot, HMdcHit* pHit, HGeomVector point, Float_t* slope)
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
voidmergeHits(HMdcHit* hitB, HMdcHit* hitA, HGeomRotation rot, HGeomVector tra, HMdcHit* mergeHit)
voidminfit(Int_t fix, HGeomVector* fE, HGeomVector* fT)
voidminfitRot(Int_t fix, Double_t first, Double_t second = 0)
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()
Float_t*rotYXFinder(Int_t noZones = 0, Int_t YorX = 0)
Float_t*rotZFinder(Int_t noZones = 0)
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
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidsetCloseToSolution()
virtual Bool_tHTask::setConnections()
voidsetControlHistoOff()
voidsetCutRot()
voidsetCutRotZ()
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidsetEulerAngles(Int_t ind, Float_t f, Float_t s, Float_t t)
voidsetFix(Int_t fix)
voidsetGeomAuxPar()
voidsetGeomAuxParSim(Int_t ind, Float_t eu1, Float_t eu2, Float_t eu3, Float_t tr1, Float_t tr2, Float_t tr3)
voidsetGeomParAutoOn()
voidsetHistograms()
voidsetHomogeneousDistribution(Int_t maxEntries = 1000)
voidsetIterCriteria(Float_t criteria)
voidsetLimits(Float_t l0, Float_t l1, Float_t l2, Float_t l3, Float_t l4, Float_t l5, Float_t l6 = 0., Float_t l7 = 0., Float_t l8 = 0., Float_t l9 = 0., Float_t l10 = 0., Float_t l11 = 0., Float_t l12 = 0., Float_t l13 = 0., Float_t l14 = 0., Float_t l15 = 0., Float_t l16 = 0., Float_t l17 = 0.)
voidHTask::setManual()
voidsetMinFlag(Int_t flag)
voidsetMinimization(Int_t select = 1)
voidsetModErrors(Float_t errXModA, Float_t errYModA, Float_t errXModB, Float_t errYModB, Float_t errXModC, Float_t errYModC, Float_t errXModD, Float_t errYModD)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidsetNoCut()
voidsetNoZones()
static voidTObject::SetObjectStat(Bool_t stat)
voidsetOffCov()
voidsetOutputAscii(TString name)
voidsetOutputRoot(TString name)
virtual voidHTask::setOwner(HTask* atask)
voidsetParContainers()
voidsetRotMatrix(Int_t ind, HGeomRotation newRot)
voidsetSearchLimits(Float_t x, Float_t y, Float_t s = 1.)
voidsetSharpCut()
voidsetSigmas(Float_t XSigmas, Float_t YSigmas, Float_t S0Sigmas, Float_t S1Sigmas)
voidsetSlopeCut(Float_t SlopeCut = 0.1)
voidsetSteps(Float_t s0, Float_t s1, Float_t s2, Float_t s3, Float_t s4, Float_t s5, Float_t s6 = 0., Float_t s7 = 0., Float_t s8 = 0., Float_t s9 = 0., Float_t s10 = 0., Float_t s11 = 0., Float_t s12 = 0., Float_t s13 = 0., Float_t s14 = 0., Float_t s15 = 0., Float_t s16 = 0., Float_t s17 = 0.)
voidsetTargetOn(HGeomVector target)
virtual voidTNamed::SetTitle(const char* title = "")MENU
voidsetTree()
voidsetTukeyConstant(Float_t cte)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidsetUnitErrors()
voidsetWeights(Float_t w0, Float_t w1, Float_t w2, Float_t w3)
voidsetZones(Float_t* X = 0, Float_t* Y = 0, Float_t* DX = 0, Float_t* DY = 0)
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_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
voidtransfEuler(HGeomRotation eulrot, HGeomVector eulvec, HGeomVector oldV, HGeomVector newV)
voidtransfEulerInv(HGeomRotation eulrot, HGeomVector eulvec, HGeomVector oldV, HGeomVector newV)
voidtransformToSlopes(HMdcHit* pHit, Float_t* slopes)
HGeomVectortranslationFinder(Int_t XYorBoth = -1, Int_t XLowLim = 0, Int_t XUppLim = 0, Int_t YLowLim = 0, Int_t YUppLim = 0)
HGeomVectortranslationFinderRW(Int_t XYorBoth = -1, Int_t XLowLim = 0, Int_t XUppLim = 0, Int_t YLowLim = 0, Int_t YUppLim = 0)
HGeomVectortranslationFinderZones(HGeomRotation rot, HGeomVector tran)
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
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:
TH1F**ABvsCinCCS_X!
TH1F**ABvsCinCCS_XSlope!
TH1F**ABvsCinCCS_Y!
TH1F**ABvsCinCCS_YSlope!
TH1F**ACvsBinBCS_X!
TH1F**ACvsBinBCS_XSlope!
TH1F**ACvsBinBCS_Y!
TH1F**ACvsBinBCS_YSlope!
TH1F**AvsBinBCS_X!
TH1F**AvsBinBCS_XSlope!
TH1F**AvsBinBCS_Y!
TH1F**AvsBinBCS_YSlope!
TH1F*AvsCinCCS_Polar!
TH1F*AvsCinCCS_Polar_Stripe1!
TH1F*AvsCinCCS_Polar_Stripe2!
TH1F*AvsCinCCS_Polar_Stripe3!
TH1F*AvsCinCCS_Polar_Stripe4!
TH1F*AvsCinCCS_Polar_Stripe5!
TH1F**AvsCinCCS_X!
TH1F**AvsCinCCS_XSlope!
TH1F**AvsCinCCS_Y!
TH1F**AvsCinCCS_YSlope!
TH1F**AvsDinDCS_X!
TH1F**AvsDinDCS_XSlope!
TH1F**AvsDinDCS_Y!
TH1F**AvsDinDCS_YSlope!
TH1F**BCvsACinACS_XSlope!
TH1F**BCvsACinACS_YSlope!
TH1F**BCvsAinACS_X!
TH1F**BCvsAinACS_Y!
TH1F**BvsAinACS_X!
TH1F**BvsAinACS_XSlope!
TH1F**BvsAinACS_X_Zone!
TH1F**BvsAinACS_Y!
TH1F**BvsAinACS_YSlope!
TH1F**BvsAinACS_Y_Zone!
TH2F**BvsAinACS_Zon! 2D residuals in MDC selected zones
TH1F*BvsCinCCS_Polar!
TH1F*BvsCinCCS_Polar_Stripe1!
TH1F*BvsCinCCS_Polar_Stripe2!
TH1F*BvsCinCCS_Polar_Stripe3!
TH1F*BvsCinCCS_Polar_Stripe4!
TH1F*BvsCinCCS_Polar_Stripe5!
TH1F**BvsCinCCS_X!
TH1F**BvsCinCCS_XSlope!
TH1F**BvsCinCCS_Y!
TH1F**BvsCinCCS_YSlope!
TH1F**BvsDinDCS_X! projected on MDC D coordinate system
TH1F**BvsDinDCS_XSlope!
TH1F**BvsDinDCS_Y! (that is inDCS ;-)
TH1F**BvsDinDCS_YSlope!
TH1F**CvsAinACS_X!
TH1F**CvsAinACS_XSlope!
TH1F**CvsAinACS_Y!
TH1F**CvsAinACS_YSlope!
TH1F**CvsBinBCS_X!
TH1F**CvsBinBCS_XSlope!
TH1F**CvsBinBCS_Y!
TH1F**CvsBinBCS_YSlope!
TH1F**CvsDinDCS_X! Histograms for studying residuals in projections
TH1F**CvsDinDCS_XSlope! the X position of a Hit in MDC D minus
TH1F**CvsDinDCS_Y! Key: CvsDinDCS_X means that the plot is
TH1F**CvsDinDCS_YSlope! the X position of a Hit in MDC C
TH1F**DiffACvsAinACS_XSlope!
TH1F**DiffACvsAinACS_XSlopeLow!
TH1F**DiffACvsAinACS_XSlopeUp!
TH1F**DiffACvsAinACS_YSlope!
TH1F**DiffACvsAinACS_YSlopeLow!
TH1F**DiffACvsAinACS_YSlopeUp!
TH1F*DiffACvsAinACS_YSlope_Stripe1!
TH1F*DiffACvsAinACS_YSlope_Stripe2!
TH1F*DiffACvsAinACS_YSlope_Stripe3!
TH1F*DiffACvsAinACS_YSlope_Stripe4!
TH1F*DiffACvsAinACS_YSlope_Stripe5!
TH1F**DiffACvsBinACS_XSlope!
TH1F**DiffACvsBinACS_XSlopeLow!
TH1F**DiffACvsBinACS_XSlopeUp!
TH1F**DiffACvsBinACS_YSlope!
TH1F**DiffACvsBinACS_YSlopeLow!
TH1F**DiffACvsBinACS_YSlopeUp!
TH1F*DiffACvsBinACS_YSlope_Stripe1!
TH1F*DiffACvsBinACS_YSlope_Stripe2!
TH1F*DiffACvsBinACS_YSlope_Stripe3!
TH1F*DiffACvsBinACS_YSlope_Stripe4!
TH1F*DiffACvsBinACS_YSlope_Stripe5!
TH1F**DiffACvsCinACS_XSlope!
TH1F**DiffACvsCinACS_XSlopeLow!
TH1F**DiffACvsCinACS_XSlopeUp!
TH1F**DiffACvsCinACS_YSlope!
TH1F**DiffACvsCinACS_YSlopeLow!
TH1F**DiffACvsCinACS_YSlopeUp!
TH1F*DiffACvsCinACS_YSlope_Stripe1!
TH1F*DiffACvsCinACS_YSlope_Stripe2!
TH1F*DiffACvsCinACS_YSlope_Stripe3!
TH1F*DiffACvsCinACS_YSlope_Stripe4!
TH1F*DiffACvsCinACS_YSlope_Stripe5!
TH1F**DiffBCvsAinACS_XSlope!
TH1F**DiffBCvsAinACS_XSlopeLow!
TH1F**DiffBCvsAinACS_XSlopeUp!
TH1F**DiffBCvsAinACS_YSlope!
TH1F**DiffBCvsAinACS_YSlopeLow!
TH1F**DiffBCvsAinACS_YSlopeUp!
TH1F**DiffBCvsBinACS_XSlope!
TH1F**DiffBCvsBinACS_XSlopeLow!
TH1F**DiffBCvsBinACS_XSlopeUp!
TH1F**DiffBCvsBinACS_YSlope!
TH1F**DiffBCvsBinACS_YSlopeLow!
TH1F**DiffBCvsBinACS_YSlopeUp!
TH1F**DiffBCvsCinACS_XSlope!
TH1F**DiffBCvsCinACS_XSlopeLow!
TH1F**DiffBCvsCinACS_XSlopeUp!
TH1F**DiffBCvsCinACS_YSlope!
TH1F**DiffBCvsCinACS_YSlopeLow!
TH1F**DiffBCvsCinACS_YSlopeUp!
TH1F**DvsAinACS_X!
TH1F**DvsAinACS_XSlope!
TH1F**DvsAinACS_Y!
TH1F**DvsAinACS_YSlope!
TH1F**DvsBinBCS_X!
TH1F**DvsBinBCS_XSlope!
TH1F**DvsBinBCS_Y!
TH1F**DvsBinBCS_YSlope!
TH1F**DvsCinCCS_X!
TH1F**DvsCinCCS_XSlope!
TH1F**DvsCinCCS_Y!
TH1F**DvsCinCCS_YSlope!
TH1F**SqrDist! Sum of square distances
TH1F**SqrDistToA! square distance from fitted str.line to A
TH1F**SqrDistToB! square distance from fitted str.line to B
TH1F**SqrDistToC! square distance from fitted str.line to C
TH1F**SqrDistToD! square distance from fitted str.line to D
TH1F**TotalChi2! sum of chi2 from both fits
TH1F**XChi2Hist! chi2 from XZ plane fit
TH1F**YChi2Hist! chi2 from YZ plane fit
TTree*fAlignAll! all data from hits in module pairs
TTree*fAlignAllCut! data after cuts
Float_t*fLimits! Limits for minimization
static TFile*fOutRoot! Output file
static Int_tfRecCount! Number of reconstructors
TH1F*fResS0! All residual combinations S0
TH1F*fResS1! All residual combinations S1
TH1F*fResX! All residual combinations X
TH1F*fResY! All residual combinations Y
Float_t*fSteps! Step for minimization
Float_t*fWeights! Weights in the minimization fcn
TGraph*graphCont!
TGraph*graphXchi2!
TGraph*graphXchi2X!
TGraph*graphXchi2Y!
TGraph*graphYchi2!
TGraph*graphYchi2X!
TGraph*graphYchi2Y!
TH1F*hisrotX!
TH1F*hisrotXNeg!
TH1F*hisrotXPos!
TH1F*hisrotXZon!
TH1F*hisrotXZonNeg!
TH1F*hisrotXZonPos!
TH1F*hisrotY!
TH1F*hisrotYNeg!
TH1F*hisrotYPos!
TH1F*hisrotYZon!
TH1F*hisrotYZonNeg!
TH1F*hisrotYZonPos!
TH1F*hisrotZ! angles from analysis of rotations
TH1F*hisrotZZon! angles from analysis of rotations
protected:
Bool_tHReconstructor::fActiveActive flag
Bool_tfAuto! Automatical input on flag
Bool_tfCloseToSolution! A flag for better fitting close to solution
Float_tfConstTukey! Tukey constant in 1MDC target finder
Int_tfCount! Valid matched hit set for alignment
Int_tfCountCut! Valid matched hit set after cuts
Int_t*fDiscart! Discarted hits
Bool_tfDoNotUseCov! Sets off the covariance in the trans. Finder
Int_t*fEntriesPerZone!
Double_t*fError! Errors in tranformation
HGeomVector*fEuler! Euler angles
Int_tfFix! Fixing parameters in minimization
Double_tfFunctionMin! Functional minimum
Int_tfHistNum! Number of Histo
Int_tfHistZonNum! Number of Zones Histos
Bool_tfHistoOff! Control histograms on flag
TList*HReconstructor::fHistogramsList of histograms generated by this reconstructor.
HCategory*fHitCat! category of Hits in the MDCs
TClonesArray*fHits! Hits matched
Int_t*fHitsFoundAndUnique! Number of unique matches in the window
Int_t*fHitsFoundInWindow! Number of matches in the window
Int_t*fHitsMdc! Hits in MDC
Bool_tHTask::fIsTimedtimer flag
HIterator*fIter1! Iterator on the category
HIterator*fIter2! Iterator on the category
HIterator*fIter3! Iterator on the category
HIterator*fIter4! Iterator on the category
Float_tfIterCriteria! Iteration criteria in minimization
HLocationfLoc! MDC location (sector,modules)
Bool_tfManual! Manual input on flag
Int_tfMaxEntriesPerZone!
HMdcGeomPar*fMdcGeomPar! geometrical MDC parameters
Int_tfMin! Control minimization
Int_tfMinFlag! Just a flag for minimization
Int_tfNEntries! Number of events
TStringTNamed::fNameobject identifier
TStringfNameAscii! file name
TStringfNameRoot! file name
Int_tfNumMods! Number of modules to align
TObjArrayHReconstructor::fOutputs
Float_t*fPosError! Errors in the module coordinates
Float_tfRhoxSx!
Float_tfRhoxSy!
Float_tfRhoySy!
HGeomRotation*fRotMat! rotation matrix (MDCB)=(matrix)*(MDCA)+(T)
Float_tfS0Sigmas! Number of sigmas for the S0 residual cut
Float_tfS1Sigmas! Number of sigmas for the S1 residual cut
Float_tfSArea! Window dimension
Bool_tfSetHomogeneousDistribution!(Quasi)homogeneous distribution flag
Float_tfSigmaS0!
Float_tfSigmaS1!
Float_tfSigmaX! Covariance matrix elements
Float_tfSigmaY!
Float_tfSlopeCut! Cut parameter for perp incidence in MDC
HGeomVectorfTargetPos! Target position
TStopwatchHReconstructor::fTimerTask timer
TStringTNamed::fTitleobject title
HGeomVector*fTranslation! Internal translation
Bool_tfUseCut! Cut in N sigmas
Bool_tfUseCutRot! Cut in N sigmas used in Rotation around X or Y axes
Bool_tfUseCutRotZ! Cut in N sigmas used in Rotation around Z axis
Bool_tfUseModErrors! Sets manually the errors for the Hit points
Bool_tfUseSharpCut! Sets off the covariance in fitHistograms()
Bool_tfUseSlopeCut! Cut perp incidence in MDC
Bool_tfUseTarget! Use target instead of hit slopes
Bool_tfUseUnitErrors! Sets unit errors for all point in the fit
Bool_tfUseZones! Use Zones to determine rotations
Float_tfXArea! Window dimension
Float_tfXSigmas! Number of sigmas for the X residual cut
Float_tfYArea! Window dimension
Float_tfYSigmas! Number of sigmas for the Y residual cut
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner
Float_t*resZon_X! X position of the projection vs zone center
Float_t*resZon_Y! Y position of the projection vs zone center
HGeomVectortheLocalTarget! Target position in second MDC
Float_t*zones_DX! X side length of Zones
Float_t*zones_DY! Y side length of Zones
Float_t*zones_X! X coordinate of Zones center
Float_t*zones_Y! Y coordinate of Zones center

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HMdcAligner(void)
 Default constructor.

HMdcAligner(Int_t sector, Int_t modA, Int_t modB)
 Constructor including module election. Alignment procedure
 proyects hits of modA in modB coordinate system and compares

HMdcAligner(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)
 Constructor including module election (and name and title, which
 seems to be very important). Alignment procedure
 proyects hits of modA in modB coordinate system and compares

HMdcAligner(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

~HMdcAligner(void)
 Destructor.

void initMinimization(void)
 Minimization defaults

Int_t getRelParams(HGeomVector*& ang, HGeomVector*& tra)
  				HGeomVector*& ang2,HGeomVector*& tra2,
  				HGeomVector*& ang3,HGeomVector*& tra3)

 Serves pointers to the relative transformation parameters


    if (fNumMods>3){
    ang3 = &fEuler[2];         //MDC A - MDC D
    tra3 = &fTranslation[2];
    ang2 = &fEuler[1];         //MDC B - MDC D
    tra2 = &fTranslation[1];
    ang = &fEuler[0];          //MDC C - MDC D
    tra = &fTranslation[0];
    if(A_DEBUG>2){
    cout << " HMdcAligner :: getRelParams(). Filling " << endl;
    cout << "ang3: " << ang3 << endl;
    cout << "tra3: " << tra3 << endl;
    cout << "ang2: " << ang2 << endl;
    cout << "tra2: " << tra2 << endl;
    cout << "ang: " << ang << endl;
    cout << "tra: " << tra << endl;
    }
    }
    else if(fNumMods>2){
    ang2 = &fEuler[1];          //MDC A - MDC C
    tra2 = &fTranslation[1];
    ang = &fEuler[0];           //MDC B - MDC C
    tra = &fTranslation[0];
    if(A_DEBUG>2){
    cout << " HMdcAligner :: getRelParams(). Filling " << endl;
    cout << "ang2: " << ang2 << endl;
    cout << "tra2: " << tra2 << endl;
    cout << "ang: " << ang << endl;
    cout << "tra: " << tra << endl;
    }
    }
    else{
    ang = &fEuler[0];           //MDC A - MDC B
    tra = &fTranslation[0];
    if(A_DEBUG>2){
    cout << " HMdcAligner :: getRelParams(). Filling " << endl;
    cout << "ang: " << ang << endl;
    cout << "tra: " << tra << endl;
    }
    }

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

void setOutputRoot(TString name)
 Sets ascii output for debugging.

void setSigmas(Float_t XSigmas, Float_t YSigmas, Float_t S0Sigmas, Float_t S1Sigmas)
 Sets number of sigmas in cuts.

void setTukeyConstant(Float_t cte)
 Sets the Tukey constant in the weigth determination
 for 1 MDC target finder

HGeomVector getLocalTarget(HGeomRotation rot, HGeomVector tran)
 Sets Local Target position for the module where is not defined
 (that is, for the MDC in first position in the constructor).
 Requires the definition and use of the target on the module
 (WARNING: Use it only for 2 MDCs up to now.
 It is mandatory to enter in the second position in the
 constructor the MDC where the target is defined from)

void setZones(Float_t* X = 0, Float_t* Y = 0, Float_t* DX = 0, Float_t* DY = 0)
 Sets the center coordinates and side lengths of the rectangles
 where tracks are accepted for studying rotations

ZONES
 Every rectangular zone is defined around (x,y) with side (dx,dy).
(tested in macros)
i.e. Int_t zones_X[9] = {-500,0,500,-400,0,400,-250,0,250}
     Int_t zones_Y[9] = {400,400,400,-100,-100,-100,-600,-600,-600}
     Int_t zones_DX[9] = {150,150,150,100,100,100,50,50,50}
     Int_t zones_DY[9] = {150,150,150,100,100,100,50,50,50}
Suggested with symmetrical (extreme) values
p.e.MDCII
     Int_t zones_X[9] = {-200,0,200,-200,0,200,-200,0,200}
     Int_t zones_Y[9] = {200,200,200,0,0,0,-200,-200,-200}
     Int_t zones_DX[9] = {100,100,100,75,75,75,40,40,40}
     Int_t zones_DY[9] = {100,100,100,75,75,75,40,40,40}
p.e.MDCIII
     Int_t zones_X[9] = {-350,0,350,-350,0,350,-350,0,350}
     Int_t zones_Y[9] = {350,350,350,0,0,0,-350,-350,-350}
     Int_t zones_DX[9] = {150,150,150,100,100,100,60,60,60}
     Int_t zones_DY[9] = {150,150,150,100,100,100,60,60,60}
p.e.MDCIV
     Int_t zones_X[9] = {-400,0,400,-400,0,400,-400,0,400}
     Int_t zones_Y[9] = {400,400,400,0,0,0,-400,-400,-400}
     Int_t zones_DX[9] = {200,200,200,150,150,150,100,100,100}
     Int_t zones_DY[9] = {200,200,200,150,150,150,100,100,100}
void setHistograms(void)
 Inits histograms

void fitHistograms(Int_t index)
Fits to a gaussian the four relevant histograms
and obtains the fit parameters for further data selection
Only valid for two MDCs or three MDCs
void setTree(void)
 Inits TNtuple

Bool_t init(void)
 Inits hitaux category and calls setParContainers()

Bool_t reinit(void)
 Call the functions returning auxiliar geometrical parameters

void setCloseToSolution(void)
Turn on the fCloseToSolution flag to introduce better fits

void setGeomParAutoOn(void)
Turn on the automatic geometrical parameter input
Use it for inserting manually the parameters in the macro

void setControlHistoOff(void)
 Disables control histograms output (saving memory)

void setMinimization(Int_t select = 1)
 Selects minimization strategy

 select = 0  Disables minimization
 select = 1  Angle reduction by minuit
 select = 2  Analytic translation minimization
 select = 3  (1+2) Angle reduction+analytic translation
 select = 4  Translation reduction by minuit
 select = 5  6 parameters reduction by minuit
 select = 10 Pure geometrical rotation finder
 select = 11 Translation finder before and after select=10
 select = 12 Translation finder between steps in select=10
 select = 14 Pure rotation determination by sampling
 select = 15 Translation finder before and after select=14
 select = 16 Translation finder between steps in select=14

 select = 500 + (10,11,12,14,15,16) Iterative minimization
            version of the previously described algorithms

 select = 100 (fcnalign34) Chi square sum in minimization
 select = 101 (fcnalign34) Distances line-hit

 select = 105 (fcnalign34) Minimizing angles between 2 lines
              made from Hits (testing)
 select = 106 (fcnalign34) Error with MINOS!

 select = 777 Testing the contour

 select = 200 ROTATION FINDER USING MINUIT (testing)
void setUnitErrors(void)
 introduce unit errors in Hits

void setOffCov(void)
 Sets off the covariance in the translationFinder() function

void setSharpCut(void)
 Sets off the covariance in fitHistograms()

void setTargetOn(HGeomVector target)
 Target position is defined and used for
 the hit definition in
 (WARNING: Use it only for 2 MDCs up to now.
 It is mandatory to enter in the second position in the
 constructor the MDC where the target is defined from)

void setHomogeneousDistribution(Int_t maxEntries = 1000)
Discart Hits in overcrowded zones to create a (quasi)homogeneous
distribution

void setFix(Int_t fix)
 Fix a parameter set in minimization
 New scheme: 18 bits (binary number) specifying the parameters
 fixed (1) and released (0). Lower bit is first parameter

void setNoCut(void)
 Disables the cuts after fitting the histograms

void setCutRot(void)
 Enables the cuts in the Geometrical determination
 of rotations around X or Y axis

void setCutRotZ(void)
 Enables the cuts in the Geometrical determination
 of rotations around X or Y axis

void setNoZones(void)
 Disables the use of zones in the different
 rotation finders. Instead of zones weigthed hits are used

void setSlopeCut(Float_t SlopeCut = 0.1)
 Enables the Slope cuts after fitting the histograms.
 This cut makes the sample near indep. of Z translations
 and results useful for X and Y minimization.
 For 2 MDCs: the cut is effective only in MDCB, because fTranslation
 is represented in MDCB coordinates. Then, tracks passing
 the cut are almost parallel to Z direction if fSlopeCut is positive
 For 3 MDCs: a mean value for the three slopes. tracks passing
 the cut are almost parallel to Z direction if fSlopeCut is positive
void setParContainers(void)
 Loads the parameter containers it uses later

void setGeomAuxPar(void)
 Defines the parameter containers it uses later

 The transformations are:  X = R X' + T
 in the geometrical parameters.
 To obtain relative transformations: X(B) = M X(A) + V
 we follow:
   X = R(A) X(A) + T(A)
   X = R(B) X(B) + T(B)

   X(B) = [R(B)]E-1 R(A) X(A) + [R(B)]E-1 [T(A)-T(B)]

   M = [R(B)]E-1 R(A)
   V = [R(B)]E-1 [T(A)-T(B)]

 From M it is easy to get the relative Euler angles

 CONVENTION: fRotMat[i] and fTranslation[i] store the
 matrix M and vector V of the transformations made like this:
 4 modules: [0]  X(D) = fRotMat[0] X(C) + fTranslation[0]
            [1]  X(D) = fRotMat[1] X(B) + fTranslation[1]
            [2]  X(D) = fRotMat[2] X(A) + fTranslation[2]

 3 modules: [0]  X(C) = fRotMat[0] X(B) + fTranslation[0]
            [1]  X(C) = fRotMat[1] X(A) + fTranslation[1]

 2 modules: [0]  X(B) = fRotMat[0] X(A) + fTranslation[0]

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 setGeomAuxParSim(Int_t ind, Float_t eu1, Float_t eu2, Float_t eu3, Float_t tr1, Float_t tr2, Float_t tr3)
 Entering geometrical parameters.

 To be used introducing in the macro the parameters for
 testing, optimization ...

Int_t execute(void)
 Iteration in the hit category. Fills histograms
 and TTree and calculates relevant quantities

void execute4(void)
 New execute for four MDCs
 Find the projection of Hits in the most external MDCs
 on the inners (besides this can be modified, changing the
 order of the MDCs in the constructor). Then merge the hits
 and continue to find till the last MDC. If successfull,
 fills a TClonesArray of Hits in a TTree for further
 analysis and minimization

void execute3(void)
 New execute for more than two MDCs

void execute2(void)
 Adapting the old execute

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

void transfEuler(HGeomRotation eulrot, HGeomVector eulvec, HGeomVector oldV, HGeomVector newV)
 Transformation from one coordinate system to a new one
     newV = eulrot * oldV + eulvec
 (NOT USED)
void transfEulerInv(HGeomRotation eulrot, HGeomVector eulvec, HGeomVector oldV, HGeomVector newV)
 Transformation from one coordinate system to a new one
     newV = eulrot * (oldV - eulvec)
 (NOT USED)
HGeomVector findProjPoint(HMdcHit* pHit, HGeomRotation rot, HGeomVector tra, Float_t* slopes)
 Find the projection point of a Hit on another MDC

 Given a relative rotation and translation from MDC A to MDC B
 (see CONVENTION in HMdcAligner::setGeomAuxPar())
  X(B) = rot X(A) + tra
 this function obtains the projection in MDC B of a Hit in MDC A

 When the user wants to obtain the projection in MDC A of a Hit in
 MDC B, should provide the inverse transformations
 Example: X(A) = rot-1 * X(B) - rot-1 * tra
               = newrot * X(B) + newtra
 where:
    newrot = rot-1
    newtra = - (rot-1 * tra)
 The function returns also the slopes in the new coordinate system
Bool_t isInsideWindow(Int_t plot, HMdcHit* pHit, HGeomVector point, Float_t* slope)
Check if the hit is inside a window around point and slope
old check based on square cuts
New one based on equiprobability elipse (Beatriz paper)

void mergeHits(HMdcHit* hitB, HMdcHit* hitA, HGeomRotation rot, HGeomVector tra, HMdcHit* mergeHit)
 Propagates hitA in hitB coordinate system and merges
 the information in a new hit in hitB coordinate system
 The rot and tra verifies the CONVENTION
 (see HMdcAligner::setGeomAuxPar()), that is:
     X(B) = rot X(A) + tra
 Normally B is reference MDC, which is farther from target
HMdcHit* pHit = new HMdcHit();
Now, only mean values. Later, propagate the covariance and add the
multiple scattering effect on hitA

      pHit->setX(,);
      pHit->setY(,);
      pHit->setXDir(,);
      pHit->setYDir(,);

      return pHit;

Only for test purposes, return hitB
  return hitB;
Testing a merge in function of the coordinates
void transformToSlopes(HMdcHit* pHit, Float_t* slopes)
Transform hit angular components in slopes

void findAbsolutePosition(HGeomRotation* rot, HGeomVector* vect)
 Getting module A parameters from module B parameters (fRotLab fTransLab)
 and from relative parameters (fRotMat and fTranslation)
 The transformations are:  X = R X' + T
 in the geometrical parameters. We have here:
   X = R(B) X(B) + T(B)
 and we know
   X(B) = M x(A) + V
 where
   M = [R(B)]E-1 R(A)
   V = [R(B)]E-1 [T(A)-T(B)]
 are the relative transformations we know (see HMdcAligner)
 We want to find out the transformation
   X = R(A) X(A) + T(A)
 using:
   X = R(B) X(B) + T(B) = R(B) (M x(A) + V)  + T(B) =>
   X = R(B) M x(A) + R(B) V  + T(B) =>
   R(A) = R(B) M  and
   T(A) = R(B) V  + T(B)

Bool_t finalize(void)
 Statistical information and Minimization procedure

void fillHistograms(Int_t index, Int_t select = 0)
 Performs the graphical output from obtained parameters

void storeInFile(void)
 Stores all histos and tree in the Root file

void fillRotMatrix(Int_t ind, Float_t prim, Float_t segu, Float_t terc)
 Fill a matrix using the Euler angles of the relative transformation

OLD
      fRotMat[0][0]=(cos(prim) * cos(segu) * cos(terc)) - (sin(prim) * sin(terc));
      fRotMat[1][0]=( - cos(prim) * cos(segu) * sin(terc)) - (sin(prim) * cos(terc));
      fRotMat[2][0]=(cos(prim) * sin(segu));
      fRotMat[0][1]=(sin(prim) * cos(segu) * cos(terc)) + (cos(prim) * sin(terc));
      fRotMat[1][1]=( - sin(prim) * cos(segu) * sin(terc)) + (cos(prim) * cos(terc));
      fRotMat[2][1]=(sin(prim) * sin(segu));
      fRotMat[0][2]=( - sin(segu) * cos(terc));
      fRotMat[1][2]=(sin(segu) * sin(terc));
      fRotMat[2][2]=(cos(segu));

ATT! Correspondencia entre HGeomRotation y la antigua transf. arriba

  rot(0) rot(1) rot(2)     fRotMat[0][0] fRotMat[1][0] fRotMat[2][0]
  rot(3) rot(4) rot(5)  =  fRotMat[0][1] fRotMat[1][1] fRotMat[2][1]
  rot(6) rot(7) rot(8)     fRotMat[0][2] fRotMat[1][2] fRotMat[2][2]
void fillTranslation(Int_t ind, Float_t x, Float_t y, Float_t z)
 Translation from MDC A to MDC B

void setEulerAngles(Int_t ind, Float_t f, Float_t s, Float_t t)
 Euler angles in transformation from MDC A to MDC B

void setSearchLimits(Float_t x, Float_t y, Float_t s = 1.)
 Limits of the square defined in the search procedure

void setIterCriteria(Float_t criteria)
 Set the criteria for iteration in the minimization (see finalize())

void setWeights(Float_t w0, Float_t w1, Float_t w2, Float_t w3)
 Set the weights in the fcn()

void setModErrors(Float_t errXModA, Float_t errYModA, Float_t errXModB, Float_t errYModB, Float_t errXModC, Float_t errYModC, Float_t errXModD, Float_t errYModD)
 Set the module errors in the fcn()

void setSteps(Float_t s0, Float_t s1, Float_t s2, Float_t s3, Float_t s4, Float_t s5, Float_t s6 = 0., Float_t s7 = 0., Float_t s8 = 0., Float_t s9 = 0., Float_t s10 = 0., Float_t s11 = 0., Float_t s12 = 0., Float_t s13 = 0., Float_t s14 = 0., Float_t s15 = 0., Float_t s16 = 0., Float_t s17 = 0.)
 Set the steps in the minimization

void setLimits(Float_t l0, Float_t l1, Float_t l2, Float_t l3, Float_t l4, Float_t l5, Float_t l6 = 0., Float_t l7 = 0., Float_t l8 = 0., Float_t l9 = 0., Float_t l10 = 0., Float_t l11 = 0., Float_t l12 = 0., Float_t l13 = 0., Float_t l14 = 0., Float_t l15 = 0., Float_t l16 = 0., Float_t l17 = 0.)
 Set the criteria for iteration in the minimization (see finalize())

void findRotXYBySampling(Int_t angleIter = 1, Int_t iter = 0)

if angleIter==1 work on X, if angleIter==2 work on Y
void findRotXGeometrically(Int_t iter = 0)


void findRotYGeometrically(Int_t iter = 0)


void findRotZGeometrically(Int_t iter = 0)


HGeomVector translationFinderZones(HGeomRotation rot, HGeomVector tran)
 Copy of translation Finder for Zones

HGeomVector translationFinder(Int_t XYorBoth = -1, Int_t XLowLim = 0, Int_t XUppLim = 0, Int_t YLowLim = 0, Int_t YUppLim = 0)
 Iterative call to the translationFinder algorithm for different
 accepted Hit distributions
HGeomVector translationFinderRW(Int_t XYorBoth = -1, Int_t XLowLim = 0, Int_t XUppLim = 0, Int_t YLowLim = 0, Int_t YUppLim = 0)
 Analytical minimization of the function
 X and Y residuals
 Results are the relative translation
 vector components

 Matrix:

    a 0 c      translation[0]     f
    0 b d   *  translation[1]  =  g
    c d e      translation[2]     h

 results in

 translation[0] = (fbe+gdc-bch-fdd)/(abe-bcc-add)
 translation[1] = (age+fdc-gcc-dha)/(abe-bcc-add)
 translation[2] = (abh-fbc-gda)/(abe-bcc-add)

 Parameters can now be introduced to find the translation for
 reduced set of hits, those between lower and upper limits in
 each direction, selectable in the first param:
 XYorBoth=-1 No Cut           XYorBoth=0 Cut on X
 XYorBoth=1 Cut on Y          XYorBoth=2 Cut on both

void divideInZones(Int_t loop, HGeomRotation rot, HGeomVector tran)
 Divide in several zones and find for each one
 the mean residual position
 See setZones() for the definition

Float_t* rotZFinder(Int_t noZones = 0)
 Finding the rotation in local XY plane (around local Z)

Float_t* rotYXFinder(Int_t noZones = 0, Int_t YorX = 0)
 Finding the rotation in local XZ plane (around local Y)
 or around local YZ plane (around local X)
 If second argument=0, then rotations around local Y are found

void minfit(Int_t fix, HGeomVector* fE, HGeomVector* fT)
 Minuit menu
 Argument fix correspon to fFix value (see setFix())
 Other arguments are init values for the parameters!

void minfitRot(Int_t fix, Double_t first, Double_t second = 0)
 Minuit menu for rotations
 Arguments are init values for the parameters!

TTree* getTree(void)
void setRotMatrix(Int_t ind, HGeomRotation newRot)
{fRotMat[ind]=newRot;}
void setMinFlag(Int_t flag)
{fMinFlag=flag;}
Int_t getMinFlag(void)
{return fMinFlag;}
HGeomRotation getRotMatrix(Int_t i)
{return fRotMat[i];}
HGeomVector getTranslation(Int_t i)
{return fTranslation[i];}
Int_t getStrategy(void)
{return fMin;}
Float_t* getZonesX(void)
{return zones_X;}
Float_t* getZonesY(void)
{return zones_Y;}
Float_t* getResZonX(void)
{return resZon_X;}
Float_t* getResZonY(void)
{return resZon_Y;}
TClonesArray* getHits(void)
{return fHits;}
Float_t* getWeights(void)
{return fWeights;}
Float_t* getErrors(void)
{return fPosError;}
Int_t getNumMods(void)
{return fNumMods;}
Bool_t getUseUnitErrors(void)
{return fUseUnitErrors;}
Bool_t getUseModErrors(void)
{return fUseModErrors;}

Last change: Sat May 22 12:59:37 2010
Last generated: 2010-05-22 12:59

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.