/************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ /* $Log$ Revision 1.6 2003/02/10 17:03:52 nilsen New version and structure of ITS V11 geometry. Work still in progress. Revision 1.5 2003/02/01 14:02:20 nilsen Work continues. Revision 1.4 2003/01/29 16:01:14 nilsen Update today's work. Revision 1.3 2003/01/28 17:59:54 nilsen Work continuing. Revision 1.2 2003/01/26 14:35:15 nilsen Some more geometry interface functions added and a start at the SSD support cone geometry. Committed to allow easy updates of partical work between authors. Revision 1.1 2003/01/20 23:32:49 nilsen New ITS geometry. Only a Skeleton for now. $Id$ */ ////////////////////////////////////////////////////////////////////////////// // // // Inner Traking System version 11 // // This class contains the base procedures for the Inner Tracking System // // // // Authors: R. Barbera // // version 6. // // Created 2000. // // // // NOTE: THIS IS THE SYMMETRIC PPR geometry of the ITS. // // THIS WILL NOT WORK // // with the geometry or module classes or any analysis classes. You are // // strongly encouraged to uses AliITSv5. // // // ////////////////////////////////////////////////////////////////////////////// // See AliITSv11::StepManager(). #include #include #include #include #include // only required for Tracking function? #include #include #include #include #include #include #include "AliRun.h" #include "AliMagF.h" #include "AliConst.h" #include "AliITSGeant3Geometry.h" #include "AliITShit.h" #include "AliITSv11.h" #include "AliITSgeom.h" #include "AliITSgeomSPD.h" #include "AliITSgeomSDD.h" #include "AliITSgeomSSD.h" #include "AliITSDetType.h" #include "AliITSresponseSPD.h" #include "AliITSresponseSDD.h" #include "AliITSresponseSSD.h" #include "AliITSsegmentationSPD.h" #include "AliITSsegmentationSDD.h" #include "AliITSsegmentationSSD.h" #include "AliITSsimulationSPD.h" #include "AliITSsimulationSDD.h" #include "AliITSsimulationSSD.h" #include "AliITSClusterFinderSPD.h" #include "AliITSClusterFinderSDD.h" #include "AliITSClusterFinderSSD.h" // #include "AliITSGeometryITSV.h" #include "AliITSGeometrySSDCone.h" #include "AliITSGeometrySDDCone.h" ClassImp(AliITSv11) //______________________________________________________________________ AliITSv11::AliITSv11() : AliITS() { // Standard default constructor for the ITS version 11. // Inputs: // none. // Outputs: // none. // Return // A default constructed AliITSv11 class. fITSV = 0; fcS = 0; // fcD = 0; } //______________________________________________________________________ AliITSv11::AliITSv11(const char *title) : AliITS("ITS", title){ // Standard constructor for the ITS version 11. // Inputs: // const char *title The title of for this geometry. // Outputs: // none. // Return // A Standard constructed AliITSv11 class. fITSV = 0; fcS = 0; // fcD = 0; } //______________________________________________________________________ AliITSv11::~AliITSv11() { // Standard destructor for the ITS version 11. // Inputs: // none. // Outputs: // none. // Return // none. if(fITSV!=0) delete fITSV; if(fcS!=0) delete fcS; // if(fcD!=0) delete fcD; } //______________________________________________________________________ AliITSv11::AliITSv11(const AliITSv11 &source){ // Copy Constructor for ITS version 11. // Inputs: // AliITSv11 &source class to be copied from. // Outputs: // none. // Return // none. if(&source == this) return; Error("Copy Constructor","Not allowed to copy AliITSv11"); return; } //______________________________________________________________________ AliITSv11& AliITSv11::operator=(const AliITSv11 &source){ // Assignment operator for the ITS version 11. // Inputs: // AliITSv11 &source class to be copied from. // Outputs: // none. // Return // none. if(&source == this) return *this; Error("= operator","Not allowed to copy AliITSv11"); return *this; } //______________________________________________________________________ void AliITSv11::BuildGeometry(){ // This routine defines and Creates the geometry for version 11 of // the ITS for use in the simulation display routines. This is a // very simplified geometry for speed of viewing. // Inputs: // none. // Outputs: // none. // Return // none. TVector3 t(0.0,0.0,0.0); if(fITSV==0) fITSV = new AliITSGeometryITSV(this,"ALIC"); if(fcS==0) fcS = new AliITSGeometrySSDCone(this,t,"TSV",1); fcS->BuildDisplayGeometry(); } //______________________________________________________________________ void AliITSv11::CreateGeometry(){ // This routine defines and Creates the geometry for version 11 of // the ITS. The geometry is used by the particle trasport routines, // and therefore, is very detailed. // Inputs: // none. // Outputs: // none. // Return // none. TVector3 t(0.0,0.0,0.0); if(fITSV==0) fITSV = new AliITSGeometryITSV(this,"ALIC"); if(fcS==0) fcS = new AliITSGeometrySSDCone(this,t,"TSV",1); // fITSV->CreateG3Geometry(); fcS->CreateG3Geometry("TSV",t); // fITSV->PositionGeometry("ALIC",1,t,0); fcS->PositionG3Geometry(fITSV->GetParams(),1,t,0); } //______________________________________________________________________ void AliITSv11::CreateMaterials(){ // Create ITS materials // This function defines the default materials used in the Geant // Monte Carlo simulations for the geometries AliITSv11. // In general it is automatically replaced by // Inputs: // none. // Outputs: // none. // Return // none. /* TVector3 t(0.0,0.0,0.0); if(fITSV==0) fITSV = new AliITSGeometryITSV(this,"ALIC"); if(fcS==0) fcS = new AliITSGeometrySSDCone(this,t,"TSV",1); fITSV->CreateG3Materials(); fcS->CreateG3Materials(); */ Int_t ifield = gAlice->Field()->Integ(); Float_t fieldm = gAlice->Field()->Max(); Float_t tmaxfd = 0.1; // 1.0; // Degree Float_t stemax = 1.0; // cm Float_t deemax = 0.1; // 30.0; // Fraction of particle's energy 0