ROOT logo
AliRoot » ITS » UPGRADE » AliITSUv1Layer

class AliITSUv1Layer: public AliITSv11Geometry

 This class Defines the Geometry for the ITS Upgrade using TGeo
 This is a work class used to study different configurations
 during the development of the new ITS structure.

  Mario Sitta <sitta@to.infn.it>
  Chinorat Kobdaj (kobdaj@g.sut.ac.th)

Function Members (Methods)

public:
AliITSUv1Layer()
AliITSUv1Layer(Int_t debug)
AliITSUv1Layer(const AliITSUv1Layer& source)
AliITSUv1Layer(Int_t lay, Int_t debug)
AliITSUv1Layer(Int_t lay, Bool_t turbo, Int_t debug)
virtual~AliITSUv1Layer()
voidTObject::AbstractMethod(const char* method) const
Bool_tAliITSv11Geometry::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
voidAliITSv11Geometry::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 voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
Double_tAliITSv11Geometry::CosD(Double_t deg) const
voidAliITSv11Geometry::CreateDefaultMaterials()
virtual voidCreateLayer(TGeoVolume* moth)
virtual voidAliITSv11Geometry::CreateMaterials()
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
voidAliITSv11Geometry::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 voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Int_tGetBuildLevel() const
Double_tGetChipThick() const
Int_tGetChipType() const
Bool_tAliITSv11Geometry::GetDebug(Int_t level = 1) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
Double_tGetNChips() const
Int_tGetNChipsPerParent() const
Int_tGetNHalfStavesPerParent() const
Int_tGetNModulesPerParent() const
Double_tGetNStaves() const
Int_tGetNStavesPerParent() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Double_tGetPhi0() const
Double_tGetRadius() const
Double_tGetSensorThick() const
AliITSUv1::AliITSUModel_tGetStaveModel() const
Double_tGetStaveTilt() const
Double_tGetStaveWidth() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
Double_tGetZLength() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidAliITSv11Geometry::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
voidAliITSv11Geometry::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 voidTObject::Inspect() constMENU
static Bool_tAliITSv11Geometry::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)
voidAliITSv11Geometry::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
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tIsTurbo() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidAliITSv11Geometry::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)
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::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)
AliITSUv1Layer&operator=(const AliITSUv1Layer& source)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
voidAliITSv11Geometry::PrintArb8(const TGeoArb8* a) const
voidAliITSv11Geometry::PrintBBox(const TGeoBBox* a) const
voidAliITSv11Geometry::PrintConeSeg(const TGeoConeSeg* a) const
voidAliITSv11Geometry::PrintPcon(const TGeoPcon* a) const
voidAliITSv11Geometry::PrintTube(const TGeoTube* a) const
voidAliITSv11Geometry::PrintTubeSeg(const TGeoTubeSeg* a) const
voidAliITSv11Geometry::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_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
Double_tAliITSv11Geometry::RFrom2Points(const Double_t* ar, const Double_t* az, Int_t i1, Int_t i2, Double_t z) const
Double_tAliITSv11Geometry::RFromZpCone(const Double_t* ar, const Double_t* az, int ip, Double_t tc, Double_t z, Double_t th = 0.0) const
Double_tAliITSv11Geometry::RmaxFrom2Points(const TGeoPcon* p, Int_t i1, Int_t i2, Double_t z) const
Double_tAliITSv11Geometry::RmaxFromZpCone(const TGeoPcon* p, int ip, Double_t tc, Double_t z, Double_t th = 0.0) const
Double_tAliITSv11Geometry::RminFrom2Points(const TGeoPcon* p, Int_t i1, Int_t i2, Double_t z) const
Double_tAliITSv11Geometry::RminFromZpCone(const TGeoPcon* p, Int_t ip, Double_t tc, Double_t z, Double_t th = 0.0) const
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetBuildLevel(Int_t buildLevel)
voidSetChipThick(Double_t t)
voidSetChipType(Int_t tp)
voidAliITSv11Geometry::SetDebug(Int_t level = 5)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAliITSv11Geometry::SetNoDebug()
voidSetNStaves(Int_t n)
voidSetNUnits(Int_t u)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetPhi0(Double_t phi)
voidSetRadius(Double_t r)
voidSetSensorThick(Double_t t)
voidSetStaveModel(AliITSUv1::AliITSUModel_t model)
voidSetStaveTilt(Double_t t)
voidSetStaveWidth(Double_t w)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetZLength(Double_t z)
virtual voidShowMembers(TMemberInspector&)
Double_tAliITSv11Geometry::SinD(Double_t deg) const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Double_tAliITSv11Geometry::TanD(Double_t deg) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
Double_tAliITSv11Geometry::Xfrom2Points(Double_t x0, Double_t y0, Double_t x1, Double_t y1, Double_t y) const
Double_tAliITSv11Geometry::Yfrom2Points(Double_t x0, Double_t y0, Double_t x1, Double_t y1, Double_t x) const
Double_tAliITSv11Geometry::Zfrom2MaxPoints(const TGeoPcon* p, Int_t i1, Int_t i2, Double_t r) const
Double_tAliITSv11Geometry::Zfrom2MinPoints(const TGeoPcon* p, Int_t i1, Int_t i2, Double_t r) const
Double_tAliITSv11Geometry::Zfrom2Points(const Double_t* az, const Double_t* ar, Int_t i1, Int_t i2, Double_t r) const
Double_tAliITSv11Geometry::ZFromRmaxpCone(const TGeoPcon* p, int ip, Double_t tc, Double_t r, Double_t th = 0.0) const
Double_tAliITSv11Geometry::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_tAliITSv11Geometry::ZFromRminpCone(const TGeoPcon* p, int ip, Double_t tc, Double_t r, Double_t th = 0.0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
voidAddTranslationToCombiTrans(TGeoCombiTrans* ct, Double_t dx = 0, Double_t dy = 0, Double_t dz = 0) const
TGeoVolume*CreateChipInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoCombiTrans*CreateCombiTrans(const char* name, Double_t dy, Double_t dz, Double_t dphi, Bool_t planeSym = kFALSE)
voidCreateLayerTurbo(TGeoVolume* moth)
TGeoVolume*CreateModuleInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateModuleOuterB(const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateSpaceFrameOuterB(const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateSpaceFrameOuterB1(const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateSpaceFrameOuterBDummy(const TGeoManager* mgr = gGeoManager) const
TGeoVolume*CreateStave(const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelInnerB0(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelInnerB1(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelInnerB21(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelInnerB22(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelInnerB3(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelInnerB4(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelInnerBDummy(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager) const
TGeoVolume*CreateStaveModelOuterB0(const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelOuterB12(const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelOuterBDummy(const TGeoManager* mgr = gGeoManager) const
TGeoVolume*CreateStaveOuterB(const TGeoManager* mgr = gGeoManager)
TGeoArb8*CreateStaveSide(const char* name, Double_t dz, Double_t angle, Double_t xSign, Double_t L, Double_t H, Double_t l)
TGeoVolume*CreateStaveStructInnerB(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)

Data Members

public:
enum { kStave
kHalfStave
kModule
kChip
kNHLevels
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
static const Double_tAliITSv11Geometry::fgkCelsiusTemperature in degrees Celcius
static const Double_tAliITSv11Geometry::fgkDegreeConvert degrees to TGeom's degrees
static const Double_tAliITSv11Geometry::fgkGeVEnergy in GeV
static const Double_tAliITSv11Geometry::fgkKPascalPreasure in KPascal
static const Double_tAliITSv11Geometry::fgkKeVEnergy in KeV
static const Double_tAliITSv11Geometry::fgkKgdm3Density in kg/dm^3
static const Double_tAliITSv11Geometry::fgkKgm3Density in kg/m^3
static const Double_tAliITSv11Geometry::fgkMeVEnergy in MeV
static const Double_tAliITSv11Geometry::fgkPascalPreasure in Pascal
static const Double_tAliITSv11Geometry::fgkRadianTo Radians
static const Double_tAliITSv11Geometry::fgkcmConvert cm to TGeom's cm.
static const Double_tAliITSv11Geometry::fgkeVEnergy in eV
static const Double_tAliITSv11Geometry::fgkgcm3Density in g/cm^3
static const Double_tAliITSv11Geometry::fgkmicronConvert micron to TGeom's cm.
static const Double_tAliITSv11Geometry::fgkmmConvert mm to TGeom's cm.
private:
Int_tfBuildLevelUsed for material studies
Double_tfChipThickChip thickness
UInt_tfChipTypeIDdetector type id
Int_tfHierarchy[4]array to query number of staves, hstaves, modules, chips per its parent volume
Bool_tfIsTurboTrue if this layer is a "turbo" layer
Double_tfLayRadiusInner radius of this layer
Int_tfLayerNumberCurrent layer number
Int_tfNChipsN. chips per container (module, HalfStave, Stave, whatever is container)
Int_tfNModulesNumber of modules per container if defined (HalfStave, Stave, whatever is container)
Int_tfNStavesNumber of staves in this layer
Double_tfPhi0lab phi of 1st stave, in degrees!!!
Double_tfSensorThickSensor thickness
AliITSUv1::AliITSUModel_tfStaveModelThe stave model
Double_tfStaveTiltStave tilt angle (for turbo layers only) in degrees
Double_tfStaveWidthStave width (for turbo layers only)
Double_tfZLengthZ length of this layer
static const Double_tfgkDefaultChipThickDefault chip thickness
static const Double_tfgkDefaultSensorThickDefault sensor thickness
static const Double_tfgkIBCarbonFleeceThickIB carbon fleece thickness
static const Double_tfgkIBCarbonPaperThickIB Carbon Paper Thickness
static const Int_tfgkIBChipsPerRowIB chips per row in module
static const Double_tfgkIBCoolPipeInnerDIB cooling inner diameter
static const Double_tfgkIBCoolPipeThickIB cooling pipe thickness
static const Double_tfgkIBCoolPipeXDistIB cooling pipe separation
static const Double_tfgkIBFlexCableAlThickThickness of FPC Aluminum
static const Double_tfgkIBFlexCableKapThickThickness of FPC Kapton
static const Double_tfgkIBGlueThickIB glue thickness
static const Double_tfgkIBK13D2UThickIB k13d2u prepreg thickness
static const Int_tfgkIBNChipRowsIB chip rows in module
static const Double_tfgkIBSideVertexHeightIB SideVertex height
static const Double_tfgkIBSideVertexWidthIB SideVertex width
static const Double_tfgkIBStaveHeightIB Stave Total Y Height
static const Double_tfgkIBTopFilamentAlphaIB TopFilament angle
static const Double_tfgkIBTopFilamentLengthIB TopFilament length
static const Double_tfgkIBTopFilamentSideIB TopFilament side
static const Double_tfgkIBTopVertexHeightIB TopVertex height
static const Double_tfgkIBTopVertexWidthIB TopVertex width
static const Int_tfgkNumberOfInnerLayersNumber of IB Layers
static const Double_tfgkOBBusCableAlThickThickness of Bus Aluminum
static const Double_tfgkOBBusCableKapThickThickness of Bus Kapton
static const Double_tfgkOBCarbonFleeceThickOB carbon fleece thickness
static const Double_tfgkOBCarbonPlateThickOB Carbon Plate Thickness
static const Double_tfgkOBChipXGapGap between OB chips on X
static const Double_tfgkOBChipZGapGap between OB chips on Z
static const Int_tfgkOBChipsPerRowOB chips per row in module
static const Double_tfgkOBColdPlateThickOB Cold Plate Thickness
static const Double_tfgkOBCoolTubeInnerDOB cooling inner diameter
static const Double_tfgkOBCoolTubeInnerDM1OB cooling inner diameter
static const Double_tfgkOBCoolTubeThickOB cooling tube thickness
static const Double_tfgkOBCoolTubeXDistOB cooling tube separation
static const Double_tfgkOBFlexCableAlThickThickness of FPC Aluminum
static const Double_tfgkOBFlexCableCuThickThickness of FPC Copper
static const Double_tfgkOBFlexCableKapThickThickness of FPC Kapton
static const Double_tfgkOBFlexCableKapThick1Thickness of FPC Kapton
static const Double_tfgkOBGlueThickOB Glue Thickness in Model2
static const Double_tfgkOBGlueThickM1OB Glue total Thickness
static const Double_tfgkOBGraphiteFoilThickOB graphite foil thickness
static const Double_tfgkOBHalfStaveWidthOB Half Stave Width
static const Double_tfgkOBHalfStaveXOverlapOB half staves X overlap
static const Double_tfgkOBHalfStaveYTransOB half staves Y transl.
static const Double_tfgkOBModuleGapGap between OB modules
static const Double_tfgkOBModuleWidthOB Module Width
static const Double_tfgkOBModuleZLengthOB Chip Length along Z
static const Int_tfgkOBNChipRowsOB chip rows in module
static const Double_tfgkOBSFBotBeamAngleOB SF bottom beam angle
static const Double_tfgkOBSFrameBeamRadiusOB Space Frame Beam Radius
static const Double_tfgkOBSFrameBeamSidePhiOB SF side beam angle
static const Double_tfgkOBSpaceFrameHa...the V side shape...
static const Double_tfgkOBSpaceFrameHb...OB Space Frame
static const Double_tfgkOBSpaceFrameLOB SF
static const Double_tfgkOBSpaceFrameLaParameters defining...
static const Double_tfgkOBSpaceFrameLb...of the carbon...
static const Double_tfgkOBSpaceFrameTotHighOB Total Y Height
static const Double_tfgkOBSpaceFrameWidthOB Space Frame Width

Class Charts

Inheritance Chart:
TObject
AliITSv11Geometry
AliITSUv1Layer

Function documentation

AliITSUv1Layer()
 Standard constructor
AliITSUv1Layer(Int_t debug)
 Constructor setting debugging level
AliITSUv1Layer(Int_t lay, Int_t debug)
 Constructor setting layer number and debugging level
AliITSUv1Layer(Int_t lay, Bool_t turbo, Int_t debug)
 Constructor setting layer number and debugging level
 for a "turbo" layer (i.e. where staves overlap in phi)
AliITSUv1Layer(const AliITSUv1Layer& source)
 Copy constructor
AliITSUv1Layer& operator=(const AliITSUv1Layer& source)
 Assignment operator

~AliITSUv1Layer()
 Destructor

void CreateLayer(TGeoVolume* moth)
 Creates the actual Layer and places inside its mother volume

 Input:
         moth : the TGeoVolume owing the volume structure

 Output:

 Return:

 Created:      17 Jun 2011  Mario Sitta
 Updated:      08 Jul 2011  Mario Sitta
 Updated:      20 May 2013  Mario Sitta  Layer is Assembly instead of Tube

 Local variables
void CreateLayerTurbo(TGeoVolume* moth)
 Creates the actual Layer and places inside its mother volume
 A so-called "turbo" layer is a layer where staves overlap in phi
 User can set width and tilt angle, no check is performed here
 to avoid volume overlaps

 Input:
         moth : the TGeoVolume owing the volume structure

 Output:

 Return:

 Created:      08 Jul 2011  Mario Sitta
 Updated:      08 Mar 2012  Mario Sitta  Correct way to compute container R
 Updated:      20 May 2013  Mario Sitta  Layer is Assemgbly instead of Tube

TGeoVolume* CreateStave(const TGeoManager* mgr = gGeoManager)
 Creates the actual Stave

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Jun 2011  Mario Sitta
 Updated:      18 Dec 2013  Mario Sitta  Handle IB and OB

TGeoVolume* CreateStaveInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager)
 Create the chip stave for the Inner Barrel
 (Here we fake the halfstave volume to have the same
 formal geometry hierarchy as for the Outer Barrel)

 Input:
         xsta, ysta, zsta : X, Y, Z stave half lengths
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      06 Mar 2014  Mario Sitta

 Local variables
TGeoVolume* CreateModuleInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager)
 Creates the IB Module: (only the chips for the time being)

 Input:
         xmod, ymod, zmod : X, Y, Z module half lengths
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:
         the module as a TGeoVolume

 Created:      06 Mar 2014  M. Sitta

TGeoVolume* CreateStaveStructInnerB(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
 Create the mechanical stave structure

 Input:
         xsta : X length
         zsta : Z length
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Mar 2013  Chinorat Kobdaj
 Updated:      26 Apr 2013  Mario Sitta

TGeoVolume* CreateStaveModelInnerBDummy(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager) const
 Create dummy stave

 Input:
         xsta : X length
         zsta : Z length
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Mar 2013  Chinorat Kobdaj
 Updated:      26 Apr 2013  Mario Sitta

 Done, return the stave structur
TGeoVolume* CreateStaveModelInnerB0(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
 Create the mechanical stave structure for Model 0 of TDR

 Input:
         xsta : X length
         zsta : Z length
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Mar 2013  Chinorat Kobdaj
 Updated:      26 Apr 2013  Mario Sitta

 Materials defined in AliITSUv1
TGeoVolume* CreateStaveModelInnerB1(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
 Create the mechanical stave structure for Model 1 of TDR

 Input:
         xsta : X length
         zsta : Z length
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Mar 2013  Chinorat Kobdaj
 Updated:      26 Apr 2013  Mario Sitta

 Materials defined in AliITSUv1
TGeoVolume* CreateStaveModelInnerB21(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
 Create the mechanical stave structure for Model 2.1 of TDR

 Input:
         xsta : X length
         zsta : Z length
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Mar 2013  Chinorat Kobdaj
 Updated:      26 Apr 2013  Mario Sitta

 Materials defined in AliITSUv1
TGeoVolume* CreateStaveModelInnerB22(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
 Create the mechanical stave structure for Model 2.2 of TDR

 Input:
         xsta : X length
         zsta : Z length
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Mar 2013  Chinorat Kobdaj
 Updated:      26 Apr 2013  Mario Sitta
 Updated:      30 Apr 2013  Wanchaloem Poonsawat

 Materials defined in AliITSUv1
TGeoVolume* CreateStaveModelInnerB3(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
 Create the mechanical stave structure for Model 3 of TDR

 Input:
         xsta : X length
         zsta : Z length
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      28 May 2013  Chinorat Kobdaj
 Updated:                   Mario Sitta
 Updated:                   Wanchaloem Poonsawat

 Materials defined in AliITSUv1
TGeoVolume* CreateStaveModelInnerB4(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
 Create the mechanical stave structure for Model 2.2 of TDR
 Logic is similar to method CreateStaveModelInnerB22
 but completely rewritten:
 - code completely revised, made systematic and more similar to OB
 - fix some inconsistencies (stave element sequence, empty space)
 - use static const as parameters
 - comply with latest (nov '14) C.Gargiulo data

 Input:
         xstave : stave X half length
         zstave : stave Z half length
         mgr    : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      04 Dec 2014  Mario Sitta

 Local parameters
TGeoVolume* CreateStaveOuterB(const TGeoManager* mgr = gGeoManager)
 Create the chip stave for the Outer Barrel

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      20 Dec 2013  Mario Sitta
 Updated:      12 Mar 2014  Mario Sitta

TGeoVolume* CreateStaveModelOuterBDummy(const TGeoManager* mgr = gGeoManager) const
 Create dummy stave

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      20 Dec 2013  Mario Sitta

TGeoVolume* CreateStaveModelOuterB0(const TGeoManager* mgr = gGeoManager)
 Creation of the mechanical stave structure for the Outer Barrel as in v0
 (we fake the module and halfstave volumes to have always
 the same formal geometry hierarchy)

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      20 Dec 2013  Mario Sitta
 Updated:      12 Mar 2014  Mario Sitta

TGeoVolume* CreateStaveModelOuterB12(const TGeoManager* mgr = gGeoManager)
 Create the mechanical half stave structure
 for the Outer Barrel as in TDR

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      20 Nov 2013  Anastasia Barbano
 Updated:      16 Jan 2014  Mario Sitta
 Updated:      24 Feb 2014  Mario Sitta
 Updated:      11 Nov 2014  Mario Sitta  Model2
 Updated:      03 Dec 2014  Mario Sitta  Revised with C.Gargiulo latest infos

TGeoVolume* CreateSpaceFrameOuterB(const TGeoManager* mgr = gGeoManager)
 Create the space frame for the Outer Barrel

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:


TGeoVolume* CreateSpaceFrameOuterBDummy(const TGeoManager* mgr = gGeoManager) const
 Create dummy stave

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

TGeoVolume* CreateSpaceFrameOuterB1(const TGeoManager* mgr = gGeoManager)
 Create the space frame for the Outer Barrel (Model 1)

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:
         a TGeoVolume with the Space Frame of a stave

 Created:      20 Dec 2013  Anastasia Barbano
 Updated:      15 Jan 2014  Mario Sitta
 Updated:      18 Feb 2014  Mario Sitta
 Updated:      12 Mar 2014  Mario Sitta

TGeoVolume* CreateChipInnerB(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager)
 Creates the actual Chip

 Input:
         xchip,ychip,zchip : the chip dimensions
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Jun 2011  Mario Sitta

TGeoVolume* CreateModuleOuterB(const TGeoManager* mgr = gGeoManager)
 Creates the OB Module: HIC + FPC + Carbon plate

 Input:
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:
         the module as a TGeoVolume

 Created:      18 Dec 2013  M. Sitta, A. Barbano
 Updated:      26 Feb 2014  M. Sitta
 Updated:      12 Nov 2014  M. Sitta  Model2 is w/o Carbon Plate and Glue
                                      and Cu instead of Al

void SetNUnits(Int_t u)
 Sets the number of units in a stave:
      for the Inner Barrel: the number of chips per stave
      for the Outer Barrel: the number of modules per half stave


 Input:
         u :  the number of units

 Output:

 Return:

 Created:      18 Feb 2013  Mario Sitta (was already SetNChips)

void SetStaveTilt(Double_t t)
 Sets the Stave tilt angle (for turbo layers only)

 Input:
         t :  the stave tilt angle

 Output:

 Return:

 Created:      08 Jul 2011  Mario Sitta

void SetStaveWidth(Double_t w)
 Sets the Stave width (for turbo layers only)

 Input:
         w :  the stave width

 Output:

 Return:

 Created:      08 Jul 2011  Mario Sitta

TGeoArb8 * CreateStaveSide(const char* name, Double_t dz, Double_t angle, Double_t xSign, Double_t L, Double_t H, Double_t l)
 Creates the V-shaped sides of the OB space frame
 (from a similar method with same name and function
 in AliITSv11GeometrySDD class by L.Gaudichet)

 Create one half of the V shape corner of CF stave
TGeoCombiTrans * CreateCombiTrans(const char* name, Double_t dy, Double_t dz, Double_t dphi, Bool_t planeSym = kFALSE)
 Help method to create a TGeoCombiTrans matrix
 (from a similar method with same name and function
 in AliITSv11GeometrySDD class by L.Gaudichet)


 return the TGeoCombiTrans which make a translation in y and z
 and a rotation in phi in the global coord system
 If planeSym = true, the rotation places the object symetrically
 (with respect to the transverse plane) to its position in the
 case planeSym = false

void AddTranslationToCombiTrans(TGeoCombiTrans* ct, Double_t dx = 0, Double_t dy = 0, Double_t dz = 0) const
 Help method to add a translation to a TGeoCombiTrans matrix
 (from a similar method with same name and function
 in AliITSv11GeometrySDD class by L.Gaudichet)

 Add a dx,dy,dz translation to the initial TGeoCombiTrans
Bool_t IsTurbo() const
{return fIsTurbo;}
Double_t GetChipThick() const
{return fChipThick;}
Double_t GetStaveTilt() const
{return fStaveTilt;}
Double_t GetStaveWidth() const
{return fStaveWidth;}
Double_t GetSensorThick() const
{return fSensorThick;}
Double_t GetNStaves() const
{return fNStaves;}
Double_t GetNChips() const
{return fNChips;}
Double_t GetRadius() const
{return fLayRadius;}
Double_t GetPhi0() const
{return fPhi0;}
Double_t GetZLength() const
{return fZLength;}
Int_t GetChipType() const
{return fChipTypeID;}
Int_t GetNStavesPerParent() const
{return fHierarchy[kStave];}
Int_t GetNHalfStavesPerParent() const
Int_t GetNModulesPerParent() const
{return fHierarchy[kModule];}
Int_t GetNChipsPerParent() const
{return fHierarchy[kChip];}
Int_t GetBuildLevel() const
{return fBuildLevel;}
AliITSUv1::AliITSUModel_t GetStaveModel() const
{return fStaveModel;}
void SetChipThick(Double_t t)
{fChipThick = t;}
void SetSensorThick(Double_t t)
void SetNStaves(Int_t n)
void SetRadius(Double_t r)
{fLayRadius = r;}
void SetPhi0(Double_t phi)
{fPhi0 = phi;}
void SetZLength(Double_t z)
{fZLength = z;}
void SetChipType(Int_t tp)
{fChipTypeID = tp;}
void SetBuildLevel(Int_t buildLevel)
{fBuildLevel=buildLevel;}
void SetStaveModel(AliITSUv1::AliITSUModel_t model)
{fStaveModel=model;}