X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2FAliEMCAL.cxx;h=bdee1008f6e55aea00844fd458ddef0d095ba22b;hb=772f286b82ad82a05f37c5b0501af20ac7004440;hp=982cf0c68c8fba35279ee47838a64add0be6128e;hpb=5a6bfeedee029bd50944542b09bbc6b2016d0995;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCAL.cxx b/EMCAL/AliEMCAL.cxx index 982cf0c68c8..bdee1008f6e 100644 --- a/EMCAL/AliEMCAL.cxx +++ b/EMCAL/AliEMCAL.cxx @@ -14,39 +14,6 @@ **************************************************************************/ /* $Id$ */ -/* History of cvs commits: - * - * $Log$ - - * Revision 1.54 2007/12/06 10:31:13 hristov - * Bug fix: using the mapping from CDB - * - * Revision 1.53.10.1 2007/12/06 10:29:59 hristov - * Bug fix: using the mapping from CDB - * - * Revision 1.53 2007/03/17 19:56:38 mvl - * Moved signal shape routines from AliEMCAL to separate class AliEMCALRawUtils to streamline raw data reconstruction code. - * - * Revision 1.52 2007/03/10 22:19:01 pavlinov - * move one varibels from AliEMCALv2 to AliEMCAL - * - * Revision 1.51 2007/02/24 20:42:35 pavlinov - * fixed error of Geant3 parameters initialisation - * - * Revision 1.50 2007/02/05 10:43:25 hristov - * Changes for correct initialization of Geant4 (Mihaela) - * - * Revision 1.49 2007/01/22 17:29:12 pavlinov - * EMCAL geometry can be created independently form anything now - * - * Revision 1.48 2006/12/19 02:34:13 pavlinov - * clean up the EMCAL name scheme : super module -> module -> tower (or cell) - * - * Revision 1.47 2006/12/05 17:12:03 gustavo - * Updated AliEMCAL::Digits2Raw, reads first provisional RCU mapping files to make Raw data with new AliCaloAltroMapping and AliCaloRawStream - * - * - */ //_________________________________________________________________________ // Base Class for EMCAL description: // This class contains material definitions @@ -54,24 +21,29 @@ //*-- Author: Yves Schutz (SUBATECH) // //*-- Additional Contributions: Sahal Yacoob (LBNL/UCT) +// : Alexei Pavlinov (WSU) // ////////////////////////////////////////////////////////////////////////////// // --- ROOT system --- class TFile; #include -#include -#include +#include +#include #include #include -#include +#include +#include // --- Standard library --- // --- AliRoot header files --- #include "AliMagF.h" +#include "AliLog.h" #include "AliEMCAL.h" #include "AliRun.h" +#include "AliRunLoader.h" +#include "AliCDBManager.h" #include "AliEMCALLoader.h" #include "AliEMCALSDigitizer.h" #include "AliEMCALDigitizer.h" @@ -79,40 +51,56 @@ class TFile; #include "AliEMCALRawUtils.h" #include "AliCDBManager.h" #include "AliCDBEntry.h" - +#include "AliEMCALRawUtils.h" +#include "AliRawReader.h" +#include "AliEMCALTriggerData.h" +#include "AliEMCALRecParam.h" +#include "AliRawEventHeaderBase.h" ClassImp(AliEMCAL) +//for embedding +AliEMCALRawUtils* AliEMCAL::fgRawUtils = 0; // EMCAL raw utilities class + //____________________________________________________________________________ AliEMCAL::AliEMCAL() : AliDetector(), fBirkC0(0), fBirkC1(0.), fBirkC2(0.), - fGeometry(0) + fGeometry(0), + fCheckRunNumberAndGeoVersion(kTRUE), + fTriggerData(0x0) { // Default ctor fName = "EMCAL" ; InitConstants(); + // Should call AliEMCALGeometry::GetInstance(EMCAL->GetTitle(),"") for getting EMCAL geometry } //____________________________________________________________________________ -AliEMCAL::AliEMCAL(const char* name, const char* title) +AliEMCAL::AliEMCAL(const char* name, const char* title, + const Bool_t checkGeoAndRun) : AliDetector(name,title), fBirkC0(0), fBirkC1(0.), fBirkC2(0.), - fGeometry(0) + fGeometry(0), + fCheckRunNumberAndGeoVersion(checkGeoAndRun), + fTriggerData(0x0) { // ctor : title is used to identify the layout InitConstants(); + } //____________________________________________________________________________ AliEMCAL::~AliEMCAL() { //dtor + delete fgRawUtils; + delete fTriggerData; } //____________________________________________________________________________ @@ -122,89 +110,91 @@ void AliEMCAL::InitConstants() fBirkC0 = 1; fBirkC1 = 0.013/1.032; fBirkC2 = 9.6e-6/(1.032 * 1.032); - } - -//____________________________________________________________________________ -void AliEMCAL::DefineMediumParameters() -{ - // - // EMCAL cuts (Geant3) - // - Int_t * idtmed = fIdtmed->GetArray() - 1599 ; -// --- Set decent energy thresholds for gamma and electron tracking - - // Tracking threshold for photons and electrons in Lead - Float_t cutgam=10.e-5; // 100 kev; - Float_t cutele=10.e-5; // 100 kev; - TString ntmp(GetTitle()); - ntmp.ToUpper(); - if(ntmp.Contains("10KEV")) { - cutele = cutgam = 1.e-5; - } else if(ntmp.Contains("50KEV")) { - cutele = cutgam = 5.e-5; - } else if(ntmp.Contains("100KEV")) { - cutele = cutgam = 1.e-4; - } else if(ntmp.Contains("200KEV")) { - cutele = cutgam = 2.e-4; - } else if(ntmp.Contains("500KEV")) { - cutele = cutgam = 5.e-4; - } - - gMC->Gstpar(idtmed[1600],"CUTGAM", cutgam); - gMC->Gstpar(idtmed[1600],"CUTELE", cutele); // 1MEV -> 0.1MEV; 15-aug-05 - gMC->Gstpar(idtmed[1600],"BCUTE", cutgam); // BCUTE and BCUTM start from GUTGUM - gMC->Gstpar(idtmed[1600],"BCUTM", cutgam); // BCUTE and BCUTM start from GUTGUM - // --- Generate explicitly delta rays in Lead --- - gMC->Gstpar(idtmed[1600], "LOSS", 3) ; - gMC->Gstpar(idtmed[1600], "DRAY", 1) ; - gMC->Gstpar(idtmed[1600], "DCUTE", cutele) ; - gMC->Gstpar(idtmed[1600], "DCUTM", cutele) ; - -// --- in aluminium parts --- - gMC->Gstpar(idtmed[1602],"CUTGAM", cutgam) ; - gMC->Gstpar(idtmed[1602],"CUTELE", cutele) ; - gMC->Gstpar(idtmed[1602],"BCUTE", cutgam); // BCUTE and BCUTM start from GUTGUM - gMC->Gstpar(idtmed[1602],"BCUTM", cutgam); // BCUTE and BCUTM start from GUTGUM - gMC->Gstpar(idtmed[1602], "LOSS",3.) ; - gMC->Gstpar(idtmed[1602], "DRAY",1.) ; - gMC->Gstpar(idtmed[1602], "DCUTE", cutele) ; - gMC->Gstpar(idtmed[1602], "DCUTM", cutele) ; - -// --- and finally thresholds for photons and electrons in the scintillator --- - gMC->Gstpar(idtmed[1601],"CUTGAM", cutgam) ; - gMC->Gstpar(idtmed[1601],"CUTELE", cutele) ;// 1MEV -> 0.1MEV; 15-aug-05 - gMC->Gstpar(idtmed[1601],"BCUTE", cutgam); // BCUTE and BCUTM start from GUTGUM - gMC->Gstpar(idtmed[1601],"BCUTM", cutgam); // BCUTE and BCUTM start from GUTGUM - gMC->Gstpar(idtmed[1601], "LOSS",3) ; // generate delta rays - gMC->Gstpar(idtmed[1601], "DRAY",1) ; - gMC->Gstpar(idtmed[1601], "DCUTE", cutele) ; - gMC->Gstpar(idtmed[1601], "DCUTM", cutele) ; - - // S steel - - gMC->Gstpar(idtmed[1603],"CUTGAM", cutgam); - gMC->Gstpar(idtmed[1603],"CUTELE", cutele); - gMC->Gstpar(idtmed[1603],"BCUTE", cutgam); // BCUTE and BCUTM start from GUTGUM - gMC->Gstpar(idtmed[1603],"BCUTM", cutgam); // BCUTE and BCUTM start from GUTGUM - // --- Generate explicitly delta rays - gMC->Gstpar(idtmed[1603], "LOSS",3); - gMC->Gstpar(idtmed[1603], "DRAY",1); - gMC->Gstpar(idtmed[1603], "DCUTE", cutele) ; - gMC->Gstpar(idtmed[1603], "DCUTM", cutele) ; - - AliEMCALGeometry* geom = GetGeometry(); - if(geom->GetILOSS()>=0) { - for(int i=1600; i<=1603; i++) gMC->Gstpar(idtmed[i], "LOSS", geom->GetILOSS()) ; - } - if(geom->GetIHADR()>=0) { - for(int i=1600; i<=1603; i++) gMC->Gstpar(idtmed[i], "HADR", geom->GetIHADR()) ; - } } +//Not needed, modify $ALICE_ROOT/data/galice.cuts instead. +//Load the modified one in the configuration file with SetTransPar +// //____________________________________________________________________________ +// void AliEMCAL::DefineMediumParameters() +// { +// // +// // EMCAL cuts (Geant3) +// // +// Int_t * idtmed = fIdtmed->GetArray() - 1599 ; +// // --- Set decent energy thresholds for gamma and electron tracking + +// // Tracking threshold for photons and electrons in Lead +// Float_t cutgam=10.e-5; // 100 kev; +// Float_t cutele=10.e-5; // 100 kev; +// TString ntmp(GetTitle()); +// ntmp.ToUpper(); +// if(ntmp.Contains("10KEV")) { +// cutele = cutgam = 1.e-5; +// } else if(ntmp.Contains("50KEV")) { +// cutele = cutgam = 5.e-5; +// } else if(ntmp.Contains("100KEV")) { +// cutele = cutgam = 1.e-4; +// } else if(ntmp.Contains("200KEV")) { +// cutele = cutgam = 2.e-4; +// } else if(ntmp.Contains("500KEV")) { +// cutele = cutgam = 5.e-4; +// } + +// gMC->Gstpar(idtmed[1600],"CUTGAM", cutgam); +// gMC->Gstpar(idtmed[1600],"CUTELE", cutele); // 1MEV -> 0.1MEV; 15-aug-05 +// gMC->Gstpar(idtmed[1600],"BCUTE", cutgam); // BCUTE and BCUTM start from GUTGUM +// gMC->Gstpar(idtmed[1600],"BCUTM", cutgam); // BCUTE and BCUTM start from GUTGUM +// // --- Generate explicitly delta rays in Lead --- +// gMC->Gstpar(idtmed[1600], "LOSS", 3) ; +// gMC->Gstpar(idtmed[1600], "DRAY", 1) ; +// gMC->Gstpar(idtmed[1600], "DCUTE", cutele) ; +// gMC->Gstpar(idtmed[1600], "DCUTM", cutele) ; + +// // --- in aluminium parts --- +// gMC->Gstpar(idtmed[1602],"CUTGAM", cutgam) ; +// gMC->Gstpar(idtmed[1602],"CUTELE", cutele) ; +// gMC->Gstpar(idtmed[1602],"BCUTE", cutgam); // BCUTE and BCUTM start from GUTGUM +// gMC->Gstpar(idtmed[1602],"BCUTM", cutgam); // BCUTE and BCUTM start from GUTGUM +// gMC->Gstpar(idtmed[1602], "LOSS",3.) ; +// gMC->Gstpar(idtmed[1602], "DRAY",1.) ; +// gMC->Gstpar(idtmed[1602], "DCUTE", cutele) ; +// gMC->Gstpar(idtmed[1602], "DCUTM", cutele) ; + +// // --- and finally thresholds for photons and electrons in the scintillator --- +// gMC->Gstpar(idtmed[1601],"CUTGAM", cutgam) ; +// gMC->Gstpar(idtmed[1601],"CUTELE", cutele) ;// 1MEV -> 0.1MEV; 15-aug-05 +// gMC->Gstpar(idtmed[1601],"BCUTE", cutgam); // BCUTE and BCUTM start from GUTGUM +// gMC->Gstpar(idtmed[1601],"BCUTM", cutgam); // BCUTE and BCUTM start from GUTGUM +// gMC->Gstpar(idtmed[1601], "LOSS",3) ; // generate delta rays +// gMC->Gstpar(idtmed[1601], "DRAY",1) ; +// gMC->Gstpar(idtmed[1601], "DCUTE", cutele) ; +// gMC->Gstpar(idtmed[1601], "DCUTM", cutele) ; + +// // S steel - +// gMC->Gstpar(idtmed[1603],"CUTGAM", cutgam); +// gMC->Gstpar(idtmed[1603],"CUTELE", cutele); +// gMC->Gstpar(idtmed[1603],"BCUTE", cutgam); // BCUTE and BCUTM start from GUTGUM +// gMC->Gstpar(idtmed[1603],"BCUTM", cutgam); // BCUTE and BCUTM start from GUTGUM +// // --- Generate explicitly delta rays +// gMC->Gstpar(idtmed[1603], "LOSS",3); +// gMC->Gstpar(idtmed[1603], "DRAY",1); +// gMC->Gstpar(idtmed[1603], "DCUTE", cutele) ; +// gMC->Gstpar(idtmed[1603], "DCUTM", cutele) ; + +// AliEMCALGeometry* geom = GetGeometry(); +// if(geom->GetILOSS()>=0) { +// for(int i=1600; i<=1603; i++) gMC->Gstpar(idtmed[i], "LOSS", geom->GetILOSS()) ; +// } +// if(geom->GetIHADR()>=0) { +// for(int i=1600; i<=1603; i++) gMC->Gstpar(idtmed[i], "HADR", geom->GetIHADR()) ; +// } +// } + //____________________________________________________________________________ -AliDigitizer* AliEMCAL::CreateDigitizer(AliRunDigitizer* manager) const +AliDigitizer* AliEMCAL::CreateDigitizer(AliDigitizationInput* digInput) const { //create and return the digitizer - return new AliEMCALDigitizer(manager); + return new AliEMCALDigitizer(digInput); } //____________________________________________________________________________ @@ -241,11 +231,24 @@ void AliEMCAL::CreateMaterials() Float_t wsteel[4] = { .715,.18,.1,.005 }; AliMixture(4, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel); + // Oct 26,2010 : Multipurpose Copy Paper UNV-21200), weiht 75 g/m**2. + // *Cellulose C6H10O5 + // Component C A=12.01 Z=6. W=6./21. + // Component H A=1. Z=1. W=10./21. + // Component O A=16. Z=8. W=5./21. + Float_t apaper[3] = { 12.01, 1.0, 16.0}; + Float_t zpaper[3] = { 6.0, 1.0, 8.0}; + Float_t wpaper[3] = {6./21., 10./21., 5./21.}; + AliMixture(5, "BondPaper$", apaper, zpaper, 0.75, 3, wpaper); + // DEFINITION OF THE TRACKING MEDIA + // Look to the $ALICE_ROOT/data/galice.cuts for particular values + // of cuts. + // Don't forget to add a new tracking medium with non-default cuts // for EMCAL: idtmed[1599->1698] equivalent to fIdtmed[0->100] - Int_t isxfld = gAlice->Field()->Integ() ; - Float_t sxmgmx = gAlice->Field()->Max() ; + Int_t isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ() ; + Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max() ; // Air -> idtmed[1599] AliMedium(0, "Air$", 0, 0, @@ -267,7 +270,12 @@ void AliEMCAL::CreateMaterials() // 25-aug-04 by PAI : see PMD/AliPMDv0.cxx for STEEL definition -> idtmed[1603] AliMedium(4, "S steel$", 4, 0, - isxfld, sxmgmx, 10.0, 0.1, 0.1, 0.001, 0.001, 0, 0) ; + isxfld, sxmgmx, 10.0, 0.01, 0.1, 0.001, 0.001, 0, 0) ; + + // Oct 26,2010; Nov 24,2010 -> idtmed[1604] + deemax = 0.01; + AliMedium(5, "Paper$", 5, 0, + isxfld, sxmgmx, 10.0, deemax, 0.1, 0.001, 0.001, 0, 0) ; //set constants for Birk's Law implentation @@ -275,25 +283,23 @@ void AliEMCAL::CreateMaterials() fBirkC1 = 0.013/dP; fBirkC2 = 9.6e-6/(dP * dP); - // Call just in case of Geant3; What to do in case of Geant4 ? - if(gMC->InheritsFrom("TGeant3")) DefineMediumParameters(); // Feb 20, 2007 } + +//____________________________________________________________________________ +void AliEMCAL::Init() +{ + // Init + //Not needed, modify $ALICE_ROOT/data/galice.cuts instead. + //Load the modified one in the configuration file with SetTransPar + //DefineMediumParameters(); +} + //____________________________________________________________________________ void AliEMCAL::Digits2Raw() { - static AliEMCALRawUtils rawUtil; - //Get Mapping RCU files from the AliEMCALRecParam - static AliCDBEntry* entry = AliCDBManager::Instance()->Get("EMCAL/Calib/Mapping"); - const TObjArray* maps = 0x0; - if(entry) - maps = (TObjArray*)entry->GetObject(); - - if(!maps) AliFatal("Cannot retrieve ALTRO mappings!!"); - - AliAltroMapping * mapping[2] ; // For the moment only 2 - for(Int_t i = 0; i < 2; i++) { - mapping[i] = (AliAltroMapping*)maps->At(i); - } - rawUtil.Digits2Raw(mapping); + + static AliEMCALRawUtils rawUtils; + rawUtils.Digits2Raw(); + } //____________________________________________________________________________ void AliEMCAL::Hits2SDigits() @@ -303,7 +309,114 @@ void AliEMCAL::Hits2SDigits() GetGeometry(); AliEMCALSDigitizer emcalDigitizer(fLoader->GetRunLoader()->GetFileName().Data()) ; emcalDigitizer.SetEventRange(0, -1) ; // do all the events - emcalDigitizer.ExecuteTask() ; + emcalDigitizer.Digitize() ; +} + +//______________________________________________________________________ +Bool_t AliEMCAL::Raw2SDigits(AliRawReader* rawReader){ + + // Conversion from raw data to EMCAL sdigits. + // Does the same as AliEMCALReconstructor::ConvertDigits() + // Needed to embed real data and simulation + // Works on a single-event basis + + rawReader->Reset() ; + + //Get/create the sdigits tree and array + AliRunLoader *rl = AliRunLoader::Instance(); + AliEMCALLoader *emcalLoader = dynamic_cast(rl->GetDetectorLoader("EMCAL")); + + if(!emcalLoader){ + AliFatal("NULL loader"); + return kFALSE; + } + + emcalLoader->GetEvent(); + emcalLoader->LoadSDigits("UPDATE"); + + TTree * treeS = emcalLoader->TreeS(); + if ( !treeS ) { + emcalLoader->MakeSDigitsContainer(); + treeS = emcalLoader->TreeS(); + } + + if(!emcalLoader->SDigits()) { + AliFatal("No sdigits array available\n"); + return kFALSE; + } + + TClonesArray * sdigits = emcalLoader->SDigits(); + sdigits->Clear("C"); + + //Trigger sdigits + if(!fTriggerData)fTriggerData = new AliEMCALTriggerData(); + fTriggerData->SetMode(1); + TClonesArray *digitsTrg = new TClonesArray("AliEMCALTriggerRawDigit", 32 * 96); + Int_t bufsize = 32000; + treeS->Branch("EMTRG", &digitsTrg, bufsize); + + + //Only physics events + if (rawReader->GetType()== AliRawEventHeaderBase::kPhysicsEvent) { + + if(!fgRawUtils) fgRawUtils = new AliEMCALRawUtils; + //must be done here because, in constructor, option is not yet known + fgRawUtils->SetOption(GetOption()); + + // Set parameters from OCDB to raw utils + AliEMCALRecParam* recpar = emcalLoader->ReconstructionParameters(0); + // fgRawUtils->SetRawFormatHighLowGainFactor(recpar->GetHighLowGainFactor()); + // fgRawUtils->SetRawFormatOrder(recpar->GetOrderParameter()); + // fgRawUtils->SetRawFormatTau(recpar->GetTau()); + fgRawUtils->SetNoiseThreshold(recpar->GetNoiseThreshold()); + fgRawUtils->SetNPedSamples(recpar->GetNPedSamples()); + fgRawUtils->SetRemoveBadChannels(recpar->GetRemoveBadChannels()); + fgRawUtils->SetFittingAlgorithm(recpar->GetFittingAlgorithm()); + fgRawUtils->SetFALTROUsage(recpar->UseFALTRO()); + // fgRawUtils->SetTimeMin(recpar->GetTimeMin()); + // fgRawUtils->SetTimeMax(recpar->GetTimeMax()); + + //Fit + fgRawUtils->Raw2Digits(rawReader,sdigits,emcalLoader->PedestalData(),digitsTrg,fTriggerData); + + }//skip calibration event + else{ + AliDebug(1," Calibration Event, skip!"); + } + + //Final arrangements of the array, set all sdigits as embedded + sdigits->Sort() ; + for (Int_t iSDigit = 0 ; iSDigit < sdigits->GetEntriesFast() ; iSDigit++) { + AliEMCALDigit * sdigit = dynamic_cast(sdigits->At(iSDigit)) ; + if(sdigit){ + sdigit->SetIndexInList(iSDigit) ; + sdigit->SetType(AliEMCALDigit::kEmbedded); + } + else { + AliFatal("sdigit is NULL!"); + } + } + + AliDebug(1,Form("Embedded sdigits entries %d \n",sdigits->GetEntriesFast())); + + //Write array, clean arrays, unload .. + + Int_t bufferSize = 32000 ; + TBranch * sdigitsBranch = treeS->GetBranch("EMCAL"); + if (sdigitsBranch) + sdigitsBranch->SetAddress(&sdigits); + else + treeS->Branch("EMCAL",&sdigits,bufferSize); + + treeS->Fill(); + emcalLoader->WriteSDigits("OVERWRITE"); + emcalLoader->UnloadSDigits(); + + digitsTrg->Delete(); + delete digitsTrg; + + return kTRUE; + } //____________________________________________________________________________ @@ -315,3 +428,93 @@ AliLoader* AliEMCAL::MakeLoader(const char* topfoldername) fLoader = new AliEMCALLoader(GetName(),topfoldername); return fLoader; } + +//____________________________________________________________________________ + +AliEMCALGeometry* AliEMCAL::GetGeometry() const +{ + //Initializes and returns geometry + + // Pass the transpor model name (Geant3, Geant4, Fluka) and title to the geometry + TString mcname = ""; + TString mctitle = ""; + if(gMC){ + mcname = gMC->GetName() ; + mctitle = gMC->GetTitle() ; + } + + TString geoName(GetTitle()); + + //Check if run number and requested geometry correspond to the same geometry as + //in real data taking. To prevent errors in official simulation productions + if(!(AliEMCALGeometry::GetInstance())) + { + // Check the transport model name and option, set sampling fraction depending on it + if(!fCheckRunNumberAndGeoVersion){// Set geometry with the name used in the configuration file + AliInfo(Form("Geometry name in use <<%s>>, requested via Config file", geoName.Data())); + return AliEMCALGeometry::GetInstance(GetTitle(),"EMCAL",mcname,mctitle) ; + } + else + {//Check run number and version and set the corresponding one. + //Get run number + //AliRunLoader *rl = AliRunLoader::Instance(); + //Int_t runNumber = rl->GetRunNumber(); + + AliCDBManager* man = AliCDBManager::Instance(); + Int_t runNumber = man->GetRun(); + + //Instanciate geometry depending on the run number + if(runNumber >= 104064 && runNumber < 140000 ){//2009-2010 runs + //First year geometry, 4 SM. + + if(!geoName.Contains("FIRSTYEARV1")) + { + AliInfo(Form("*** ATTENTION *** \n \t Specified geometry name <<%s>> for run %d is not considered! \n \t In use <>, check run number and year \n ", + geoName.Data(),runNumber)); + } + else + { + AliDebug(1,"Initialized geometry with name <>"); + } + + return AliEMCALGeometry::GetInstance("EMCAL_FIRSTYEARV1","EMCAL",mcname,mctitle) ;// Set geometry with the name used in the configuration file + } + else if(runNumber >= 140000 && runNumber <= 170593) + { + //Almost complete EMCAL geometry, 10 SM. Year 2011 configuration + + if(!geoName.Contains("COMPLETEV1")) + { + AliInfo(Form("*** ATTENTION *** \n \t Specified geometry name <<%s>> for run %d is not considered! \n \t In use <>, check run number and year \n ", + geoName.Data(),runNumber)); + } + else + { + AliDebug(1,"Initialized geometry with name <>"); + } + + return AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1","EMCAL",mcname,mctitle) ;// Set geometry with the name used in the configuration file + } + else{ + //Default geometry + //Complete EMCAL geometry, 12 SM. Year 2012 and on + + if(!geoName.Contains("COMPLETE12SMV1")) + { + AliInfo(Form("*** ATTENTION *** \n \t Specified geometry name <<%s>> for run %d is not considered! \n \t In use <>, check run number and year \n ", + geoName.Data(),runNumber)); + } + else + { + AliDebug(1,"Initialized geometry with name <>"); + } + + return AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1","EMCAL",mcname,mctitle) ;// Set geometry with the name used in the configuration file + } + } + }// Init geometry for the first time + + + return AliEMCALGeometry::GetInstance(); + +}