X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliModule.cxx;h=516192943dc20b79fee39a9087a4af9879fd7c1f;hb=ab6a174f4ae4849f7b9f4fc47bdf1b3c84c5dffd;hp=a1a92d2fe797795d2241f299e0468c14ff416df0;hpb=40d37d9ddfb07752cd09d9f15b048441e1b2d882;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliModule.cxx b/STEER/AliModule.cxx index a1a92d2fe79..516192943dc 100644 --- a/STEER/AliModule.cxx +++ b/STEER/AliModule.cxx @@ -57,6 +57,8 @@ ClassImp(AliModule) +Float_t AliModule::fgDensityFactor = 1.0; + //_______________________________________________________________________ AliModule::AliModule(): fEuclidMaterial(""), @@ -69,7 +71,6 @@ AliModule::AliModule(): fHistograms(0), fNodes(0), fEnable(1), - fTrackReferences(0), fMaxIterTrackRef(0), fCurrentIterTrackRef(0), fRunLoader(0) @@ -92,7 +93,6 @@ AliModule::AliModule(const char* name,const char *title): fHistograms(new TList()), fNodes(new TList()), fEnable(1), - fTrackReferences(new TClonesArray("AliTrackReference", 100)), fMaxIterTrackRef(0), fCurrentIterTrackRef(0), fRunLoader(0) @@ -103,6 +103,7 @@ AliModule::AliModule(const char* name,const char *title): // Add this Module to the global list of Modules in Run. // // Get the Module numeric ID + Int_t id = gAlice->GetModuleID(name); if (id>=0) { // Module already added ! @@ -145,12 +146,6 @@ AliModule::~AliModule() delete fHistograms; fHistograms = 0; } - // Delete track references - if (fTrackReferences) { - fTrackReferences->Delete(); - delete fTrackReferences; - fTrackReferences = 0; - } // Delete TArray objects delete fIdtmed; delete fIdmate; @@ -220,7 +215,9 @@ void AliModule::AliMaterial(Int_t imat, const char* name, Float_t a, kmat = mat->GetUniqueID(); (*fIdmate)[imat]=kmat; }else{ - gMC->Material(kmat, uniquename.Data(), a, z, dens, radl, absl, buf, nwbuf); + if (fgDensityFactor != 1.0) + AliWarning(Form("Material density multiplied by %.2f!", fgDensityFactor)); + gMC->Material(kmat, uniquename.Data(), a, z, dens * fgDensityFactor, radl, absl, buf, nwbuf); (*fIdmate)[imat]=kmat; } } @@ -286,7 +283,9 @@ void AliModule::AliMixture(Int_t imat, const char *name, Float_t *a, kmat = mat->GetUniqueID(); (*fIdmate)[imat]=kmat; }else{ - gMC->Mixture(kmat, uniquename.Data(), a, z, dens, nlmat, wmat); + if (fgDensityFactor != 1.0) + AliWarning(Form("Material density multiplied by %.2f!", fgDensityFactor)); + gMC->Mixture(kmat, uniquename.Data(), a, z, dens * fgDensityFactor, nlmat, wmat); (*fIdmate)[imat]=kmat; } } @@ -660,159 +659,18 @@ void AliModule::AddAlignableVolumes() const } //_______________________________________________________________________ -void AliModule::RemapTrackReferencesIDs(Int_t *map) -{ - // - // Remapping track reference - // Called at finish primary - // - if (!fTrackReferences) return; - Int_t nEntries = fTrackReferences->GetEntries(); - - for (Int_t i=0;i(fTrackReferences->UncheckedAt(i)); - if (ref) { - Int_t newID = map[ref->GetTrack()]; - if (newID>=0) ref->SetTrack(newID); - else { - ref->SetBit(kNotDeleted,kFALSE); - fTrackReferences->RemoveAt(i); - } - } - } - fTrackReferences->Compress(); - -} - - -//_______________________________________________________________________ -AliTrackReference* AliModule::FirstTrackReference(Int_t track) -{ - // - // Initialise the hit iterator - // Return the address of the first hit for track - // If track>=0 the track is read from disk - // while if track<0 the first hit of the current - // track is returned - // - if(track>=0) - { - if (fRunLoader == 0x0) - AliFatal("AliRunLoader not initialized. Can not proceed"); - fRunLoader->GetAliRun()->GetMCApp()->ResetTrackReferences(); - fRunLoader->TreeTR()->GetEvent(track); - } - // - fMaxIterTrackRef = fTrackReferences->GetEntriesFast(); - fCurrentIterTrackRef = 0; - if(fMaxIterTrackRef) return dynamic_cast(fTrackReferences->UncheckedAt(0)); - else return 0; -} - -//_______________________________________________________________________ -AliTrackReference* AliModule::NextTrackReference() -{ - // - // Return the next hit for the current track - // - if(fMaxIterTrackRef) { - if(++fCurrentIterTrackRef(fTrackReferences->UncheckedAt(fCurrentIterTrackRef)); - else - return 0; - } else { - AliWarning("Iterator called without calling FistTrackReference before"); - return 0; - } -} - - -//_______________________________________________________________________ -void AliModule::ResetTrackReferences() -{ - // - // Reset number of hits and the hits array - // - fMaxIterTrackRef = 0; - if (fTrackReferences) fTrackReferences->Clear(); -} - -//_____________________________________________________________________________ AliLoader* AliModule::MakeLoader(const char* /*topfoldername*/) { return 0x0; } -//PH Merged with v3-09-08 | -// V -//_____________________________________________________________________________ - -void AliModule::SetTreeAddress() -{ - // - // Set branch address for track reference Tree - // - - TBranch *branch; - - // Branch address for track reference tree - TTree *treeTR = TreeTR(); - - if (treeTR && fTrackReferences) { - branch = treeTR->GetBranch(GetName()); - if (branch) - { - AliDebug(3, Form("(%s) Setting for TrackRefs",GetName())); - branch->SetAddress(&fTrackReferences); - } - else - { - //can be called before MakeBranch and than does not make sense to issue the warning - AliDebug(1, Form("(%s) Failed for Track References. Can not find branch in tree.", - GetName())); - } - } -} //_____________________________________________________________________________ -AliTrackReference* AliModule::AddTrackReference(Int_t label){ +AliTrackReference* AliModule::AddTrackReference(Int_t label, Int_t id){ // // add a trackrefernce to the list - if (!fTrackReferences) { - AliError("Container trackrefernce not active"); - return 0; - } - Int_t nref = fTrackReferences->GetEntriesFast(); - TClonesArray &lref = *fTrackReferences; - return new(lref[nref]) AliTrackReference(label); -} - - -//_____________________________________________________________________________ -void AliModule::MakeBranchTR(Option_t */*option*/) -{ - // - // Makes branch in treeTR - // - AliDebug(2,Form("Making Track Refs. Branch for %s",GetName())); - TTree * tree = TreeTR(); - if (fTrackReferences && tree) - { - TBranch *branch = tree->GetBranch(GetName()); - if (branch) - { - AliDebug(2,Form("Branch %s is already in tree.",GetName())); - return; - } - - branch = tree->Branch(GetName(),&fTrackReferences); - } - else - { - AliDebug(2,Form("FAILED for %s: tree=%#x fTrackReferences=%#x", - GetName(),tree,fTrackReferences)); - } + return (gAlice->GetMCApp()->AddTrackReference(label, id)); } //_____________________________________________________________________________