if(!fCheckRunNumberAndGeoVersion){// Set geometry with the name used in the configuration file
return AliEMCALGeometry::GetInstance(GetTitle(),"EMCAL",mcname,mctitle) ;
}
- else{//Check run number and version and set the corresponding one.
+ else
+ {//Check run number and version and set the corresponding one.
//Get run number
//AliRunLoader *rl = AliRunLoader::Instance();
//Int_t runNumber = rl->GetRunNumber();
//Instanciate geometry depending on the run number
TString geoName(GetTitle());
- if(runNumber > 104064 && runNumber <= 140000 ){//2009-2010 runs
+ if(runNumber >= 104064 && runNumber < 140000 ){//2009-2010 runs
//First year geometry, 4 SM.
- if(!geoName.Contains("FIRSTYEARV1")){
+ if(!geoName.Contains("FIRSTYEARV1"))
+ {
AliInfo(Form("*** ATTENTION *** \n \t Specified geometry name <<%s>> for run %d is not considered! \n \t In use <<EMCAL_FIRSTYEARV1>>, check run number and year \n ",
- geoName.Data(),runNumber)); }
- else {
- AliDebug(1,"Initialized geometry with name <<EMCAL_FIRSTYEARV1>>");}
-
+ geoName.Data(),runNumber));
+ }
+ else
+ {
+ AliDebug(1,"Initialized geometry with name <<EMCAL_FIRSTYEARV1>>");
+ }
+ printf("Initialized geometry with name <<EMCAL_FIRSTYEARV1>>\n");
+
return AliEMCALGeometry::GetInstance("EMCAL_FIRSTYEARV1","EMCAL",mcname,mctitle) ;// Set geometry with the name used in the configuration file
}
- else{ //Default geometry
+ else if(runNumber >= 140000 && runNumber <= 170593)
+ {//Default geometry
//Complete EMCAL geometry, 10 SM.
-
- if(!geoName.Contains("COMPLETEV1")){
+
+ if(!geoName.Contains("COMPLETEV1"))
+ {
AliInfo(Form("*** ATTENTION *** \n \t Specified geometry name <<%s>> for run %d is not considered! \n \t In use <<EMCAL_COMPLETEV1>>, check run number and year \n ",
- geoName.Data(),runNumber));}
- else {
- AliDebug(1,"Initialized geometry with name <<EMCAL_COMPLETEV1>>");}
+ geoName.Data(),runNumber));
+ }
+ else
+ {
+ AliDebug(1,"Initialized geometry with name <<EMCAL_COMPLETEV1>>");
+ }
+ printf("Initialized geometry with name <<EMCAL_COMPLETEV1>>\n");
return AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1","EMCAL",mcname,mctitle) ;// Set geometry with the name used in the configuration file
}
+ else{ //Default geometry
+ //Complete EMCAL geometry, 10 SM.
+
+ if(!geoName.Contains("COMPLETE12SMV1"))
+ {
+ AliInfo(Form("*** ATTENTION *** \n \t Specified geometry name <<%s>> for run %d is not considered! \n \t In use <<EMCAL_COMPLETE12SMV1>>, check run number and year \n ",
+ geoName.Data(),runNumber));
+ }
+ else
+ {
+ AliDebug(1,"Initialized geometry with name <<EMCAL_COMPLETE12SMV1>>");
+ }
+
+ printf("Initialized geometry with name <<EMCAL_COMPLETE12SMV1>>\n");
+
+ return AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1","EMCAL",mcname,mctitle) ;// Set geometry with the name used in the configuration file
+ }
}
}// Init geometry for the first time
// layer (additional 0.2 mm)
// The sizes have updated with last information from production
// drawing (end of October 2010).
-// 3. COMPLETEV1 contains now only 10 SM for runs from 2011
+// 3. COMPLETEV1 contains now only 10 SM for runs for year 2011
+// 4. COMPLETE12SMV1 contains 12 SM for runs from year 2012 and on
//
// EMCAL_WSUC (Wayne State test stand)
// = no definite equivalent in old notation, was only used by
// these initialisations are needed for a singleton
Bool_t AliEMCALEMCGeometry::fgInit = kFALSE;
-const Char_t* AliEMCALEMCGeometry::fgkDefaultGeometryName = "EMCAL_COMPLETEV1";
+const Char_t* AliEMCALEMCGeometry::fgkDefaultGeometryName = "EMCAL_COMPLETE12SMV1";
AliEMCALEMCGeometry::AliEMCALEMCGeometry()
fGeoName = "EMCAL_PDC06";
}
}
+
if(fGeoName.Contains("WSUC")) fGeoName = "EMCAL_WSUC";
//check that we have a valid geometry name
- if(!(fGeoName.Contains("EMCAL_PDC06") || fGeoName.Contains("EMCAL_COMPLETE") || fGeoName.Contains("EMCAL_WSUC")
- || fGeoName.Contains("EMCAL_FIRSTYEAR") || fGeoName.Contains("EMCAL_FIRSTYEARV1") || fGeoName.Contains("EMCAL_COMPLETEV1"))) {
+ if(!( fGeoName.Contains("EMCAL_PDC06") || fGeoName.Contains("EMCAL_WSUC")
+ || fGeoName.Contains("EMCAL_COMPLETE") || fGeoName.Contains("EMCAL_COMPLETEV1") || fGeoName.Contains("EMCAL_COMPLETE12SMV1")
+ || fGeoName.Contains("EMCAL_FIRSTYEAR") || fGeoName.Contains("EMCAL_FIRSTYEARV1") )) {
Fatal("Init", "%s is an undefined geometry!", fGeoName.Data()) ;
}
// Option to know whether we have the "half" supermodule(s) or not
fKey110DEG = 0;
- if(fGeoName.Contains("COMPLETE") || fGeoName.Contains("PDC06")) fKey110DEG = 1; // for GetAbsCellId
+ if(fGeoName.Contains("COMPLETE") || fGeoName.Contains("PDC06") || fGeoName.Contains("12SM")) fKey110DEG = 1; // for GetAbsCellId
if(fGeoName.Contains("COMPLETEV1")) fKey110DEG = 0;
fShishKebabTrd1Modules = 0;
//geometry-name specific options
fNumberOfSuperModules = 12; // 12 = 6 * 2 (6 in phi, 2 in Z)
- fNPhi = 12; // module granularity in phi within smod (azimuth)
+ fNPhi = 12; // module granularity in phi within smod (azimuth)
fNZ = 24; // module granularity along Z within smod (eta)
fNPHIdiv = fNETAdiv = 2; // tower granularity within module
fArm1PhiMin = 80.0; // degrees, Starting EMCAL Phi position
CheckAdditionalOptions();
}
- if(fGeoName.Contains("FIRSTYEARV1") || fGeoName.Contains("COMPLETEV1") ){
+ if(fGeoName.Contains("FIRSTYEARV1") || fGeoName.Contains("COMPLETEV1") || fGeoName.Contains("COMPLETE12SMV1") ){
// Oct 26,2010 : First module has tilt = 0.75 degree :
// look to AliEMCALShishKebabTrd1Module::DefineFirstModule(key)
// New sizes from production drawing, added Al front plate.
fEtaModuleSize = fPhiModuleSize;
fLateralSteelStrip = 0.015; // 0.015cm = 0.15mm
- if(fGeoName.Contains("COMPLETEV1")){
+ if(fGeoName.Contains("COMPLETEV1"))
+ {
fNumberOfSuperModules = 10;
fArm1PhiMax = 180.0;
}
-
+ else if (fGeoName.Contains("COMPLETE12SMV1"))
+ {
+ fNumberOfSuperModules = 12;
+ fArm1PhiMax = 200.0;
+ }
CheckAdditionalOptions();
}
// the sizes updated with last information from production
// drawing (end of October 2010).
//
-// EMCAL_COMPLETEV1: Same fixes as FIRSTYEAR and 10 SM instead of 10+2 half SM
+// EMCAL_COMPLETEV1: Same fixes as FIRSTYEAR and 10 SM instead of 10+2 half SM, for 2011 runs
+//
+// EMCAL_COMPLETE12SMV1: contains 12 SM for runs from year 2012 and on
//
// EMCAL_WSUC (Wayne State test stand)
// = no definite equivalent in old notation, was only used by
// You have to use just the correct name of geometry. If name is empty string the
// default name of geometry will be used.
//
-// AliEMCALGeometry* geom = new AliEMCALGeometry("EMCAL_COMPLETEV1","EMCAL");
+// AliEMCALGeometry* geom = new AliEMCALGeometry("EMCAL_COMPLETE12SMV1","EMCAL");
// TGeoManager::Import("geometry.root");
//
// MC: If you work with MC data you have to get geometry the next way:
// these initialisations are needed for a singleton
AliEMCALGeometry *AliEMCALGeometry::fgGeom = 0;
-const Char_t* AliEMCALGeometry::fgkDefaultGeometryName = "EMCAL_COMPLETEV1";
+const Char_t* AliEMCALGeometry::fgkDefaultGeometryName = "EMCAL_COMPLETE12SMV1";
//____________________________________________________________________________
AliEMCALGeometry::AliEMCALGeometry():
fRawAnalyzerTRU->SetFixTau(kTRUE);
fRawAnalyzerTRU->SetTau(2.5); // default for TRU shaper
- fGeom = new AliEMCALGeometry("EMCAL_COMPLETEV1", "EMCAL");
+ fGeom = new AliEMCALGeometry("EMCAL_COMPLETE12SMV1", "EMCAL");
// for (Int_t sm = 0 ; sm < fSuperModules ; sm++){
// fTextSM[sm] = NULL ;
// }
fORB(),
fORT()
{
+ // ctor
+
TString snam(g->GetName());
Int_t key=0;
- if(snam.Contains("FIRSTYEARv1",TString::kIgnoreCase)) key=1;
- if(snam.Contains("COMPLETEv1",TString::kIgnoreCase)) key=1;
+ if (snam.Contains("v1",TString::kIgnoreCase)) key=1; //EMCAL_COMPLETEV1 vs EMCAL_COMPLETEv1 (or other)
+
if(GetParameters()) {
DefineFirstModule(key);
}
fORB(),
fORT()
{
+
+ // ctor
+
// printf("** Left Neighbor : %s **\n", leftNeighbor.GetName());
fTheta = leftNeighbor.GetTheta() - fgangle;
fORB(mod.fORB),
fORT(mod.fORT)
{
- //copy ctor
+ // copy ctor
+
for (Int_t i=0; i<3; i++) fOK3X3[i] = mod.fOK3X3[i];
}
-void MakeEMCALResMisAlignment(TString geoname = "EMCAL_COMPLETE"){
+void MakeEMCALResMisAlignment(TString geoname = "EMCAL_COMPLETE12SMV1"){
// Create TClonesArray of residual misalignment objects for EMCAL
//
const char* macroname = "MakeEMCALResMisAlignment.C";
-void MakeEMCALZeroMisAlignment(TString geoname = "EMCAL_COMPLETE"){
+void MakeEMCALZeroMisAlignment(TString geoname = "EMCAL_COMPLETE12SMV1"){
// Create TClonesArray of zero misalignment objects for EMCAL
//
const char* macroname = "MakeEMCALZeroMisAlignment.C";
Float_t EtaToTheta(Float_t arg);
void LoadPythia();
-Int_t year =2011;
+Int_t year =2012;
Bool_t checkGeoAndRun=kFALSE;
void Config()
gMC->SetProcess("MULS",1);
gMC->SetProcess("RAYL",1);
- Float_t cut = 1.e-3; // 1MeV cut by default
+ Float_t cut = 1.e-3; // 1MeV cut by default
Float_t tofmax = 1.e10;
gMC->SetCut("CUTGAM", cut);
AliGenBox *gener = new AliGenBox(nParticles);
gener->SetMomentumRange(1.,10.);
- if(year > 2010)
- gener->SetPhiRange(80.0,180.0);
- else if(year == 2010)
+
+ if (year == 2010)
gener->SetPhiRange(80.0,120.0);
+ else if(year == 2011)
+ gener->SetPhiRange(80.0,180.0);
else
gener->SetPhiRange(80.0,190.0);
-
+
gener->SetThetaRange(EtaToTheta(0.7), EtaToTheta(-0.7));
gener->SetOrigin(0,0,0); //vertex position
Int_t iPHOS = 0;
Int_t iPIPE = 0;
Int_t iPMD = 0;
- Int_t iHMPID = 0;
+ Int_t iHMPID = 0;
Int_t iSHIL = 0;
- Int_t iT0 = 0;
+ Int_t iT0 = 0;
Int_t iTOF = 0;
Int_t iTPC = 0;
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 1;
- Int_t iACORDE = 0;
+ Int_t iACORDE= 0;
Int_t iVZERO = 0;
rl->CdGAFile();
//=================== Alice BODY parameters =============================
{
//=================== EMCAL parameters ============================
- if(year == 2010) // d phi = 40 degrees
- AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_FIRSTYEARV1");
- else if (year > 2010) // d phi = 100 degrees
- AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1");
+ if (year == 2010) // d phi = 40 degrees
+ AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_FIRSTYEARV1");
+ else if (year == 2011) // d phi = 100 degrees
+ AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1");
+ else if (year > 2011) // d phi = 110 degrees
+ AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE12SMV1");
else // Old configuration with 110 degrees but not perfect geometry
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE");
}
else {
cout<<"alirun not available, instantiate"<<endl;
- geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETE") ;
+ geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1") ;
}
//Load RecPoints
//clus->GetMomentum(p,vertex_position);
Double_t cphi = vpos.Phi();
+ if(cphi < 0) cphi +=TMath::TwoPi();
Double_t ceta = vpos.Eta();
Int_t nMatched = clus->GetNTracksMatched();