#include "hmdcsizescells.h"

HMdcSizesCellsLayer


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

class HMdcSizesCellsLayer : public HMdcPlane

Inheritance Chart:
TObject
<-
HMdcPlane
<-
HMdcSizesCellsLayer

    protected:
Bool_t getParamCont() public:
HMdcSizesCellsLayer(HMdcSizesCellsMod* pMod, Int_t lay) HMdcSizesCellsLayer(const HMdcSizesCellsLayer&) ~HMdcSizesCellsLayer() Int_t calcCellNum(Double_t x, Double_t y) const Bool_t calcCrossedCells(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Float_t& cell1, Float_t& cell2) const static TClass* Class() Bool_t fillLayerCont(const Double_t* corr = 0) Double_t getAlpha(const HGeomVector& p1, const HGeomVector& p2) const Double_t getCatDist() const Double_t getCosWireOr() const Double_t getDist(const HGeomVector& p1, const HGeomVector& p2, Int_t cell) Double_t getDist(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Int_t cell) const Double_t getDistToZero(Double_t y1, Double_t z1, Double_t y2, Double_t z2) const Bool_t getDriftDist(Double_t xP1, Double_t yP1, Double_t zP1, Double_t xP2, Double_t yP2, Double_t zP2, Int_t cell, Double_t& alphaDrDist, Double_t& driftDist) const HGeomVolume* getGeomolume() Double_t getHalfCatDist() const Double_t getHalfPitch() const 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) const Double_t getImpact(const HMdcLineParam& ln, Int_t cell, Double_t& alpha) const Double_t getImpact(const HMdcLineParam& ln, Int_t cell, Double_t& alpha, Double_t& y, Double_t& z, Double_t& dy, Double_t& dz) const void getImpact(const HGeomVector& p1, const HGeomVector& p2, Int_t cell, Double_t& alpha, Double_t& per) const 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) const Bool_t getImpact(const HMdcLineParam& ln, Int_t cell, Double_t& alpha, Double_t& minDist) const Bool_t getImpact(const HMdcLineParam& ln, Int_t cell, Double_t& alpha, Double_t& minDist, Double_t& y, Double_t& z, Double_t& dy, Double_t& dz) const Double_t getImpactToZero(Double_t y1, Double_t z1, Double_t y2, Double_t z2, Double_t& alpha) const Short_t getLayer() const HMdcLayerGeomParLay* getLayerGeomParLay() Short_t getMod() const const HGeomTransform* getModTrans() const Double_t getPitch() const const HGeomTransform* getRotLaySysRSec() const Short_t getSec() const const HGeomTransform* getSecTrans() const Float_t getSignPath(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Int_t cell) const Double_t getSignPath(const HMdcLineParam& ln, Int_t cell) const 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) const Double_t getSinWireOr() const Int_t getSize() const HMdcSizesCells* getSizesCells() Double_t getTanWireOr() const Double_t getWireOffSet() const Double_t getXSign(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Int_t cell) const Double_t getXSign(const HMdcLineParam& ln, Int_t cell) const void getYZinWireSys(Double_t x, Double_t y, Double_t z, Int_t cell, Double_t& yw, Double_t& zw) const virtual TClass* IsA() const HMdcSizesCellsLayer& operator=(const HMdcSizesCellsLayer&) HMdcSizesCellsCell& operator[](Int_t i) const void print() const void rotVectToLay(Double_t xi, Double_t yi, Double_t zi, Double_t& xo, Double_t& yo, Double_t& zo) const void rotVectToRotLay(Double_t xi, Double_t yi, Double_t zi, Double_t& xo, Double_t& yo, Double_t& zo) const void rotVectToRotLay(const HGeomVector& dir, Double_t& xo, Double_t& yo, Double_t& zo) const void rotYZtoRotLay(Double_t xi, Double_t yi, Double_t zi, Double_t& yo, Double_t& zo) const void rotYZtoRotLay(const HGeomVector& dir, Double_t& yo, Double_t& zo) const Bool_t setSecTrans(Double_t corZ = 0.) virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) void transFrom(Double_t& x, Double_t& y, Double_t& z) const void transSecToRotLayer(HGeomVector& point) const void transTo(Double_t& x, Double_t& y, Double_t& z) const Double_t transXinRotLay(Double_t xi, Double_t yi) const void transXYinRotLay(Double_t& x, Double_t& y) const Double_t transYinRotLay(Double_t xi, Double_t yi) const

Data Members


    protected:
Short_t sector Address: Short_t module Short_t layer HMdcLayerGeomParLay* pLayerGeomParLay Layer parameters HGeomVolume* pGeomVol Layer geometry Short_t nCells Number of wires in layer Double_t halfCatDist Half of cathodes distance Double_t pitch Distance between wires Double_t halfPitch Half of "pitch" Double_t cosWireOr Cosine of wire orientation Double_t sinWireOr Sine of wire orientation angle Double_t wireOffSet = (CentralWireNr()-1.)*pitch HGeomTransform sysRSec Transformation sector <-> layer Double_t tSysRSec[12] - - - HGeomTransform rotLaySysRSec Transformation sector <-> Double_t tRLaySysRSec[12] rotated on WireOr deg. layer HGeomTransform sysRMod Transformation module<->layer TClonesArray* array HMdcSizesCellsCell objects HMdcSizesCellsMod* pToMod Pointer to corresponding module

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* getSizesCells(void)

HMdcSizesCellsLayer(HMdcSizesCellsMod* pMod, Int_t lay)
 Constructor creates an array of pointers of type HMdcSizesCellsCell

~HMdcSizesCellsLayer(void)
 destructor

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

Bool_t setSecTrans(Double_t corZ)
 alignTrans: coord. system of layer will transformed to "alignTrans" sys.

Int_t calcCellNum(Double_t x, Double_t y) const
  calculation the the cell number for the point x,y
  on the wire plane. (x,y - in coor. sys. of layer, z=0)

Bool_t calcCrossedCells(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Float_t& cell1, Float_t& cell2) const
 calculation of cells crossed by line x1,y1,z1-x2,y2,z2
 x1,y1,z1, x2,y2,z2 - sector coordinate system

void transSecToRotLayer(HGeomVector& point) const
 transformation to coor. sys. of rotated layer from sector sys.

Double_t getAlpha(const HGeomVector& p1, const HGeomVector& p2) const
 return the angle alpha (in degree) between projection of linep1-p2
 on the Y-Z plane and Y axis in coor.sys. of wires in degree.
 p1,p2 in coordinate system of sector.

Double_t getDist(const HGeomVector& p1, const HGeomVector& p2,Int_t cell)
 return the minimal distance from line (p1-p2) to wire.
 p1,p2 are in coordinate system of sector.

void getImpact(const HGeomVector& p1, const HGeomVector& p2, Int_t cell, Double_t &alpha, Double_t &minDist) const
 calc. the angle alpha (in degree) between projection of line p1-p2
 on the Y-Z plane and Y axis in coor.sys. of wire (y=z=0) and
 the minimal distance from line (p1-p2) to wire.
 p1,p2 - in sector coor.sys.

Double_t HMdcSizesCellsLayer::getImpact( Double_t x1,Double_t y1,Double_t z1, Double_t x2,Double_t y2,Double_t z2, Int_t cell,Double_t &alpha) const
 calc. the angle alpha (in degree) between projection of line
 x1,y1,z1-x2,y2,z2 on the Y-Z plane and Y axis in coor.sys.
 of wires and the minimal distance from line x1,y1,z1-x2,y2,z2
 to wire.
 x1,y1,z1,x2,y2,z2 - in sector coor.sys.

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 &alpha, Double_t &minDist) const
 return kTRUE if line x1,y1,z1-x2,y2,z2 intersect cell or kFALSE
 if not intersect and calc. the angle alpha (in degree) between projection
 of the line  x1,y1,z1-x2,y2,z2 on the Y-Z plane and Y axis in coor.
 sys. of wires and the minimal distance from line x1,y1,z1-x2,y2,z2
 to wire.
 x1,y1,z1,x2,y2,z2 - in sector coor.sys.

Double_t getXSign(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Int_t cell) const
 return X position of the signal on the wire in coor. sys. of this wire
 (Ywire=0, Zwire=0), x1,y1,z1 & x2,y2,z2 - track in sector coor.system

Float_t getSignPath(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Int_t cell) const
 return the path of signal along wire number "cell"
 x1,y1,z1 & x2,y2,z2 - track in sector coor.system
 Path can be <0. or > wire_length !!!
 For GEANT data and don't connected wires return 0.

Double_t getXSign(const HMdcLineParam& ln, Int_t cell) const
 return X position of the signal on the wire in coor. sys. of this wire
 (Ywire=0, Zwire=0), "ln" - track in sector coor.system

Double_t getSignPath(const HMdcLineParam& ln, Int_t cell) const
 return the path of signal along wire number "cell"
 "ln" - track in sector coor.system
 Path can be <0. or > wire_length !!!
 For GEANT data and don't connected wires return 0.

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) const
 return the path of signal along wire number "cell"
 x1,y1,z1 & x2,y2,z2 - track in sector coor.system
 For GEANT data and don't connected wires return 0.

 outside:
 if(path<0) outside=-path;
 else if(path>wire_length) outside=path-wire_length;
 else outside=0;

 path-outside give new path which >=0. and <=wire_length)

Bool_t getDriftDist(Double_t xP1,Double_t yP1,Double_t zP1, Double_t xP2, Double_t yP2, Double_t zP2, Int_t cell, Double_t &alphaDrDist, Double_t &driftDist) const
 ---- esli ponadobitsya, nado proverit' rasschet uglov dlya treka vne cella

 return kTRUE if line p1-p2 intersect cell or kFALSE if not intersect
 calc. the angle driftAlpha (in degree) and drift distance in cell
 from line (p1-p2) to wire.
 p1,p2 - in sector coor.sys.
 1)
    Z^
     |  |------------*----|
     |  | cell        *   |
     |  |            / *  |
     |  |           /90 * |
     |  | driftDist/     *|
     |  |         /       *
   --|--|--------*^-----/-|*--------->
     |  |              /  | *        Y
     |  |      alphaDrDist|  *
        |                 |   *
        |                 |    *
        |-----------------|     * track

 2)             *** 90
    Z^             ***
     |  |----------:--***-|
     |  | cell     :  /  ***
     |  |         :  /    | ***  track
     |  |         : /     |    ***
     |  | driftDist/      |
     |  |        :/       |
   --|--|--------*^-------|---------->
     |  |         |       |          Y
     |  |                 |  alphaDrDist ???
        |                 |
        |                 |
        |-----------------|


 3)                        *
                            *
    Z^                     / * <-- no eg. 90 deg. !
     |  |-----------------/   *
     |  | cell           /|    *
     |  |               / |     *
     |  |              /  |      *
     |  |   driftDist /   |       *
     |  |            /    |        *track
     |  |           /     |         *
     |  |          /      |          *
     |  |         /       |      Alpha*
   --|--|--------*^-------|------------->
     |  |         |       |          Y
     |  |      alphaDrDist|
        |                 |
        |                 |
        |                 |
        |                 |
        |                 |
        |                 |
        |-----------------|

void print(void) const

Bool_t getParamCont(void)

Bool_t fillLayerCont(const Double_t* corr)



Inline Functions


          HMdcSizesCellsCell& operator[](Int_t i) const
         HMdcLayerGeomParLay* getLayerGeomParLay()
                 HGeomVolume* getGeomolume()
                      Short_t getSec() const
                      Short_t getMod() const
                      Short_t getLayer() const
                     Double_t getCatDist() const
                     Double_t getHalfCatDist() const
                     Double_t getPitch() const
                     Double_t getHalfPitch() const
                     Double_t getCosWireOr() const
                     Double_t getSinWireOr() const
                     Double_t getTanWireOr() const
                     Double_t getWireOffSet() const
        const HGeomTransform* getSecTrans() const
        const HGeomTransform* getModTrans() const
        const HGeomTransform* getRotLaySysRSec() const
                     Double_t getDist(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Int_t cell) const
                         void getYZinWireSys(Double_t x, Double_t y, Double_t z, Int_t cell, Double_t& yw, Double_t& zw) const
                     Double_t getDistToZero(Double_t y1, Double_t z1, Double_t y2, Double_t z2) const
                     Double_t getImpactToZero(Double_t y1, Double_t z1, Double_t y2, Double_t z2, Double_t& alpha) const
                     Double_t getImpact(const HMdcLineParam& ln, Int_t cell, Double_t& alpha, Double_t& y, Double_t& z, Double_t& dy, Double_t& dz) const
                         void getImpact(const HGeomVector& p1, const HGeomVector& p2, Int_t cell, Double_t& alpha, Double_t& per) const
                       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) const
                       Bool_t getImpact(const HMdcLineParam& ln, Int_t cell, Double_t& alpha, Double_t& minDist) const
                       Bool_t getImpact(const HMdcLineParam& ln, Int_t cell, Double_t& alpha, Double_t& minDist, Double_t& y, Double_t& z, Double_t& dy, Double_t& dz) const
                         void transTo(Double_t& x, Double_t& y, Double_t& z) const
                         void transFrom(Double_t& x, Double_t& y, Double_t& z) const
                         void rotVectToLay(Double_t xi, Double_t yi, Double_t zi, Double_t& xo, Double_t& yo, Double_t& zo) const
                         void rotVectToRotLay(Double_t xi, Double_t yi, Double_t zi, Double_t& xo, Double_t& yo, Double_t& zo) const
                         void rotYZtoRotLay(Double_t xi, Double_t yi, Double_t zi, Double_t& yo, Double_t& zo) const
                         void rotYZtoRotLay(const HGeomVector& dir, Double_t& yo, Double_t& zo) const
                         void rotVectToRotLay(const HGeomVector& dir, Double_t& xo, Double_t& yo, Double_t& zo) const
                     Double_t transXinRotLay(Double_t xi, Double_t yi) const
                     Double_t transYinRotLay(Double_t xi, Double_t yi) const
                         void transXYinRotLay(Double_t& x, Double_t& y) const
                      TClass* Class()
                      TClass* IsA() const
                         void ShowMembers(TMemberInspector& insp, char* parent)
                         void Streamer(TBuffer& b)
                         void StreamerNVirtual(TBuffer& b)
         HMdcSizesCellsLayer& operator=(const HMdcSizesCellsLayer&)


Last update: Fri Jan 26 12:15:12 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.