class HMdcAligner3M: public HReconstructor

Function Members (Methods)

public:
HMdcAligner3M()
HMdcAligner3M(const Text_t* name, const Text_t* title, Int_t sector, Int_t modA, Int_t modB, Int_t modC)
HMdcAligner3M(const Text_t* name, const Text_t* title, Int_t sectorA, Int_t modA, Int_t sectorB, Int_t modB, Int_t modC, Int_t mode)
virtual~HMdcAligner3M()
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)
voidexecute3()
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)
voidfillHitArrayForMinimization()
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)
voidfitHistograms(Int_t index)
virtual HTask*HReconstructor::getComposite()
virtual voidHReconstructor::getConnections()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Float_t*getErrors()
Stat_tgetHitArrayForMinimization(Float_t** buf)
TClonesArray*getHits()
virtual const char*TObject::GetIconName() const
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)
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()
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)
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
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 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()
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, Float_t l7, Float_t l8, Float_t l9, Float_t l10, Float_t l11)
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)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidsetNoCut()
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, Float_t s7, Float_t s8, Float_t s9, Float_t s10, Float_t s11)
virtual voidTNamed::SetTitle(const char* title = "")MENU
voidsetTree()
virtual voidTObject::SetUniqueID(UInt_t uid)
voidsetUnitErrors()
voidsetWeights(Float_t w0, Float_t w1, Float_t w2, Float_t w3)
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
voidtransformToSlopes(HMdcHit* pHit, Float_t* slopes)
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_Y!
TH1F**BvsAinACS_YSlope!
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!
protected:
Bool_tHReconstructor::fActiveActive flag
Bool_tfAuto! Automatical input on flag
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
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
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
Float_t*fHitsForMin!Data structure for minimization
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
Float_tfIterCriteria! Iteration criteria in minimization
HLocationfLoc! MDC location (sector,modules)
Bool_tfManual! Manual input on flag
HMdcGeomPar*fMdcGeomPar! geometrical MDC parameters
Int_tfMin! Control minimization
Int_tfMinFlag! Just a flag for minimization
Int_tfMode! Espcify COSMICs or PP elastic mode
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
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_tfUseUnitErrors! Sets unit errors for all point in the fit
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
Stat_tfinalEntries!Entries in the data structure (*6 floats)
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner
HGeomVectortheLocalTarget! Target position in second MDC

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HMdcAligner3M(void)
 Default constructor.

HMdcAligner3M(const Text_t* name, const Text_t* title, Int_t sector, Int_t modA, Int_t modB, Int_t modC)
 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

HMdcAligner3M(const Text_t* name, const Text_t* title, Int_t sectorA, Int_t modA, Int_t sectorB, Int_t modB, Int_t modC, Int_t mode)
 Constructor including module election (and name and title, which
 seems to be very important). This constructor deals with modules in
 TWO DIFFERENT sectors: selects module A in sector A and modules B and C
 in sector B
 mode takes values 1 or 2 for cosmics or pp ...

void initDefaults(void)
 Inits common defaults

~HMdcAligner3M(void)
 Destructor.

void initMinimization(void)
 Minimization defaults

Int_t getRelParams(HGeomVector*& ang, HGeomVector*& tra)
 Serves pointers to the relative transformation parameters

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

void setOutputRoot(TString name)
 Sets root output

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

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
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 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. Only valids in this reduction!

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

 select = 105 (fcnalign3) Minimizing angles between 2 lines
              made from Hits (testing)
 select = 106 (fcnalign3) Error with MINOS!
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 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 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 execute3(void)
 New execute for more than two MDCs
 UPDATED TO COSMICS AND pp REACTIONS (fMode>0)

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 HMdcAligner3M::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 HMdcAligner3M::setGeomAuxPar()), that is:
     X(B) = rot X(A) + tra
 Normally B is reference MDC, which is farther from target
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 HMdcAligner3M)
 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)
 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, Float_t s7, Float_t s8, Float_t s9, Float_t s10, Float_t s11)
 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, Float_t l7, Float_t l8, Float_t l9, Float_t l10, Float_t l11)
 Set the criteria for iteration in the minimization (see finalize())

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 fillHitArrayForMinimization(void)
 For fast minimization, a Hit array with only relevant information
 (x,y coordinates) for the Hits in accepted track combinations

Stat_t getHitArrayForMinimization(Float_t** buf)
 For fast minimization, a Hit array with only relevant information
 (x,y coordinates) for the Hits in accepted track combinations

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;}
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:39 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.