#include <TDirectory.h>
#include <TVirtualMC.h>
#include <TGeoManager.h>
+#include <TString.h>
#include "AliLog.h"
#include "AliConfig.h"
#include "AliRun.h"
#include "AliTrackReference.h"
#include "AliMC.h"
-#include "../RAW/AliRawDataHeader.h"
+#include "AliRawDataHeader.h"
+
+#include "AliDAQ.h"
ClassImp(AliModule)
fActive(0),
fHistograms(0),
fNodes(0),
- fDebug(0),
fEnable(1),
fTrackReferences(0),
fMaxIterTrackRef(0),
fActive(0),
fHistograms(new TList()),
fNodes(new TList()),
- fDebug(0),
fEnable(1),
fTrackReferences(new TClonesArray("AliTrackReference", 100)),
fMaxIterTrackRef(0),
fActive(0),
fHistograms(0),
fNodes(0),
- fDebug(0),
fEnable(0),
fTrackReferences(0),
fMaxIterTrackRef(0),
// nwbuf number of user words
//
Int_t kmat;
+ //Build the string uniquename as "DET_materialname"
TString uniquename = GetName();
uniquename.Append("_");
uniquename.Append(name);
+ //if geometry loaded from file only fill fIdmate, else create material too
if(gAlice->IsRootGeometry()){
TGeoMaterial *mat = gGeoManager->GetMaterial(uniquename.Data());
kmat = mat->GetUniqueID();
(*fIdmate)[imat]=kmat;
}
}
-
+
//_______________________________________________________________________
void AliModule::AliGetMaterial(Int_t imat, char* name, Float_t &a,
Float_t &z, Float_t &dens, Float_t &radl,
kmat=(*fIdmate)[imat];
gMC->Gfmate(kmat, name, a, z, dens, radl, absl, buf, nwbuf);
}
+
//_______________________________________________________________________
void AliModule::AliMixture(Int_t imat, const char *name, Float_t *a,
// wmat array of concentrations
//
Int_t kmat;
+ //Build the string uniquename as "DET_mixturename"
TString uniquename = GetName();
uniquename.Append("_");
uniquename.Append(name);
+ //if geometry loaded from file only fill fIdmate, else create mixture too
if(gAlice->IsRootGeometry()){
TGeoMaterial *mat = gGeoManager->GetMaterial(uniquename.Data());
kmat = mat->GetUniqueID();
(*fIdmate)[imat]=kmat;
}
}
-
+
//_______________________________________________________________________
void AliModule::AliMedium(Int_t numed, const char *name, Int_t nmat,
Int_t isvol, Int_t ifield, Float_t fieldm,
// = 3 constant magnetic field along z
//
Int_t kmed;
+ //Build the string uniquename as "DET_mediumname"
TString uniquename = GetName();
uniquename.Append("_");
uniquename.Append(name);
+ //if geometry loaded from file only fill fIdtmed, else create medium too
if(gAlice->IsRootGeometry()){
- TList *medialist = gGeoManager->GetListOfMedia();
- TIter next(medialist);
- TGeoMedium *med = 0;
- while((med = (TGeoMedium*) next())){
- if(!strcmp(uniquename.Data(),med->GetName())){
- kmed = med->GetId();
- (*fIdtmed)[numed]=kmed;
- break;
- }
- }
+ TGeoMedium *med = gGeoManager->GetMedium(uniquename.Data());
+ kmed = med->GetId();
+ (*fIdtmed)[numed]=kmed;
}else{
gMC->Medium(kmed, uniquename.Data(), (*fIdmate)[nmat], isvol, ifield,
- fieldm, tmaxfd, stemax, deemax, epsil, stmin, ubuf, nbuf);
+ fieldm, tmaxfd, stemax, deemax, epsil, stmin, ubuf, nbuf);
(*fIdtmed)[numed]=kmed;
}
}
-
+
//_______________________________________________________________________
void AliModule::AliMatrix(Int_t &nmat, Float_t theta1, Float_t phi1,
Float_t theta2, Float_t phi2, Float_t theta3,
// Called at finish primary
//
if (!fTrackReferences) return;
- for (Int_t i=0;i<fTrackReferences->GetEntries();i++){
+ Int_t nEntries = fTrackReferences->GetEntries();
+
+ for (Int_t i=0;i<nEntries;i++){
AliTrackReference * ref = dynamic_cast<AliTrackReference*>(fTrackReferences->UncheckedAt(i));
if (ref) {
Int_t newID = map[ref->GetTrack()];
if (newID>=0) ref->SetTrack(newID);
else {
- //ref->SetTrack(-1);
ref->SetBit(kNotDeleted,kFALSE);
fTrackReferences->RemoveAt(i);
}
}
//_____________________________________________________________________________
-void AliModule::AddTrackReference(Int_t label){
+AliTrackReference* AliModule::AddTrackReference(Int_t label){
//
// add a trackrefernce to the list
if (!fTrackReferences) {
AliError("Container trackrefernce not active");
- return;
+ return 0;
}
Int_t nref = fTrackReferences->GetEntriesFast();
TClonesArray &lref = *fTrackReferences;
- new(lref[nref]) AliTrackReference(label);
+ return new(lref[nref]) AliTrackReference(label);
}
AliWarning(Form("Dummy version called for %s", GetName()));
- const Int_t kNDetectors = 17;
- const char* kDetectors[kNDetectors] = {"TPC", "ITSSPD", "ITSSDD", "ITSSSD", "TRD", "TOF", "PHOS", "RICH", "EMCAL", "MUON", "MUTR", "ZDC", "PMD", "START", "VZERO", "CRT", "FMD"};
- const Int_t kDetectorDDLs[kNDetectors] = {216, 20, 12, 16, 18, 72, 20, 20, 22, 20, 2, 1, 6, 1, 1, 1, 3};
- Int_t nDDLs = 1;
- Int_t ddlOffset = 0;
- for (Int_t i = 0; i < kNDetectors; i++) {
- if (strcmp(GetName(), kDetectors[i]) == 0) {
- nDDLs = kDetectorDDLs[i];
- ddlOffset = 0x100 * i;
- }
- }
+ Int_t nDDLs = AliDAQ::NumberOfDdls(GetName());
if (!GetLoader()) return;
fstream digitsFile(GetLoader()->GetDigitsFileName(), ios::in);
for (Int_t iDDL = 0; iDDL < nDDLs; iDDL++) {
char fileName[20];
- sprintf(fileName, "%s_%d.ddl", GetName(), iDDL + ddlOffset);
+ strcpy(fileName,AliDAQ::DdlFileName(GetName(),iDDL));
fstream rawFile(fileName, ios::out);
if (!rawFile) return;
digitsFile.close();
delete[] buffer;
}
-
-
-//_____________________________________________________________________________
-Int_t AliModule::GetDebug() const
-{
- AliWarning("Don't use this method any more, use AliDebug instead");
- return 0;
-}