if(!fCalibData)
{
AliCDBEntry *entry = (AliCDBEntry*)
- AliCDBManager::Instance()->Get("EMCAL/Calib/Data");
+ AliCDBManager::Instance()->Get("EMCAL/Calib/Data");
if (entry) fCalibData = (AliEMCALCalibData*) entry->GetObject();
}
if(!fPedestalData)
{
AliCDBEntry *entry = (AliCDBEntry*)
- AliCDBManager::Instance()->Get("EMCAL/Calib/Pedestals");
+ AliCDBManager::Instance()->Get("EMCAL/Calib/Pedestals");
if (entry) fPedestalData = (AliCaloCalibPedestal*) entry->GetObject();
}
//Init temporary list of digits
fgDigitsArr = new TClonesArray("AliEMCALDigit",1000);
fgClustersArr = new TObjArray(1000);
- fgTriggerDigits = new TClonesArray("AliEMCALTriggerRawDigit", 32 * 96);
+
+ const int kNTRU = fGeom->GetNTotalTRU();
+ fgTriggerDigits = new TClonesArray("AliEMCALTriggerRawDigit", kNTRU * 96);
//Track matching
fMatches = new TList();
//AliDebug(2, "Mark.");
- if(fGeom) delete fGeom;
+ ////RS if(fGeom) delete fGeom;
//No need to delete, recovered from OCDB
//if(fCalibData) delete fCalibData;
//if(fPedestalData) delete fPedestalData;
- if(fgDigitsArr){
- fgDigitsArr->Clear("C");
- delete fgDigitsArr;
- }
+ if(fgDigitsArr) fgDigitsArr->Clear("C");
+ delete fgDigitsArr;
+ fgDigitsArr = 0;
- if(fgClustersArr){
- fgClustersArr->Clear();
- delete fgClustersArr;
- }
+ if(fgClustersArr) fgClustersArr->Clear();
+ delete fgClustersArr;
+ fgClustersArr = 0;
- if(fgTriggerDigits){
- fgTriggerDigits->Clear();
- delete fgTriggerDigits;
- }
+ if(fgTriggerDigits) fgTriggerDigits->Clear();
+ delete fgTriggerDigits;
+ fgTriggerDigits = 0;
+
+ delete fgRawUtils;
+ fgRawUtils = 0;
+ delete fgClusterizer;
+ fgClusterizer = 0;
- if(fgRawUtils) delete fgRawUtils;
- if(fgClusterizer) delete fgClusterizer;
- if(fgTriggerProcessor) delete fgTriggerProcessor;
+ delete fgTriggerProcessor;
+ fgTriggerProcessor = 0;
if(fMatches) { fMatches->Delete(); delete fMatches; fMatches = 0;}
if(fgDigitsArr) fgDigitsArr->Clear("C");
- TClonesArray *digitsTrg = new TClonesArray("AliEMCALTriggerRawDigit", 32 * 96);
+ const int kNTRU = fGeom->GetNTotalTRU();
+ TClonesArray *digitsTrg = new TClonesArray("AliEMCALTriggerRawDigit", kNTRU * 96);
Int_t bufsize = 32000;
digitsTree->Branch("EMCAL", &fgDigitsArr, bufsize);
fgRawUtils->SetRemoveBadChannels(GetRecParam()->GetRemoveBadChannels());
if (!fgRawUtils->GetFittingAlgorithm()) fgRawUtils->SetFittingAlgorithm(GetRecParam()->GetFittingAlgorithm());
fgRawUtils->SetFALTROUsage(GetRecParam()->UseFALTRO());
-
+ // fgRawUtils->SetFALTROUsage(0);
+
//fgRawUtils->SetTimeMin(GetRecParam()->GetTimeMin());
//fgRawUtils->SetTimeMax(GetRecParam()->GetTimeMax());
} // all primaries in digit
} // select primary label
- emcCells.SetCell(idignew,dig->GetId(),energy, time,digLabel);
+ Bool_t highGain = kFALSE;
+ if( dig->GetType() == AliEMCALDigit::kHG ) highGain = kTRUE;
+
+ emcCells.SetCell(idignew,dig->GetId(),energy, time,digLabel,0.,highGain);
idignew++;
}
}
const Int_t bufsize = 255;
char path[bufsize] ;
TGeoHMatrix * m = 0x0;
+ Int_t tmpType = -1;
+ Int_t SMOrder = 0;
+ TString SMName;
for(Int_t sm = 0; sm < fGeom->GetNumberOfSuperModules(); sm++){
- snprintf(path,bufsize,"/ALIC_1/XEN1_1/SMOD_%d",sm+1) ; //In Geometry modules numbered 1,2,.,5
- if(sm >= 10 && !((fGeom->GetEMCGeometry()->GetGeoName()).Contains("12SMV1"))) snprintf(path,bufsize,"/ALIC_1/XEN1_1/SM10_%d",sm-10+1) ;
- if(sm >= 10 && ((fGeom->GetEMCGeometry()->GetGeoName()).Contains("12SMV1"))) snprintf(path,bufsize,"/ALIC_1/XEN1_1/SM3rd_%d",sm-10+1) ;
-
+ if(fGeom->GetSMType(sm) == AliEMCALGeometry::kEMCAL_Standard ) SMName = "SMOD";
+ else if(fGeom->GetSMType(sm) == AliEMCALGeometry::kEMCAL_Half ) SMName = "SM10";
+ else if(fGeom->GetSMType(sm) == AliEMCALGeometry::kEMCAL_3rd ) SMName = "SM3rd";
+ else if( fGeom->GetSMType(sm) == AliEMCALGeometry::kDCAL_Standard ) SMName = "DCSM";
+ else if( fGeom->GetSMType(sm) == AliEMCALGeometry::kDCAL_Ext ) SMName = "DCEXT";
+ else AliError("Unkown SM Type!!");
+
+ if(fGeom->GetSMType(sm) == tmpType) {
+ SMOrder++;
+ } else {
+ tmpType = fGeom->GetSMType(sm);
+ SMOrder = 1;
+ }
+ snprintf(path,bufsize,"/ALIC_1/XEN1_1/%s_%d", SMName.Data(), SMOrder) ;
+
if (gGeoManager->CheckPath(path)){
gGeoManager->cd(path);
m = gGeoManager->GetCurrentMatrix() ;
// Otherwise use the TPCInner point
dEta = -999, dPhi = -999;
+ Bool_t ITSTrackSA = 0;
AliExternalTrackParam *trkParam = 0;
+
const AliESDfriendTrack* friendTrack = track->GetFriendTrack();
if(friendTrack && friendTrack->GetTPCOut())
trkParam = const_cast<AliExternalTrackParam*>(friendTrack->GetTPCOut());
- else
+ else if(track->GetInnerParam())
trkParam = const_cast<AliExternalTrackParam*>(track->GetInnerParam());
+ else{
+ trkParam = new AliExternalTrackParam(*track); //If there is ITSSa track
+ ITSTrackSA = 1;
+ }
if(!trkParam) return kFALSE;
-
+
AliExternalTrackParam trkParamTmp (*trkParam);
- if(!AliEMCALRecoUtils::ExtrapolateTrackToCluster(&trkParamTmp, cluster, track->GetMass(kTRUE), GetRecParam()->GetExtrapolateStep(), dEta, dPhi)) return kFALSE;
+ if(!AliEMCALRecoUtils::ExtrapolateTrackToCluster(&trkParamTmp, cluster, track->GetMass(kTRUE), GetRecParam()->GetExtrapolateStep(), dEta, dPhi)){
+ if(ITSTrackSA) delete trkParam;
+ return kFALSE;
+ }
+ if(ITSTrackSA) delete trkParam;
return kTRUE;
}