// These files are not in the same directory, so there's no reason to
// ask the preprocessor to search in the current directory for these
// files by including them with `#include "..."'
-// #include <math.h> // __CMATH__
+#include <cmath> // __CMATH__
#include <TClonesArray.h> // ROOT_TClonesArray
#include <TGeometry.h> // ROOT_TGeomtry
#include <TNode.h> // ROOT_TNode
#include <TTUBE.h> // ROOT_TTUBE
#include <TTree.h> // ROOT_TTree
#include <TBrowser.h> // ROOT_TBrowser
-// #include <TVirtualMC.h> // ROOT_TVirtualMC
+#include <TVirtualMC.h> // ROOT_TVirtualMC
#include <TVector2.h> // ROOT_TVector2
#include <TGeoManager.h> // ROOT_TGeoManager
#include <AliRun.h> // ALIRUN_H
#include <AliMC.h> // ALIMC_H
#include <AliMagF.h> // ALIMAGF_H
-#include <AliLog.h> // ALILOG_H
+// #include <AliLog.h> // ALILOG_H
+#include "AliFMDDebug.h" // Better debug macros
#include "AliFMD.h" // ALIFMD_H
#include "AliFMDDigit.h" // ALIFMDDIGIT_H
#include "AliFMDSDigit.h" // ALIFMDSDIGIT_H
//
// Default constructor for class AliFMD
//
- AliDebug(10, "\tDefault CTOR");
+ AliFMDDebug(10, ("\tDefault CTOR"));
fHits = 0;
fDigits = 0;
fIshunt = 0;
fBad = new TClonesArray("AliFMDHit");
}
-//____________________________________________________________________
-AliFMD::AliFMD(const AliFMD& other)
- : AliDetector(other),
- fSDigits(other.fSDigits),
- fNsdigits(other.fNsdigits),
- fDetailed(other.fDetailed),
- fUseOld(other.fUseOld),
- fUseAssembly(other.fUseAssembly),
- fBad(other.fBad)
-{
- // Copy constructor
-}
-
//____________________________________________________________________
AliFMD::AliFMD(const char *name, const char *title)
: AliDetector (name, title),
//
// Standard constructor for Forward Multiplicity Detector
//
- AliDebug(10, "\tStandard CTOR");
+ AliFMDDebug(10, ("\tStandard CTOR"));
fBad = new TClonesArray("AliFMDHit");
// Initialise Hit array
// CHC: What is this?
fIshunt = 0;
- SetMarkerColor(kRed);
- SetLineColor(kYellow);
+ //PH SetMarkerColor(kRed);
+ //PH SetLineColor(kYellow);
}
//____________________________________________________________________
}
}
-//____________________________________________________________________
-AliFMD&
-AliFMD::operator=(const AliFMD& other)
-{
- // Assignment operator
- AliDetector::operator=(other);
- fSDigits = other.fSDigits;
- fNsdigits = other.fNsdigits;
- fDetailed = other.fDetailed;
- fBad = other.fBad;
- return *this;
-}
//====================================================================
//
// TGeoManager, and registers the mediums here. Alas, it's not
// really that easy.
//
- AliDebug(10, "\tCreating materials");
+ AliFMDDebug(10, ("\tCreating materials"));
// Get pointer to geometry singleton object.
AliFMDGeometry* geometry = AliFMDGeometry::Instance();
geometry->Init();
{
// Initialize the detector
//
- AliDebug(1, "Initialising FMD detector object");
- // AliFMDGeometry* fmd = AliFMDGeometry::Instance();
+ AliFMDDebug(1, ("Initialising FMD detector object"));
+ TVirtualMC* mc = TVirtualMC::GetMC();
+ AliFMDGeometry* fmd = AliFMDGeometry::Instance();
+ const TArrayI& actGeo = fmd->ActiveIds();
+ TArrayI actVmc(actGeo.fN);
+ for (Int_t i = 0; i < actGeo.fN; i++) {
+ TGeoVolume *sens = gGeoManager->GetVolume(actGeo[i]);
+ if (!sens) {
+ AliError(Form("No TGeo volume for sensitive volume ID=%d",actGeo[i]));
+ continue;
+ }
+ actVmc[i] = mc->VolId(sens->GetName());
+ AliFMDDebug(1, ("Active vol id # %d: %d changed to %d",
+ i, actGeo[i], actVmc[i]));
+ }
+ fmd->SetActive(actVmc.fArray, actVmc.fN);
// fmd->InitTransformations();
}
//
// Build simple ROOT TNode geometry for event display. With the new
// geometry modeller, TGeoManager, this seems rather redundant.
- AliDebug(10, "\tCreating a simplified geometry");
+ AliFMDDebug(10, ("\tCreating a simplified geometry"));
AliFMDGeometry* fmd = AliFMDGeometry::Instance();
}
shape->DefineSection(0, -siThick / 2, 1, 0, 0);
shape->DefineSection(1, +siThick / 2, 1, 0, 0);
- shape->SetLineColor(GetLineColor());
+ shape->SetLineColor(kYellow); //PH kYellow is the default line color in FMD
TObjArray* rots = new TObjArray(nmod);
for (Int_t j = 0; j < nmod; j++) {
TNode* mnod = new TNode(name.Data(), title.Data(), rshape,
0, 0, rz - siThick / 2
+ TMath::Sign(offz,z), rot);
- mnod->SetLineColor(GetLineColor());
+ mnod->SetLineColor(kYellow); //PH kYellow is the default line color in FMD
fNodes->Add(mnod);
} // for (Int_t k = 0 ; ...)
} // for (Int_t j = 0 ; ...)
// than 1 keV - a MIP is 100 eV.
if (edep > absQ * absQ && poverm > 1) bad = kTRUE;
- AliFMDPoints* p1 = new AliFMDPoints(hit, GetMarkerColor());
+ AliFMDPoints* p1 = new AliFMDPoints(hit, kRed); //PH kRed is the default marker color in FMD
// AliPoints* p1 = new AliPoints();
// p1->SetMarkerColor(GetMarkerColor());
// p1->SetMarkerSize(GetMarkerSize());
{
// Draw a shaded view of the Forward multiplicity detector. This
// isn't really useful anymore.
- AliDebug(10, "\tDraw detector");
+ AliFMDDebug(10, ("\tDraw detector"));
}
//____________________________________________________________________
&& hit->Sector() == sector
&& hit->Strip() == strip
&& hit->Track() == track) {
- AliDebug(1, Form("already had a hit in FMD%d%c[%2d,%3d] for track # %d,"
+ AliFMDDebug(1, ("already had a hit in FMD%d%c[%2d,%3d] for track # %d,"
" adding energy (%f) to that hit (%f) -> %f",
detector, ring, sector, strip, track, edep, hit->Edep(),
hit->Edep() + edep));
new (a[fNdigits++])
AliFMDDigit(detector, ring, sector, strip, count1, count2, count3);
+ AliFMDDebug(15, ("Adding digit # %5d/%5d for FMD%d%c[%2d,%3d]=(%d,%d,%d)",
+ fNdigits-1, a.GetEntriesFast(),
+ detector, ring, sector, strip, count1, count2, count3));
+
}
//____________________________________________________________________
{
// Browse this object.
//
- AliDebug(30, "\tBrowsing the FMD");
+ AliFMDDebug(30, ("\tBrowsing the FMD"));
AliDetector::Browse(b);
b->Add(AliFMDGeometry::Instance());
}
// This code was made by Raffaele Grosso <rgrosso@mail.cern.ch>. I
// (cholm) will probably want to change it. For one, I think it
// should be the job of the geometry manager to deal with this.
+ AliFMDGeometry::Instance()->SetAlignableVolumes();
+#if 0
for(size_t f = 1; f <= 3; f++){ // Detector 1,2,3
for(size_t tb = 0; tb <2 ; tb++){ // Top/Bottom
char stb = tb == 0 ? 'T' : 'B';
}
}
}
-
+#endif
}
//___________________________________________________________________
//