#include "hmdcsizescells.h" |
HMdcSizesCellsLayer
class description - source file - inheritance tree (.pdf)
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
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
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.