* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.10 2001/04/26 22:44:34 nilsen
-Bug fix.
+/* $Id$ */
-Revision 1.9 2001/02/09 00:00:57 nilsen
-Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
-bugs in iostream based streamers used to read and write .det files. Fixed
-some detector sizes. Fixed bugs in some default-special constructors.
-
-Revision 1.8 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.
-
-*/
+////////////////////////////////////////////////////////////////////////
+// This class is for the Silicon Pixel Detector, SPD, specific geometry.
+// It is being replaced by AliITSsegmentationSPD class. This file also
+// constains classes derived from AliITSgeomSPD which do nothing but
+// initilize this one with predefined values.
+////////////////////////////////////////////////////////////////////////
-#include <iostream.h>
-#include <iomanip.h>
+#include <Riostream.h>
+#include <TGeometry.h>
#include <TShape.h>
#include <TMath.h>
ClassImp(AliITSgeomSPD)
-AliITSgeomSPD::AliITSgeomSPD(){
+AliITSgeomSPD::AliITSgeomSPD():
+TObject(),
+fName(),
+fTitle(),
+fMat(),
+fDx(0.0),
+fDy(0.0),
+fDz(0.0),
+fNbinx(0),
+fNbinz(0),
+fLowBinEdgeX(0),
+fLowBinEdgeZ(0){
// Default Constructor. Set everthing to null.
-
- fShapeSPD = 0;
- fNbinx = 0;
- fNbinz = 0;
- fLowBinEdgeX = 0;
- fLowBinEdgeZ = 0;
}
//______________________________________________________________________
AliITSgeomSPD::AliITSgeomSPD(Float_t dy,Int_t nx,Float_t *bx,
- Int_t nz,Float_t *bz){
+ Int_t nz,Float_t *bz):
+TObject(),
+fName(),
+fTitle(),
+fMat(),
+fDx(0.0),
+fDy(0.0),
+fDz(0.0),
+fNbinx(0),
+fNbinz(0),
+fLowBinEdgeX(0),
+fLowBinEdgeZ(0){
// Standard Constructor. Set everthing to null.
- fShapeSPD = 0;
- fNbinx = 0;
- fNbinz = 0;
- fLowBinEdgeX = 0;
- fLowBinEdgeZ = 0;
ReSetBins(dy,nx,bx,nz,bz);
return;
}
dx *= 0.5;
dz *= 0.5;
- delete fShapeSPD; // delete existing shape
- if(this->fLowBinEdgeX) delete[] this->fLowBinEdgeX; // delete existing
- if(this->fLowBinEdgeZ) delete[] this->fLowBinEdgeZ; // delete existing
+ if(fLowBinEdgeX) delete[] fLowBinEdgeX; // delete existing
+ if(fLowBinEdgeZ) delete[] fLowBinEdgeZ; // delete existing
+ fLowBinEdgeX = 0;
+ fLowBinEdgeZ = 0;
SetNbinX(nx);
SetNbinZ(nz);
fLowBinEdgeZ[0] = -dz;
for(i=0;i<nx;i++) fLowBinEdgeX[i+1] = fLowBinEdgeX[i] + bx[i];
for(i=0;i<nz;i++) fLowBinEdgeZ[i+1] = fLowBinEdgeZ[i] + bz[i];
- SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",dx,dy,dz);
+ SetShape("ActiveSPD","Active volume of SPD","",dx,dy,dz);
return;
}
//______________________________________________________________________
-AliITSgeomSPD::AliITSgeomSPD(AliITSgeomSPD &source){
+AliITSgeomSPD::AliITSgeomSPD(AliITSgeomSPD &source) : TObject(source),
+fName(source.fName),
+fTitle(source.fTitle),
+fMat(source.fMat),
+fDx(source.fDx),
+fDy(source.fDy),
+fDz(source.fDz),
+fNbinx(source.fNbinx),
+fNbinz(source.fNbinz),
+fLowBinEdgeX(0),
+fLowBinEdgeZ(0){
// Copy constructor
+ InitLowBinEdgeX();
+ InitLowBinEdgeZ();
+ for(Int_t i=0;i<fNbinx;i++) fLowBinEdgeX[i] = source.fLowBinEdgeX[i];
+ for(Int_t i=0;i<fNbinz;i++) fLowBinEdgeZ[i] = source.fLowBinEdgeZ[i];
- *this = source; // just use the = operator for now.
- return;
+
}
//______________________________________________________________________
AliITSgeomSPD& AliITSgeomSPD::operator=(AliITSgeomSPD &source){
// = operator
- Int_t i;
-
- if(&source == this) return *this;
- this->fShapeSPD = new TBRIK(*(source.fShapeSPD));
- if(this->fLowBinEdgeX) delete[] this->fLowBinEdgeX;
- if(this->fLowBinEdgeZ) delete[] this->fLowBinEdgeZ;
- this->fNbinx = source.fNbinx;
- this->fNbinz = source.fNbinz;
- this->InitLowBinEdgeX();
- this->InitLowBinEdgeZ();
- for(i=0;i<fNbinx;i++) this->fLowBinEdgeX[i] = source.fLowBinEdgeX[i];
- for(i=0;i<fNbinz;i++) this->fLowBinEdgeZ[i] = source.fLowBinEdgeZ[i];
- return *this;
+ this->~AliITSgeomSPD();
+ new(this) AliITSgeomSPD(source);
+ return *this;
}
//______________________________________________________________________
AliITSgeomSPD::~AliITSgeomSPD(){
// Destructor
- delete fShapeSPD;
- if(this->fLowBinEdgeX) delete[] this->fLowBinEdgeX;
- if(this->fLowBinEdgeZ) delete[] this->fLowBinEdgeZ;
- fShapeSPD = 0;
+ if(fLowBinEdgeX) delete[] fLowBinEdgeX;
+ if(fLowBinEdgeZ) delete[] fLowBinEdgeZ;
fNbinx = 0;
fNbinz = 0;
fLowBinEdgeX = 0;
fLowBinEdgeZ = 0;
}
//______________________________________________________________________
+void AliITSgeomSPD::SetShape(const char *name,const char *title,
+ const char * /*mat*/,Float_t dx,Float_t dy,Float_t dz){
+ // Delete any existing shape info and replace it with a new
+ // shape information.
+ // Inputs:
+ // char * name Name of the shape
+ // char * title Title of the shape
+ // char * mat Material name for the shape
+ // Float_t dx half width of the shape [cm]
+ // Float_t dy half thickness of the shape [cm]
+ // Float_t dz half length of the shape [cm]
+ // Outputs:
+ // none.
+ // Return:
+ // none.
+
+ fName = name;
+ fTitle = title;
+ fDx = dx;
+ fDy = dy;
+ fDz = dz;
+ return;
+}
+//______________________________________________________________________
void AliITSgeomSPD::LToDet(Float_t xl,Float_t zl,Int_t &row,Int_t &col){
// Returns the row and column pixel numbers for a given local coordinate
// system. If they are outside then it will return -1 or fNbinx/z.
void AliITSgeomSPD::Print(ostream *os) const {
// Standard output format for this class
Int_t i;
+#if defined __GNUC__
+#if __GNUC__ > 2
+ ios::fmtflags fmt;
+#else
+ Int_t fmt;
+#endif
+#else
+#if defined __ICC || defined __ECC || defined __xlC__
+ ios::fmtflags fmt;
+#else
Int_t fmt;
+#endif
+#endif
fmt = os->setf(ios::scientific); // set scientific floating point output
*os << "TBRIK" << " ";
*is >> shape;
if(strcmp(shape,"TBRIK")) Warning("::Read","Shape not a TBRIK");
*is >> dx >> dy >> dz;
- if(fShapeSPD!=0) delete fShapeSPD;
- SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",dx,dy,dz);
+ SetShape("ActiveSPD","Active volume of SPD","",dx,dy,dz);
*is >> i >> j;
SetNbinX(i);
SetNbinZ(j);
}
//=====================================================================
-/*
-$Log$
-Revision 1.10 2001/04/26 22:44:34 nilsen
-Bug fix.
-
-Revision 1.9 2001/02/09 00:00:57 nilsen
-Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
-bugs in iostream based streamers used to read and write .det files. Fixed
-some detector sizes. Fixed bugs in some default-special constructors.
-
-Revision 1.8 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.7 2000/10/02 16:32:35 barbera
-Forward declaration added
-
-Revision 1.1.2.8 2000/10/02 15:52:05 barbera
-Forward declaration added
-
-Revision 1.6 2000/07/10 16:07:18 fca
-Release version of ITS code
-
-Revision 1.4 2000/06/10 20:34:37 nilsen
-Fixed compilation warning with HP unix.
-
-Revision 1.3 2000/06/10 10:43:04 nilsen
-Fixed bug in copy and operator =.
-
-*/
-
-//#include "AliITSgeomSPD300.h"
-
ClassImp(AliITSgeomSPD300)
AliITSgeomSPD300::AliITSgeomSPD300() : AliITSgeomSPD(){
Int_t i;
Float_t dx=0.0,dz=0.0;
-// cout << "AliITSgeomSPD300 default creator called: start" << endl;
-
SetNbinX(knbinx); // default number of bins in x.
SetNbinZ(knbinz); // default number of bins in z.
if(TMath::Abs(dx-kdx)>1.0E-4 || TMath::Abs(dz-kdz)>1.0E-4)
Warning("Default Creator","Detector size may not be write.");
- SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",dx,kdy,dz);
-// cout << "AliITSgeomSPD300 default creator called: end" << endl;
+ SetShape("ActiveSPD","Active volume of SPD","",dx,kdy,dz);
}
//----------------------------------------------------------------------
ostream &operator<<(ostream &os,AliITSgeomSPD300 &p){
return is;
}
//=====================================================================
-/*
-$Log$
-Revision 1.10 2001/04/26 22:44:34 nilsen
-Bug fix.
-
-Revision 1.9 2001/02/09 00:00:57 nilsen
-Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
-bugs in iostream based streamers used to read and write .det files. Fixed
-some detector sizes. Fixed bugs in some default-special constructors.
-
-Revision 1.8 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.7 2000/10/02 16:32:35 barbera
-Forward declaration added
-
-Revision 1.1.2.8 2000/10/02 15:52:05 barbera
-Forward declaration added
-
-Revision 1.6 2000/07/10 16:07:18 fca
-Release version of ITS code
-
-Revision 1.4 2000/06/10 20:34:22 nilsen
-Fixed compilation warning with HP unix.
-
-Revision 1.3 2000/06/10 10:42:49 nilsen
-Fixed bug in copy and operator =.
-
-
-*/
-
-//#include "AliITSgeomSPD425Short.h"
ClassImp(AliITSgeomSPD425Short)
// micron pixels (large detector).
////////////////////////////////////////////////////////////////////////
- const Float_t kdx=0.6400,kdy=0.015,kdz=3.480; // cm; Standard pixel
- // detector size is 2dx
- // wide, 2dz long, and
- // 2dy thick. Geant 3.12
- // units.
+ const Float_t kdx=0.6400/*,kdy=0.015*/,kdz=3.480; // cm; Standard pixel
+ // detector size is 2dx
+ // wide, 2dz long, and
+ // 2dy thick. Geant 3.12
+ // units.
const Float_t kbinx0 = 0.0050; // cm; Standard pixel size in x direction.
const Int_t knbinx = 256; // number of pixels along x direction.
const Float_t kbinz0 = 0.0425; // cm; Standard pixel size in z direction.
for(i=0;i<knbinz;i++) dz += binSizeZ[i];
dz *= 0.5;
- SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",
+ if(npar<3){
+ Error("AliITSgeomSPD425Short",
+ "npar=%d<3 array par must be at least [3] or larger",npar);
+ return;
+ } // end if
+ SetShape("ActiveSPD","Active volume of SPD","",
par[0],par[1],par[2]);
if(TMath::Abs(dx-kdx)>1.0E-4 || TMath::Abs(dz-kdz)>1.0E-4)
Warning("Default Creator","Detector size may not be write.");
}
//======================================================================
-/*
-$Log$
-Revision 1.10 2001/04/26 22:44:34 nilsen
-Bug fix.
-
-Revision 1.9 2001/02/09 00:00:57 nilsen
-Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
-bugs in iostream based streamers used to read and write .det files. Fixed
-some detector sizes. Fixed bugs in some default-special constructors.
-
-Revision 1.8 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.7 2000/10/02 16:32:35 barbera
-Forward declaration added
-
-Revision 1.1.2.8 2000/10/02 15:52:05 barbera
-Forward declaration added
-
-Revision 1.6 2000/07/10 16:07:18 fca
-Release version of ITS code
-
-Revision 1.4 2000/06/10 20:34:22 nilsen
-Fixed compilation warning with HP unix.
-
-Revision 1.3 2000/06/10 10:42:49 nilsen
-Fixed bug in copy and operator =.
-
-
-*/
-
-//#include "AliITSgeomSPD425Long.h"
-
ClassImp(AliITSgeomSPD425Long)
AliITSgeomSPD425Long::AliITSgeomSPD425Long(){
for(i=0;i<knbinz;i++) dz += binSizeZ[i];
dz *= 0.5;
- SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",dx,kdy,dz);
+ SetShape("ActiveSPD","Active volume of SPD","",dx,kdy,dz);
if(TMath::Abs(dx-kdx)>1.0E-4 || TMath::Abs(dz-kdz)>1.0E-4)
Warning("Default Creator","Detector size may not be write.");