ROOT logo
AliRoot » ITS » UPGRADE » AliITSUv0Layer

class AliITSUv0Layer: 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:
AliITSUv0Layer()
AliITSUv0Layer(Int_t debug)
AliITSUv0Layer(const AliITSUv0Layer& source)
AliITSUv0Layer(Int_t lay, Int_t debug)
AliITSUv0Layer(Int_t lay, Bool_t turbo, Int_t debug)
virtual~AliITSUv0Layer()
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_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
Double_tGetNStaves() 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
AliITSUv0::AliITSUModel_tGetStaveModel() const
Double_tGetStaveThick() 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)
AliITSUv0Layer&operator=(const AliITSUv0Layer& 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)
voidSetChipType(Int_t tp)
voidAliITSv11Geometry::SetDebug(Int_t level = 5)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetNChips(Int_t m)
voidAliITSv11Geometry::SetNoDebug()
voidSetNStaves(Int_t n)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetPhi0(Double_t phi)
voidSetRadius(Double_t r)
voidSetSensorThick(Double_t t)
voidSetStaveModel(AliITSUv0::AliITSUModel_t model)
voidSetStaveThick(Double_t t)
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:
TGeoVolume*CreateChip(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager)
voidCreateLayerTurbo(TGeoVolume* moth)
TGeoVolume*CreateStave(const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModel0(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModel1(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModel21(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModel22(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModel3(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
TGeoVolume*CreateStaveModelDummy(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager) const
TGeoVolume*CreateStaveStruct(Double_t x, Double_t z, const TGeoManager* mgr = gGeoManager)
Double_tRadiusOfTurboContainer()

Data Members

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
UInt_tfChipTypeIDdetector type id
Bool_tfIsTurboTrue if this layer is a "turbo" layer
Double_tfLayRadiusInner radius of this layer
Int_tfLayerNumberCurrent layer number
Int_tfNChipsNumber of chips per stave in this layer
Int_tfNStavesNumber of staves in this layer
Double_tfPhi0lab phi of 1st stave, in degrees!!!
Double_tfSensorThickSensor thickness
AliITSUv0::AliITSUModel_tfStaveModelThe stave model
Double_tfStaveThickStave thickness
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_tfgkDefaultSensorThickDefault sensor thickness
static const Double_tfgkDefaultStaveThickDefault stave thickness

Class Charts

Inheritance Chart:
TObject
AliITSv11Geometry
AliITSUv0Layer

Function documentation

AliITSUv0Layer()
 Standard constructor

AliITSUv0Layer(Int_t debug)
 Constructor setting debugging level

AliITSUv0Layer(Int_t lay, Int_t debug)
 Constructor setting layer number and debugging level

AliITSUv0Layer(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)

AliITSUv0Layer(const AliITSUv0Layer& source)
 Copy constructor

AliITSUv0Layer& operator=(const AliITSUv0Layer& source)
 Assignment operator

~AliITSUv0Layer()
 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

TGeoVolume* CreateStaveStruct(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* CreateStaveModelDummy(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* CreateStaveModel0(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 AliITSUv0
TGeoVolume* CreateStaveModel1(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 AliITSUv0
TGeoVolume* CreateStaveModel21(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 AliITSUv0
TGeoVolume* CreateStaveModel22(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 AliITSUv0
TGeoVolume* CreateStaveModel3(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 AliITSUv0
TGeoVolume* CreateChip(Double_t x, Double_t y, Double_t z, const TGeoManager* mgr = gGeoManager)
 Creates the actual Chip

 Input:
         xsta,zsta : the stave dimensions
         mgr  : the GeoManager (used only to get the proper material)

 Output:

 Return:

 Created:      22 Jun 2011  Mario Sitta

Double_t RadiusOfTurboContainer()
 Computes the inner radius of the air container for the Turbo configuration
 as the radius of either the circle tangent to the stave or the circle
 passing for the stave's lower vertex

 Input:
         none (all needed parameters are class members)

 Output:

 Return:
        the radius of the container if >0, else flag to use the lower vertex

 Created:      08 Mar 2012  Mario Sitta

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

Bool_t IsTurbo() const
{return fIsTurbo;}
Double_t GetStaveThick() const
{return fStaveThick;}
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;}
AliITSUv0::AliITSUModel_t GetStaveModel() const
{return fStaveModel;}
void SetStaveThick(Double_t t)
void SetSensorThick(Double_t t)
void SetNStaves(Int_t n)
{fNStaves = n;}
void SetNChips(Int_t m)
{fNChips = m;}
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(AliITSUv0::AliITSUModel_t model)
{fStaveModel=model;}