**************************************************************************/
#include <Riostream.h>
#include <TMath.h>
-
+#include <TGeoManager.h>
+#include <TGeoVolume.h>
+#include <TGeoBBox.h>
#include "AliITSsegmentationSDD.h"
-#include "AliITSgeomSDD.h"
#include "AliITSresponseSDD.h"
/////////////////////////////////////////////////////////////////////////////
// Z //
/////////////////////////////////////////////////////////////////////////////
+/* $Id$ */
+
const Float_t AliITSsegmentationSDD::fgkDxDefault = 35085.;
const Float_t AliITSsegmentationSDD::fgkDzDefault = 75264.;
const Float_t AliITSsegmentationSDD::fgkDyDefault = 300.;
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),
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.);
+ }
+ }
}
//______________________________________________________________________
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::
}
//----------------------------------------------------------------------
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;
}
//----------------------------------------------------------------------
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.;