DRGeom: Materials
ADRGeom: Individual (Aluminum) pads
DR3 Cathode: 8 equal Panels cover 360 degrees azimuth.
One of the seams between the cathodes is at 0 in azimuth
Material Rin Rout Aluminium RInAl ROutAl = RinAl + 0.00068" Mylar ROutAl ROutMlr1 = RoutAl + 0.0075" Kevlar ROutMlr1 ROutKvl1 = RoutMlr1 + 0.010" Honeycomb ROutKvl1 ROutHny = RoutKvl1 + 0.22" Kevlar ROutHny ROutKvl2 = RoutHny + 0.010" Mylar ROutKvl2 ROutMlr2 = RoutKvl2 + 0.0075Mylar/Kevlar are glued with high T epoxy
^ R | | -----> z +----M M------+ Routside |-====-====-====-====- panel -====-====-====-====- | +-------o o--------+ Rinside
In phi-z view, measured along the outside radius, the markers are placed:
Each of the 4 M-markers is surveyed w/r to the DR3 endplate (surface 65?). It is a known distance C away in z from the beginning of the 2nd pad. If the marker M is distance X away from the DR3 endplate, the corresponding point at the beginning of the second pad is (X-C) away in z from the endplate.
In DR3Geom we will start with ideal geometry i.e. panels parallel to DR3 z axis. Survey values of the markers determine rotation of the panel from its ideal position. Rotation causes the z of the edge of the pad to be a function of phi, instead of being at a constant z.
The DRGeom panels are DetectorGeometry/ DGVolumeTubePhiSegments
unsigned int numberOfPanels()
unsigned int numberOfPadsInPanel()
unsigned int numberOfPadsTotal()
//panel object( panel #) and panel # (panel object)
const ADRCathodePanel& panel( unsigned int iPanel );
unsigned int
panelNumber(const ADRCathodePanel& npanel)
//Mapping (Panel 0-7 and Pad 0-191) <-> padID (1-1536)
unsigned short panelOfPadID(const unsigned int PadId)
unsigned short padInPanelOfPadID(const unsigned int PadId)
unsigned int padID(const unsigned short Panel,
const unsigned short Pad)
still to add
// const ADRCathodePanel& panelObject(
DABoolean& success, const HepPoint3D& position )
// Cleo Lab Coordinates of the panel center and corners
const HepPoint3D& point0();
const HepPoint3D& cornerEastPhiMin()
const HepPoint3D& cornerEastPhiMax() ;
const HepPoint3D& cornerWestPhiMin()
const HepPoint3D& cornerWestPhiMax();
//LOCAL coordinates of the panel
//phi is centered on 0, localPhiMin = - PhiDelta/2
//z is centered on 0, local zmin/max = -/+halfLengthZ
double panelRadius()
double localPhiMin()
double phiDelta()
double halfLengthZ()
unsigned int numberOfPads()
const DGConstLabVolumePtr& panelVolume()
//make pad
ADRCathodePadInfo ADRCathodePadMk( unsigned int iPadID )
//extract pad from the array made at initialization
const ADRCathodePadInfo& ADRCathodePad
( unsigned int iPadID )
// panels limits in z and phi
double phiMin() ;
double phiMax();
double zMax()
double zMin()
// edges // success=.false. if parameter is outside the range
double phiMinAtZ( DABoolean& success,double z)
double phiMaxAtZ( DABoolean& success,double z)
double zMinAtPhi( DABoolean& success,double phi)
double zMaxAtPhi( DABoolean& success,double phi)
still to add
closest pad for the 3D nearby (at DR3 layer 47? ) point
// const ADRCathodePadInfo& PadObjectClosest
( DABoolean& success, const HepPoint3D& iPoint )
//LOCAL coordinates of the pad
double radius()
double localPadPhiMin()
double padPhiDelta()
double padHalfLengthZ()
// limits in z and phi
// double padGlobalPhiMin()
// double padGlobalPhiMax()
// double padGlobalZMax()
// double padGlobalZMin()
// edges // success=.false. if parameter is outside the range
// double padPhiMinAtZ( DABoolean& success, double z) ;
// double padPhiMaxAtZ(DABoolean& success, double z)
// double padZMinAtPhi( DABoolean& success, double phi)
// double padZMaxAtPhi(DABoolean& success, double phi)