virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
void | TObject::MakeZombie() |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
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_t | fRecCount | ! 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 |
Bool_t | HReconstructor::fActive | Active flag |
Bool_t | fAuto | ! Automatical input on flag |
Bool_t | fCloseToSolution | ! A flag for better fitting close to solution |
Float_t | fConstTukey | ! Tukey constant in 1MDC target finder |
Int_t | fCount | ! Valid matched hit set for alignment |
Int_t | fCountCut | ! Valid matched hit set after cuts |
Int_t* | fDiscart | ! Discarted hits |
Bool_t | fDoNotUseCov | ! Sets off the covariance in the trans. Finder |
Int_t* | fEntriesPerZone | ! |
Double_t* | fError | ! Errors in tranformation |
HGeomVector* | fEuler | ! Euler angles |
Int_t | fFix | ! Fixing parameters in minimization |
Double_t | fFunctionMin | ! Functional minimum |
Int_t | fHistNum | ! Number of Histo |
Int_t | fHistZonNum | ! Number of Zones Histos |
Bool_t | fHistoOff | ! Control histograms on flag |
TList* | HReconstructor::fHistograms | List 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_t | HTask::fIsTimed | timer 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_t | fIterCriteria | ! Iteration criteria in minimization |
HLocation | fLoc | ! MDC location (sector,modules) |
Bool_t | fManual | ! Manual input on flag |
Int_t | fMaxEntriesPerZone | ! |
HMdcGeomPar* | fMdcGeomPar | ! geometrical MDC parameters |
Int_t | fMin | ! Control minimization |
Int_t | fMinFlag | ! Just a flag for minimization |
Int_t | fNEntries | ! Number of events |
TString | TNamed::fName | object identifier |
TString | fNameAscii | ! file name |
TString | fNameRoot | ! file name |
Int_t | fNumMods | ! Number of modules to align |
TObjArray | HReconstructor::fOutputs | |
Float_t* | fPosError | ! Errors in the module coordinates |
Float_t | fRhoxSx | ! |
Float_t | fRhoxSy | ! |
Float_t | fRhoySy | ! |
HGeomRotation* | fRotMat | ! rotation matrix (MDCB)=(matrix)*(MDCA)+(T) |
Float_t | fS0Sigmas | ! Number of sigmas for the S0 residual cut |
Float_t | fS1Sigmas | ! Number of sigmas for the S1 residual cut |
Float_t | fSArea | ! Window dimension |
Bool_t | fSetHomogeneousDistribution | !(Quasi)homogeneous distribution flag |
Float_t | fSigmaS0 | ! |
Float_t | fSigmaS1 | ! |
Float_t | fSigmaX | ! Covariance matrix elements |
Float_t | fSigmaY | ! |
Float_t | fSlopeCut | ! Cut parameter for perp incidence in MDC |
HGeomVector | fTargetPos | ! Target position |
TStopwatch | HReconstructor::fTimer | Task timer |
TString | TNamed::fTitle | object title |
HGeomVector* | fTranslation | ! Internal translation |
Bool_t | fUseCut | ! Cut in N sigmas |
Bool_t | fUseCutRot | ! Cut in N sigmas used in Rotation around X or Y axes |
Bool_t | fUseCutRotZ | ! Cut in N sigmas used in Rotation around Z axis |
Bool_t | fUseModErrors | ! Sets manually the errors for the Hit points |
Bool_t | fUseSharpCut | ! Sets off the covariance in fitHistograms() |
Bool_t | fUseSlopeCut | ! Cut perp incidence in MDC |
Bool_t | fUseTarget | ! Use target instead of hit slopes |
Bool_t | fUseUnitErrors | ! Sets unit errors for all point in the fit |
Bool_t | fUseZones | ! Use Zones to determine rotations |
Float_t | fXArea | ! Window dimension |
Float_t | fXSigmas | ! Number of sigmas for the X residual cut |
Float_t | fYArea | ! Window dimension |
Float_t | fYSigmas | ! Number of sigmas for the Y residual cut |
Bool_t | HTask::isConnected | |
Bool_t | HTask::isInitialised | |
Bool_t | HTask::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 |
HGeomVector | theLocalTarget | ! 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 |
Constructor including module election. Alignment procedure proyects hits of modA in modB coordinate system and compares
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
Constructor for only one MDC
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; } }
Sets number of sigmas in cuts.
Sets the Tukey constant in the weigth determination for 1 MDC target finder
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)
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}
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
Turn on the automatic geometrical parameter input Use it for inserting manually the parameters in the macro
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)
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)
Discart Hits in overcrowded zones to create a (quasi)homogeneous distribution
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
Enables the cuts in the Geometrical determination of rotations around X or Y axis
Enables the cuts in the Geometrical determination of rotations around X or Y axis
Disables the use of zones in the different rotation finders. Instead of zones weigthed hits are used
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
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]
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]))
Entering geometrical parameters. To be used introducing in the macro the parameters for testing, optimization ...
Iteration in the hit category. Fills histograms and TTree and calculates relevant quantities
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
Transformation from one coordinate system to a new one newV = eulrot * oldV + eulvec (NOT USED)
Transformation from one coordinate system to a new one newV = eulrot * (oldV - eulvec) (NOT USED)
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
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)
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
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)
Performs the graphical output from obtained parameters
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]
Euler angles in transformation from MDC A to MDC B
Limits of the square defined in the search procedure
Set the criteria for iteration in the minimization (see finalize())
Set the module errors in the fcn()
Set the steps in the minimization
Set the criteria for iteration in the minimization (see finalize())
if angleIter==1 work on X, if angleIter==2 work on Y
Copy of translation Finder for Zones
Iterative call to the translationFinder algorithm for different accepted Hit distributions
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
Divide in several zones and find for each one the mean residual position See setZones() for the definition
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
Minuit menu for rotations Arguments are init values for the parameters!