]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSv11.cxx
Added version tailored for pp (AliTrackletTaskMultipp) with additional
[u/mrichter/AliRoot.git] / ITS / AliITSv11.cxx
index 5a26023ad32f4e2cb15bb72e646fa081d6822c7b..cea5780687ff22abaab81652b89d72d3eda6b531 100644 (file)
 // B. Nilsen, L. Gaudichet
 //************************************************************************
 
-
 #include <TClonesArray.h>
+#include <TGeoManager.h>
+#include <TGeoPcon.h>
+#include <TGeoVolume.h>
 #include <TLorentzVector.h>
+#include <TVirtualMC.h>
 
 #include "AliITS.h"
+#include "AliITSCalibrationSDD.h"
 #include "AliITSDetTypeSim.h"
-#include <TVirtualMC.h>
-
-#include "AliITSgeom.h"
-#include "AliITSgeomSDD.h"
-#include "AliITSgeomSPD.h"
-#include "AliITSgeomSSD.h"
 #include "AliITShit.h"
-
-#include "AliITSCalibrationSDD.h"
-
 #include "AliITSsegmentationSDD.h"
 #include "AliITSsegmentationSPD.h"
 #include "AliITSsegmentationSSD.h"
-#include "AliMagF.h"
-#include "AliRun.h"
-#include "AliTrackReference.h"
-#include "AliMC.h"
-
-#include <TGeoManager.h>
-#include <TGeoVolume.h>
-#include <TGeoPcon.h>
 #include "AliITSv11.h"
-#include "AliITSv11GeometrySPD.h"
 #include "AliITSv11GeometrySDD.h"
+#include "AliITSv11GeometrySPD.h"
 #include "AliITSv11GeometrySSD.h"
 #include "AliITSv11GeometrySupport.h"
-
-
+#include "AliMC.h"
+#include "AliMagF.h"
+#include "AliRun.h"
+#include "AliTrackReference.h"
 
 ClassImp(AliITSv11)
  
-
-
 //______________________________________________________________________
 AliITSv11::AliITSv11() : 
-AliITS(),
-fGeomDetOut(kFALSE),
-fGeomDetIn(kFALSE),
 fByThick(kTRUE),
 fMajorVersion(IsVersion()),
 fMinorVersion(0),
-fEuclidGeomDet(),
-fRead(),
-fWrite(),
 fSPDgeom(),
 fSDDgeom(0),
 fSSDgeom(),
@@ -84,25 +65,15 @@ fIgm(kv11)
     fIdN          = 0;
     fIdName       = 0;
     fIdSens       = 0;
-    Int_t i;
-    for(i=0;i<60;i++) fRead[i] = '\0';
-    for(i=0;i<60;i++) fWrite[i] = '\0';
-    for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
-    strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
 }
 
 
 //______________________________________________________________________
 AliITSv11::AliITSv11(const char *name, const char *title): 
 AliITS("ITS", title),
-fGeomDetOut(kFALSE),
-fGeomDetIn(kFALSE),
 fByThick(kTRUE),
 fMajorVersion(IsVersion()),
 fMinorVersion(0),
-fEuclidGeomDet(),
-fRead(),
-fWrite(),
 fSPDgeom(),
 fSDDgeom(0),
 fSSDgeom(),
@@ -127,25 +98,14 @@ fIgm(kv11)
   for(i=0;i<fIdN;i++) fIdSens[i] = 0;
   // not needed, fByThick set to kTRUE in in the member initialization lis
   
-
-  fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
-  strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
-  strncpy(fRead,fEuclidGeomDet,60);
-  strncpy(fWrite,fEuclidGeomDet,60);
-  strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
 }
 //______________________________________________________________________
-AliITSv11::AliITSv11(Int_t debugITS,Int_t debugSPD,Int_t debugSDD,
+AliITSv11::AliITSv11(Int_t /* debugITS */,Int_t debugSPD,Int_t debugSDD,
                   Int_t debugSSD,Int_t debugSUP) :
 AliITS("ITS","ITS geometry v11"),
-fGeomDetOut(kFALSE),
-fGeomDetIn(kFALSE),
 fByThick(kTRUE),
 fMajorVersion(IsVersion()),
 fMinorVersion(0),
-fEuclidGeomDet(),
-fRead(),
-fWrite(),
 fSPDgeom(),
 fSDDgeom(0),
 fSSDgeom(),
@@ -155,10 +115,12 @@ fIgm(kv11)
   // Standard default constructor for the ITS version 11.
 
 
-  //   fSPDgeom = new AliITSv11GeometrySPD(debugSPD);
+  fSPDgeom = new AliITSv11GeometrySPD(debugSPD);
   fSDDgeom = new AliITSv11GeometrySDD(debugSDD);
   fSDDgeom->SetDebug(debugSDD);
-  //   fSupgeom = new AliITSv11GeometrySupport(debugSUP);
+  fSSDgeom = new AliITSv11GeometrySSD();
+  fSSDgeom->SetDebug(debugSSD);
+  fSupgeom = new AliITSv11GeometrySupport(debugSUP);
 
   Int_t i;
   fIdN = 6;
@@ -171,23 +133,11 @@ fIgm(kv11)
   fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
   fIdSens    = new Int_t[fIdN];
   for(i=0;i<fIdN;i++) fIdSens[i] = 0;
-  fEuclidOut    = kFALSE; // Don't write Euclide file
-  
-  fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
-  strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
-  strncpy(fRead,fEuclidGeomDet,60);
-  strncpy(fWrite,fEuclidGeomDet,60);
-  strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
-
-  debugITS = (debugSPD && debugSSD && debugSUP && debugSDD); //remove temp. warnings
+  //  debugITS = (debugSPD && debugSSD && debugSUP && debugSDD); //remove temp. warnings
 }
 //______________________________________________________________________
 AliITSv11::~AliITSv11() {
   delete fSDDgeom;
-}
-//______________________________________________________________________
-void AliITSv11::BuildGeometry(){
-
 }
 //______________________________________________________________________
 void AliITSv11::CreateGeometry(){
@@ -251,120 +201,7 @@ void AliITSv11::CreateMaterials(){
     fSSDgeom->CreateMaterials();
     fSupgeom->CreateMaterials();
 }
-/*
-//______________________________________________________________________
-void AliITSv11::InitAliITSgeom(){
-  //
-  // Fill fITSgeom with the 3 sub-detector geometries
-  //
 
-  if (gGeoManager) gGeoManager->Export("geometry.root");
-
-    const Int_t knlayers = 6;
-    const Int_t kndeep = 3;
-    const AliITSDetector kidet[knlayers]={kSPD,kSPD,kSDD,kSDD,kSSD,kSSD};
-    const TString knames[knlayers] = {
-      "AliITSv11:spd missing",  // lay=1
-      "AliITSv11:spd missing",  // lay=2
-      "/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_%d/ITSsddSensor_%d/ITSsddWafer_%d", // lay=3
-      "/ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_%d/ITSsddSensor_%d/ITSsddWafer_%d", // lay=4
-      "AliITSv11:ssd missing",  // lay=5
-      "AliITSv11:ssd missing"   // lay=6
-    };
-
-    const Int_t kitsGeomTreeCopys[knlayers][kndeep]= {{10, 2, 4},// lay=1
-                                                     {10, 4, 4}, // lay=2
-                                                     {14, 6, 1}, // lay=3
-                                                     {22, 8, 1}, // lay=4
-                                                     {34,22, 1}, // lay=5
-                                                     {38,25, 1}};// lay=6
-    Int_t       nlad[knlayers],ndet[knlayers];
-    Int_t       mod,lay,lad=0,det=0,i,j,k,cp0,cp1,cp2;
-    TString path,shapeName;
-    TGeoHMatrix materix;
-    Double_t trans[3]={3*0.0},rot[10]={9*0.0,1.0};
-    TArrayD shapePar;
-    TArrayF shapeParF;
-    Bool_t shapeDefined[3]={kFALSE,kFALSE,kFALSE};
-
-    AliDebug(1,"Reading Geometry transformation directly from Modler.");
-    mod = 0;
-    for(i=0;i<knlayers;i++){
-        k = 1;
-        for(j=0;j<kndeep;j++) if(kitsGeomTreeCopys[i][j]!=0)
-            k *= TMath::Abs(kitsGeomTreeCopys[i][j]);
-        mod += k;
-    } // end for i
-
-    SetITSgeom(0);
-    nlad[0]=20;nlad[1]=40;nlad[2]=14;nlad[3]=22;nlad[4]=34;nlad[5]=38;
-    ndet[0]= 4;ndet[1]= 4;ndet[2]= 6;ndet[3]= 8;ndet[4]=22;ndet[5]=25;
-    AliITSgeom* geom = new AliITSgeom(0,6,nlad,ndet,mod);
-    SetITSgeom(geom);
-    mod = 0;
-    for(lay=1;lay<=knlayers;lay++){
-
-        for(cp0=0; cp0<kitsGeomTreeCopys[lay-1][0]; cp0++){
-            for(cp1=0; cp1<kitsGeomTreeCopys[lay-1][1]; cp1++){
-                for(cp2=1; cp2<=kitsGeomTreeCopys[lay-1][2]; cp2++){
-
-                    path.Form(knames[lay-1].Data(),
-                              cp0,cp1,cp2);
-                    switch (lay){
-                    case 1:{
-                        det = cp2;
-                        lad = cp1+2*(cp0-1);
-                    }break;
-                    case 2:{
-                        det = cp2;
-                        lad = cp1+4*(cp0-1);
-                    } break;
-                    case 3: case 4: case 5: case 6:{
-                        det = cp1;
-                        lad = cp0;
-                    } break;
-                    } // end switch
-                         //AliInfo(Form("path=%s lay=%d lad=%d det=%d",
-                         //             path.Data(),lay,lad,det));
-                    gMC->GetTransformation(path.Data(),materix);
-                    gMC->GetShape(path.Data(),shapeName,shapePar);
-                    shapeParF.Set(shapePar.GetSize());
-                    for(i=0;i<shapePar.GetSize();i++) shapeParF[i]=shapePar[i];
-                    geom->CreateMatrix(mod,lay,lad,det,kidet[lay-1],trans,rot);
-                    geom->SetTrans(mod,materix.GetTranslation());
-                    geom->SetRotMatrix(mod,materix.GetRotationMatrix());
-                   geom->GetGeomMatrix(mod)->SetPath(path.Data());
-                    switch (lay){
-                    case 1: case 2:
-                       if(!shapeDefined[kSPD]){
-                        geom->ReSetShape(kSPD,new AliITSgeomSPD425Short(
-                                shapeParF.GetSize(),shapeParF.GetArray()));
-                       shapeDefined[kSPD] = kTRUE;
-                    }break;
-                    case 3: case 4:
-                       if(!shapeDefined[kSDD]){
-                        geom->ReSetShape(kSDD,new AliITSgeomSDD256(
-                                shapeParF.GetSize(),shapeParF.GetArray()));
-                       shapeDefined[kSDD] = kTRUE;
-                    }break;
-                    case 5: case 6:
-                       if(!shapeDefined[kSSD]){
-                        geom->ReSetShape(kSSD,new AliITSgeomSSD75and275(
-                                shapeParF.GetSize(),shapeParF.GetArray()));
-                       shapeDefined[kSSD] = kTRUE;
-                    }break;
-                    default:{
-                    }break;
-                    } // end switch
-                    mod++;
-                } /// end for cp2
-            } // end for cp1
-        } // end for cp0
-    } // end for lay
-
-//   fSDDgeom->ExportSensorGeometry(GetITSgeom(), +3, 0);  //SDD
-}
-*/
 //______________________________________________________________________
 void AliITSv11::Init(){
   //
@@ -375,115 +212,14 @@ void AliITSv11::Init(){
     //
     UpdateInternalGeometry();
     AliITS::Init();
-    if(fGeomDetOut) GetITSgeom()->WriteNewFile(fWrite);
 
-    //
-/*
-    if(fRead[0]=='\0') strncpy(fRead,fEuclidGeomDet,60);
-    if(fWrite[0]=='\0') strncpy(fWrite,fEuclidGeomDet,60);
-    if(GetITSgeom()!=0) SetITSgeom(0x0);
-    AliITSgeom* geom = new AliITSgeom();
-    SetITSgeom(geom);
-    if(fGeomDetIn) GetITSgeom()->ReadNewFile(fRead);
-    else this->InitAliITSgeom();
-    if(fGeomDetOut) GetITSgeom()->WriteNewFile(fWrite);
-    AliITS::Init();
-*/    //
 }
 
-// //______________________________________________________________________
-// void AliITSv11::SetDefaults(){
-//   //
-//   // Set response ans segmentation models for SPD, SDD and SSD
-//   //
-//      const Float_t kconv = 1.0e+04; // convert cm to microns
-//     AliInfo("Called");    
-
-//     if(!fDetTypeSim) fDetTypeSim = new AliITSDetTypeSim();
-//     fDetTypeSim->SetITSgeom(GetITSgeom());
-  
-//     AliITSgeomSPD  *s0;
-//     AliITSgeomSDD  *s1;
-//     AliITSgeomSSD  *s2;
-//     Int_t i;
-//     Float_t bx[256],bz[280];
-   
-//     fDetTypeSim->ResetCalibrationArray();
-//     fDetTypeSim->ResetSegmentation();
-//     fDetTypeSim->SetDefaults();
-    
-//     //SPD
-//     s0 = (AliITSgeomSPD*) GetITSgeom()->GetShape(kSPD);// Get shape info. Do it this way for now.
-//     AliITSsegmentationSPD* seg0 = (AliITSsegmentationSPD*)fDetTypeSim->GetSegmentationModel(0);
-//     seg0->SetDetSize(s0->GetDx()*2.*kconv, // base this on AliITSgeomSPD
-//                  s0->GetDz()*2.*kconv, // for now.
-//                  s0->GetDy()*2.*kconv); // x,z,y full width in microns.
-//     seg0->SetNPads(256,160);// Number of Bins in x and z
-//     for(i=000;i<256;i++) bx[i] =  50.0; // in x all are 50 microns.
-//     for(i=000;i<160;i++) bz[i] = 425.0; // most are 425 microns except below
-//     for(i=160;i<280;i++) bz[i] =   0.0; // Outside of detector.
-//     bz[ 31] = bz[ 32] = 625.0; // first chip boundry
-//     bz[ 63] = bz[ 64] = 625.0; // first chip boundry
-//     bz[ 95] = bz[ 96] = 625.0; // first chip boundry
-//     bz[127] = bz[128] = 625.0; // first chip boundry
-//     bz[160] = 425.0; // Set so that there is no zero pixel size for fNz.
-//     seg0->SetBinSize(bx,bz); // Based on AliITSgeomSPD for now.
-//     SetSegmentationModel(kSPD,seg0);
-//     // set digit and raw cluster classes to be used
-//     const char *kData0=(fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSPD()))->DataType();
-//     if (strstr(kData0,"real")) fDetTypeSim->SetDigitClassName(kSPD,"AliITSdigit");
-//     else fDetTypeSim->SetDigitClassName(kSPD,"AliITSdigitSPD");
-
-
-
-//     // SDD
-//     s1 = (AliITSgeomSDD*) GetITSgeom()->GetShape(kSDD);// Get shape info. Do it this way for now.
-//     AliITSsegmentationSDD* seg1 = (AliITSsegmentationSDD*)fDetTypeSim->GetSegmentationModel(1);
-//     seg1->SetDetSize(s1->GetDx()*kconv, // base this on AliITSgeomSDD
-//                  s1->GetDz()*2.*kconv, // for now.
-//                  s1->GetDy()*2.*kconv); // x,z,y full width in microns.
-//     seg1->SetNPads(256,256);// Use AliITSgeomSDD for now
-//     SetSegmentationModel(kSDD,seg1);
-//     const char *kData1=(fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSDD()))->DataType();
-//     AliITSCalibrationSDD* rsp = (AliITSCalibrationSDD*)fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSDD());
-//     const char *kopt=rsp->GetZeroSuppOption();
-//     if((!strstr(kopt,"2D")) && (!strstr(kopt,"1D")) || strstr(kData1,"real") ){
-//     fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigit");
-//     } else fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigitSDD");
-
-
-//     // SSD
-//     s2 = (AliITSgeomSSD*) GetITSgeom()->GetShape(kSSD);// Get shape info. Do it this way for now.
-//     AliITSsegmentationSSD* seg2 = (AliITSsegmentationSSD*)fDetTypeSim->GetSegmentationModel(2);
-//     seg2->SetDetSize(s2->GetDx()*2.*kconv, // base this on AliITSgeomSSD
-//                  s2->GetDz()*2.*kconv, // for now.
-//                  s2->GetDy()*2.*kconv); // x,z,y full width in microns.
-//     seg2->SetPadSize(95.,0.); // strip x pitch in microns
-//     seg2->SetNPads(768,0); // number of strips on each side.
-//     seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side.
-//     seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side.
-//     seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side.
-//     SetSegmentationModel(kSSD,seg2); 
-//         const char *kData2=(fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSSD()))->DataType();
-//     if(strstr(kData2,"real") ) fDetTypeSim->SetDigitClassName(kSSD,"AliITSdigit");
-//     else fDetTypeSim->SetDigitClassName(kSSD,"AliITSdigitSSD");
-//     if(fgkNTYPES>3){
-//     Warning("SetDefaults",
-//             "Only the four basic detector types are initialised!");
-//     }// end if
-
-    
-//     return;
-// }
-
-
 //______________________________________________________________________
 void AliITSv11::SetDefaults(){
   //
   // Set response and segmentation models for SPD, SDD and SSD
   //
-     const Float_t kconv = 1.0e+04; // convert cm to microns
-    AliInfo("Called");    
 
 //     if(!fDetTypeSim) fDetTypeSim = new AliITSDetTypeSim();
 //     fDetTypeSim->SetITSgeom(GetITSgeom());
@@ -492,71 +228,10 @@ void AliITSv11::SetDefaults(){
       return;
     }
   
-    AliITSgeomSPD  *s0;
-    AliITSgeomSDD  *s1;
-    AliITSgeomSSD  *s2;
-    Int_t i;
-    Float_t bx[256],bz[280];
-   
     fDetTypeSim->ResetCalibrationArray();
     fDetTypeSim->ResetSegmentation();
     fDetTypeSim->SetDefaults();
     
-    //SPD
-    s0 = (AliITSgeomSPD*) GetITSgeom()->GetShape(kSPD);// Get shape info. Do it this way for now.
-    AliITSsegmentationSPD* seg0 = (AliITSsegmentationSPD*)fDetTypeSim->GetSegmentationModel(0);
-    seg0->SetDetSize(s0->GetDx()*2.*kconv, // base this on AliITSgeomSPD
-                    s0->GetDz()*2.*kconv, // for now.
-                    s0->GetDy()*2.*kconv); // x,z,y full width in microns.
-    seg0->SetNPads(256,160);// Number of Bins in x and z
-    for(i=000;i<256;i++) bx[i] =  50.0; // in x all are 50 microns.
-    for(i=000;i<160;i++) bz[i] = 425.0; // most are 425 microns except below
-    for(i=160;i<280;i++) bz[i] =   0.0; // Outside of detector.
-    bz[ 31] = bz[ 32] = 625.0; // first chip boundry
-    bz[ 63] = bz[ 64] = 625.0; // first chip boundry
-    bz[ 95] = bz[ 96] = 625.0; // first chip boundry
-    bz[127] = bz[128] = 625.0; // first chip boundry
-    bz[160] = 425.0; // Set so that there is no zero pixel size for fNz.
-    seg0->SetBinSize(bx,bz); // Based on AliITSgeomSPD for now.
-    SetSegmentationModel(kSPD,seg0);
-    // set digit and raw cluster classes to be used
-    const char *kData0=(fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSPD()))->DataType();
-    if (strstr(kData0,"real")) fDetTypeSim->SetDigitClassName(kSPD,"AliITSdigit");
-    else fDetTypeSim->SetDigitClassName(kSPD,"AliITSdigitSPD");
-
-
-
-    // SDD
-    s1 = (AliITSgeomSDD*) GetITSgeom()->GetShape(kSDD);// Get shape info. Do it this way for now.
-    AliITSsegmentationSDD* seg1 = (AliITSsegmentationSDD*)fDetTypeSim->GetSegmentationModel(1);
-    seg1->SetDetSize(s1->GetDx()*kconv, // base this on AliITSgeomSDD
-                    s1->GetDz()*2.*kconv, // for now.
-                    s1->GetDy()*2.*kconv); // x,z,y full width in microns.
-    seg1->SetNPads(256,256);// Use AliITSgeomSDD for now
-    SetSegmentationModel(kSDD,seg1);
-    const char *kData1=(fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSDD()))->DataType();
-    AliITSCalibrationSDD* rsp = (AliITSCalibrationSDD*)fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSDD());
-    const char *kopt=rsp->GetZeroSuppOption();
-    if((!strstr(kopt,"2D")) && (!strstr(kopt,"1D")) || strstr(kData1,"real") ){
-       fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigit");
-    } else fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigitSDD");
-
-
-    // SSD
-    s2 = (AliITSgeomSSD*) GetITSgeom()->GetShape(kSSD);// Get shape info. Do it this way for now.
-    AliITSsegmentationSSD* seg2 = (AliITSsegmentationSSD*)fDetTypeSim->GetSegmentationModel(2);
-    seg2->SetDetSize(s2->GetDx()*2.*kconv, // base this on AliITSgeomSSD
-                    s2->GetDz()*2.*kconv, // for now.
-                    s2->GetDy()*2.*kconv); // x,z,y full width in microns.
-    seg2->SetPadSize(95.,0.); // strip x pitch in microns
-    seg2->SetNPads(768,0); // number of strips on each side.
-    seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side.
-    seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side.
-    seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side.
-    SetSegmentationModel(kSSD,seg2); 
-        const char *kData2=(fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSSD()))->DataType();
-    if(strstr(kData2,"real") ) fDetTypeSim->SetDigitClassName(kSSD,"AliITSdigit");
-    else fDetTypeSim->SetDigitClassName(kSSD,"AliITSdigitSSD");
     if(fgkNTYPES>3){
        Warning("SetDefaults",
                "Only the four basic detector types are initialised!");
@@ -566,15 +241,6 @@ void AliITSv11::SetDefaults(){
     return;
 }
 
-
-
-
-
-//______________________________________________________________________
-void AliITSv11::DrawModule() const{
-
-}
-
 // //______________________________________________________________________
 // void AliITSv11::StepManager(){
 //   //