AliITSv11GeometrySPD() | |
AliITSv11GeometrySPD(Int_t debug) | |
AliITSv11GeometrySPD(const AliITSv11GeometrySPD& s) | |
virtual | ~AliITSv11GeometrySPD() |
void | TObject::AbstractMethod(const char* method) const |
Bool_t | AliITSv11Geometry::AngleOfIntersectionWithLine(Double_t x0, Double_t y0, Double_t x1, Double_t y1, Double_t xc, Double_t yc, Double_t rc, Double_t& t0, Double_t& t1) const |
void | AliITSv11Geometry::AnglesForRoundedCorners(Double_t x0, Double_t y0, Double_t r0, Double_t x1, Double_t y1, Double_t r1, Double_t& t0, Double_t& t1) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
virtual void | CarbonFiberSector(TGeoVolume* moth, Int_t sect, Double_t& xAAtubeCenter0, Double_t& yAAtubeCenter0, TGeoManager* mgr = gGeoManager) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TObject::Clear(Option_t* = "") |
virtual TObject* | TObject::Clone(const char* newname = "") const |
virtual Int_t | TObject::Compare(const TObject* obj) const |
virtual void | TObject::Copy(TObject& object) const |
Double_t | AliITSv11Geometry::CosD(Double_t deg) const |
virtual TGeoVolume* | CreateClip(TArrayD& sizes, Bool_t isDummy, TGeoManager* mgr = gGeoManager) const |
virtual TList* | CreateConeModule(Bool_t sideC, const Double_t angle, TGeoManager* mgr = gGeoManager) const |
virtual void | CreateCones(TGeoVolume* moth) const |
void | AliITSv11Geometry::CreateDefaultMaterials() |
virtual TGeoVolume* | CreateExtender(const Double_t* params, const TGeoMedium* medium, TArrayD& sizes) const |
virtual TGeoVolumeAssembly* | CreateGroundingFoil(Bool_t isRight, TArrayD& sizes, TGeoManager* mgr = gGeoManager) |
virtual TGeoCompositeShape* | CreateGroundingFoilShape(Int_t itype, Double_t& length, Double_t& width, Double_t thickness, TArrayD& sizes) |
virtual TGeoVolumeAssembly* | CreateHalfStave(Bool_t isRight, Int_t layer, Int_t idxCentral, Int_t idxSide, TArrayD& sizes, TGeoManager* mgr = gGeoManager) |
virtual TGeoVolume* | CreateLadder(Int_t layer, TArrayD& sizes, TGeoManager* mgr = gGeoManager) const |
virtual void | AliITSv11Geometry::CreateMaterials() |
virtual TGeoVolumeAssembly* | CreateMCM(Bool_t isRight, TArrayD& sizes, TGeoManager* mgr = gGeoManager) const |
virtual TGeoVolume* | CreatePatchPanel(TArrayD& sizes, TGeoManager* mgr = gGeoManager) const |
virtual TGeoVolumeAssembly* | CreatePixelBus(Bool_t isRight, Int_t layer, TArrayD& sizes, TGeoManager* mgr = gGeoManager) const |
void | CreateServices(TGeoVolume* moth) const |
virtual TGeoVolumeAssembly* | CreateStave(Int_t layer, TArrayD& sizes, TGeoManager* mgr = gGeoManager) |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
void | AliITSv11Geometry::DrawCrossSection(const TGeoPcon* p, Int_t fillc = 7, Int_t fills = 4050, Int_t linec = 3, Int_t lines = 1, Int_t linew = 4, Int_t markc = 2, Int_t marks = 4, Float_t marksize = 1.0) const |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
Bool_t | AliITSv11Geometry::GetDebug(Int_t level = 1) const |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
virtual const char* | TObject::GetIconName() const |
virtual TGeoMedium* | GetMedium(const char* mediumName, const TGeoManager* mgr = gGeoManager) const |
virtual const char* | TObject::GetName() const |
virtual char* | TObject::GetObjectInfo(Int_t px, Int_t py) const |
static Bool_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
virtual Bool_t | GetSectorMountingPoints(Int_t index, Double_t& x0, Double_t& y0, Double_t& x1, Double_t& y1) const |
virtual const char* | GetSenstiveVolumeName(Int_t lay) const |
virtual const char* | GetSenstiveVolumeName1() const |
virtual const char* | GetSenstiveVolumeName2() const |
virtual void | GetSPDCoolingTubeRB24(Int_t sector, Int_t stave, Double_t& x, Double_t& y, Double_t& z) const |
virtual void | GetSPDCoolingTubeRB26(Int_t sector, Int_t stave, Double_t& x, Double_t& y, Double_t& z) const |
virtual Int_t | GetSPDsectorX0Size() const |
virtual const char* | TObject::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TObject::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
void | AliITSv11Geometry::InsidePoint(const TGeoPcon* p, Int_t i1, Int_t i2, Int_t i3, Double_t Cthick, TGeoPcon* q, Int_t j1, Bool_t max) const |
void | AliITSv11Geometry::InsidePoint(Double_t x0, Double_t y0, Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t c, Double_t& x, Double_t& y) const |
virtual void | TObject::Inspect() constMENU |
static Bool_t | AliITSv11Geometry::IntersectCircle(Double_t m, Double_t x0, Double_t y0, Double_t rr, Double_t xc, Double_t yc, Double_t& xi1, Double_t& yi1, Double_t& xi2, Double_t& yi2) |
void | AliITSv11Geometry::IntersectLines(Double_t m, Double_t x0, Double_t y0, Double_t n, Double_t x1, Double_t y1, Double_t& xi, Double_t& yi) const |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | TObject::IsFolder() const |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TObject::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TObject::ls(Option_t* option = "") const |
void | AliITSv11Geometry::MakeFigure1(Double_t x0 = 0.0, Double_t y0 = 0.0, Double_t r0 = 2.0, Double_t x1 = -4.0, Double_t y1 = -2.0, Double_t r1 = 1.0) |
void | TObject::MayNotUse(const char* method) const |
virtual Bool_t | TObject::Notify() |
void | TObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::operator delete[](void* ptr, void* vp) |
void* | TObject::operator new(size_t sz) |
void* | TObject::operator new(size_t sz, void* vp) |
void* | TObject::operator new[](size_t sz) |
void* | TObject::operator new[](size_t sz, void* vp) |
AliITSv11GeometrySPD& | operator=(const AliITSv11GeometrySPD& s) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | TObject::Print(Option_t* option = "") const |
void | AliITSv11Geometry::PrintArb8(const TGeoArb8* a) const |
virtual void | PrintAscii(ostream* os) const |
void | AliITSv11Geometry::PrintBBox(const TGeoBBox* a) const |
void | AliITSv11Geometry::PrintConeSeg(const TGeoConeSeg* a) const |
void | AliITSv11Geometry::PrintPcon(const TGeoPcon* a) const |
void | AliITSv11Geometry::PrintTube(const TGeoTube* a) const |
void | AliITSv11Geometry::PrintTubeSeg(const TGeoTubeSeg* a) const |
void | AliITSv11Geometry::RadiusOfCurvature(Double_t rc, Double_t theta0, Double_t z0, Double_t r0, Double_t theta1, Double_t& z1, Double_t& r1) const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | ReadAscii(istream* is) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
void | TObject::ResetBit(UInt_t f) |
Double_t | AliITSv11Geometry::RFrom2Points(const Double_t* ar, const Double_t* az, Int_t i1, Int_t i2, Double_t z) const |
Double_t | AliITSv11Geometry::RFromZpCone(const Double_t* ar, const Double_t* az, int ip, Double_t tc, Double_t z, Double_t th = 0.0) const |
Double_t | AliITSv11Geometry::RmaxFrom2Points(const TGeoPcon* p, Int_t i1, Int_t i2, Double_t z) const |
Double_t | AliITSv11Geometry::RmaxFromZpCone(const TGeoPcon* p, int ip, Double_t tc, Double_t z, Double_t th = 0.0) const |
Double_t | AliITSv11Geometry::RminFrom2Points(const TGeoPcon* p, Int_t i1, Int_t i2, Double_t z) const |
Double_t | AliITSv11Geometry::RminFromZpCone(const TGeoPcon* p, Int_t ip, Double_t tc, Double_t z, Double_t th = 0.0) const |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
virtual void | SetAddStave(Bool_t* mask) |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
void | AliITSv11Geometry::SetDebug(Int_t level = 5) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
void | AliITSv11Geometry::SetNoDebug() |
static void | TObject::SetObjectStat(Bool_t stat) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | ShowMembers(TMemberInspector&) |
Double_t | AliITSv11Geometry::SinD(Double_t deg) const |
virtual void | SPDSector(TGeoVolume* moth, TGeoManager* mgr = gGeoManager) |
virtual void | StavesInSector(TGeoVolume* moth, TGeoManager* mgr = gGeoManager) |
virtual void | Streamer(TBuffer&) |
void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Double_t | AliITSv11Geometry::TanD(Double_t deg) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
Double_t | AliITSv11Geometry::Xfrom2Points(Double_t x0, Double_t y0, Double_t x1, Double_t y1, Double_t y) const |
Double_t | AliITSv11Geometry::Yfrom2Points(Double_t x0, Double_t y0, Double_t x1, Double_t y1, Double_t x) const |
Double_t | AliITSv11Geometry::Zfrom2MaxPoints(const TGeoPcon* p, Int_t i1, Int_t i2, Double_t r) const |
Double_t | AliITSv11Geometry::Zfrom2MinPoints(const TGeoPcon* p, Int_t i1, Int_t i2, Double_t r) const |
Double_t | AliITSv11Geometry::Zfrom2Points(const Double_t* az, const Double_t* ar, Int_t i1, Int_t i2, Double_t r) const |
Double_t | AliITSv11Geometry::ZFromRmaxpCone(const TGeoPcon* p, int ip, Double_t tc, Double_t r, Double_t th = 0.0) const |
Double_t | AliITSv11Geometry::ZFromRmaxpCone(const Double_t* ar, const Double_t* az, Int_t ip, Double_t tc, Double_t r, Double_t th = 0.0) const |
Double_t | AliITSv11Geometry::ZFromRminpCone(const TGeoPcon* p, int ip, Double_t tc, Double_t r, Double_t th = 0.0) const |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
void | TObject::MakeZombie() |
Bool_t | CFHolePoints(Double_t s, Double_t r1, Double_t r2, Double_t l, Double_t& x, Double_t& y) const |
void | CreateCoolingTubes(TGeoVolume* moth, Bool_t sideC) const |
Double_t | GetSPDSectorTranslation(Double_t x0, Double_t y0, Double_t x1, Double_t y1, Double_t r) const |
void | ParallelPosition(Double_t dist1, Double_t dist2, Double_t phi, Double_t& x, Double_t& y) const |
void | SPDsectorShape(Int_t n, const Double_t* xc, const Double_t* yc, const Double_t* r, const Double_t* ths, const Double_t* the, Int_t npr, Int_t& m, Double_t** xp, Double_t** yp) const |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
Bool_t | fAddStave[6] | [DEBUG] must be TRUE for all staves |
TArrayD | fSPDsectorX0 | X of first edge of sector plane for stave |
TArrayD | fSPDsectorX1 | X of second edge of sector plane for stave |
TArrayD | fSPDsectorY0 | Y of first edge of sector plane for stave |
TArrayD | fSPDsectorY1 | Y of second edge of sector plane for stave |
Double_t | fTubeEndSector[10][2][6][3] | Location of tube end in sector |
static const Double_t | fgkGapHalfStave | thickness of the empty (air) gap |
static const Double_t | fgkGapLadder | thicknes of the empty (air) gap left |
Inheritance Chart: | ||||||||||||
|
mounted in the sector (used to check overlaps) Default constructor. This does not initialize anything and is provided just for completeness. It is recommended to use the other one. The alignment gap is specified as argument (default = 0.0075 cm). Inputs: none. Outputs: none. Return: A default constructed AliITSv11GeometrySPD class.
mounted in the sector (used to check overlaps) Constructor with debug setting argument This is the constructor which is recommended to be used. It sets a debug level, and initializes the name of the object. The alignment gap is specified as argument (default = 0.0075 cm). Inputs: Int_t debug Debug level, 0= no debug output. Outputs: none. Return: A default constructed AliITSv11GeometrySPD class.
mounted in the sector (used to check overlaps) Copy Constructor Inputs: AliITSv11GeometrySPD &s source class Outputs: none. Return: A copy of a AliITSv11GeometrySPD class.
= operator Inputs: AliITSv11GeometrySPD &s source class Outputs: none. Return: A copy of a AliITSv11GeometrySPD class.
This function is used to recovery any medium used to build the geometry volumes. If the required medium does not exists, a NULL pointer is returned, and an error message is written.
Creates a single SPD carbon fiber sector and places it in a container volume passed as first argument ('moth'). Second argument points to the TGeoManager which coordinates the overall volume creation. The position of the sector is based on distance of closest point of SPD stave to beam pipe (figures all-sections-modules.ps) of 7.22mm at section A-A.
The method has been modified in order to build a support sector whose shape is dependent on the sector number; the aim is to get as close as possible to the shape inferred from alignment and avoid as much as possible overlaps generated by alignment. Define the detail SPD Carbon fiber support Sector geometry. Based on the drawings: http:///QA-construzione-profilo-modulo.ps - ALICE-Pixel "Costruzione Profilo Modulo" (march 25 2004) - ALICE-SUPPORTO "Costruzione Profilo Modulo" Define outside radii as negative, where "outside" means that the center of the arc is outside of the object (feb 16 2004). Arguments [the one passed by ref contain output values]: Inputs: TGeoVolume *moth the voulme which will contain this object TGeoManager *mgr TGeo builder defauls is gGeoManager Outputs: Double_t &xAAtubeCenter0 (by ref) x location of the outer surface of the cooling tube center for tube 0. Double_t &yAAtubeCenter0 (by ref) y location of the outer surface of the cooling tube center for tube 0. Return: none. Int the two variables passed by reference values will be stored which will then be used to correctly locate this sector. The information used for this is the distance between the center of the #0 detector and the beam pipe. Measurements are taken at cross section A-A.
Step along arck a distancs ds and compute boundry of two holes (radius r1 and r2) a distance l apart (along x-axis). Inputs: Double_t s fractional Distance along arcs [0-1] where 0-> alpha=beta=0, 1-> alpha=90 degrees. Double_t r1 radius at center circle Double_t r2 radius of displaced circle Double_t l Distance displaced circle is displaces (x-axis) Output: Double_t x x coordinate along double circle. Double_t y y coordinate along double circle. Return: logical, kFALSE if an error
Returns the edges of the straight borders in the SPD sector shape, which are used to mount staves on them. Coordinate system is that of the carbon fiber sector volume. Index numbering is as follows: /5 /\/4 1\ \/3 0|___\/2 Arguments [the ones passed by reference contain output values]: Int_t index --> location index according to above scheme [0-5] Double_t &x0 --> (by ref) x0 location or the ladder sector [cm] Double_t &y0 --> (by ref) y0 location of the ladder sector [cm] Double_t &x1 --> (by ref) x1 location or the ladder sector [cm] Double_t &y1 --> (by ref) y1 location of the ladder sector [cm] TGeoManager *mgr --> The TGeo builder The location is described by a line going from (x0, y0) to (x1, y1) Returns kTRUE if no problems encountered. Returns kFALSE if a problem was encountered (e.g.: shape not found).
Code to compute the points that make up the shape of the SPD Carbon fiber support sections Inputs: Int_t n size of arrays xc,yc, and r. Double_t *xc array of x values for radii centers. Double_t *yc array of y values for radii centers. Double_t *r array of signed radii values. Double_t *ths array of starting angles [degrees]. Double_t *the array of ending angles [degrees]. Int_t npr the number of lines segments to aproximate the arc. Outputs (arguments passed by reference): Int_t m the number of enetries in the arrays *xp[npr+1] and *yp[npr+1]. Double_t **xp array of x coordinate values of the line segments which make up the SPD support sector shape. Double_t **yp array of y coordinate values of the line segments which make up the SPD support sector shape.
Creates the "ladder" = silicon sensor + 5 chips.
Returns a TGeoVolume containing the following components:
- the sensor (TGeoBBox), whose name depends on the layer
- 5 identical chips (TGeoBBox)
- a guard ring around the sensor (subtraction of TGeoBBoxes),
which is separated from the rest of sensor because it is not
a sensitive part
- bump bondings (TGeoBBox stripes for the whole width of the
sensor, one per column).
Arguments:
1 - the owner layer (MUST be 1 or 2 or a fatal error is raised)
2 - a TArrayD passed by reference, which will contain relevant
dimensions related to this object:
size[0] = 'thickness' (the smallest dimension)
size[1] = 'length' (the direction along the ALICE Z axis)
size[2] = 'width' (extension in the direction perp. to the
above ones)
3 - the used TGeoManager
Creates the carbon fiber clips which are added to the central ladders. They have a complicated shape which is approximated by a TGeoXtru Implementation of a single clip over an half-stave. It has a complicated shape which is approximated to a section like this: 6 /\ . 7 //\\ 5 / 1\\___________________4 0 \___________________ 2 3 with a finite thickness for all the shape Its local reference frame is such that point A corresponds to origin.
Creates the patch panel approximated with a "L"-shaped TGeoXtru
with a finite thickness for all the shape
Its local reference frame is such that point A corresponds to origin.
Create a volume containing all parts of the grounding foil a for a half-stave. It consists of 4 layers with the same shape but different thickness: 1) a layer of glue 2) the aluminum layer 3) the kapton layer 4) another layer of glue Arguments: 1: a boolean value to know if it is the grounding foir for the right or left side 2: a TArrayD which will contain the dimension of the container box: - size[0] = length along Z (the beam line direction) - size[1] = the 'width' of the stave, which defines, together with Z, the plane of the carbon fiber support - size[2] = 'thickness' (= the direction along which all stave components are superimposed) 3: the TGeoManager The return value is a TGeoBBox volume containing all grounding foil components. to avoid strange behaviour of the geometry manager, create a suffix to be used in the names of all shapes
Create a TGeoAssembly containing all the components of the MCM. The TGeoVolume container is rejected due to the possibility of overlaps when placing this object on the carbon fiber sector. The assembly contains: - the thin part of the MCM (integrated circuit) - the MCM chips (specifications from EDMS) - the cap which covers the zone where chips are bound to MCM The local reference frame of this assembly is defined in such a way that all volumes are contained in a virtual box whose center is placed exactly in the middle of the occupied space w.r to all directions. This will ease the positioning of this object in the half-stave. The sizes of this virtual box are stored in the array passed by reference. Arguments: - a boolean flag to know if this is the "left" or "right" MCM, when looking at the stave from above (i.e. the direction from which one sees bus over ladders over grounding foil) and keeping the continuous border in the upper part, one sees the thicker part on the left or right. - an array passed by reference which will contain the size of the virtual container. - a pointer to the used TGeoManager.
Creates all services modules and places them in a TList angrot is the rotation angle (passed as an argument to avoid defining the same quantity in two different places) Created: ?? ??? 2008 A. Pulvirenti Updated: 03 May 2010 M. Sitta Updated: 20 Jun 2010 A. Pulvirenti Optical patch panels Updated: 22 Jun 2010 M. Sitta Fiber cables Updated: 04 Jul 2010 M. Sitta Water cooling Updated: 08 Jul 2010 A. Pulvirenti Air cooling on Side C
Places all services modules in the mother reference system Created: ?? ??? 2008 Alberto Pulvirenti Updated: 03 May 2010 Mario Sitta Updated: 04 Jul 2010 Mario Sitta Water cooling
New method to implement SPD services Created: 25 Jul 2012 Mario Sitta Updated: 15 Nov 2012 Mario Sitta Data provided by C.Gargiulo from CAD
Private method to implement SPD cooling tubes going from the manifolds to the staves Since their form is quite complicate (especially on Side C where capillaries are located) a separate method is used If sideC is true, the cooling tubes on Side C are created along with the cooling loops (aka "capillaries"), otherwise the (simpler) tubes on Side A get created. In all variables: L = Left (X > 0) R = Right (X < 0) Created: 10 Nov 2012 Mario Sitta Data provided by C.Gargiulo from CAD
------------------ CREATE AN EXTENDER ------------------------ This function creates the following picture (in plane xOy) Should be useful for the definition of the pixel bus and MCM extenders The origin corresponds to point 0 on the picture, at half-width in Z direction Y 7 6 5 ^ +---+---------------------+ | / | | / | 0------> X / +---------------------+ / / 3 4 9 8 / | | ---> +-----------+---+ | 0 1 2 | origin (0,0,0) Takes 6 parameters in the following order : |--> par 0 : inner length [0-1] / [9-8] |--> par 1 : thickness ( = [0-9] / [4-5]) |--> par 2 : angle of the slope |--> par 3 : total height in local Y direction |--> par 4 : outer length [3-4] / [6-5] |--> par 5 : width in local Z direction
Implementation of an half-stave, which depends on the side where we are on the stave. The convention for "left" and "right" is the same as for the MCM. The return value is a TGeoAssembly which is structured in such a way that the origin of its local reference frame coincides with the origin of the whole stave. The TArrayD passed by reference will contain details of the shape: - sizes[0] = thickness - sizes[1] = length - sizes[2] = width - sizes[3] = common 'x' position for eventual clips - sizes[4] = common 'y' position for eventual clips - sizes[5] = 'z' position of first clip - sizes[6] = 'z' position of second clip
This method uses all other ones which create pieces of the stave
and assemblies everything together, in order to return the whole
stave implementation, which is returned as a TGeoVolumeAssembly,
due to the presence of some parts which could generate fake overlaps
when put on the sector.
This assembly contains, going from bottom to top in the thickness
direction:
- the complete grounding foil, defined by the "CreateGroundingFoil"
method which already joins some glue and real groudning foil
layers for the whole stave (left + right);
- 4 ladders, which are sorted according to the ALICE numbering
scheme, which depends on the layer we are building this stave for;
- 2 MCMs (a left and a right one);
- 2 pixel buses (a left and a right one);
Arguments:
- the layer number, which determines the displacement and naming
of sensitive volumes
- a TArrayD passed by reference which will contain the size
of virtual box containing the stave
- the TGeoManager
Define a mask which states qhich staves must be placed. It is a string which must contain '0' or '1' depending if a stave must be placed or not. Each place is referred to one of the staves, so the first six characters of the string will be checked.
Unification of essentially two methods: - the one which creates the sector structure - the one which returns the complete stave For compatibility, this method requires the same arguments asked by "CarbonFiberSector" method, which is recalled here. Like this cited method, this one does not return any value, but it inserts in the mother volume (argument 'moth') all the stuff which composes the complete SPD sector. In the following, the stave numbering order used for arrays is the same as defined in the GetSectorMountingPoints(): /5 /\/4 1\ \/3 0|___\/2 Arguments: see description of "CarbonFiberSector" method.
Performs the following steps: 1 - finds a straight line parallel to the one passing through the origin and with angle 'phi' with X axis(phi in RADIANS); 2 - finds another line parallel to the previous one, with a distance 'dist1' from it 3 - takes a reference point in the second line in the intersection between the normal to both lines passing through the origin 4 - finds a point whith has distance 'dist2' from this reference, in the second line (point 2) According to the signs given to dist1 and dist2, the point is found in different position w.r. to the origin compute the point
Comutes the radial translation of a sector to give the proper distance between SPD detectors and the beam pipe. Units in are units out.
get medium
{return (lay==1) ? GetSenstiveVolumeName1():GetSenstiveVolumeName2();}
retrieve the mounting location and rotation needed to mount an SPD stave
{return fSPDsectorX0.GetSize();}
the grounding foil (splitted in many components)
the pixel bus (flat part + pt1000s + large capacitors/resistors)
Returns the location of the SPD cooling tube ends. RB26 (muon absober side) and RB24 (open side). Staves number 0,1 inner Staves, 2-5 outer staves. Sectors numbers 0-9.