36 #include <TObjArray.h> 37 #include <TClonesArray.h> 40 #include <TDirectory.h> 41 #include <TVirtualMC.h> 42 #include <TGeoManager.h> 54 #include "AliRawDataHeaderV3.h" 80 fCurrentIterTrackRef(0),
93 fIdtmed(new TArrayI(100)),
94 fIdmate(new TArrayI(100)),
100 fCurrentIterTrackRef(0),
114 AliWarning(Form(
"Module: %s already present at %d",name,
id));
126 for(Int_t i=0;i<100;i++) (*
fIdmate)[i]=(*fIdtmed)[i]=0;
139 if (modules) modules->Remove(
this);
150 Float_t z, Float_t dens, Float_t radl,
151 Float_t absl, Float_t *buf, Int_t nwbuf)
const 168 TString uniquename = GetName();
169 uniquename.Append(
"_");
170 uniquename.Append(name);
175 kmat = mat->GetUniqueID();
176 (*fIdmate)[imat]=kmat;
179 AliWarningF(
"Material %s not found in read geometry",uniquename.Data());
185 TVirtualMC::GetMC()->Material(kmat, uniquename.Data(),
187 radl, absl, buf, nwbuf);
188 (*fIdmate)[imat]=kmat;
195 Float_t &z, Float_t &dens, Float_t &radl,
212 Int_t kmat=(*fIdmate)[imat];
215 Double_t da, dz, ddens, dradl, dabsl;
216 TVirtualMC::GetMC()->GetMaterial(kmat, sname, da, dz, ddens, dradl, dabsl, par);
218 const char* chname = sname.Data();
219 strncpy(name, chname, strlen(chname)+1);
229 Float_t *z, Float_t dens, Int_t nlmat,
253 TString uniquename = GetName();
254 uniquename.Append(
"_");
255 uniquename.Append(name);
260 kmat = mat->GetUniqueID();
261 (*fIdmate)[imat]=kmat;
264 AliWarningF(
"Mixture %s not found in read geometry",uniquename.Data());
270 TVirtualMC::GetMC()->Mixture(kmat, uniquename.Data(), a, z,
272 (*fIdmate)[imat]=kmat;
279 Int_t isvol, Int_t ifield, Float_t fieldm,
280 Float_t tmaxfd, Float_t stemax, Float_t deemax,
281 Float_t epsil, Float_t stmin, Float_t *ubuf,
307 TString uniquename = GetName();
308 uniquename.Append(
"_");
309 uniquename.Append(name);
312 TGeoMedium *med =
gGeoManager->GetMedium(uniquename.Data());
315 (*fIdtmed)[numed]=kmed;
318 AliWarningF(
"Medium %s not found in read geometry",uniquename.Data());
322 TVirtualMC::GetMC()->Medium(kmed, uniquename.Data(), (*fIdmate)[nmat],
323 isvol, ifield, fieldm, tmaxfd, stemax,
324 deemax, epsil, stmin, ubuf, nbuf);
325 (*fIdtmed)[numed]=kmed;
332 Double_t theta2, Double_t phi2, Double_t theta3,
346 TVirtualMC::GetMC()->Matrix(nmat, theta1, phi1, theta2, phi2, theta3, phi3);
366 AliWarning(Form(
" %s still has to implement the AddAlignableVolumes method!",GetName()));
392 AliError(
"Can not get the run loader");
407 AliWarning(Form(
"Dummy version called for %s", GetName()));
412 fstream digitsFile(
GetLoader()->GetDigitsFileName(), ios::in);
413 if (!digitsFile)
return;
415 digitsFile.seekg(0, ios::end);
416 UInt_t size = digitsFile.tellg();
417 UInt_t ddlSize = 4 * (size / (4*nDDLs));
418 Char_t* buffer =
new Char_t[ddlSize+1];
420 for (Int_t iDDL = 0; iDDL < nDDLs; iDDL++) {
423 fstream rawFile(fileName, ios::out);
426 AliRawDataHeaderV3 header;
427 header.fSize = ddlSize +
sizeof(header);
428 rawFile.write((
char*) &header,
sizeof(header));
430 digitsFile.read(buffer, ddlSize);
431 rawFile.write(buffer, ddlSize);
static const char * DdlFileName(const char *detectorName, Int_t ddlIndex)
void AliMatrix(Int_t &nmat, Double_t theta1, Double_t phi1, Double_t theta2, Double_t phi2, Double_t theta3, Double_t phi3) const
virtual void AliMedium(Int_t numed, const char *name, Int_t nmat, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin, Float_t *ubuf=0, Int_t nbuf=0) const
virtual void AliMixture(Int_t imat, const char *name, Float_t *a, Float_t *z, Float_t dens, Int_t nlmat, Float_t *wmat) const
virtual AliLoader * MakeLoader(const char *topfoldername)
AliRunLoader * fRunLoader
for track refernce iterator routines
TString fileName(const char *dir, int runNumber, const char *da, int i, const char *type)
#define AliWarning(message)
static Float_t fgDensityFactor
input for sdigits -> digits
virtual void AliGetMaterial(Int_t imat, char *name, Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const
virtual void AliMaterial(Int_t imat, const char *name, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl, Float_t *buf=0, Int_t nwbuf=0) const
TGeoManager * gGeoManager
static AliSimulation * Instance()
virtual void Digits2Raw()
virtual Float_t ZMin() const
#define AliWarningF(message,...)
AliTrackReference * AddTrackReference(Int_t label, Int_t id=-999)
virtual Float_t ZMax() const
TArrayI * fIdtmed
cached MC instance (to avoid calls to thread_local gMC=TVirtualMC::GetMC())
Int_t GetModuleID(const char *name) const
virtual AliTrackReference * AddTrackReference(Int_t label, Int_t id=-999)
TArrayI * fIdmate
List of tracking medium numbers.
virtual AliLoader * GetLoader() const
virtual void AddAlignableVolumes() const
#define AliError(message)
static Int_t NumberOfDdls(const char *detectorName)
virtual Bool_t IsActive() const
void AddModule(AliModule *mod)
TObjArray * Modules() const