]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSsegmentationSDD.cxx
Major upgrade (P. Cerello)
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentationSDD.cxx
index 8a8162e4cfc9358d12a38295be399a7dd85c1e18..dda7b9e3020c8e6d5e5bdd9b051baa7cf0bc5992 100644 (file)
@@ -14,7 +14,9 @@
  **************************************************************************/
 #include <Riostream.h>
 #include <TMath.h>
-
+#include <TGeoManager.h>
+#include <TGeoVolume.h>
+#include <TGeoBBox.h>
 #include "AliITSsegmentationSDD.h"
 #include "AliITSgeomSDD.h"
 #include "AliITSresponseSDD.h"
@@ -44,6 +46,8 @@
 //                               Z                                         //
 /////////////////////////////////////////////////////////////////////////////
 
+/* $Id$ */
+
 const Float_t AliITSsegmentationSDD::fgkDxDefault = 35085.;
 const Float_t AliITSsegmentationSDD::fgkDzDefault = 75264.;
 const Float_t AliITSsegmentationSDD::fgkDyDefault = 300.;
@@ -69,7 +73,7 @@ fSetDriftSpeed(0){
   InitFromGeom(geom);
 }
 //______________________________________________________________________
-AliITSsegmentationSDD::AliITSsegmentationSDD() : AliITSsegmentation(),
+AliITSsegmentationSDD::AliITSsegmentationSDD(Option_t *opt) : AliITSsegmentation(),
 fNsamples(0),
 fNanodes(0),
 fPitch(0),
@@ -78,6 +82,21 @@ fDriftSpeed(0),
 fSetDriftSpeed(0){
   // Default constructor
   Init();
+  if(strstr(opt,"TGeo")){
+    if(!gGeoManager){
+      AliError("Geometry is not initialized\n");
+      return;
+    }
+    TGeoVolume *v=NULL;
+    v = gGeoManager->GetVolume("ITSsddSensitivL3");
+    if(!v){
+      AliWarning("TGeo volume ITSsddSensitivL3 not found (hint: use v11Hybrid geometry)\n Using hardwired default values"); 
+    }
+    else {
+      TGeoBBox *s=(TGeoBBox*)v->GetShape();
+      SetDetSize(s->GetDX()*10000.,s->GetDZ()*20000.,s->GetDY()*20000.);
+    }
+  }
 }
 
 //______________________________________________________________________
@@ -190,6 +209,7 @@ Float_t AliITSsegmentationSDD::GetLocalZFromAnode(Float_t zAnode) const{
 }
 //----------------------------------------------------------------------
 Int_t AliITSsegmentationSDD::GetChipFromChannel(Int_t ix, Int_t iz) const {
+  // returns chip number (in range 0-7) starting from channel number
   if(iz>=fNanodes  || iz<0 || ix>fNsamples){
     AliError("Bad cell number");
     return -1;
@@ -199,6 +219,7 @@ Int_t AliITSsegmentationSDD::GetChipFromChannel(Int_t ix, Int_t iz) const {
 }
 //----------------------------------------------------------------------
 Int_t AliITSsegmentationSDD::GetChipFromLocal(Float_t xloc, Float_t zloc) const {  
+  // returns chip number (in range 0-7) starting from local coordinates
   Float_t detsize=fDz*fgkMicron2Cm;
   Float_t chipsize=detsize/(Float_t)fgkNchipsPerHybrid;
   zloc+=detsize/2.;