]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSsegmentationSDD.cxx
Update of the class ESDMuonFilter. New marcros for creating AOD with muon information...
[u/mrichter/AliRoot.git] / ITS / AliITSsegmentationSDD.cxx
index 8a8162e4cfc9358d12a38295be399a7dd85c1e18..43b21c7fd5109ea6ce9b8fb33e81c6005dc141bb 100644 (file)
  **************************************************************************/
 #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 +45,8 @@
 //                               Z                                         //
 /////////////////////////////////////////////////////////////////////////////
 
+/* $Id$ */
+
 const Float_t AliITSsegmentationSDD::fgkDxDefault = 35085.;
 const Float_t AliITSsegmentationSDD::fgkDzDefault = 75264.;
 const Float_t AliITSsegmentationSDD::fgkDyDefault = 300.;
@@ -56,20 +59,9 @@ const Int_t AliITSsegmentationSDD::fgkNanodesPerChip = 64;
 const Float_t AliITSsegmentationSDD::fgkCm2Micron = 10000.;
 const Float_t AliITSsegmentationSDD::fgkMicron2Cm = 1.0E-04;
 ClassImp(AliITSsegmentationSDD)
-//----------------------------------------------------------------------
-AliITSsegmentationSDD::AliITSsegmentationSDD(AliITSgeom* geom):
-AliITSsegmentation(),
-fNsamples(0),
-fNanodes(0),
-fPitch(0),
-fTimeStep(0),
-fDriftSpeed(0),
-fSetDriftSpeed(0){
-  // constructor
-  InitFromGeom(geom);
-}
+
 //______________________________________________________________________
-AliITSsegmentationSDD::AliITSsegmentationSDD() : AliITSsegmentation(),
+AliITSsegmentationSDD::AliITSsegmentationSDD(Option_t *opt) : AliITSsegmentation(),
 fNsamples(0),
 fNanodes(0),
 fPitch(0),
@@ -78,6 +70,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.);
+    }
+  }
 }
 
 //______________________________________________________________________
@@ -122,21 +129,6 @@ void AliITSsegmentationSDD::Init(){
    SetPadSize(fgkPitchDefault,fgkClockDefault);
    SetNPads(fgkHalfNanodesDefault,fgkNsamplesDefault);
 }
-//----------------------------------------------------------------------
-void AliITSsegmentationSDD::InitFromGeom(AliITSgeom *geom){
-// Inizialization from geometry
-  Init();
-  if(!geom) {
-    AliFatal("Pointer to ITS geometry class (AliITSgeom) is null\n");
-    return;
-  }
-  AliITSgeomSDD *gsdd = (AliITSgeomSDD *) (geom->GetShape(3,1,1));
-  
-  fDz = 2.*fgkCm2Micron*gsdd->GetDz();
-  fDx = fgkCm2Micron*gsdd->GetDx();
-  fDy = 2.*fgkCm2Micron*gsdd->GetDy();
-}
 
 //----------------------------------------------------------------------
 void AliITSsegmentationSDD::
@@ -190,6 +182,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 +192,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.;