X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2FAliEMCALReconstructor.cxx;h=9d3dc7239c166d0076c101d38dd2c6f495e0b02e;hb=9bde52f15b68bec576e5180de434123962c3681b;hp=c191ec92c2223c1a90b50b73b5e826be170661cf;hpb=878bef11bb031f75185c114455ebca689708524d;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCALReconstructor.cxx b/EMCAL/AliEMCALReconstructor.cxx index c191ec92c22..9d3dc7239c1 100644 --- a/EMCAL/AliEMCALReconstructor.cxx +++ b/EMCAL/AliEMCALReconstructor.cxx @@ -103,7 +103,7 @@ AliEMCALReconstructor::AliEMCALReconstructor() if(!fCalibData) { AliCDBEntry *entry = (AliCDBEntry*) - AliCDBManager::Instance()->Get("EMCAL/Calib/Data"); + AliCDBManager::Instance()->Get("EMCAL/Calib/Data"); if (entry) fCalibData = (AliEMCALCalibData*) entry->GetObject(); } @@ -114,7 +114,7 @@ AliEMCALReconstructor::AliEMCALReconstructor() if(!fPedestalData) { AliCDBEntry *entry = (AliCDBEntry*) - AliCDBManager::Instance()->Get("EMCAL/Calib/Pedestals"); + AliCDBManager::Instance()->Get("EMCAL/Calib/Pedestals"); if (entry) fPedestalData = (AliCaloCalibPedestal*) entry->GetObject(); } @@ -135,7 +135,9 @@ AliEMCALReconstructor::AliEMCALReconstructor() //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(); @@ -149,30 +151,31 @@ AliEMCALReconstructor::~AliEMCALReconstructor() //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;} @@ -289,7 +292,8 @@ void AliEMCALReconstructor::ConvertDigits(AliRawReader* rawReader, TTree* digits 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); @@ -311,7 +315,8 @@ void AliEMCALReconstructor::ConvertDigits(AliRawReader* rawReader, TTree* digits 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()); @@ -475,7 +480,10 @@ void AliEMCALReconstructor::FillESD(TTree* digitsTree, TTree* clustersTree, } // 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++; } } @@ -672,11 +680,25 @@ void AliEMCALReconstructor::FillMisalMatrixes(AliESDEvent* esd)const{ 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() ; @@ -729,18 +751,28 @@ Bool_t AliEMCALReconstructor::CalculateResidual(AliESDtrack *track, AliESDCaloCl // 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(friendTrack->GetTPCOut()); - else + else if(track->GetInnerParam()) trkParam = const_cast(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; }