fGlobalTransformation = new TGeoCombiTrans(0., 0., 0., rotGlobal);
}
+//_____________________________________________________________________________
+AliMUONv1::AliMUONv1(const AliMUONv1& right)
+ : AliMUON(right)
+{
+ // copy constructor (not implemented)
+
+ Fatal("AliMUONv1", "Copy constructor not provided.");
+}
+
//___________________________________________
AliMUONv1::~AliMUONv1()
{
delete fGlobalTransformation;
}
+//_____________________________________________________________________________
+AliMUONv1& AliMUONv1::operator=(const AliMUONv1& right)
+{
+ // assignement operator (not implemented)
+
+ // check assignement to self
+ if (this == &right) return *this;
+
+ Fatal("operator =", "Assignement operator not provided.");
+
+ return *this;
+}
+
//__________________________________________________
void AliMUONv1::CreateGeometry()
{
// Get envelope
AliMUONGeometryEnvelope* env = (AliMUONGeometryEnvelope*)kEnvelopes->At(k);
const TGeoCombiTrans* kEnvTrans = env->GetTransformation();
+ const char* only = "ONLY";
+ if (env->IsMANY()) only = "MANY";
if (env->IsVirtual() && env->GetConstituents()->GetEntriesFast() == 0 ) {
// virtual envelope + nof constituents = 0
(*geometry->GetTransformation()) *
(*kEnvTrans);
PlaceVolume(env->GetName(), geometry->GetMotherVolume(),
- env->GetCopyNo(), total, 0, 0);
+ env->GetCopyNo(), total, 0, 0, only);
}
if (env->IsVirtual() && env->GetConstituents()->GetEntriesFast() > 0 ) {
PlaceVolume(constituent->GetName(), geometry->GetMotherVolume(),
constituent->GetCopyNo(), total,
- constituent->GetNpar(), constituent->GetParam());
+ constituent->GetNpar(), constituent->GetParam(), only);
}
}
}
//______________________________________________________________________________
void AliMUONv1::PlaceVolume(const TString& name, const TString& mName,
Int_t copyNo, const TGeoHMatrix& matrix,
- Int_t npar, Double_t* param) const
+ Int_t npar, Double_t* param, const char* only) const
{
// Place the volume specified by name with the given transformation matrix
// ---
}
// Place the volume in ALIC
- if (npar == 0)
- gMC->Gspos(name, copyNo, mName, xyz[0], xyz[1], xyz[2] , krot, "ONLY");
+ if (npar == 0)
+ gMC->Gspos(name, copyNo, mName, xyz[0], xyz[1], xyz[2] , krot, only);
else
- gMC->Gsposp(name, copyNo, mName, xyz[0], xyz[1], xyz[2] , krot, "ONLY",
+ gMC->Gsposp(name, copyNo, mName, xyz[0], xyz[1], xyz[2] , krot, only,
param, npar);
}
if (idvol == -1) return;
+ // Filling TrackRefs file for MUON. Our Track references are the active volume of the chambers
+ if ( (gMC->IsTrackEntering() || gMC->IsTrackExiting() ) )
+ AddTrackReference(gAlice->GetMCApp()->GetCurrentTrackNumber());
+
if( gMC->IsTrackEntering() ) {
Float_t theta = fTrackMomentum.Theta();
if ((TMath::Pi()-theta)*kRaddeg>=15.) gMC->SetMaxStep(fStepMaxInActiveGas); // We use Pi-theta because z is negative