#include "hmdcsizescells.h"

HMdcSizesCells


class description - source file - inheritance tree (.pdf)

class HMdcSizesCells : public TObject

Inheritance Chart:
TObject
<-
HMdcSizesCells

    protected:
HMdcSizesCells() ~HMdcSizesCells() Bool_t fillCont(Int_t sec) Bool_t fillTargetPos(HGeomVector* targetShift = 0) public:
HMdcSizesCells(const HMdcSizesCells&) static void calcMdcSeg(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t& zm, Double_t& r0, Double_t& theta, Double_t& phi) static void calcMdcSeg(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t eX1, Double_t eY1, Double_t eZ1, Double_t eX2, Double_t eY2, Double_t dZ1dX1, Double_t dZ1dY1, Double_t dZ2dX2, Double_t dZ2dY2, Double_t& zm, Double_t& eZm, Double_t& r0, Double_t& eR0, Double_t& theta, Double_t& eTheta, Double_t& phi, Double_t& ePhi) static void calcRZToLineXY(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t xBeam, Double_t yBeam, Double_t& zm, Double_t& r0) void calcRZToTargLine(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t& zm, Double_t& r0) const static TClass* Class() void clear() static void copyTransfToArr(const HGeomTransform& trans, Double_t* arr) static void deleteCont() Bool_t fillModCont(Int_t sec, Int_t mod, HGeomTransform* alignTrans = 0, Int_t sysOfAlignTrans = 0) Bool_t fillModCont(Int_t sec, Int_t mod, Double_t* corr) Char_t findReadOutSide(Int_t s, Int_t m, Int_t l, Int_t c) const Bool_t getCellVol(Int_t sec, Int_t mod, Int_t lay, Int_t cell, HMdcTrap& volCell, Double_t sizeFactor = -1.) const static HMdcSizesCells* getExObject() Int_t getNumOfTargets() const static HMdcSizesCells* getObject() Int_t getSize() const const HGeomVector& getTargetFirstPoint() const const HGeomVector& getTargetLastPoint() const const HGeomVector& getTargetMiddlePoint() const HGeomVector* getTargets() Bool_t hasChanged() const Bool_t initContainer() virtual TClass* IsA() const Bool_t modStatus(Int_t s, Int_t m) const Int_t nModInSeg(Int_t s, Int_t seg) const HMdcSizesCells& operator=(const HMdcSizesCells&) HMdcSizesCellsSec& operator[](Int_t i) const void setNotGeomModified() static void setTransform(Double_t* par, HGeomTransform& trans) virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members


    protected:
static HMdcSizesCells* fMdcSizesCells HMdcGetContainers* fGetCont HMdcLayerGeomPar* fLayerGeomPar Int_t verLayerGeomPar[3] HMdcGeomPar* fGeomPar Int_t verGeomPar[3] HMdcDetector* fMdcDet Bool_t mdcStatus[6][4] kTRUE - mdc exist Int_t nModsSeg[6][2] number of mdc per segment HMdcGeomStruct* fMdcGeomStruct HMdcLookupRaw* fMdcLookupRaw Int_t verLookupRaw[3] HMdcRawStruct* fMdcRawStruct HSpecGeomPar* fSpecGeomPar TObjArray* array array of pointers to HMdcSizesCellsSec Bool_t changed kTRUE if HMdcSizesCells was recalculated Bool_t geomModified kTRUE if mdc geometry was changed by user Int_t numTargets number of targets HGeomVector* targets targets HGeomVector targ3p[3] [0] First point of target in lab.sys.

Class Description


  HMdcSizesCells
  HMdcSizesCellsSec
  HMdcSizesCellsMod
  HMdcSizesCellsLayer
  HMdcSizesCellsCell

  Creating the container and geting the pointer to cont.:
  HMdcSizesCells* fSizesCells=HMdcSizesCells::getObject();

  Geting the pointer to cont. (without creating):
  HMdcSizesCells* fSizesCells=HMdcSizesCells::getExObject();

  Deleting of container:
  HMdcSizesCells::deleteCont();

  Container class keep volumes sizes of wires (2-points/wire)
  in coordinate system of sector and transformations layer<->mod,
  layer<->sec, ...
  It has same useful functions:
  HMdcSizesCellsCell
    Float_t getWireLength(void)

  HMdcSizesCellsLayer:
    HGeomTransform* getSecTrans();
    HGeomTransform* getModTrans();
    void transSecToRotLayer(HGeomVector& point);
    Double_t getAlpha(const HGeomVector& p1, const HGeomVector& p2);
    Double_t getDist(const HGeomVector& p1,
                     const HGeomVector& p2, Int_t cell);
    void getImpact(const HGeomVector& p1, const HGeomVector& p2,
                  Int_t cell, Double_t &alpha, Double_t &per);
    Double_t getImpact(Double_t x1,Double_t y1,Double_t z1,
        Double_t x2,Double_t y2,Double_t z2, Int_t cell, Double_t &alphaPerp);
    Bool_t getImpact(Double_t x1,Double_t y1,Double_t z1,
        Double_t x2, Double_t y2, Double_t z2,
        Int_t cell, Double_t &alphaDrDist, Double_t &driftDist);
    Int_t getCellNum(Double_t x, Double_t y):
      calculation the the cell number for the point x,y
      on the wire plane. (x,y - in coor. sys. of layer, z=0)
    Double_t getXSign(Double_t x1, Double_t y1, Double_t z1,
        Double_t x2, Double_t y2, Double_t z2, Int_t cell)
    Float_t getSignPath(Double_t x1,Double_t y1,Double_t z1,
        Double_t x2, Double_t y2, Double_t z2, Int_t cell);
    Float_t getSignPath(Double_t x1,Double_t y1,Double_t z1,
        Double_t x2, Double_t y2, Double_t z2, Int_t cell, Float_t& outside);

  HMdcSizesCellsMod:
    HGeomTransform* getSecTrans();

  HMdcSizesCellsSec:
    HGeomTransform* getLabTrans();

  HMdcSizesCells:
    Bool_t getCellVol(Int_t sec, Int_t mod, Int_t lay,
        Int_t cell, HMdcTrap& volCell);
    Char_t findReadOutSide(Int_t s,Int_t m,Int_t l,Int_t c)



HMdcSizesCells(void)
 constructor creates an array of pointers of type HMdcSizesCellsSec

~HMdcSizesCells(void)
 destructor

Bool_t initContainer(void)

HMdcSizesCells* getObject(void)

void deleteCont(void)

HMdcSizesCells* getExObject(void)

Int_t getSize(void) const
 return the size of the pointer array

void clear(void)
 clears the container

Bool_t fillCont(Int_t sec)
 calculation of the container HMdcSizesCells
 with wire's sizes (2-pint) in coordinate system of sector.

Bool_t fillModCont(Int_t sec, Int_t mod, HGeomTransform * alignTrans, Int_t sysOfAlignTrans)
 filling HMdcSizesCellsMod, HMdcSizesCellsLayer, HMdcSizesCellsCell
 objects for MDC module "mod" in sector "sec".
 if alignTrans>0 - correction of mdc position (must be done after
 filling HMdcSizesCells!)
 sysOfAlignTrans =0 transform mdc coor.sys. by "alignTrans" respect
                    coor.sys.of sector
                 =1 transform mdc coor.sys. by "alignTrans" respect
                    coor.sys.of mdc module
                 =2 transform mdc coor.sys. by "alignTrans" respect
                    lab.coor.sys.

Bool_t fillModCont(Int_t sec, Int_t mod, Double_t * corr)
 filling HMdcSizesCellsMod, HMdcSizesCellsLayer, HMdcSizesCellsCell
 objects for MDC module "mod" in sector "sec"

Bool_t getCellVol(Int_t sec,Int_t mod,Int_t lay,Int_t cell, HMdcTrap& volCell, Double_t sizeFactor) const
 Return the cell volume as HMdcTrap (8 points) in sector(!) coordinate sys..
 Use "sizeFactor" param. for drawing purpose only.
 This parameter increase Y and Z cell size on this factor.

Char_t findReadOutSide(Int_t s,Int_t m,Int_t l,Int_t c) const
 Function to get the side from which the corresponding wire is read out.
 Function return values are '1' for left, '2' for right, '3' for top
 and '0' for GEANT data and not connected wires.

Bool_t fillTargetPos(HGeomVector* targetShift)
 Filling target parameters

void calcMdcSeg(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t eX1, Double_t eY1, Double_t eZ1, Double_t eX2, Double_t eY2, Double_t dZ1dX1, Double_t dZ1dY1, Double_t dZ2dX2, Double_t dZ2dY2, Double_t& zm, Double_t& eZm, Double_t& r0, Double_t& eR0, Double_t& theta, Double_t& eTheta, Double_t& phi, Double_t& ePhi)
 Calcul. a HMdcSeg hit.
 Input and output are in sector coor.sys.
 theta=atan(sqrt(dX*dX+dY*dY)/dZ);  phi=atan(dY/dX)
 zm= z1 - cos(theta)/sin(theta) * (x1*cos(phi)+y1*sin(phi))
 r0=y1*cos(phi)-x1*sin(phi)

 If (x1,y1,z1)=(x2,y2,z2) dZ will eq.1.!
 Input param:
 x1,y1,z1 - target or point on plane
 x2,y2,z2 - point on plane
 eX1,eY1,eZ1, eX2,eY2 - errors (eZ2=0!)
 dZ2dX2 = -A2  where A2 - plane param. (z2=D2-A2*x2+B2*y2)
 dZ2dY2 = -B2  where B2 - plane param. (z2=D2-A2*x2+B2*y2)
 If P1-on plane
   eZ1=0;
   dZ1dX1 = -A1  where A1 - plane param. (z1=D1-A1*x1+B1*y1)
   dZ1dY1 = -B1  where B1 - plane param. (z1=D1-A1*x1+B1*y1)
 If P1-target:
   dZ1dX1 = dZ1/dY1 = 0;

void calcRZToTargLine(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t &zm, Double_t &r0) const
 Input and output are in lab.sys.

calcRZToLineXY(x1,y1,z1,x2,y2,z2, targ3p[2].getX(),targ3p[2].getY(),zm,r0); } void HMdcSizesCells::calcRZToLineXY(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t xBeam, Double_t yBeam, Double_t &zm, Double_t &r0)
 zm= z1 - cos(theta)/sin(theta) * ((x1-xBeam)*cos(phi)+(y1-yBeam)*sin(phi))
 r0=(y1-yBeam)*cos(phi)-(x1-xBeam)*sin(phi)

 If (x1,y1,z1)=(x2,y2,z2) dZ will eq.1.!

void setTransform(Double_t* par, HGeomTransform& trans)
 Filling  HGeomTransform object by 6 parameters
 par[0] - shift along X
 par[1] - shift along Y
 par[2] - shift along Z
 par[3] - rotation around X (in degree)
 par[4] - rotation around Y (in degree)
 par[5] - rotation around Z (in degree)

void copyTransfToArr(const HGeomTransform& trans, Double_t* arr)
 Copy trans to array
 Array size must be eq. or more 12!



Inline Functions


        HMdcSizesCellsSec& operator[](Int_t i) const
                    Bool_t hasChanged() const
                      void calcMdcSeg(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t eX1, Double_t eY1, Double_t eZ1, Double_t eX2, Double_t eY2, Double_t dZ1dX1, Double_t dZ1dY1, Double_t dZ2dX2, Double_t dZ2dY2, Double_t& zm, Double_t& eZm, Double_t& r0, Double_t& eR0, Double_t& theta, Double_t& eTheta, Double_t& phi, Double_t& ePhi)
                    Bool_t modStatus(Int_t s, Int_t m) const
                     Int_t nModInSeg(Int_t s, Int_t seg) const
        const HGeomVector& getTargetFirstPoint() const
        const HGeomVector& getTargetMiddlePoint() const
        const HGeomVector& getTargetLastPoint() const
                     Int_t getNumOfTargets() const
              HGeomVector* getTargets()
                      void setNotGeomModified()
                   TClass* Class()
                   TClass* IsA() const
                      void ShowMembers(TMemberInspector& insp, char* parent)
                      void Streamer(TBuffer& b)
                      void StreamerNVirtual(TBuffer& b)
            HMdcSizesCells HMdcSizesCells(const HMdcSizesCells&)
           HMdcSizesCells& operator=(const HMdcSizesCells&)


Last update: Fri Jan 26 12:14:47 2007


ROOT page - Class index - Class Hierarchy - Top of the page

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.