X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliModule.cxx;h=516192943dc20b79fee39a9087a4af9879fd7c1f;hb=51757634a3d954d243c4b5c45a7b23161a3fd55f;hp=321db45087926bc9a86c4db0ac555e15edecfcff;hpb=4787b401df39b2d87d1e8e0cc7cfbd7cb1299aa6;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliModule.cxx b/STEER/AliModule.cxx index 321db450879..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 ! @@ -114,40 +115,13 @@ AliModule::AliModule(const char* name,const char *title): gAlice->AddModule(this); - SetMarkerColor(3); + //PH SetMarkerColor(3); // // Clear space for tracking media and material indexes for(Int_t i=0;i<100;i++) (*fIdmate)[i]=(*fIdtmed)[i]=0; } -//_______________________________________________________________________ -AliModule::AliModule(const AliModule &mod): - TNamed(mod), - TAttLine(mod), - TAttMarker(mod), - AliRndm(mod), - fEuclidMaterial(""), - fEuclidGeometry(""), - fIdtmed(0), - fIdmate(0), - fLoMedium(0), - fHiMedium(0), - fActive(0), - fHistograms(0), - fNodes(0), - fEnable(0), - fTrackReferences(0), - fMaxIterTrackRef(0), - fCurrentIterTrackRef(0), - fRunLoader(0) -{ - // - // Copy constructor - // - mod.Copy(*this); -} - //_______________________________________________________________________ AliModule::~AliModule() { @@ -172,27 +146,12 @@ AliModule::~AliModule() delete fHistograms; fHistograms = 0; } - // Delete track references - if (fTrackReferences) { - fTrackReferences->Delete(); - delete fTrackReferences; - fTrackReferences = 0; - } // Delete TArray objects delete fIdtmed; delete fIdmate; } -//_______________________________________________________________________ -void AliModule::Copy(TObject & /* mod */) const -{ - // - // Copy *this onto mod, not implemented for AliModule - // - AliFatal("Not implemented!"); -} - //_______________________________________________________________________ void AliModule::Disable() { @@ -256,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; } } @@ -322,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; } } @@ -691,163 +654,23 @@ void AliModule::ReadEuclidMedia(const char* filnam) void AliModule::AddAlignableVolumes() const { // - AliWarning(Form(" %s still has to implement the AddAlignableVolumes method!",GetName())); + if (IsActive()) + AliWarning(Form(" %s still has to implement the AddAlignableVolumes method!",GetName())); } //_______________________________________________________________________ -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)); } //_____________________________________________________________________________