X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2FAliEMCAL.cxx;h=8c3e475b6e5232ef04aa5d0ed9754ea05b10af90;hb=17b9c50ce20b5ee14331176b82354cddc61e9168;hp=cda534cd451283032acbd43f225225a378e8ba6d;hpb=61e0abb5c9bbd6e578ed6769602e4d9bb80ba13e;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCAL.cxx b/EMCAL/AliEMCAL.cxx index cda534cd451..8c3e475b6e5 100644 --- a/EMCAL/AliEMCAL.cxx +++ b/EMCAL/AliEMCAL.cxx @@ -17,54 +17,56 @@ //_________________________________________________________________________ // Base Class for EMCAL description: -// -// +// This class contains material definitions +// for the EMCAL - It does not place the detector in Alice //*-- Author: Yves Schutz (SUBATECH) // //*-- Additional Contributions: Sahal Yacoob (LBNL/UCT) // ////////////////////////////////////////////////////////////////////////////// -// --- Standard library --- -#include - // --- ROOT system --- class TFile; -#include "TBranch.h" -#include "TClonesArray.h" -#include "TTree.h" +#include +#include +#include -// --- AliRoot header files --- +// --- Standard library --- +// --- AliRoot header files --- +#include "AliMagF.h" #include "AliEMCAL.h" #include "AliEMCALGeometry.h" -#include "AliMC.h" +#include "AliEMCALLoader.h" #include "AliRun.h" -#include "AliMagF.h" +#include "AliEMCALSDigitizer.h" +#include "AliEMCALDigitizer.h" ClassImp(AliEMCAL) - //____________________________________________________________________________ AliEMCAL::AliEMCAL():AliDetector() { - // ctor - //We do not create objects, because these pointers will be overwritten during reading from file. - fGeom = 0; + // Default ctor + fName="EMCAL"; + fGeom = 0 ; } + //____________________________________________________________________________ -AliEMCAL::AliEMCAL(const char* name, const char* title): AliDetector(name,title) { -// ctor : title is used to identify the layout - fGeom = 0; -// gets an instance of the geometry parameters class +AliEMCAL::AliEMCAL(const char* name, const char* title): AliDetector(name,title) +{ + // ctor : title is used to identify the layout + fGeom = 0; } + //____________________________________________________________________________ -AliEMCAL::~AliEMCAL(){ - // dtor - delete fHits; +AliEMCAL::~AliEMCAL() +{ + } //____________________________________________________________________________ -void AliEMCAL::CreateMaterials(){ +void AliEMCAL::CreateMaterials() +{ // Definitions of materials to build EMCAL and associated tracking media. // media number in idtmed are 1599 to 1698. @@ -88,8 +90,6 @@ void AliEMCAL::CreateMaterials(){ AliMaterial(3, "Al$", 26.98, 13., 2.7, 8.9, 999., 0, 0) ; // --- Absorption length is ignored ^ - - // DEFINITION OF THE TRACKING MEDIA // for EMCAL: idtmed[1599->1698] equivalent to fIdtmed[0->100] @@ -103,64 +103,103 @@ void AliEMCAL::CreateMaterials(){ AliMedium(0, "Air $", 0, 0, isxfld, sxmgmx, 10.0, 1.0, 0.1, 0.1, 10.0, 0, 0) ; - // The Lead -> idtmed[1600] + // The Lead -> idtmed[1600] AliMedium(1, "Lead $", 1, 0, isxfld, sxmgmx, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0) ; - // The scintillator of the CPV made of Polystyrene scintillator -> idtmed[1601] AliMedium(2, "CPV scint. $", 2, 1, isxfld, sxmgmx, 10.0, 0.001, 0.1, 0.001, 0.001, 0, 0) ; - // Various Aluminium parts made of Al -> idtmed[1602] + // Various Aluminium parts made of Al -> idtmed[1602] AliMedium(3, "Al parts $", 3, 0, isxfld, sxmgmx, 10.0, 0.1, 0.1, 0.001, 0.001, 0, 0) ; - - // --- Set decent energy thresholds for gamma and electron tracking // Tracking threshold for photons and electrons in Lead - // gMC->Gstpar(idtmed[1600], "CUTGAM",0.5E-4) ; - // gMC->Gstpar(idtmed[1600], "CUTELE",1.0E-4) ; + gMC->Gstpar(idtmed[1600],"CUTGAM",0.00008) ; + gMC->Gstpar(idtmed[1600],"CUTELE",0.001) ; + gMC->Gstpar(idtmed[1600],"BCUTE",0.0001) ; // --- Generate explicitly delta rays in Lead --- gMC->Gstpar(idtmed[1600], "LOSS",3.) ; gMC->Gstpar(idtmed[1600], "DRAY",1.) ; - - gMC->Gstpar(idtmed[1600],"CUTGAM",0.00008) ; - gMC->Gstpar(idtmed[1600],"CUTELE",0.001) ; - gMC->Gstpar(idtmed[1600],"BCUTE",0.0001) ; + gMC->Gstpar(idtmed[1600], "DCUTE",0.00001) ; + gMC->Gstpar(idtmed[1600], "DCUTM",0.00001) ; -// --- and in aluminium parts --- +// --- in aluminium parts --- gMC->Gstpar(idtmed[1602], "LOSS",3.) ; gMC->Gstpar(idtmed[1602], "DRAY",1.) ; + gMC->Gstpar(idtmed[1602], "DCUTE",0.00001) ; + gMC->Gstpar(idtmed[1602], "DCUTM",0.00001) ; - -// --- and finally in the scintillator --- +// --- and finally thresholds for photons and electrons in the scintillator --- gMC->Gstpar(idtmed[1601],"CUTGAM",0.00008) ; gMC->Gstpar(idtmed[1601],"CUTELE",0.001) ; gMC->Gstpar(idtmed[1601],"BCUTE",0.0001) ; +} +//____________________________________________________________________________ +AliEMCALGeometry * AliEMCAL::GetGeometry() const +{ + // gets the pointer to the AliEMCALGeometry unique instance + + if (fGeom) + return fGeom ; + else + return AliEMCALGeometry::GetInstance(GetTitle(),"") ; } + //____________________________________________________________________________ void AliEMCAL::SetTreeAddress() { - + // Linking Hits in Tree to Hits array TBranch *branch; char branchname[20]; sprintf(branchname,"%s",GetName()); // Branch address for hit tree - TTree *treeH = gAlice->TreeH(); - if (treeH && fHits) { + TTree *treeH = TreeH(); + if (treeH) { branch = treeH->GetBranch(branchname); - if (branch) branch->SetAddress(&fHits); + if (branch) + { + if (fHits == 0x0) + fHits= new TClonesArray("AliEMCALHit",1000); + branch->SetAddress(&fHits); + } + else + { + Warning("SetTreeAddress","<%s> Failed",GetName()); + } } - } +//____________________________________________________________________________ +AliLoader* AliEMCAL::MakeLoader(const char* topfoldername) +{ +//different behaviour than standard (singleton getter) +// --> to be discussed and made eventually coherent + fLoader = new AliEMCALLoader(GetName(),topfoldername); + return fLoader; +} + +//____________________________________________________________________________ +void AliEMCAL::Hits2SDigits() +{ +// create summable digits + AliEMCALSDigitizer* emcalDigitizer = + new AliEMCALSDigitizer(fLoader->GetRunLoader()->GetFileName().Data()); + emcalDigitizer->ExecuteTask(); +} + +//____________________________________________________________________________ +AliDigitizer* AliEMCAL::CreateDigitizer(AliRunDigitizer* manager) const +{ + return new AliEMCALDigitizer(manager); +}