]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSLoader.cxx
fix typo
[u/mrichter/AliRoot.git] / ITS / AliITSLoader.cxx
index 92e5979d0e94c67968adba1209ea92fba4468dbe..bab70821400244fe660464443423da41c9ab3777 100644 (file)
@@ -1,9 +1,31 @@
-#include "AliITS.h"
-#include "AliITSgeom.h"
+/**************************************************************************
+ * 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.                  *
+ **************************************************************************/
+
+/* $Id$ */
+
+#include <TClonesArray.h>
+#include <TClass.h>
+#include <TGeoManager.h>
+#include <TTree.h>
+
 #include "AliITSdigit.h"
-#include "AliRun.h"
-#include "AliDetector.h"
 #include "AliITSLoader.h"
+#include "AliRunLoader.h"
+#include "AliObjectLoader.h"
+#include "AliITSInitGeometry.h"
+#include "AliLog.h"
 
 ///////////////////////////////////////////////////////////////////////////
 // Loader for ITS
 // raw clusters, primary vertices
 // V0 and cascade
 // and tracks propagated to the origin
-//////////////////////////////////////////////////////////////////////////
-const TString AliITSLoader::fgkDefaultRawClustersContainerName = "TreeC";
-const TString AliITSLoader::fgkDefaultBackTracksContainerName = "TreeB";
-const TString AliITSLoader::fgkDefaultVerticesContainerName = "Vertex";
-const TString AliITSLoader::fgkDefaultV0ContainerName = "V0";
-const TString AliITSLoader::fgkDefaultCascadeContainerName = "Cascade";
-
 ClassImp(AliITSLoader)
 
 /**********************************************************************/
-  AliITSLoader::AliITSLoader():AliLoader(){
+  AliITSLoader::AliITSLoader():AliLoader(),
+fGeom(0){
   // Default constructor
 }
 /*********************************************************************/
 AliITSLoader::AliITSLoader(const Char_t *name,const Char_t *topfoldername):
-AliLoader(name,topfoldername){
-  //ctor   
+AliLoader(name,topfoldername),
+fGeom(0){
+  //Constructor   
     AliDataLoader* rawClustersDataLoader = new AliDataLoader(
-        fDetectorName + ".RawCl.root",fgkDefaultRawClustersContainerName,
+        fDetectorName + ".RawCl.root",GetDefaultRawClustersContainerName(),
         "Raw Clusters");
     fDataLoaders->Add(rawClustersDataLoader);
     rawClustersDataLoader->SetEventFolder(fEventFolder);
     rawClustersDataLoader->SetFolder(GetDetectorDataFolder());
 
     AliDataLoader* backTracksDataLoader =  new AliDataLoader(
-        fDetectorName + ".BackTracks.root",fgkDefaultBackTracksContainerName,
+        fDetectorName + ".BackTracks.root",GetDefaultBackTracksContainerName(),
         "Back Propagated Tracks");
     fDataLoaders->Add(backTracksDataLoader);
     backTracksDataLoader->SetEventFolder(fEventFolder);
     backTracksDataLoader->SetFolder(GetDetectorDataFolder());
 
     AliDataLoader* vertexDataLoader = new AliDataLoader(
-        fDetectorName + ".Vertex.root",fgkDefaultVerticesContainerName,
+        fDetectorName + ".Vertex.root",GetDefaultVerticesContainerName(),
         "Primary Vertices","O");
     fDataLoaders->Add(vertexDataLoader);
     vertexDataLoader->SetEventFolder(fEventFolder);
     vertexDataLoader->SetFolder(GetDetectorDataFolder());
 
     AliDataLoader* v0DataLoader = new AliDataLoader(
-        fDetectorName + ".V0s.root",fgkDefaultV0ContainerName,"V0 Vertices");
+        fDetectorName + ".V0s.root",GetDefaultV0ContainerName(),"V0 Vertices");
     fDataLoaders->Add(v0DataLoader);
     v0DataLoader->SetEventFolder(fEventFolder);
     v0DataLoader->SetFolder(GetDetectorDataFolder());
 
     AliDataLoader* cascadeDataLoader = new AliDataLoader(
-        fDetectorName + ".Cascades.root",fgkDefaultCascadeContainerName,
+        fDetectorName + ".Cascades.root",GetDefaultCascadeContainerName(),
         "Cascades");
     fDataLoaders->Add(cascadeDataLoader);
     cascadeDataLoader->SetEventFolder(fEventFolder);
@@ -64,42 +81,45 @@ AliLoader(name,topfoldername){
 }
 /**********************************************************************/
 AliITSLoader::AliITSLoader(const Char_t *name,TFolder *topfolder): 
-AliLoader(name,topfolder) {
+  AliLoader(name,topfolder),
+fGeom(0){
   //ctor  
     AliDataLoader*  rawClustersDataLoader = new AliDataLoader(
-        fDetectorName + ".RawCl.root",fgkDefaultRawClustersContainerName,
+        fDetectorName + ".RawCl.root",GetDefaultRawClustersContainerName(),
         "Raw Clusters"); 
     fDataLoaders->Add(rawClustersDataLoader);
     rawClustersDataLoader->SetEventFolder(fEventFolder);
     rawClustersDataLoader->SetFolder(GetDetectorDataFolder());
 
     AliDataLoader*  backTracksDataLoader =  new AliDataLoader(
-        fDetectorName + ".BackTracks.root",fgkDefaultBackTracksContainerName,
+        fDetectorName + ".BackTracks.root",GetDefaultBackTracksContainerName(),
         "Back Propagated Tracks");
     fDataLoaders->Add(backTracksDataLoader);
     backTracksDataLoader->SetEventFolder(fEventFolder);
     backTracksDataLoader->SetFolder(GetDetectorDataFolder());
 
     AliDataLoader* vertexDataLoader = new AliDataLoader(
-        fDetectorName + ".Vertex.root",fgkDefaultVerticesContainerName,
+        fDetectorName + ".Vertex.root",GetDefaultVerticesContainerName(),
         "Primary Vertices","O");
     fDataLoaders->Add(vertexDataLoader);
     vertexDataLoader->SetEventFolder(fEventFolder);
     vertexDataLoader->SetFolder(GetDetectorDataFolder());
 
     AliDataLoader* v0DataLoader = new AliDataLoader(
-        fDetectorName + ".V0.root",fgkDefaultV0ContainerName,"V0 Vertices");
+        fDetectorName + ".V0.root",GetDefaultV0ContainerName(),"V0 Vertices");
     fDataLoaders->Add(v0DataLoader);
     v0DataLoader->SetEventFolder(fEventFolder);
     v0DataLoader->SetFolder(GetDetectorDataFolder());
 
     AliDataLoader* cascadeDataLoader = new AliDataLoader(
-        fDetectorName + ".Cascade.root",fgkDefaultCascadeContainerName,
+        fDetectorName + ".Cascade.root",GetDefaultCascadeContainerName(),
         "Cascades");
     fDataLoaders->Add(cascadeDataLoader);
     cascadeDataLoader->SetEventFolder(fEventFolder);
     cascadeDataLoader->SetFolder(GetDetectorDataFolder());
 }
+
+
 /**********************************************************************/
 AliITSLoader::~AliITSLoader(){
     //destructor
@@ -123,7 +143,11 @@ AliITSLoader::~AliITSLoader(){
     UnloadCascades();
     dl = GetCascadeDataLoader();
     fDataLoaders->Remove(dl);
+  
+    if(fGeom)delete fGeom;
+    fGeom = 0;
 }
+/*
 //----------------------------------------------------------------------
 AliITS* AliITSLoader::GetITS(){
     // Returns the pointer to the ITS, kept on the file. A short cut metthod
@@ -161,6 +185,7 @@ void AliITSLoader::SetupDigits(AliITS *its){
 
     its->SetTreeAddressD(TreeD());
 }
+*/
 //----------------------------------------------------------------------
 void AliITSLoader::SetupDigits(TObjArray *digPerDet,Int_t n,
                                const Char_t **digclass){
@@ -177,7 +202,7 @@ void AliITSLoader::SetupDigits(TObjArray *digPerDet,Int_t n,
     TClonesArray *cl = 0;
     TTree *td = 0;
     TBranch *br = 0;
-    Char_t branch[13];
+    Char_t branch[14];
     const Char_t *det[3] = {"SPD","SDD","SSD"};
 
     if(!digPerDet){
@@ -198,8 +223,8 @@ void AliITSLoader::SetupDigits(TObjArray *digPerDet,Int_t n,
     for(i=0;i<n;i++){
         if(digPerDet->At(i)==0){ // set up TClones Array
             digPerDet->AddAt(new TClonesArray(digclass[i],1000),i);
-            if(n==3) sprintf(branch,"ITSDigits%s",det[i]);
-            else     sprintf(branch,"ITSDigits%d",i+1);
+            if(n==3) snprintf(branch,13,"ITSDigits%s",det[i]);
+            else     snprintf(branch,13,"ITSDigits%d",i+1);
             br = td->GetBranch(branch);
             br->SetAddress(&((*digPerDet)[i]));
             continue; // do next one.
@@ -215,8 +240,8 @@ void AliITSLoader::SetupDigits(TObjArray *digPerDet,Int_t n,
                   "derived from AliITSdigit",i,digPerDet->At(i));
         } // end if
         cl->Clear();
-        if(n==3) sprintf(branch,"ITSDigits%s",det[i]);
-        else     sprintf(branch,"ITSDigits%d",i+1);
+        if(n==3) snprintf(branch,13,"ITSDigits%s",det[i]);
+        else     snprintf(branch,13,"ITSDigits%d",i+1);
         br = td->GetBranch(branch);
         br->SetAddress(&((*digPerDet)[i]));
         continue;
@@ -244,6 +269,7 @@ AliITSdigit * AliITSLoader::GetDigit(TObjArray *digPerDet,Int_t module,
     } // end if
     return 0;
 }
+/*
 //---------------------------------------------------------------------
 AliITSdigit * AliITSLoader::GetDigit(AliITS *its,Int_t module,Int_t digit){
     // Gets the digit for for a specific detector type and module.
@@ -270,6 +296,7 @@ AliITSdigit * AliITSLoader::GetDigit(AliITS *its,Int_t module,Int_t digit){
     } // end if
     return 0;
 }
+*/
 //----------------------------------------------------------------------
 void AliITSLoader::MakeTree(Option_t *opt){
     // invokes AliLoader::MakeTree + specific ITS tree(s)
@@ -287,3 +314,71 @@ void AliITSLoader::MakeTree(Option_t *opt){
     const char *oX = strstr(opt,"X");
     if (oX) MakeCascadeContainer();
 }
+
+//----------------------------------------------------------------------
+AliITSgeom* AliITSLoader::GetITSgeom(Bool_t force) {
+  // retrieves the ITS geometry from file
+  if(fGeom && !force)return fGeom;
+  if(fGeom && force){
+    delete fGeom;
+    fGeom = 0;
+  }
+  if(!gGeoManager){
+    AliError("gGeoManager is a null pointer - ITS geometry not built");
+    return fGeom;
+  }
+  AliITSInitGeometry initgeom;
+  fGeom = initgeom.CreateAliITSgeom();
+  AliDebug(1,"AliITSgeom object has been initialized from TGeo\n");
+  AliDebug(1,Form("Geometry name: %s",(initgeom.GetGeometryName()).Data()));
+  return fGeom;
+}
+//______________________________________________________________________
+void AliITSLoader::SetITSgeom(AliITSgeom *geom){
+    // Replaces the AliITSgeom object read from file with the one
+    // given.
+    // Inputs:
+    //   AliITSgeom *geom   The AliITSgeom object to replace the one
+    //                      read from the file
+    // Outputs:
+    //   none.
+    // Return:
+    //   none.
+
+    if(fGeom==geom) return; // Same do nothing
+    if(fGeom) {
+       delete fGeom;
+       fGeom=0;
+    }// end if
+    fGeom=geom;
+}
+
+const TString& AliITSLoader::GetDefaultRawClustersContainerName() {
+  //default for Raw Clusters container name
+  static const TString kDefaultRawClustersContainerName = "TreeC";  
+  return kDefaultRawClustersContainerName;
+}
+
+const TString& AliITSLoader::GetDefaultBackTracksContainerName() {
+ //default for Back propag. tracks container name
+  static const TString kDefaultBackTracksContainerName = "TreeB";   
+  return kDefaultBackTracksContainerName;
+}
+
+const TString& AliITSLoader::GetDefaultVerticesContainerName() {
+  //default for primary vertices container name
+  static const TString kDefaultVerticesContainerName = "Vertex";     
+  return kDefaultVerticesContainerName;
+}
+
+const TString& AliITSLoader::GetDefaultV0ContainerName() {
+  //default for V0 container name
+  static const TString kDefaultV0ContainerName = "V0";
+  return kDefaultV0ContainerName;
+}
+
+const TString& AliITSLoader::GetDefaultCascadeContainerName() {
+  //default fo cascade container name
+  static const TString kDefaultCascadeContainerName = "Cascade";
+  return kDefaultCascadeContainerName;
+}