AliRoot Core  edcc906 (edcc906)
AliFMDRing.h
Go to the documentation of this file.
1 #ifndef ALIFMDRING_H
2 #define ALIFMDRING_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved.
5  *
6  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7  *
8  * See cxx source for full Copyright notice
9  */
15 //__________________________________________________________________
16 //
17 // Parameters of the FMD rings.
18 // This class is responsible to make the (common) rings of the three
19 // sub-detectors.
20 //
21 #ifndef ROOT_TNamed
22 # include <TNamed.h>
23 #endif
24 #ifndef ROOT_TObjArray
25 # include <TObjArray.h>
26 #endif
27 
28 class TBrowser;
29 class TVector2;
30 
41 class AliFMDRing : public TNamed
42 {
43 public:
49  AliFMDRing(Char_t fId);
53  virtual ~AliFMDRing() {}
57  virtual void Init();
58 
63  void SetId(Char_t x) { fId = x; }
68  void SetBondingWidth(Double_t x=.5) { fBondingWidth = x; }
73  void SetWaferRadius(Double_t x=13.4/2) { fWaferRadius = x; }
78  void SetSiThickness(Double_t x=.032) { fSiThickness = x; }
83  void SetLowR(Double_t x) { fLowR = x; }
88  void SetHighR(Double_t x) { fHighR = x; }
93  void SetTheta(Double_t x) { fTheta = x; }
98  void SetNStrips(Int_t x) { fNStrips = x; }
103  void SetRingDepth(Double_t x) { fRingDepth = x; }
108  void SetLegRadius(Double_t x=.25) { fLegRadius = x; }
113  void SetLegLength(Double_t x=.9) { fLegLength = x; }
118  void SetLegOffset(Double_t x=2) { fLegOffset = x; }
123  void SetModuleSpacing(Double_t x=.5) { fModuleSpacing = x; }
128  void SetPrintboardThickness(Double_t x=.08) { fPrintboardThickness = x; }
133  void SetCopperThickness(Double_t x=.01) { fCopperThickness = x; }
138  void SetChipThickness(Double_t x=.01) { fChipThickness = x; }
143  void SetSpacing(Double_t x=.05) { fSpacing = x; }
148  void SetHoneycombThickness(Double_t x=0.65) { fHoneycombThickness = x; }
153  void SetAlThickness(Double_t x=.1) { fAlThickness = x; }
154 
159  Char_t GetId() const { return fId; }
164  Double_t GetBondingWidth() const { return fBondingWidth; }
169  Double_t GetWaferRadius() const { return fWaferRadius; }
174  Double_t GetSiThickness() const { return fSiThickness; }
179  Double_t GetMinR() const { return fMinR; }
184  Double_t GetMaxR() const { return fMaxR; }
189  Double_t GetLowR() const { return fLowR; }
194  Double_t GetHighR() const { return fHighR; }
199  Double_t GetTheta() const { return fTheta; }
204  Int_t GetNStrips() const { return fNStrips; }
209  Int_t GetNSectors() const { return Int_t(360. / fTheta); }
214  Int_t GetNModules() const { return GetNSectors() / 2; }
219  Double_t GetRingDepth() const { return fRingDepth; }
224  Double_t GetLegRadius() const { return fLegRadius; }
229  Double_t GetLegLength() const { return fLegLength; }
234  Double_t GetLegOffset() const { return fLegOffset; }
239  Double_t GetModuleSpacing() const { return fModuleSpacing; }
244  Double_t GetPrintboardThickness() const { return fPrintboardThickness; }
249  Double_t GetCopperThickness() const { return fCopperThickness; }
254  Double_t GetChipThickness() const { return fChipThickness; }
259  Double_t GetSpacing() const { return fSpacing; }
264  Double_t GetHoneycombThickness() const { return fHoneycombThickness; }
269  Double_t GetAlThickness() const { return fAlThickness; }
274  Double_t GetPitch() const { return (fMaxR - fMinR) / fNStrips; }
279  Double_t GetStripRadius(UShort_t strip) const;
284  Double_t GetModuleDepth() const;
289  Double_t GetFullDepth() const;
295  Double_t GetFMDDLowR() const { return 1.2*GetLowR(); }
301  Double_t GetFMDDHighR() const { return .95*GetHighR(); }
306  Double_t GetFMDDPrintboardThickness() const { return 2*fPrintboardThickness; }
311  Double_t GetFMDDCopperThickness() const { return 2*fCopperThickness; }
316  Double_t GetFMDDChipThickness() const { return 2*fChipThickness; }
317 
322  const TObjArray& GetVerticies() const { return fVerticies; }
327  Int_t GetNVerticies() const { return fVerticies.GetEntries(); }
333  TVector2* GetVertex(Int_t i) const;
338  const TObjArray& GetSensorVerticies() const { return fSensorVerticies; }
344  TVector2* GetSensorVertex(Int_t i) const;
349  const TObjArray& GetHybridVerticies() const { return fHybridVerticies; }
355  TVector2* GetHybridVertex(Int_t i) const;
356 
363  const TObjArray& GetFeetPositions() const { return fFeetPositions; }
370  Int_t GetNFeetPositions() const { return fFeetPositions.GetEntries(); }
378  TVector2* GetFootPosition(Int_t i) const;
386  Float_t GetStripLength(UShort_t strip) const ;
394  Float_t GetBaseStripLength(UShort_t strip) const ;
396  void Detector2XYZ(UShort_t sector, UShort_t strip,
397  Double_t& x, Double_t& y, Double_t& z) const;
399  Bool_t XYZ2Detector(Double_t x, Double_t y, Double_t z,
400  UShort_t& sector, UShort_t& strip) const;
401 private:
402  Char_t fId; // The Id of this ring type
403  Double_t fBondingWidth; // With of bonding pad on sensor
404  Double_t fWaferRadius; // Size of wafer sensor was made from
405  Double_t fSiThickness; // Thickness of sensor
406  Double_t fLowR; // Lower radius of ring
407  Double_t fHighR; // Upper radius of ring
408  Double_t fMinR; // Lower radius of active strips
409  Double_t fMaxR; // Upper radius of active strips
410  Double_t fTheta; // Opening angle of the silicon wafers
411  Int_t fNStrips; // Number of strips
412  Double_t fRingDepth; // How far the ring extends beyond z
413  Double_t fLegRadius; // Radius of support legs
414  Double_t fLegLength; // Radius of support legs
415  Double_t fLegOffset; // Radius of support legs
416  Double_t fModuleSpacing; // Staggering offset
417  Double_t fPrintboardThickness; // Thickness of print board
418  Double_t fCopperThickness; // Thickness of Cu on print board
419  Double_t fChipThickness; // Thickness of chip on print board
420  Double_t fSpacing; // Spacing between si and PCB
421  Double_t fHoneycombThickness; // Thickness of honeycomb plate
422  Double_t fAlThickness; // Thickness of aluminium of honeycomb
423 
424  TObjArray fVerticies; // List of active sensor verticies
425  TObjArray fSensorVerticies; // List of physical sensor verticies
426  TObjArray fHybridVerticies; // List of hybrid card verticies
427  TObjArray fFeetPositions; // List of feet positions
428 
429  ClassDef(AliFMDRing, 0);
430 };
431 #endif
432 //____________________________________________________________________
433 //
434 // Local Variables:
435 // mode: C++
436 // End:
437 //
438 // EOF
439 //
const TObjArray & GetFeetPositions() const
Definition: AliFMDRing.h:363
void SetCopperThickness(Double_t x=.01)
Definition: AliFMDRing.h:133
TVector2 * GetFootPosition(Int_t i) const
Definition: AliFMDRing.cxx:235
void SetChipThickness(Double_t x=.01)
Definition: AliFMDRing.h:138
const TObjArray & GetVerticies() const
Definition: AliFMDRing.h:322
Double_t GetHighR() const
Definition: AliFMDRing.h:194
Double_t GetMinR() const
Definition: AliFMDRing.h:179
void SetAlThickness(Double_t x=.1)
Definition: AliFMDRing.h:153
#define TObjArray
AliFMDRing(Char_t fId)
Definition: AliFMDRing.cxx:45
Double_t GetChipThickness() const
Definition: AliFMDRing.h:254
Double_t fSiThickness
Definition: AliFMDRing.h:405
Int_t GetNSectors() const
Definition: AliFMDRing.h:209
TVector2 * GetHybridVertex(Int_t i) const
Definition: AliFMDRing.cxx:222
const TObjArray & GetSensorVerticies() const
Definition: AliFMDRing.h:338
Double_t GetAlThickness() const
Definition: AliFMDRing.h:269
Double_t fChipThickness
Definition: AliFMDRing.h:419
Double_t GetCopperThickness() const
Definition: AliFMDRing.h:249
Double_t fCopperThickness
Definition: AliFMDRing.h:418
Double_t GetModuleDepth() const
Definition: AliFMDRing.cxx:262
void SetModuleSpacing(Double_t x=.5)
Definition: AliFMDRing.h:123
Int_t GetNFeetPositions() const
Definition: AliFMDRing.h:370
Char_t GetId() const
Definition: AliFMDRing.h:159
Double_t GetPitch() const
Definition: AliFMDRing.h:274
Double_t fAlThickness
Definition: AliFMDRing.h:422
Int_t fNStrips
Definition: AliFMDRing.h:411
Double_t GetHoneycombThickness() const
Definition: AliFMDRing.h:264
Double_t GetSpacing() const
Definition: AliFMDRing.h:259
Float_t GetBaseStripLength(UShort_t strip) const
Definition: AliFMDRing.cxx:422
Double_t GetStripRadius(UShort_t strip) const
Definition: AliFMDRing.cxx:248
Double_t GetSiThickness() const
Definition: AliFMDRing.h:174
Float_t GetStripLength(UShort_t strip) const
Definition: AliFMDRing.cxx:375
virtual ~AliFMDRing()
Definition: AliFMDRing.h:53
Double_t GetLegOffset() const
Definition: AliFMDRing.h:234
TObjArray fVerticies
Definition: AliFMDRing.h:424
Double_t GetLegRadius() const
Definition: AliFMDRing.h:224
Double_t fLowR
Definition: AliFMDRing.h:406
Double_t fPrintboardThickness
Definition: AliFMDRing.h:417
Double_t GetWaferRadius() const
Definition: AliFMDRing.h:169
void SetSiThickness(Double_t x=.032)
Definition: AliFMDRing.h:78
const TObjArray & GetHybridVerticies() const
Definition: AliFMDRing.h:349
TObjArray fFeetPositions
Definition: AliFMDRing.h:427
void SetLegLength(Double_t x=.9)
Definition: AliFMDRing.h:113
TVector2 * GetSensorVertex(Int_t i) const
Definition: AliFMDRing.cxx:209
void SetSpacing(Double_t x=.05)
Definition: AliFMDRing.h:143
Double_t GetLowR() const
Definition: AliFMDRing.h:189
Int_t GetNModules() const
Definition: AliFMDRing.h:214
Double_t GetFMDDLowR() const
Definition: AliFMDRing.h:295
void SetId(Char_t x)
Definition: AliFMDRing.h:63
Double_t fBondingWidth
Definition: AliFMDRing.h:403
Double_t GetFMDDCopperThickness() const
Definition: AliFMDRing.h:311
void SetBondingWidth(Double_t x=.5)
Definition: AliFMDRing.h:68
Double_t fLegLength
Definition: AliFMDRing.h:414
Int_t GetNStrips() const
Definition: AliFMDRing.h:204
Double_t fLegOffset
Definition: AliFMDRing.h:415
Double_t GetFMDDChipThickness() const
Definition: AliFMDRing.h:316
Double_t fSpacing
Definition: AliFMDRing.h:420
Double_t GetBondingWidth() const
Definition: AliFMDRing.h:164
Double_t GetFMDDHighR() const
Definition: AliFMDRing.h:301
Int_t GetNVerticies() const
Definition: AliFMDRing.h:327
Double_t fMaxR
Definition: AliFMDRing.h:409
Double_t GetPrintboardThickness() const
Definition: AliFMDRing.h:244
TObjArray fSensorVerticies
Definition: AliFMDRing.h:425
TVector2 * GetVertex(Int_t i) const
Definition: AliFMDRing.cxx:196
Double_t GetFMDDPrintboardThickness() const
Definition: AliFMDRing.h:306
Double_t fHoneycombThickness
Definition: AliFMDRing.h:421
Double_t GetRingDepth() const
Definition: AliFMDRing.h:219
void Detector2XYZ(UShort_t sector, UShort_t strip, Double_t &x, Double_t &y, Double_t &z) const
Definition: AliFMDRing.cxx:300
void SetLowR(Double_t x)
Definition: AliFMDRing.h:83
Double_t GetTheta() const
Definition: AliFMDRing.h:199
Double_t GetMaxR() const
Definition: AliFMDRing.h:184
Double_t fModuleSpacing
Definition: AliFMDRing.h:416
void SetLegRadius(Double_t x=.25)
Definition: AliFMDRing.h:108
void SetHighR(Double_t x)
Definition: AliFMDRing.h:88
Geometry description and parameters of a ring in the FMD detector.
Definition: AliFMDRing.h:41
Bool_t XYZ2Detector(Double_t x, Double_t y, Double_t z, UShort_t &sector, UShort_t &strip) const
Definition: AliFMDRing.cxx:338
Char_t fId
Definition: AliFMDRing.h:402
void SetPrintboardThickness(Double_t x=.08)
Definition: AliFMDRing.h:128
virtual void Init()
Definition: AliFMDRing.cxx:152
void SetWaferRadius(Double_t x=13.4/2)
Definition: AliFMDRing.h:73
Double_t fRingDepth
Definition: AliFMDRing.h:412
void SetLegOffset(Double_t x=2)
Definition: AliFMDRing.h:118
void SetNStrips(Int_t x)
Definition: AliFMDRing.h:98
void SetRingDepth(Double_t x)
Definition: AliFMDRing.h:103
void SetTheta(Double_t x)
Definition: AliFMDRing.h:93
Double_t fTheta
Definition: AliFMDRing.h:410
Double_t GetModuleSpacing() const
Definition: AliFMDRing.h:239
Double_t fLegRadius
Definition: AliFMDRing.h:413
void SetHoneycombThickness(Double_t x=0.65)
Definition: AliFMDRing.h:148
Double_t GetFullDepth() const
Definition: AliFMDRing.cxx:285
Double_t fWaferRadius
Definition: AliFMDRing.h:404
TObjArray fHybridVerticies
Definition: AliFMDRing.h:426
Double_t fMinR
Definition: AliFMDRing.h:408
Double_t GetLegLength() const
Definition: AliFMDRing.h:229
Double_t fHighR
Definition: AliFMDRing.h:407