+ static const Double_t fgkMountingBlockClipLength; // SSD Mounting Block Clip Length
+ static const Double_t fgkMountingBlockClipThickness; // SSD Mounting Block Clip Thickness
+ static const Double_t fgkMountingBlockClibScrewRadius; // SSD Mounting Block Clip Radius
+ static const Double_t fgkMountingBlockClibScrewPosition; // SSD Mounting Block Clip Screw Position
+ static const Double_t fgkMountingBlockClibWidth; // SSD Mounting Block Clip
+ /////////////////////////////////////////////////////////////////////////////////
+ // SSD Mounting Block Support Parameters (lengths are in mm and angles in degrees)
+ /////////////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkMountingBlockSupportWidth[2]; // SSD Mounting Block Support Width
+ static const Double_t fgkMountingBlockSupportDownHeight; // SSD Mounting Block Support Down Height
+ static const Double_t fgkMountingBlockSupportRadius[2]; // SSD Mounting Block Support Radius
+ static const Double_t fgkMountingBlockSupportUpHeight[2]; // SSD Mounting Block Support Height
+ static const Double_t fgkLadderSupportHeight; // SSD Ladder Support Width
+ static const Double_t fgkLadderSupportRingLay5Position; // SSD Ladder Support Ring Position Layer5 respect to ITS center
+ static const Double_t fgkLadderSupportRingLay6Position; // SSD Ladder Support Ring Position Layer6 respect to ITS center
+ /////////////////////////////////////////////////////////////////////////////////
+ // SSD End Cap Cover Plate Parameters (lengths are in mm and angles in degrees)
+ /////////////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkEndCapCoverPlateSmallHoleRadius; // End Cap Cover Plate Hole Small Radious
+ static const Double_t fgkEndCapCoverPlateBigHoleRadius; // End Cap Cover Plate Hole Big Radious
+ static const Double_t fgkEndCapCoverPlateThickness; // End Cap Cover Plate Thickness
+ static const Double_t fgkEndCapCoverPlateSmallHoleSeparation[3]; // End Cap Cover Plate Hole Separation
+ static const Double_t fgkEndCapCoverPlateLength[6]; // End Cap Cover Plate Length
+ static const Double_t fgkEndCapCoverPlateWidth[3]; // End Cap Cover Plate Width
+ static const Double_t fgkEndCapCoverPlateScrewRadiusMin; // End Cap Cover Plate Screw Radius Min
+ static const Double_t fgkEndCapCoverPlateScrewRadiusMax; // End Cap Cover Plate Screw Radius Max
+ static const Double_t fgkEndCapCoverPlateClipLength; // End Cap Cover Plate Clip Length
+ static const Double_t fgkEndCapCoverPlateClipWidth; // End Cap Cover Plate Clip Width
+ static const Double_t fgkEndCapCoverPlateDownClipLength; // End Cap Cover Plate Down Clip Length
+ static const Double_t fgkEndCapCoverPlateDownClipWidth; // End Cap Cover Plate Down Clip Width
+ /////////////////////////////////////////////////////////////////////////////////
+ // SSD End Cap Cooling Tube Parameters (lengths are in mm and angles in degrees)
+ /////////////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkEndCapCoolingTubeAxialRadius[2]; // End Cap Cooling Tube Axial Radius
+ static const Double_t fgkEndCapCoolingTubeRadiusMin; // End Cap Cooling Tube Min Radius
+ static const Double_t fgkEndCapCoolingTubeRadiusMax; // End Cap Cooling Tube Max Radius
+ static const Double_t fgkEndCapCoolingTubeAngle[5]; // End Cap Cooling Tube Angle
+ static const Double_t fgkEndCapCoolingTubeLength[5]; // End Cap Cooling Tube Length
+ static const Double_t fgkEndCapCoolingTubeToCoverSide; // End Cap Cooling Tube Position respect to CoverSide
+ /////////////////////////////////////////////////////////////////////////////////
+ // SSD End Cap Cover Side Parameters (lengths are in mm and angles in degrees)
+ /////////////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkEndCapSideCoverLength[5]; // End Cap Cover Side Length
+ static const Double_t fgkEndCapSideCoverWidth[7]; // End Cap Cover Side Width
+ static const Double_t fgkEndCapSideCoverThickness; // End Cap Cover Side Thickness
+ /////////////////////////////////////////////////////////////////////////////////
+ // SSD End Cap Cards Parameters (lengths are in mm and angles in degrees)
+ /////////////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkEndCapCardElectBoardBackLength[3]; // End Cap Card Electronic Board Back Length
+ static const Double_t fgkEndCapCardElectBoardBackWidth[2]; // End Cap Card Electronic Board Back Width
+ static const Double_t fgkEndCapCardElectBoardBackThickness; // End Cap Card Electronic Board Back Thickness
+ static const Double_t fgkEndCapCardElectBoardLength; // End Cap Card Electronic Board Length
+ static const Double_t fgkEndCapCardElectBoardLayerWidth[2]; // End Cap Card Electronic Board Layer Width
+ static const Double_t fgkEndCapCardElectBoardLayerThickness;// End Cap Card Electronic Board Layer Thickness
+ static const Double_t fgkEndCapCardJMDConnectorThickness; // End Cap Card JMD Connector Thickness
+ static const Double_t fgkEndCapCardJMDConnectorLength[2]; // End Cap Card JMD Connector Length
+ static const Double_t fgkEndCapCardJMDConnectorWidth[2]; // End Cap Card JMD Connector Width
+ static const Double_t fgkEndCapCardJMDConnectorToLayer; // End Cap Card JMD Connector to Layer Distance
+ static const Double_t fgkEndCapCardCableConnectorLength[3]; // End Cap Card Cable Connector Length
+ static const Double_t fgkEndCapCardCableConnectorWidth[2]; // End Cap Card Cable Connector Width
+ static const Double_t fgkEndCapCardCableConnectorThickness; // End Cap Card Cable Connector Thickness
+ static const Double_t fgkEndCapCardCableConnectorDistance; // End Cap Card Cable Connector Distance
+ static const Double_t fgkEndCapCardCableConnectorToLayer; // End Cap Card Cable Connector To Layer Distance
+ static const Double_t fgkEndCapStripConnectionLength; // End Cap Strip Connection Length
+ static const Double_t fgkEndCapStripConnectionThickness; // End Cap Strip Connection Thickness
+ static const Double_t fgkEndCapStripConnectionWidth; // End Cap Strip Connection Width
+ static const Double_t fgkEndCapInterfaceCardBLength[7]; // End Cap Interface CardB Length
+ static const Double_t fgkEndCapInterfaceCardBWidth[5]; // End Cap Interface CardB Width
+ static const Double_t fgkEndCapInterfaceCardBThickness; // End Cap Interface CardB Thickness
+ static const Double_t fgkEndCapInterfaceElectBoardCardBThickness; // End Cap Interface Elect Board CardB Thickness
+ static const Double_t fgkEndCapInterfaceCardBJMDConnectorSeparation; // End Cap Interface CardB JMD Connector Separation
+ static const Double_t fgkEndCapStiffenerLength; // End Cap Stiffener Length
+ static const Double_t fgkEndCapStiffenerWidth; // End Cap Stiffener Width
+ static const Double_t fgkEndCapStiffenerThickness; // End Cap Stiffener Thickness
+ static const Double_t fgkEndCapEffectiveCableRadiusMin; // End Cap Effective Cable Radius Min
+ static const Double_t fgkEndCapEffectiveCableRadiusMax; // End Cap Effective Cable Radius Max
+ /////////////////////////////////////////////////////////////////////////////////
+ // SSD End Cap SupportLayer5/6 Side Parameters (lengths are in mm and angles in degrees)
+ /////////////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkEndCapLay5SupportLength; // End Cap Layer5 Support Length
+ static const Double_t fgkEndCapLay5SupportMiddleRadius; // End Cap Layer5 Support Middle Radius
+ static const Double_t fgkEndCapLay5SupportLowRadius; // End Cap Layer5 Support Low Radius
+ static const Double_t fgkEndCapLay5SupportHighWidth; // End Cap Layer5 High Radius
+ static const Double_t fgkEndCapLay5SupportLowWidth; // End Cap Layer5 Low Width
+ static const Double_t fgkEndCapSupportLength[2]; // End Cap Layer5/6 Support Length
+ static const Double_t fgkEndCapSupportMiddleRadius[2]; // End Cap Layer5/6 Support Middle Radius
+ static const Double_t fgkEndCapSupportLowRadius[2]; // End Cap Layer5/6 Support Low Radius
+ static const Double_t fgkEndCapSupportHighWidth; // End Cap Layer5/6 High Radius
+ static const Double_t fgkEndCapSupportLowWidth[2]; // End Cap Layer5/6 Low Width
+ static const Double_t fgkEndCapSupportCenterLay5ITSPosition; // End Cap Support Center ITS Position Layer 5
+ static const Double_t fgkEndCapSupportCenterLay5Position; // End Cap Support Position Respect Z Axis Origin Layer 5
+ static const Double_t fgkEndCapSupportCenterLay6ITSPosition; // End Cap Support Center ITS Position Layer 6
+ static const Double_t fgkEndCapSupportCenterLay6Position; // End Cap Support Position Respect Z Axis Origin Layer 6
+ /////////////////////////////////////////////////////////////////////////////////
+ // SSD End Cap Kapton Foil Parameters (lengths are in mm and angles in degrees)
+ ////////////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkEndCapKaptonFoilThickness; // End Cap Kapton Foil Thickness
+ static const Double_t fgkEndCapKaptonFoilLength; // End Cap Kapton Foil Length
+ static const Double_t fgkEndCapKaptonFoilWidth ; // End Cap Kapton Foil Width
+ /////////////////////////////////////////////////////////////////////////
+ // SSD Cone
+ /////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkSSDLowerPConeRadius; // SSD Cone Lower Radius
+ static const Double_t fgkSSDPConeAngle; // SSD Cone Angle
+ static const Double_t fgkSSDPConeZLength[2]; // SSD Cone ZLength
+ static const Double_t fgkSSDPConeLittleHoleRadius; // SSD Cone Little Hole Radius
+ static const Double_t fgkSSDPConeLittleHoleLength; // SSD Cone Little Hole Length
+ static const Double_t fgkSSDConeMiddleRadius; // SSD Cone Middle Radius
+ static const Double_t fgkSSDPConeMiddleLength; // SSD Cone Middle Length
+ static const Double_t fgkSSDPConeMiddleWidth; // SSD Cone Middle Width
+ static const Double_t fgkSSDPConeUpRadius; // SSD Cone Up Radius
+ static const Double_t fgkSSDPConeUpMaxRadius; // SSD Cone Up Max Radius
+ static const Double_t fgkSSDPConeUpMiddleRadius; // SSD Cone Up Middle Radius
+ static const Double_t fgkSSDPConeDownRadius; // SSD Cone Down Radius
+ static const Double_t fgkSSDPConeTrapezoidAngle; // SSD Cone Trapezoid Angle
+ static const Double_t fgkSSDPConeTrapezoidBasis; // SSD Cone Trapezoid Basis
+ static const Double_t fgkSSDPConeExternalRadius; // SSD Cone External Radius
+ static const Double_t fgkSSDPConeRadiusWidth; // SSD Cone Radius Width
+ static const Double_t fgkSSDPConeLength; // SSD Cone Length
+ static const Double_t fgkSSDCentralSupportLength; //SSD Central Support Length
+ static const Double_t fgkSSDCentralSupportRadius; // SSD Central Support Radius
+ static const Double_t fgkSSDCentralSupportWidth; // SSD Central Support Width
+ static const Double_t fgkSSDCentralAL3SupportLength; // SSD Central Support Length
+ static const Double_t fgkSSDCentralAL3SupportWidth; // SSD Central Support Width
+ /////////////////////////////////////////////////////////////////////////
+ // SSD Cables e Patch Panel
+ /////////////////////////////////////////////////////////////////////////
+ static const Double_t fgkSSDCablesLay5TubeRadiusMin; // Radius Min Cable Tube Layer 5
+ static const Double_t fgkSSDCablesLay6TubeRadiusMin; // Radius Min Cable Tube Layer 6
+ static const Double_t fgkSSDCablesLay5RightSideHeight; // Width Lay 5 Cables to be fixed in order to reproduce material budget
+ static const Double_t fgkSSDCablesLay6RightSideHeight; // // Width Lay 5 Cables to be fixed in order to reproduce material budget
+ static const Double_t fgkSSDCableAngle; // Angle Cable
+ static const Double_t fgkSSDCablesLay5RightSideWaterHeight; // Width Lay 5 Water Cables to be fixed in order to reproduce material budget
+ static const Double_t fgkSSDCablesPatchPanel2RB26Angle[2]; // Angle Position Patch Panel RB26
+ static const Double_t fgkSSDCablesPatchPanel2RB24Angle[2]; // Angle Position Patch Panel RB24
+ static const Double_t fgkSSDPatchPanel2RB26ITSDistance; // Patch Panel RB26 Position
+ static const Double_t fgkSSDPatchPanel2RB24ITSDistance; // Patch Panel RB24 Position
+ static const Double_t fgkSSDPatchPanel2RB26Radius; // Patch Panel Radius
+ static const Double_t fgkSSDPatchPanel2RB24Radius; // Patch Panel Radius
+ static const Double_t fgkSSDPatchPanelHeight; // Patch Panel Height
+ static const Double_t fgkSSDCableMaterialBudgetHeight; // SSD Cable Material Budget
+ /////////////////////////////////////////////////////////////////////////
+ // Private methods for private members generation
+ /////////////////////////////////////////////////////////////////////////
+
+ void CreateTransformationMatrices(); // Method setting the transformation matrices
+ void CreateBasicObjects(); // Method creating the basic objects of ssd geometry
+ void SetSSDSensor(); // Method setting the SSD Layer 5 and 6 sensors
+ TList* GetCarbonFiberSupportList(); // Method generating CarbonFiberSupport
+ TGeoVolume* GetCarbonFiberJunction(Double_t width); // Method generating
+ // CarbonFiberJunction
+ TList* GetCarbonFiberLowerSupportList();
+ // Method generating CarbonFiberLowerSupport
+ TGeoVolume* GetSSDSensorSupport(Double_t length, Double_t height,
+ Double_t width, Double_t* thickness) const; //
+ // Method generating SSDSensorSupport
+ TGeoVolume* GetCoolingTubeSupport(Int_t nedges); // Method generating CoolingTubeSupport
+ TList* GetSSDHybridParts(); // Method setting Hybrid Components
+ TGeoVolume* GetCoolingBlockSystem(); // Method generating Cooling Block System
+ TGeoVolume* GetSSDStiffenerFlex()const; // Method generating StiffenerFlex
+ TGeoVolume* GetSSDEndFlex(); // Method generating EndFlex
+ TGeoVolume* GetSSDMountingBlock(); // Method generating Mounting Block
+ TGeoVolume* GetMountingBlockClip() const; // Method generating Mounting Block Clip
+ void CreateCoolingTubes(); // Create/set cooling tubes
+ TGeoVolume* GetSSDCoolingBlock(Int_t nedges);
+ // Method generating StiffenerFlex
+ void GetSSDChipCables(TGeoVolume *&cableL, TGeoVolume *&cableR, Double_t SSDChipCablesHeigth, Int_t nedges);
+ // Method setting ChipCables
+ TGeoVolume* GetSSDChip() const; // Method generating Chips
+ TList* GetLadderCableSegment(Double_t ssdendladdercablelength);
+ // Method generating LadderCableSegment
+ TGeoVolume* GetLadderCable(Int_t n, Double_t ssdendladdercablelength);
+ // Method generating Ladder Cable
+ TGeoVolume* GetLadderCableAssembly(Int_t n, Double_t ssdendladdercablelength);
+ // Method generating Ladder Cable Assembly
+ TList* GetLadderCableAssemblyList(Int_t n, Double_t ssdendladdercablelength);
+ // Method generating Ladder Cable List
+ TList* GetMountingBlockSupport(Int_t nedges); // Get Mounting Block Support
+ void SetLadderSupport(Int_t nedges); // It generates the ladder support
+ TGeoVolume* GetEndCapCoolingTube(); // End Cap Cooling Tube
+ TGeoVolume* GetEndCapCoverPlate(); // End Cap Cover Plate
+ TGeoVolume* GetEndCapSideCover() const; // End Cap Side Cover
+ TGeoVolume** GetEndCapCards() const; // End Cap Cards
+ TGeoVolume** EndCapSupport(); // End Cap Support Layer 5 and Layer 6
+ void SetEndCapSupportAssembly(); // EndCap Support + End Cap Layer 5 and 6
+ TGeoVolume* GetEndCapEffectiveCables(Double_t radiusmin, Double_t radiusmax,
+ Double_t width,Int_t ncables,const char* volname); // End Cap Effective HV Cables
+ TGeoXtru* GetArcShape(Double_t phi, Double_t rmin,
+ Double_t rmax, Int_t nedges, Double_t height);
+ //Auxiliary Method for Arc Shape
+ TGeoArb8* GetArbShape(TVector3* vertexpos[],Double_t* width,
+ Double_t height,const char* shapename,Int_t isign = 1) const;
+ // Method generating an Arb shape
+ TGeoShape* GetScrewShape(Double_t* radius,Int_t* edgesnumber,Double_t* section) const;// Method Generating the Screw Shape
+ TGeoShape* GetHoleShape(Double_t radius, Int_t nedges, Double_t *section) const;// Method Generating the Hole Shape
+ TVector3* GetReflection(TVector3* vector,Double_t* param) const;
+ // Given an axis specified by param,
+ // it gives the reflection of the point respect to the axis
+ TGeoHMatrix* AddTranslationToHMatrix(TGeoHMatrix* ct,Double_t dx,Double_t dy,
+ Double_t dz) const;
+ // add (dx,dy,dz) translation to a initial TGeoCombiTrans