/*
$Log$
+Revision 1.9 2001/02/03 00:00:30 nilsen
+New version of AliITSgeom and related files. Now uses automatic streamers,
+set up for new formatted .det file which includes detector information.
+Additional smaller modifications are still to come.
+
+Revision 1.8 2000/10/02 16:32:35 barbera
+Forward declaration added
+
+Revision 1.2.4.8 2000/10/02 15:52:05 barbera
+Forward declaration added
+
+Revision 1.7 2000/07/10 16:07:18 fca
+Release version of ITS code
+
Revision 1.2.4.2 2000/03/04 23:55:35 nilsen
Fixed up comments/documentation.
Introduction of the Copyright and cvs Log
*/
+#include <iostream.h>
+#include <iomanip.h>
+#include <stdlib.h>
+#include <TShape.h>
+#include <TBRIK.h>
#include "AliITSgeomSDD.h"
////////////////////////////////////////////////////////////////////////
// default constructor
////////////////////////////////////////////////////////////////////////
+// const Float_t kDx = 3.500;//cm. (Geant 3.12 units) Orthonormal to y and z
+// const Float_t kDy = 0.014;//cm. (Geant 3.12 units) Radialy from the Beam
+// const Float_t kDz = 3.763;//cm. (Geant 3.12 units) Allong the Beam Pipe
- Float_t fDx = 3.5; // cm. (Geant 3.12 units) Orthonormal to y and z
- Float_t fDy = 0.014; // cm. (Geant 3.12 units) Radialy from the Beam Pipe
- Float_t fDz = 3.763; // cm. (Geant 3.12 units) Allong the Beam Pipe
+// cout << "AliITSgeomSDD default creator called: start" << endl;
+ fPeriod = 0.0;
+ fDvelocity = 0.0;
+ fNAnodesL = 0;
+ fNAnodesR = 0;
+ fAnodeXL = 0.0;
+ fAnodeXR = 0.0;
+ fAnodeLowEdgeL = 0;
+ fAnodeLowEdgeR = 0;
+ fShapeSDD = 0;
+// cout << "AliITSgeomSDD default creator called: end" << endl;
+}
+//________________________________________________________________________
+AliITSgeomSDD::AliITSgeomSDD(const Float_t *box,Float_t per,Float_t vel,
+ Float_t axL,Float_t axR,
+ Int_t nAL,Float_t *leL,
+ Int_t nAR,Float_t *leR){
+////////////////////////////////////////////////////////////////////////
+// Standard constructor
+////////////////////////////////////////////////////////////////////////
+ fPeriod = 0.0;
+ fDvelocity = 0.0;
+ fNAnodesL = 0;
+ fNAnodesR = 0;
+ fAnodeXL = 0.0;
+ fAnodeXR = 0.0;
+ fAnodeLowEdgeL = 0;
+ fAnodeLowEdgeR = 0;
+ fShapeSDD = 0;
+ ResetSDD(box,per,vel,axL,axR,nAL,leL,nAR,leR);
+}
+//________________________________________________________________________
+void AliITSgeomSDD::ResetSDD(const Float_t *box,Float_t per,Float_t vel,
+ Float_t axL,Float_t axR,
+ Int_t nAL,Float_t *leL,
+ Int_t nAR,Float_t *leR){
+////////////////////////////////////////////////////////////////////////
+// Standard Filler
+////////////////////////////////////////////////////////////////////////
+ Int_t i;
+ fPeriod = per;
+ fDvelocity = vel;
+ fNAnodesL = nAL;
+ fNAnodesR = nAR;
+ fAnodeXL = axL;
+ fAnodeXR = axR;
+// if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
+ fAnodeLowEdgeL = new Float_t[fNAnodesL];
+// if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
+ fAnodeLowEdgeR = new Float_t[fNAnodesR];
+ for(i=0;i<fNAnodesL;i++) fAnodeLowEdgeL[i] = leL[i];
+ for(i=0;i<fNAnodesR;i++) fAnodeLowEdgeR[i] = leR[i];
fShapeSDD = new TBRIK("ActiveSDD","Active volume of SDD","SDD SI DET",
- fDx,fDy,fDz);
+ box[0],box[1],box[2]);
+}
+//________________________________________________________________________
+AliITSgeomSDD::~AliITSgeomSDD(){
+// Destructor
+
+ if(fShapeSDD!=0) delete fShapeSDD;
+ if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
+ if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
+ fShapeSDD = 0;
+ fPeriod = 0.0;
+ fDvelocity = 0.0;
+ fAnodeXL = 0.0;
+ fAnodeXR = 0.0;
+ fNAnodesL = 0;
+ fNAnodesR = 0;
+ fAnodeLowEdgeL = 0;
+ fAnodeLowEdgeR = 0;
}
//________________________________________________________________________
AliITSgeomSDD::AliITSgeomSDD(AliITSgeomSDD &source){
- // Copy constructor
- if(this==&source) return;
- this->fShapeSDD = new TBRIK(*(source.fShapeSDD));
- this->fDx = source.fDx;
- this->fDy = source.fDy;
- this->fDz = source.fDz;
+ // Copy constructor
+ Int_t i;
+
+ if(this==&source) return;
+ this->fShapeSDD = new TBRIK(*(source.fShapeSDD));
+ this->fPeriod = source.fPeriod;
+ this->fDvelocity = source.fDvelocity;
+ this->fNAnodesL = source.fNAnodesL;
+ this->fNAnodesR = source.fNAnodesR;
+ this->fAnodeXL = source.fAnodeXL;
+ this->fAnodeXR = source.fAnodeXR;
+ if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
+ this->fAnodeLowEdgeL = new Float_t[fNAnodesL];
+ if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
+ this->fAnodeLowEdgeR = new Float_t[fNAnodesR];
+ for(i=0;i<fNAnodesL;i++)this->fAnodeLowEdgeL[i] = source.fAnodeLowEdgeL[i];
+ for(i=0;i<fNAnodesR;i++)this->fAnodeLowEdgeR[i] = source.fAnodeLowEdgeR[i];
+ return;
}
//________________________________________________________________________
AliITSgeomSDD& AliITSgeomSDD::operator=(AliITSgeomSDD &source){
- // = operator
- if(this==&source) return *this;
- this->fShapeSDD = new TBRIK(*(source.fShapeSDD));
- this->fDx = source.fDx;
- this->fDy = source.fDy;
- this->fDz = source.fDz;
- return *this;
+ // = operator
+ Int_t i;
+
+ if(this==&source) return *this;
+ this->fShapeSDD = new TBRIK(*(source.fShapeSDD));
+ this->fPeriod = source.fPeriod;
+ this->fDvelocity = source.fDvelocity;
+ this->fNAnodesL = source.fNAnodesL;
+ this->fNAnodesR = source.fNAnodesR;
+ this->fNAnodesR = source.fNAnodesR;
+ this->fAnodeXL = source.fAnodeXL;
+ this->fAnodeXR = source.fAnodeXR;
+ if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
+ this->fAnodeLowEdgeL = new Float_t[fNAnodesL];
+ if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
+ this->fAnodeLowEdgeR = new Float_t[fNAnodesR];
+ for(i=0;i<fNAnodesL;i++)this->fAnodeLowEdgeL[i] = source.fAnodeLowEdgeL[i];
+ for(i=0;i<fNAnodesR;i++)this->fAnodeLowEdgeR[i] = source.fAnodeLowEdgeR[i];
+ return *this;
+}
+//______________________________________________________________________
+void AliITSgeomSDD::Local2Det(Float_t xl,Float_t zl,Int_t &a,Int_t &t,Int_t &s){
+// Give the local detector coordinate it returns the anode number, time
+// bucket, and detector side.
+ Int_t i;
+
+ if(xl>0) {
+ if(zl<fAnodeLowEdgeR[0]) i=-1;
+ else for(i=0;i<fNAnodesR;i++) if(zl<fAnodeLowEdgeR[i]) break;
+ a = i;
+ s = 1;
+ } else if(xl<0){
+ if(zl<fAnodeLowEdgeL[0]) i=-1;
+ else for(i=0;i<fNAnodesL;i++) if(zl<fAnodeLowEdgeL[i]) break;
+ a = i;
+ s = 0;
+ } else { // x==0.
+ if(zl<fAnodeLowEdgeR[0]) i=-1;
+ else for(i=0;i<fNAnodesR;i++) if(zl<fAnodeLowEdgeR[i]) break;
+ a = i;
+ if(zl<fAnodeLowEdgeL[0]) i=-1;
+ else for(i=0;i<fNAnodesL;i++) if(zl<fAnodeLowEdgeL[i]) break;
+ s = -i;
+ } // end if
+ t = (Int_t)TMath::Abs((GetAnodeX(a,s)-xl)/fDvelocity/fPeriod);
+ return;
+}
+//______________________________________________________________________
+void AliITSgeomSDD::Det2Local(Int_t a,Int_t t,Int_t s,Float_t &xl,Float_t &zl){
+// Give the anode number, time bucket, and detector side, it returns the
+// local detector coordinate.
+
+ zl = 0.5*GetAnodeZ(a,s);
+ if(s==0){
+ xl = GetAnodeX(a,s)+(t+0.5)*fPeriod*fDvelocity;
+ } else { // s==1
+ xl = GetAnodeX(a,s)-(t+0.5)*fPeriod*fDvelocity;
+ } // end if s==0;
+ return;
+}
+//______________________________________________________________________
+void AliITSgeomSDD::Print(ostream *os) const {
+////////////////////////////////////////////////////////////////////////
+// Standard output format for this class.
+////////////////////////////////////////////////////////////////////////
+ Int_t i;
+ Int_t fmt;
+
+ fmt = os->setf(ios::scientific); // set scientific floating point output
+ *os << "TBRIK" << " ";
+ *os << setprecision(16) << GetDx() << " ";
+ *os << setprecision(16) << GetDy() << " ";
+ *os << setprecision(16) << GetDz() << " ";
+ *os << setprecision(16) << fPeriod << " ";
+ *os << setprecision(16) << fDvelocity << " ";
+ *os << fNAnodesL << " ";
+ *os << fNAnodesR << " ";
+ *os << fAnodeXL << " ";
+ *os << fAnodeXR << " ";
+ for(i=0;i<fNAnodesL;i++) *os <<setprecision(16)<<fAnodeLowEdgeL[i]<< " ";
+ for(i=0;i<fNAnodesR;i++) *os <<setprecision(16)<<fAnodeLowEdgeR[i]<< " ";
+ *os << endl;
+ os->flags(fmt); // reset back to old formating.
+ return;
+}
+//______________________________________________________________________
+void AliITSgeomSDD::Read(istream *is){
+////////////////////////////////////////////////////////////////////////
+// Standard input format for this class.
+////////////////////////////////////////////////////////////////////////
+ Int_t i;
+ Float_t dx,dy,dz;
+ char shp[20];
+
+ *is >> shp;
+ *is >> dx >> dy >> dz;
+ if(fShapeSDD!=0) delete fShapeSDD;
+ fShapeSDD = new TBRIK("ActiveSDD","Active volume of SDD","SDD SI DET",
+ dx,dy,dz);
+ *is >> fPeriod >> fDvelocity >> fNAnodesL >> fNAnodesR;
+ *is >> fAnodeXL >> fAnodeXR;
+ if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
+ this->fAnodeLowEdgeL = new Float_t[fNAnodesL];
+ if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
+ this->fAnodeLowEdgeR = new Float_t[fNAnodesR];
+ for(i=0;i<fNAnodesL;i++) *is >> fAnodeLowEdgeL[i];
+ for(i=0;i<fNAnodesR;i++) *is >> fAnodeLowEdgeR[i];
+ return;
+}
+//----------------------------------------------------------------------
+ostream &operator<<(ostream &os,AliITSgeomSDD &p){
+////////////////////////////////////////////////////////////////////////
+// Standard output streaming function.
+////////////////////////////////////////////////////////////////////////
+
+ p.Print(&os);
+ return os;
+}
+//----------------------------------------------------------------------
+istream &operator>>(istream &is,AliITSgeomSDD &r){
+////////////////////////////////////////////////////////////////////////
+// Standard input streaming function.
+////////////////////////////////////////////////////////////////////////
+
+ r.Read(&is);
+ return is;
+}
+//======================================================================
+/*
+$Log$
+Revision 1.9 2001/02/03 00:00:30 nilsen
+New version of AliITSgeom and related files. Now uses automatic streamers,
+set up for new formatted .det file which includes detector information.
+Additional smaller modifications are still to come.
+
+*/
+//#include <iostream.h>
+//#include <TBRIK.h>
+
+//#include "AliITSgeomSDD256.h"
+
+ClassImp(AliITSgeomSDD256)
+
+AliITSgeomSDD256::AliITSgeomSDD256() : AliITSgeomSDD(){
+////////////////////////////////////////////////////////////////////////
+// default constructor
+/*
+Pads for probe cards in ALICE-D2 /05.03.2000/
+(X,Y) coordinates are quoted in microns and referred to the centers of
+bonding pads. (0, 0) corrispond to the center of the detector.
+Convention:
+left is for negative X, right is for positive X;
+DOWN half is for negative Y, UP half is for positive Y.
+
+Detector size: X= 87588 micrometers; Y= 72500 micrometers.
+Detector corners:
+ LEFT UP: (-43794, 36250)
+RIGHT UP: (43794, 36250)
+ LEFT DOWN: (-43794, -36250)
+RIGHT DOWN: (43794, -36250)
+
+ Drift cathodes (n-side)
+
+cathode #0 (Ubias)
+(-1477, 0), pad size (150, 60)
+ (875, 0), pad size (150, 60)
+(-36570, 0), pad size (200, 70)
+(-37570, 0), pad size (200, 70)
+(36570, 0), pad size (200, 70)
+(37570, 0), pad size (200, 70)
+
+cathode #1 DOWN half
+(-1477, -120), pad size (150, 60)
+ (875, -120), pad size (150, 60)
+(-36570, -120), pad size (200, 70)
+(-37570, -120), pad size (200, 70)
+(36570, -120), pad size (200, 70)
+(37570, -120), pad size (200, 70)
+
+cathode #2 DOWN half
+(-1477, -240), pad size (150, 60)
+ (875, -240), pad size (150, 60)
+(-36570, -240), pad size (200, 70)
+(-37570, -240), pad size (200, 70)
+(36570, -240), pad size (200, 70)
+(37570, -240), pad size (200, 70)
+
+cathode #3 DOWN half
+(-1477, -360), pad size (150, 60)
+ (875, -360), pad size (150, 60)
+(-36570, -360), pad size (200, 70)
+(-37570, -360), pad size (200, 70)
+(36570, -360), pad size (200, 70)
+(37570, -360), pad size (200, 70)
+.....................................
+......................................
+......................................
+cathode #30 DOWN half
+(-1477, -3600), pad size (150, 60)
+ (875, -3600), pad size (150, 60)
+(-36570, -3600), pad size (200, 70)
+(-37570, -3600), pad size (200, 70)
+(36570, -3600), pad size (200, 70)
+(37570, -3600), pad size (200, 70)
+...................................
+cathode #60 DOWN half
+(-1477, -7200), pad size (150, 60)
+ (875, -7200), pad size (150, 60)
+(-36570, -7200), pad size (200, 70)
+(-37570, -7200), pad size (200, 70)
+(36570, -7200), pad size (200, 70)
+(37570, -7200), pad size (200, 70)
+....................................
+cathode #90 DOWN half
+(-1477, -10800), pad size (150, 60)
+ (875, -10800), pad size (150, 60)
+(-36570, -10800), pad size (200, 70)
+(-37570, -10800), pad size (200, 70)
+(36570, -10800), pad size (200, 70)
+(37570, -10800), pad size (200, 70)
+....................................
+cathode #120 DOWN half
+(-1477, -14400), pad size (150, 60)
+ (875, -14400), pad size (150, 60)
+(-36570, -14400), pad size (200, 70)
+(-37570, -14400), pad size (200, 70)
+(36570, -14400), pad size (200, 70)
+(37570, -14400), pad size (200, 70)
+....................................
+cathode #150 DOWN half
+(-1477, -18000), pad size (150, 60)
+ (875, -18000), pad size (150, 60)
+(-36570, -18000), pad size (200, 70)
+(-37570, -18000), pad size (200, 70)
+(36570, -18000), pad size (200, 70)
+(37570, -18000), pad size (200, 70)
+....................................
+cathode #180 DOWN half
+(-1477, -21600), pad size (150, 60)
+ (875, -21600), pad size (150, 60)
+(-36570, -21600), pad size (200, 70)
+(-37570, -21600), pad size (200, 70)
+(36570, -21600), pad size (200, 70)
+(37570, -21600), pad size (200, 70)
+....................................
+cathode #210 DOWN half
+(-1477, -25200), pad size (150, 60)
+ (875, -25200), pad size (150, 60)
+(-36570, -25200), pad size (200, 70)
+(-37570, -25200), pad size (200, 70)
+(36570, -25200), pad size (200, 70)
+(37570, -25200), pad size (200, 70)
+....................................
+cathode #240 DOWN half
+(-1477, -28800), pad size (150, 60)
+ (875, -28800), pad size (150, 60)
+(-36570, -28800), pad size (200, 70)
+(-37570, -28800), pad size (200, 70)
+(36570, -28800), pad size (200, 70)
+(37570, -28800), pad size (200, 70)
+....................................
+cathode #270 DOWN half
+(-1477, -32400), pad size (150, 60)
+ (875, -32400), pad size (150, 60)
+(-36570, -32400), pad size (200, 70)
+(-37570, -32400), pad size (200, 70)
+(36570, -32400), pad size (200, 70)
+(37570, -32400), pad size (200, 70)
+....................................
+cathode #290 DOWN half
+(-1477, -34800), pad size (150, 60)
+ (875, -34800), pad size (150, 60)
+(-36570, -34800), pad size (200, 70)
+(-37570, -34800), pad size (200, 70)
+(36570, -34800), pad size (200, 70)
+(37570, -34800), pad size (200, 70)
+___________________________________________________
+cathode #1 UP half
+(-1477, 120), pad size (150, 60)
+ (875, 120), pad size (150, 60)
+(-36570, 120), pad size (200, 70)
+(-37570, 120), pad size (200, 70)
+(36570, 120), pad size (200, 70)
+(37570, 120), pad size (200, 70)
+
+cathode #2 UP half
+(-1477, 240), pad size (150, 60)
+ (875, 240), pad size (150, 60)
+(-36570, 240), pad size (200, 70)
+(-37570, 240), pad size (200, 70)
+(36570, 240), pad size (200, 70)
+(37570, 240), pad size (200, 70)
+
+cathode #3 UP half
+(-1477, 360), pad size (150, 60)
+ (875, 360), pad size (150, 60)
+(-36570, 360), pad size (200, 70)
+(-37570, 360), pad size (200, 70)
+(36570, 360), pad size (200, 70)
+(37570, 360), pad size (200, 70)
+.....................................
+......................................
+......................................
+cathode #30 UP half
+(-1477, 3600), pad size (150, 60)
+ (875, 3600), pad size (150, 60)
+(-36570, 3600), pad size (200, 70)
+(-37570, 3600), pad size (200, 70)
+(36570, 3600), pad size (200, 70)
+(37570, 3600), pad size (200, 70)
+......................................
+cathode #60 UP half
+(-1477, 7200), pad size (150, 60)
+ (875, 7200), pad size (150, 60)
+(-36570, 7200), pad size (200, 70)
+(-37570, 7200), pad size (200, 70)
+(36570, 7200), pad size (200, 70)
+(37570, 7200), pad size (200, 70)
+......................................
+cathode #90 UP half
+(-1477, 10800), pad size (150, 60)
+ (875, 10800), pad size (150, 60)
+(-36570, 10800), pad size (200, 70)
+(-37570, 10800), pad size (200, 70)
+(36570, 10800), pad size (200, 70)
+(37570, 10800), pad size (200, 70)
+......................................
+cathode #120 UP half
+(-1477, 14400), pad size (150, 60)
+ (875, 14400), pad size (150, 60)
+(-36570, 14400), pad size (200, 70)
+(-37570, 14400), pad size (200, 70)
+(36570, 14400), pad size (200, 70)
+(37570, 14400), pad size (200, 70)
+......................................
+cathode #150 UP half
+(-1477, 18000), pad size (150, 60)
+ (875, 18000), pad size (150, 60)
+(-36570, 18000), pad size (200, 70)
+(-37570, 18000), pad size (200, 70)
+(36570, 18000), pad size (200, 70)
+(37570, 18000), pad size (200, 70)
+......................................
+cathode #180 UP half
+(-1477, 21600), pad size (150, 60)
+ (875, 21600), pad size (150, 60)
+(-36570, 21600), pad size (200, 70)
+(-37570, 21600), pad size (200, 70)
+(36570, 21600), pad size (200, 70)
+(37570, 21600), pad size (200, 70)
+......................................
+cathode #210 UP half
+(-1477, 25200), pad size (150, 60)
+ (875, 25200), pad size (150, 60)
+(-36570, 25200), pad size (200, 70)
+(-37570, 25200), pad size (200, 70)
+(36570, 25200), pad size (200, 70)
+(37570, 25200), pad size (200, 70)
+......................................
+cathode #240 UP half
+(-1477, 28800), pad size (150, 60)
+ (875, 28800), pad size (150, 60)
+(-36570, 28800), pad size (200, 70)
+(-37570, 28800), pad size (200, 70)
+(36570, 28800), pad size (200, 70)
+(37570, 28800), pad size (200, 70)
+......................................
+cathode #270 UP half
+(-1477, 32400), pad size (150, 60)
+ (875, 32400), pad size (150, 60)
+(-36570, 32400), pad size (200, 70)
+(-37570, 32400), pad size (200, 70)
+(36570, 32400), pad size (200, 70)
+(37570, 32400), pad size (200, 70)
+......................................
+cathode #290 UP half
+(-1477, 34800), pad size (150, 60)
+ (875, 34800), pad size (150, 60)
+(-36570, 34800), pad size (200, 70)
+(-37570, 34800), pad size (200, 70)
+(36570, 34800), pad size (200, 70)
+(37570, 34800), pad size (200, 70)
+ Injectors (n-side)
+
+Central line injectors (DOWN half)
+(-1237, -660), pad size (150, 65)
+(1115, -660), pad size (150, 65)
+(37890, -660), pad size (100, 74)
+
+Middle line injectors (DOWN half)
+(-1237, -17460), pad size (150, 80)
+(1115, -17460), pad size (150, 80)
+(37890, -17460), pad size (100, 74)
+
+Bottom line injectors (DOWN half)
+(-1237, -34020), pad size (150, 80)
+(1115, -34020), pad size (150, 80)
+(37890, -34020), pad size (100, 74)
+___________________________________________
+Central line injectors (UP half)
+(-1237, 660), pad size (150, 65)
+(1115, 660), pad size (150, 65)
+(37890, 660), pad size (100, 74)
+
+Middle line injectors (UP half)
+(-1237, 17460), pad size (150, 80)
+(1115, 17460), pad size (150, 80)
+(37890, 17460), pad size (100, 74)
+
+Bottom line injectors (UP half)
+(-1237, 34020), pad size (150, 80)
+(1115, 34020), pad size (150, 80)
+(37890, 34020), pad size (100, 74)
+
+Drift cathodes and injectors of p-side have the bonding pads with the same
+coordinates as for the n-side (when looking through the masks)
+
+ Cathodes of the collection zone (n-side)
+
+cathode #291 (-40 V) DOWN half
+(-38220, -35055), pad size (120, 160)
+(38190, -34992), pad size (120, 145)
+
+GRID cathode (-15 V) DOWN half
+(-37988, -35085), pad size (144, 210)
+ (37988, -35085), pad size (144, 210)
+
+cathode #292 (-30 V) DOWN half
+(-38245, -35290), pad size (100, 170)
+(38210, -35242), pad size (150, 215)
+
+cathode #293 (-15 V) DOWN half
+(-38055, -35460), pad size (690, 70)
+(36488, -35460), pad size (3805, 70)
+
+n+ bulk contact (GND) DOWN half
+(-38300, -36050), pad size (1000, 395)
+(38300, -36050), pad size (1000, 395)
+
+bonding pad of the last integrated resistor DOWN half
+/it has to be connected to the GND/
+(-38190, -35620) pad size (160, 110)
+________________________________________________
+cathode #291 (-40 V) UP half
+(-38220, 35055), pad size (120, 160)
+(38190, 34992), pad size (120, 145)
+
+GRID cathode (-15 V) UP half
+(-37988, 35085), pad size (144, 210)
+ (37988, 35085), pad size (144, 210)
+
+cathode #292 (-30 V) UP half
+(-38245, 35290), pad size (100, 170)
+(38210, 35242), pad size (150, 215)
+
+cathode #293 (-15 V) UP half
+(-38055, 35460), pad size (690, 70)
+(36488, 35460), pad size (3805, 70)
+
+n+ bulk contact (GND) UP half
+(-38300, 36050), pad size (1000, 395)
+(38300, 36050), pad size (1000, 395)
+
+bonding pad of the last integrated resistor UP half
+/it has to be connected to the GND/
+(-38190, 35620) pad size (160, 110)
+
+Cathodes of the collection zone (p-side)
+
+cathode #291 (-40 V) DOWN half
+(-38215, -35055), pad size (120, 160)
+(38190, -34992), pad size (120, 145)
+
+cathode W1 (-60 V) DOWN half
+(-38000, -35110), pad size (140, 240)
+ (38000, -35110), pad size (140, 240)
+
+cathode W2 (-80 V) DOWN half
+( 0, -35090), pad size (75600, 110)
+
+cathode #292 (-40 V) DOWN half
+(-38220, -35290), pad size (150, 170)
+(38210, -35242), pad size (150, 215)
+
+p+ bulk contact (GND) DOWN half
+(-38300, -36050), pad size (1000, 395)
+(38300, -36050), pad size (1000, 395)
+
+It is necessary to connect cathode #291 to cathode #292 in order to
+close the integrated divider to p+ bulk contact (GND).
+
+_______________________________________________
+cathode #291 (-40 V) UP half
+(-38215, 35055), pad size (120, 160)
+(38190, 34992), pad size (120, 145)
+
+cathode W1 (-60 V) UP half
+(-38000, 35110), pad size (140, 240)
+ (38000, 35110), pad size (140, 240)
+
+cathode W2 (-80 V) UP half
+( 0, 35090), pad size (75600, 110)
+
+cathode #292 (-40 V) UP half
+(-38220, 35290), pad size (150, 170)
+(38210, 35242), pad size (150, 215)
+
+p+ bulk contact (GND) UP half
+(-38300, 36050), pad size (1000, 395)
+(38300, 36050), pad size (1000, 395)
+
+It is necessary to connect cathode #291 to cathode #292 in order to
+close the integrated divider to p+ bulk contact (GND).
+
+ Anodes (n-side)
+There are 256 anodes to be bonded to the inputs of front-end electronics. In
+addition there are 2 anodes (one at the left edge and one at the right edge
+of the anode array) that have to be bonded to the ground. I call these 2
+anodes #L and #R. The pitch of all anodes is 294 micrometers.
+
+ DOWN half anodes
+#L (-37779, -35085), pad size (184, 140)
+#1 (-37485, -35085), pad size (184, 140)
+.........................................
+.........................................
+#256.............(37485, -35085), pad size (184, 140)
+#R (37779, -35085), pad size (184, 140)
+_____________________________________________
+ UP half anodes
+#L (-37779, 35085), pad size (184, 140)
+#1 (-37485, 35085), pad size (184, 140)
+.........................................
+.........................................
+#256.............(37485, 35085), pad size (184, 140)
+#R (37779, 35085), pad size (184, 140)
+*/
+////////////////////////////////////////////////////////////////////////
+ const Float_t kDxyz[] = {3.6250,0.01499,4.3794};//cm. (Geant 3.12 units)
+ // Size of sensitive region of detector
+ const Float_t kPeriod = 25.0E-09; // 40 MHz sampling frequence
+ const Float_t kVelocity = 5.46875E+03; // cm/s drift velocity
+ const Float_t kAnodeXL = -3.5085; // cm location in x of anodes left side
+ const Float_t kAnodeXR = 3.5085; // cm location in x of anodes right side
+ const Int_t kNAnodes = 256; // nuber of anodes connected
+ const Float_t kAnodePitch = 0.0294; // cm
+ const Float_t kAnodesZ = -3.7485; // cm Starting location of anodes in z
+ Float_t AnodeLowEdges[kNAnodes+1];
+ Int_t i;
+
+// cout << "AliITSgeomSDD256 default creator called: start" << end;
+ AnodeLowEdges[0] = kAnodesZ;
+ for(i=0;i<kNAnodes;i++) AnodeLowEdges[i+1] = kAnodePitch+AnodeLowEdges[i];
+ AliITSgeomSDD::ResetSDD(kDxyz,kPeriod,kVelocity,kAnodeXL,kAnodeXR,
+ kNAnodes+1,AnodeLowEdges,
+ kNAnodes+1,AnodeLowEdges);
+// cout << "AliITSgeomSDD256 default creator called: end" << endl;
+}
+//________________________________________________________________________
+ostream &operator<<(ostream &os,AliITSgeomSDD256 &p){
+////////////////////////////////////////////////////////////////////////
+// Standard output streaming function.
+////////////////////////////////////////////////////////////////////////
+
+ p.Print(&os);
+ return os;
+}
+//----------------------------------------------------------------------
+istream &operator>>(istream &is,AliITSgeomSDD256 &r){
+////////////////////////////////////////////////////////////////////////
+// Standard input streaming function.
+////////////////////////////////////////////////////////////////////////
+
+ r.Read(&is);
+ return is;
+}
+//======================================================================
+/*
+$Log$
+Revision 1.9 2001/02/03 00:00:30 nilsen
+New version of AliITSgeom and related files. Now uses automatic streamers,
+set up for new formatted .det file which includes detector information.
+Additional smaller modifications are still to come.
+
+*/
+//#include <iostream.h>
+//#include <TBRIK.h>
+
+//#include "AliITSgeomSDD300.h"
+
+ClassImp(AliITSgeomSDD300)
+
+AliITSgeomSDD300::AliITSgeomSDD300() : AliITSgeomSDD(){
+////////////////////////////////////////////////////////////////////////
+// default constructor
+////////////////////////////////////////////////////////////////////////
+ const Float_t kDxyz[] = {3.500,0.014,3.763};//cm.
+ const Float_t kPeriod = 25.0E-09; // 40 MHz
+ const Float_t kVelocity = 5.46875E+3; // cm/s
+ const Int_t kNAnodes = 300; // number of anodes
+ const Float_t kAnodeXL = -3.500; // cm
+ const Float_t kAnodeXR = +3.500; // cm
+ const Float_t kAnodesZ = -3.75; // cm
+ Float_t AnodeLowEdges[kNAnodes+1];
+ const Float_t kanode = 0.0250;// cm anode separation.
+ Int_t i;
+
+// cout << "AliITSgeomSDD300 default creator called: start" << endl;
+ AnodeLowEdges[0] = kAnodesZ;
+ for(i=0;i<kNAnodes;i++) AnodeLowEdges[i+1] = kanode+AnodeLowEdges[i];
+ AliITSgeomSDD::ResetSDD(kDxyz,kPeriod,kVelocity,kAnodeXL,kAnodeXR,
+ kNAnodes+1,AnodeLowEdges,
+ kNAnodes+1,AnodeLowEdges);
+// cout << "AliITSgeomSDD300 default creator called: end" << endl;
+}
+//________________________________________________________________________
+ostream &operator<<(ostream &os,AliITSgeomSDD300 &p){
+////////////////////////////////////////////////////////////////////////
+// Standard output streaming function.
+////////////////////////////////////////////////////////////////////////
+
+ p.Print(&os);
+ return os;
+}
+//----------------------------------------------------------------------
+istream &operator>>(istream &is,AliITSgeomSDD300 &r){
+////////////////////////////////////////////////////////////////////////
+// Standard input streaming function.
+////////////////////////////////////////////////////////////////////////
+
+ r.Read(&is);
+ return is;
}
+//----------------------------------------------------------------------