From 7bafb008a3b0b3ceb00933a81eb4f83348e80459 Mon Sep 17 00:00:00 2001 From: auras Date: Thu, 24 Jul 2014 01:04:02 +0200 Subject: [PATCH] Modifications to MFT classes to manage embedding --- MFT/AliMFT.cxx | 25 +++++++-- MFT/AliMFT.h | 18 ++++++- MFT/AliMFTAnalysisTools.cxx | 22 +++++--- MFT/AliMFTConstants.h | 4 +- MFT/AliMFTTrackerMU.cxx | 104 ++++++++++++++++++++++++++++++++++++ MFT/AliMFTTrackerMU.h | 2 + 6 files changed, 162 insertions(+), 13 deletions(-) diff --git a/MFT/AliMFT.cxx b/MFT/AliMFT.cxx index 0b1e35a6fd7..38e295abbc9 100644 --- a/MFT/AliMFT.cxx +++ b/MFT/AliMFT.cxx @@ -63,11 +63,18 @@ AliMFT::AliMFT(): fChargeDispersion(25.e-4), fSingleStepForChargeDispersion(0), fNStepForChargeDispersion(4), - fDensitySupportOverSi(0.15) + fDensitySupportOverSi(0.15), + fFileNameForUnderyingEvent(0), + fFileNameForPileUpEvents(0), + fNPileUpEvents(0), + fUnderlyingEventID(-1) { // default constructor + for (Int_t iPileUp=0; iPileUp1e-6) fDensitySupportOverSi=density; else fDensitySupportOverSi=1e-6; } + //--------- for underlying and pile-up events -------------------- + + void SetFileNameForUnderlyingEvent(TString fileName) { fFileNameForUnderyingEvent += fileName; } + void SetFileNameForPileUpEvents(TString fileName) { fFileNameForPileUpEvents += fileName; } + + void SetUnderlyingEventID(Short_t eventID) { fUnderlyingEventID = eventID; } + void SetPileUpEventID(Short_t i, Short_t eventID) { if (i>=0 && i=0 && iGetEntries())); } + + AddClustersFromUnderlyingEvent(); + AddClustersFromPileUpEvents(); + SeparateFrontBackClusters(); return 0; @@ -599,3 +604,102 @@ void AliMFTTrackerMU::GetVertexFromMC() { //====================================================================================================================================== +void AliMFTTrackerMU::AddClustersFromUnderlyingEvent() { + + AliInfo("Adding clusters from underlying event"); + + if (!fMFT) return; + + TGrid::Connect("alien://"); + + TFile* fileWithClustersToAdd = TFile::Open(fMFT->GetFileNameForUnderlyingEvent()); + if (!fileWithClustersToAdd) return; + if (!(fileWithClustersToAdd->IsOpen())) return; + if (!(fileWithClustersToAdd->cd(Form("Event%d",fMFT->GetUnderlyingEventID())))) return; + + TClonesArray *recPointsPerPlaneToAdd[AliMFTConstants::fNMaxPlanes] = {0}; + TTree *treeIn = 0; + + for (Int_t iPlane=0; iPlaneGet("TreeR"); + + for (Int_t iPlane=0; iPlaneGetBranch(Form("Plane_%02d",iPlane)))) { + for (Int_t jPlane=0; jPlaneSetBranchAddress(Form("Plane_%02d",iPlane), &(recPointsPerPlaneToAdd[iPlane])); + } + + treeIn -> GetEntry(0); + + for (Int_t iPlane=0; iPlane before = %d ",iPlane,fMFTClusterArray[iPlane]->GetEntries()); + Int_t nClusters = recPointsPerPlaneToAdd[iPlane]->GetEntries(); + for (Int_t iCluster=0; iClusterAt(iCluster); + for (Int_t iTrack=0; iTrackGetNMCTracks(); iTrack++) newCluster->SetMCLabel(iTrack, newCluster->GetMCLabel(iTrack)+AliMFTConstants::fLabelOffsetMC); + new ((*fMFTClusterArray[iPlane])[fMFTClusterArray[iPlane]->GetEntries()]) AliMFTCluster(*newCluster); + } + printf("after = %d\n",fMFTClusterArray[iPlane]->GetEntries()); + } + + for (Int_t jPlane=0; jPlaneGetFileNameForPileUpEvents()); + if (!fileWithClustersToAdd) return; + if (!(fileWithClustersToAdd->IsOpen())) return; + + TClonesArray *recPointsPerPlaneToAdd[AliMFTConstants::fNMaxPlanes] = {0}; + TTree *treeIn = 0; + + for (Int_t iPileUp=0; iPileUpcd(Form("Event%d",fMFT->GetPileUpEventID(iPileUp))))) continue; + + for (Int_t iPlane=0; iPlaneGet("TreeR"); + + for (Int_t iPlane=0; iPlaneGetBranch(Form("Plane_%02d",iPlane)))) { + for (Int_t jPlane=0; jPlaneSetBranchAddress(Form("Plane_%02d",iPlane), &(recPointsPerPlaneToAdd[iPlane])); + } + + treeIn -> GetEntry(0); + + for (Int_t iPlane=0; iPlane before = %d ",iPlane,fMFTClusterArray[iPlane]->GetEntries()); + Int_t nClusters = recPointsPerPlaneToAdd[iPlane]->GetEntries(); + for (Int_t iCluster=0; iClusterAt(iCluster); + for (Int_t iTrack=0; iTrackGetNMCTracks(); iTrack++) newCluster->SetMCLabel(iTrack, newCluster->GetMCLabel(iTrack)+AliMFTConstants::fLabelOffsetMC); + new ((*fMFTClusterArray[iPlane])[fMFTClusterArray[iPlane]->GetEntries()]) AliMFTCluster(*newCluster); + } + printf("after = %d\n",fMFTClusterArray[iPlane]->GetEntries()); + } + + for (Int_t jPlane=0; jPlane