-#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);
}
/**********************************************************************/
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
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
its->SetTreeAddressD(TreeD());
}
+*/
//----------------------------------------------------------------------
void AliITSLoader::SetupDigits(TObjArray *digPerDet,Int_t n,
const Char_t **digclass){
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){
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.
"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;
} // 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.
} // end if
return 0;
}
+*/
//----------------------------------------------------------------------
void AliITSLoader::MakeTree(Option_t *opt){
// invokes AliLoader::MakeTree + specific ITS tree(s)
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;
+}