///////////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TObject
-# include <TObject.h>
-#endif
+# include <TObject.h>
+#endif
+#include <TVectorD.h>
class TTree;
class TProfile2D;
// //
///////////////////////////////////////////////////////////////////////////////
-#include "TObjArray.h"
+//#include "TObjArray.h"
+#include "TObject.h"
+//class TVectorD;
class TObjArray;
class TH2F;
class TTreeSRedirector;
virtual void Trigger();
private:
- TObjArray fTriggers;
+ TObjArray fTriggers; // array of all contributing triggers
ClassDef(AliTRDTrigger, 1);
#include "AliLoader.h"
#include "AliTRDTriggerL0.h"
-#include "AliTRDgtuSim.h"
-#include "AliTRDtrackGTU.h"
AliTRDTriggerL0::AliTRDTriggerL0()
{
void AliTRDTriggerL1::CreateInputs()
{
+ // create the trigger inputs for TRD
+
if (fInputs.GetEntriesFast() > 0)
return;
void AliTRDTriggerL1::Trigger()
{
+ // run the trigger algorithms
+
AliRunLoader *runLoader = AliRunLoader::Instance();
if (!runLoader)
return;
Int_t trackThreshold2 = 2;
// trigger algorithms to come, e.g.
- Bool_t triggered_highpt = kFALSE;
- Bool_t triggered_jet = kFALSE;
+ Bool_t triggeredHighPt = kFALSE;
+ Bool_t triggeredJet = kFALSE;
if (branch) {
AliTRDtrackGTU *trk = 0x0;
if (TMath::Abs(trk->GetPt()) > 3.0) {
AliDebug(1, Form("Found track in sector %2i, stack %i with pt = %3.1f, triggered",
trk->GetSector(), trk->GetStack(), trk->GetPt()));
- triggered_highpt = kTRUE;
+ triggeredHighPt = kTRUE;
}
}
}
for (Int_t iStack = 0; iStack < 90; iStack++) {
if ((nTracks1[iStack] >= trackThreshold1) || (nTracks2[iStack] >= trackThreshold2))
- triggered_jet = kTRUE;
+ triggeredJet = kTRUE;
}
}
else {
AliWarning("GTU Branch not found");
}
- if (triggered_highpt) {
+ if (triggeredHighPt) {
AliInfo("Fired high-pt trigger");
SetInput("1HSH");
}
- if (triggered_jet) {
+ if (triggeredJet) {
AliInfo("Fired jet trigger");
SetInput("1HJT");
}
fRefLayers[0] = 3;
fRefLayers[1] = 2;
fRefLayers[2] = 1;
- zChannelGen();
+ GenerateZChannelMap();
}
AliTRDgtuParam::~AliTRDgtuParam()
Int_t AliTRDgtuParam::GetRefLayer(Int_t refLayerIdx) const
{
+ // returns the reference layer indexed by refLayerIdx
+
if (refLayerIdx >= 0 && refLayerIdx < fgkNRefLayers)
return fRefLayers[refLayerIdx];
else
return -1;
}
-Int_t AliTRDgtuParam::zChannelGen()
+Int_t AliTRDgtuParam::GenerateZChannelMap()
{
// generate the z-channel map
// assuming that the tracks come from the vertex
for (Int_t iStack = 0; iStack < fGeo->Nstack(); iStack++) {
- Float_t X[6] = { 0 };
- Float_t Z[6][16] = {{ 0 }};
+ Float_t x[6] = { 0 };
+ Float_t z[6][16] = {{ 0 }};
Float_t dZ[6][16] = {{ 0 }};
for (Int_t iLayer = 0; iLayer < fGeo->Nlayer(); iLayer++) {
AliTRDpadPlane *pp = fGeo->GetPadPlane(iLayer, iStack);
- X[iLayer] = fGeo->GetTime0(iLayer) - fGeo->CdrHght(); // ???
+ x[iLayer] = fGeo->GetTime0(iLayer) - fGeo->CdrHght(); // ???
for (Int_t iRow = 0; iRow < fGeo->GetRowMax(iLayer, iStack, iSec); iRow++) {
- Z[iLayer][iRow] = pp->GetRowPos(iRow); // this is the right (pos. z-direction) border of the pad
+ z[iLayer][iRow] = pp->GetRowPos(iRow); // this is the right (pos. z-direction) border of the pad
dZ[iLayer][iRow] = pp->GetRowSize(iRow); // length of the pad in z-direction
for (Int_t i = 0; i < fgkNZChannels; i++)
fZSubChannel[iStack][i][iLayer][iRow] = 0;
for (Int_t fixRow = 0; fixRow < fGeo->GetRowMax(fgkFixLayer, iStack, iSec); fixRow++) {
- Double_t fixZmin = Z[fgkFixLayer][fixRow] - dZ[fgkFixLayer][fixRow];
- Double_t fixZmax = Z[fgkFixLayer][fixRow];
- Double_t fixX = X[fgkFixLayer] + 1.5; // ??? 1.5 from where?
+ Double_t fixZmin = z[fgkFixLayer][fixRow] - dZ[fgkFixLayer][fixRow];
+ Double_t fixZmax = z[fgkFixLayer][fixRow];
+ Double_t fixX = x[fgkFixLayer] + 1.5; // ??? 1.5 from where?
for (Int_t iLayer = 0; iLayer < fGeo->Nlayer(); iLayer++) {
Double_t leftZ, rightZ;
if (iLayer <= fgkFixLayer) {
- leftZ = (fixZmin + fVertexSize) * (X[iLayer] + 1.5) / fixX - fVertexSize;
- rightZ = (fixZmax - fVertexSize) * (X[iLayer] + 1.5) / fixX + fVertexSize;
+ leftZ = (fixZmin + fVertexSize) * (x[iLayer] + 1.5) / fixX - fVertexSize;
+ rightZ = (fixZmax - fVertexSize) * (x[iLayer] + 1.5) / fixX + fVertexSize;
}
else {
- leftZ = (fixZmin - fVertexSize) * (X[iLayer] + 1.5) / fixX + fVertexSize;
- rightZ = (fixZmax + fVertexSize) * (X[iLayer] + 1.5) / fixX - fVertexSize;
+ leftZ = (fixZmin - fVertexSize) * (x[iLayer] + 1.5) / fixX + fVertexSize;
+ rightZ = (fixZmax + fVertexSize) * (x[iLayer] + 1.5) / fixX - fVertexSize;
}
Double_t epsilon = 0.001;
for (Int_t iRow = 0; iRow < fGeo->GetRowMax(iLayer, iStack, iSec); iRow++) {
- if ( (Z[iLayer][iRow] ) > (leftZ + epsilon) &&
- (Z[iLayer][iRow] - dZ[iLayer][iRow] ) < (rightZ - epsilon) ) {
+ if ( (z[iLayer][iRow] ) > (leftZ + epsilon) &&
+ (z[iLayer][iRow] - dZ[iLayer][iRow] ) < (rightZ - epsilon) ) {
fZChannelMap[iStack][fixRow][iLayer][iRow] = 1;
if (fZSubChannel[iStack][fixRow % fgkNZChannels][iLayer][iRow] != 0) {
AliError("Collision in Z-Channel assignment occured! No reliable tracking!!!");
{
// get the constant for the calculation of alpha
- Int_t Ci = (Int_t) (GetChamberThickness() / fGeo->GetTime0(layer) * GetBinWidthY() / GetBinWidthdY() * (1 << (GetBitExcessAlpha() + GetBitExcessY() + 1)) );
- return Ci;
+ Int_t ci = (Int_t) (GetChamberThickness() / fGeo->GetTime0(layer) * GetBinWidthY() / GetBinWidthdY() * (1 << (GetBitExcessAlpha() + GetBitExcessY() + 1)) );
+ return ci;
}
Int_t AliTRDgtuParam::GetCiYProj(Int_t layer) const
{
// get the constant for the calculation of y_proj
- Float_t Xmid = (fGeo->GetTime0(0) + fGeo->GetTime0(fGeo->Nlayer()-1)) / 2.;
- Int_t Ci = (Int_t) (- (fGeo->GetTime0(layer) - Xmid) / GetChamberThickness() * GetBinWidthdY() / GetBinWidthY() * (1 << GetBitExcessYProj()) );
- return Ci;
+ Float_t xmid = (fGeo->GetTime0(0) + fGeo->GetTime0(fGeo->Nlayer()-1)) / 2.;
+ Int_t ci = (Int_t) (- (fGeo->GetTime0(layer) - xmid) / GetChamberThickness() * GetBinWidthdY() / GetBinWidthY() * (1 << GetBitExcessYProj()) );
+ return ci;
}
Int_t AliTRDgtuParam::GetYt(Int_t stack, Int_t layer, Int_t zrow) const
Bool_t AliTRDgtuParam::GenerateRecoCoefficients(Int_t trackletMask)
{
+ // calculate the coefficients for the straight line fit
+ // depending on the mask of contributing tracklets
+
fCurrTrackletMask = trackletMask;
TMatrix a(GetNLayers(), 3);
return ( (l1 >= 0) && (l2 >= 0) );
}
-Float_t AliTRDgtuParam::GetRadius(Int_t a, Float_t b, Float_t x1, Float_t x2)
+Float_t AliTRDgtuParam::GetRadius(Int_t a, Float_t b, Float_t x1, Float_t x2) const
{
// get the radius for the track
Float_t d = (1 + b * b /2 ) * (x2 - x1);
// --------------------------------------------------------
#include "TObject.h"
-#include "TVectorD.h"
class AliTRDgeometry;
static AliTRDgtuParam *Instance(); // Singleton
static void Terminate();
- static inline Int_t GetNLinks() { return fgkNLinks; }
- static inline Int_t GetNLayers() { return fgkNLinks/2; }
- static inline Int_t GetNZChannels() { return fgkNZChannels; }
- static inline Int_t GetNRefLayers() { return fgkNRefLayers; }
+ static Int_t GetNLinks() { return fgkNLinks; }
+ static Int_t GetNLayers() { return fgkNLinks/2; }
+ static Int_t GetNZChannels() { return fgkNZChannels; }
+ static Int_t GetNRefLayers() { return fgkNRefLayers; }
- static inline Float_t GetChamberThickness() { return 3.0; }
+ static Float_t GetChamberThickness() { return 3.0; }
// ----- Bin widths (granularity) -----
- static inline Float_t GetBinWidthY() { return fgkBinWidthY; }
- static inline Float_t GetBinWidthdY() { return fgkBinWidthdY; }
+ static Float_t GetBinWidthY() { return fgkBinWidthY; }
+ static Float_t GetBinWidthdY() { return fgkBinWidthdY; }
// ----- Bit Widths (used for internal representation) -----
- static inline Int_t GetBitWidthY() { return fgkBitWidthY; }
- static inline Int_t GetBitWidthdY() { return fgkBitWidthdY; }
- static inline Int_t GetBitWidthYProj() { return fgkBitWidthYProj; }
- static inline Int_t GetBitExcessY() { return fgkBitExcessY; }
- static inline Int_t GetBitExcessAlpha() { return fgkBitExcessAlpha; }
- static inline Int_t GetBitExcessYProj() { return fgkBitExcessYProj; }
+ static Int_t GetBitWidthY() { return fgkBitWidthY; }
+ static Int_t GetBitWidthdY() { return fgkBitWidthdY; }
+ static Int_t GetBitWidthYProj() { return fgkBitWidthYProj; }
+ static Int_t GetBitExcessY() { return fgkBitExcessY; }
+ static Int_t GetBitExcessAlpha() { return fgkBitExcessAlpha; }
+ static Int_t GetBitExcessYProj() { return fgkBitExcessYProj; }
AliTRDgeometry* GetGeo() const { return fGeo; }
Float_t GetVertexSize() const { return fVertexSize; }
Int_t GetRefLayer(Int_t refLayerIdx) const;
// Bool_t GetFitParams(TVectorD &rhs, Int_t k); // const
Bool_t GetIntersectionPoints(Int_t k, Float_t &x1, Float_t &x2); // const
- Float_t GetRadius(Int_t a, Float_t b, Float_t x1, Float_t x2); // const
+ Float_t GetRadius(Int_t a, Float_t b, Float_t x1, Float_t x2) const;
Bool_t IsInZChannel(Int_t stack, Int_t layer, Int_t zchannel, Int_t zpos) const;
void SetVertexSize(Float_t vertexsize) { fVertexSize = vertexsize; }
// z-channel map
- Int_t zChannelGen(); // could have different modes (for beam-beam, cosmics, ...)
+ Int_t GenerateZChannelMap(); // could have different modes (for beam-beam, cosmics, ...)
Bool_t DisplayZChannelMap(Int_t zchannel = -1, Int_t subch = 0) const;
// variables for pt-reconstruction (not used at the moment)
AliTRDgtuSim::~AliTRDgtuSim()
{
+ // destructor
+
if (fTrackletArray)
fTrackletArray->Delete();
delete fTrackletArray;
Bool_t AliTRDgtuSim::RunGTUFromTrackletFile(TString filename, Int_t event, Int_t noev)
{
+ // run the GTU from a file of tracklets
+ // used for comparison to VHDL simulation
+
AliInfo(Form("Running the GTU simulation on file: %s", filename.Data()));
ifstream input(filename.Data());
if (iEvent != iEventPrev || iStack != iStackPrev || iSec != iSecPrev) {
if(fTMU) {
- TList *ListOfTracks = new TList();
+ TList *listOfTracks = new TList();
fTMU->SetStack(iStackPrev);
fTMU->SetSector(iSecPrev);
- fTMU->RunTMU(ListOfTracks);
- AliDebug(1,Form("--- There are %i tracks. Writing ...", ListOfTracks->GetEntries()));
- WriteTracksToTree(ListOfTracks);
+ fTMU->RunTMU(listOfTracks);
+ AliDebug(1,Form("--- There are %i tracks. Writing ...", listOfTracks->GetEntries()));
+ WriteTracksToTree(listOfTracks);
fTMU->WriteTrackletsToTree(fTrackletTree);
- WriteTracksToDataFile(ListOfTracks, iEventPrev);
- if (ListOfTracks->GetEntries() > 0)
- AliDebug(2,Form(" %d GeV/c", ((AliTRDtrackGTU*) ListOfTracks->At(0))->GetPt() ));
+ WriteTracksToDataFile(listOfTracks, iEventPrev);
+ if (listOfTracks->GetEntries() > 0)
+ AliDebug(2,Form(" %d GeV/c", ((AliTRDtrackGTU*) listOfTracks->At(0))->GetPt() ));
delete fTMU;
fTMU = new AliTRDgtuTMU();
- delete ListOfTracks;
- ListOfTracks = 0x0;
+ delete listOfTracks;
+ listOfTracks = 0x0;
} else {
fTMU = new AliTRDgtuTMU();
}
}
if (fTMU && evcnt < noev) {
- TList *ListOfTracks = new TList();
+ TList *listOfTracks = new TList();
fTMU->SetStack(iStackPrev);
fTMU->SetSector(iSecPrev);
- fTMU->RunTMU(ListOfTracks);
- WriteTracksToTree(ListOfTracks);
+ fTMU->RunTMU(listOfTracks);
+ WriteTracksToTree(listOfTracks);
fTMU->WriteTrackletsToTree(fTrackletTree);
- WriteTracksToDataFile(ListOfTracks, iEventPrev);
+ WriteTracksToDataFile(listOfTracks, iEventPrev);
delete fTMU;
- delete ListOfTracks;
+ delete listOfTracks;
fTMU = 0x0;
}
Bool_t AliTRDgtuSim::RunGTU(AliLoader *loader, AliESDEvent *esd)
{
+ // run the GTU on tracklets taken from the loader
+ // if specified the GTU tracks are written to the ESD event
+
if (!LoadTracklets(loader)) {
AliError("Could not load the tracklets. Nothing done ...");
return kFALSE;
fTMU = 0x0;
}
- TList *ListOfTracks = new TList();
+ TList *listOfTracks = new TList();
TIter next(fTrackletArray);
AliTRDtrackletBase *trkl;
if(fTMU) {
fTMU->SetStack(iStackPrev);
fTMU->SetSector(iSecPrev);
- fTMU->RunTMU(ListOfTracks);
- WriteTracksToTree(ListOfTracks);
+ fTMU->RunTMU(listOfTracks);
+ WriteTracksToTree(listOfTracks);
fTMU->WriteTrackletsToTree(fTrackletTree);
- WriteTracksToESD(ListOfTracks, esd);
+ WriteTracksToESD(listOfTracks, esd);
fTMU->Reset();
- ListOfTracks->Delete();
+ listOfTracks->Delete();
} else {
fTMU = new AliTRDgtuTMU();
}
if (fTMU) {
fTMU->SetStack(iStackPrev);
fTMU->SetSector(iSecPrev);
- fTMU->RunTMU(ListOfTracks);
- WriteTracksToTree(ListOfTracks);
+ fTMU->RunTMU(listOfTracks);
+ WriteTracksToTree(listOfTracks);
fTMU->WriteTrackletsToTree(fTrackletTree);
- WriteTracksToESD(ListOfTracks, esd);
+ WriteTracksToESD(listOfTracks, esd);
delete fTMU;
fTMU = 0x0;
- ListOfTracks->Delete();
+ listOfTracks->Delete();
}
- delete ListOfTracks;
+ delete listOfTracks;
return kTRUE;
}
-Bool_t AliTRDgtuSim::LoadTracklets(AliLoader *loader)
+Bool_t AliTRDgtuSim::LoadTracklets(AliLoader *const loader)
{
+ // load the tracklets using the given loader
+
AliDebug(1,"Loading tracklets ...");
if (!loader) {
return kTRUE;
}
-Bool_t AliTRDgtuSim::WriteTracksToDataFile(TList *ListOfTracks, Int_t event)
+Bool_t AliTRDgtuSim::WriteTracksToDataFile(TList *listOfTracks, Int_t event)
{
+ // write the found tracks to a data file
+ // used for comparison to VHDL simulation
+
Int_t sm = 0;
Int_t stack = 0;
FILE *out;
out = fopen("test.data", "a");
- AliDebug(1,Form("%i tracks found in event %i", ListOfTracks->GetSize(), event));
+ AliDebug(1,Form("%i tracks found in event %i", listOfTracks->GetSize(), event));
fprintf(out, "0 %5i %2i %i 00000000\n", event, sm, stack);
- for (Int_t i = 0; i < ListOfTracks->GetSize(); i++) {
- AliTRDtrackGTU *trk = (AliTRDtrackGTU*) ListOfTracks->At(i);
+ for (Int_t i = 0; i < listOfTracks->GetSize(); i++) {
+ AliTRDtrackGTU *trk = (AliTRDtrackGTU*) listOfTracks->At(i);
sm = trk->GetSector();
stack = trk->GetStack();
fprintf(out, "1 %5i %2i %2i %3i %3i %3i %3i %3i %3i %3i %4i %f\n", event, sm, stack, trk->GetTrackletMask(),
return kTRUE;
}
-Bool_t AliTRDgtuSim::WriteTracksToTree(TList *ListOfTracks, Int_t /*event*/)
+Bool_t AliTRDgtuSim::WriteTracksToTree(TList *listOfTracks, Int_t /*event*/)
{
- AliDebug(1,Form("Writing %i tracks to the tree...", ListOfTracks->GetEntries()));
+ // write the tracks to the tree for intermediate storage
- if (!ListOfTracks)
+ AliDebug(1,Form("Writing %i tracks to the tree...", listOfTracks->GetEntries()));
+
+ if (!listOfTracks)
return kFALSE;
- if (ListOfTracks->GetEntries() <= 0)
+ if (listOfTracks->GetEntries() <= 0)
return kTRUE;
if (!fTrackTree) {
branch = fTrackTree->Branch("TRDgtuTrack", "AliTRDtrackGTU", &trk, 32000, 99);
}
- TIter next(ListOfTracks);
+ TIter next(listOfTracks);
while ((trk = (AliTRDtrackGTU*) next())) {
trk->CookLabel();
branch->SetAddress(&trk);
return kTRUE;
}
-Bool_t AliTRDgtuSim::WriteTreesToFile() {
+Bool_t AliTRDgtuSim::WriteTreesToFile() const {
+ // write the trees holding tracklets and tracks to file
+
TFile *f = TFile::Open("TRD.GtuTracking.root", "RECREATE");
f->cd();
if (fTrackTree)
return kTRUE;
}
-Bool_t AliTRDgtuSim::WriteTracksToESD(TList *ListOfTracks, AliESDEvent *esd)
+Bool_t AliTRDgtuSim::WriteTracksToESD(const TList * const listOfTracks, AliESDEvent *esd)
{
+ // fill the found tracks to the given ESD event
+
if (esd) {
- TIter next(ListOfTracks);
+ TIter next(listOfTracks);
while (AliTRDtrackGTU *trk = (AliTRDtrackGTU*) next()) {
AliESDTrdTrack *trdtrack = trk->CreateTrdTrack();
esd->AddTrdTrack(trdtrack);
Bool_t AliTRDgtuSim::WriteTracksToLoader()
{
+ // write the GTU tracks to the dedicated loader
+ // these tracks contain more information than the ones in the ESD
+
if (!fTrackTree) {
AliError("No track tree found!");
return kFALSE;
AliTRDgtuSim(AliRunLoader *rl = 0x0);
~AliTRDgtuSim();
- Bool_t LoadTracklets(AliLoader *loader);
+ Bool_t LoadTracklets(AliLoader * const loader);
Bool_t RunGTU(AliLoader *loader, AliESDEvent *esd = 0x0);
Bool_t RunGTUFromTrackletFile(TString filename, Int_t event, Int_t noev = 1);
TTree* GetTreeOfTracks() { return fTrackTree; }
- Bool_t WriteTracksToTree(TList *ListOfTracks, Int_t event = 0);
- Bool_t WriteTracksToDataFile(TList *ListOfTracks, Int_t event);
- Bool_t WriteTreesToFile();
- Bool_t WriteTracksToESD(TList *ListOfTracks, AliESDEvent *esd);
+ Bool_t WriteTracksToTree(TList *listOfTracks, Int_t event = 0);
+ Bool_t WriteTracksToDataFile(TList *listOfTracks, Int_t event);
+ Bool_t WriteTreesToFile() const;
+ Bool_t WriteTracksToESD(const TList *const listOfTracks, AliESDEvent *esd);
Bool_t WriteTracksToLoader();
protected:
fStack(-1),
fSector(-1)
{
+ // constructor which initializes the position information of the TMU
+
fGtuParam = AliTRDgtuParam::Instance();
fTracklets = new TObjArray*[fGtuParam->GetNLayers()];
fZChannelTracklets = new TList*[fGtuParam->GetNLayers()];
AliTRDgtuTMU::~AliTRDgtuTMU()
{
+ // destructor
+
for (Int_t zch = 0; zch < fGtuParam->GetNZChannels(); zch++) {
delete [] fTracks[zch];
}
// calculation of track parameteres (pt, deflection, ???)
if (fStack < 0 || fSector < 0) {
- AliError("No valid stack/sector set for this TMU! Tracking aborted!");
+ AliError("No valid stack/sector set for this TMU! No tracking!");
return kFALSE;
}
Int_t *incprime = new Int_t[fGtuParam->GetNLayers()];
// ----- signals within current layer -----
- Int_t Yplus;
- Int_t Yminus;
- Int_t YBplus;
- Int_t YBminus;
- Int_t Alphaplus;
- Int_t Alphaminus;
- Int_t NHits;
- Int_t NUnc;
- Int_t NWayBeyond;
+ Int_t yPlus;
+ Int_t yMinus;
+ Int_t ybPlus;
+ Int_t ybMinus;
+ Int_t alphaPlus;
+ Int_t alphaMinus;
+ Int_t nHits;
+ Int_t nUnc;
+ Int_t nWayBeyond;
AliTRDtrackletGTU *trkRA = 0x0; // reference tracklet A
AliTRDtrackletGTU *trkRB = 0x0; // reference tracklet B
trkRB = (AliTRDtrackletGTU*) fZChannelTracklets[reflayer][zch].At(ptrB[reflayer]);
AliDebug(10,Form("ptrRA: %i, ptrRB: %i", ptrA[reflayer], ptrB[reflayer]));
- Yplus = trkRA->GetYProj() + fGtuParam->GetDeltaY();
- Yminus = trkRA->GetYProj() - fGtuParam->GetDeltaY();
- Alphaplus = trkRA->GetAlpha() + fGtuParam->GetDeltaAlpha();
- Alphaminus = trkRA->GetAlpha() - fGtuParam->GetDeltaAlpha();
+ yPlus = trkRA->GetYProj() + fGtuParam->GetDeltaY();
+ yMinus = trkRA->GetYProj() - fGtuParam->GetDeltaY();
+ alphaPlus = trkRA->GetAlpha() + fGtuParam->GetDeltaAlpha();
+ alphaMinus = trkRA->GetAlpha() - fGtuParam->GetDeltaAlpha();
if (trkRB) {
- YBplus = trkRB->GetYProj() + fGtuParam->GetDeltaY();
- YBminus = trkRB->GetYProj() - fGtuParam->GetDeltaY();
+ ybPlus = trkRB->GetYProj() + fGtuParam->GetDeltaY();
+ ybMinus = trkRB->GetYProj() - fGtuParam->GetDeltaY();
}
else { // irrelevant (should be, is it?)
- YBplus = trkRA->GetYProj() + fGtuParam->GetDeltaY();
- YBminus = trkRA->GetYProj() - fGtuParam->GetDeltaY();
+ ybPlus = trkRA->GetYProj() + fGtuParam->GetDeltaY();
+ ybMinus = trkRA->GetYProj() - fGtuParam->GetDeltaY();
}
- NHits = 0;
- NUnc = 0;
- NWayBeyond = 0;
+ nHits = 0;
+ nUnc = 0;
+ nWayBeyond = 0;
for (Int_t layer = 0; layer < fGtuParam->GetNLayers(); layer++) {
bHitA[layer] = bHitB[layer] = bAligned[layer] = kFALSE;
if (layer == reflayer) {
bHitA[layer] = kTRUE;
bAligned[layer] = kTRUE;
- NHits++;
+ nHits++;
continue;
}
bAlignedB[layer] = kFALSE;
if (trkA) {
- bHitA[layer] = ( !(trkA->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() < Yminus) ) &&
- !(trkA->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() > Yplus) ) &&
- !(trkA->GetAlpha() < Alphaminus) &&
- !(trkA->GetAlpha() > Alphaplus) );
- bAlignedA[layer] = !(trkA->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() < Yminus) );
+ bHitA[layer] = ( !(trkA->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() < yMinus) ) &&
+ !(trkA->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() > yPlus) ) &&
+ !(trkA->GetAlpha() < alphaMinus) &&
+ !(trkA->GetAlpha() > alphaPlus) );
+ bAlignedA[layer] = !(trkA->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() < yMinus) );
}
else {
bHitA[layer] = 0;
}
if (trkB) {
- bHitB[layer] = ( !(trkB->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() < Yminus) ) &&
- !(trkB->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() > Yplus) ) &&
- !(Alphaminus > trkB->GetAlpha()) &&
- !(Alphaplus > trkB->GetAlpha()) );
- bAlignedB[layer] = (trkB->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() > Yplus) );
+ bHitB[layer] = ( !(trkB->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() < yMinus) ) &&
+ !(trkB->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() > yPlus) ) &&
+ !(alphaMinus > trkB->GetAlpha()) &&
+ !(alphaPlus > trkB->GetAlpha()) );
+ bAlignedB[layer] = (trkB->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() > yPlus) );
}
else {
bHitB[layer] = 0;
// bAligned[layer] = bAlignedA[layer]; //???
if (bAligned[layer] && (bHitA[layer] || bHitB[layer]) )
- NHits++;
+ nHits++;
else if (!bAligned[layer] )
- NUnc++;
+ nUnc++;
if (trkRB) {
if (trkA) {
- if ((trkA->GetSubChannel(zch) > trkRB->GetSubChannel(zch)) || (trkA->GetSubChannel(zch) == trkRB->GetSubChannel(zch) && trkA->GetYProj() > YBplus) )
- NWayBeyond++;
+ if ((trkA->GetSubChannel(zch) > trkRB->GetSubChannel(zch)) || (trkA->GetSubChannel(zch) == trkRB->GetSubChannel(zch) && trkA->GetYProj() > ybPlus) )
+ nWayBeyond++;
}
else
- NWayBeyond++;
+ nWayBeyond++;
}
// pre-calculation for the layer shifting (alignment w. r. t. trkRB)
if (trkA) {
if(trkRB) {
- if ((trkA->GetSubChannel(zch) < trkRB->GetSubChannel(zch)) || (trkA->GetSubChannel(zch) == trkRB->GetSubChannel(zch) && trkA->GetYProj() < YBminus )) // could trkA be aligned for trkRB
+ if ((trkA->GetSubChannel(zch) < trkRB->GetSubChannel(zch)) || (trkA->GetSubChannel(zch) == trkRB->GetSubChannel(zch) && trkA->GetYProj() < ybMinus )) // could trkA be aligned for trkRB
incprime[layer] = 1;
else
incprime[layer] = 0;
if (trkB) {
if (trkRB) {
- if ((trkB->GetSubChannel(zch) < trkRB->GetSubChannel(zch)) || (trkB->GetSubChannel(zch) == trkRB->GetSubChannel(zch) && trkB->GetYProj() < YBminus )) // could trkB be aligned for trkRB
+ if ((trkB->GetSubChannel(zch) < trkRB->GetSubChannel(zch)) || (trkB->GetSubChannel(zch) == trkRB->GetSubChannel(zch) && trkB->GetYProj() < ybMinus )) // could trkB be aligned for trkRB
incprime[layer] = 2;
}
else
}
} // end of loop over layers
- AliDebug(5,Form("logic calculation finished, Nhits: %i", NHits));
+ AliDebug(5,Form("logic calculation finished, Nhits: %i", nHits));
- if (NHits >= 4) {
+ if (nHits >= 4) {
// ----- track registration -----
AliDebug(1,"***** TMU: Track found *****");
AliTRDtrackGTU *track = new AliTRDtrackGTU();
}
}
- if ( (NUnc != 0) && (NUnc + NHits >= 4) ) // could this position of the reference layer give some track //??? special check in case of hit?
+ if ( (nUnc != 0) && (nUnc + nHits >= 4) ) // could this position of the reference layer give some track //??? special check in case of hit?
inc[reflayer] = 0;
- else if (NWayBeyond > 2) // no track possible for both reference tracklets
+ else if (nWayBeyond > 2) // no track possible for both reference tracklets
inc[reflayer] = 2;
else
inc[reflayer] = 1;
trkB = (AliTRDtrackletGTU*) fZChannelTracklets[layer][zch].At(ptrB[layer]);
if (trkA) {
- if ( !(trkA->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() < Yminus) ) &&
- !(trkA->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() > Yplus ) ) ) // trkA could hit trkRA
+ if ( !(trkA->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() < yMinus) ) &&
+ !(trkA->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkA->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkA->GetYProj() > yPlus ) ) ) // trkA could hit trkRA
inc[layer] = 0;
else if (trkB) {
- if ( trkB->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() < Yminus) )
+ if ( trkB->GetSubChannel(zch) < trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() < yMinus) )
inc[layer] = 2;
- else if ( !(trkB->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() > Yplus) ) )
+ else if ( !(trkB->GetSubChannel(zch) > trkRA->GetSubChannel(zch) || (trkB->GetSubChannel(zch) == trkRA->GetSubChannel(zch) && trkB->GetYProj() > yPlus) ) )
inc[layer] = 1;
else
inc[layer] = incprime[layer];
Bool_t AliTRDgtuTMU::RunTrackReconstruction(TList* ListOfTracks)
{
+ // run the track reconstruction for all tracks in the list
+
TIter next(ListOfTracks);
while (AliTRDtrackGTU *track = (AliTRDtrackGTU*) next()) {
CalculateTrackParams(track);
Bool_t AliTRDgtuTMU::CalculatePID(AliTRDtrackGTU *track)
{
+ // calculate PID for the given track
if (!track) {
AliError("No track to calculate!");
return kFALSE;
nTracklets++;
}
track->SetPID(pidSum/nTracklets);
+ return kTRUE;
}
Bool_t AliTRDgtuTMU::CalculateTrackParams(AliTRDtrackGTU *track)
Bool_t AliTRDgtuTMU::Uniquifier(TList *inlist, TList *outlist)
{
+ // remove multiple occurences of the same track
+
TIter next(inlist);
AliTRDtrackGTU *trkStage0 = 0x0;
AliTRDtrackGTU *trkStage1 = 0x0;
do {
trkStage0 = (AliTRDtrackGTU*) next();
- Bool_t tracks_equal = kFALSE;
+ Bool_t tracksEqual = kFALSE;
if (trkStage0 != 0 && trkStage1 != 0) {
for (Int_t layer = 0; layer < fGtuParam->GetNLayers(); layer++) {
if (trkStage0->GetTrackletIndex(layer) != -1 && trkStage0->GetTrackletIndex(layer) == trkStage1->GetTrackletIndex(layer)) {
- tracks_equal = kTRUE;
+ tracksEqual = kTRUE;
break;
}
}
}
- if (tracks_equal) {
+ if (tracksEqual) {
if (trkStage0->GetNTracklets() > trkStage1->GetNTracklets())
trkStage1 = trkStage0;
}
}
}
-void AliTRDmcmSim::DumpData( char *f, char *target )
+void AliTRDmcmSim::DumpData( const char * const f, const char * const target )
{
//
// Dump data stored (for debugging).
// calculate MC label
Int_t mcLabel = -1;
- Int_t nHits = 0;
Int_t nHits0 = 0;
Int_t nHits1 = 0;
if (fDigitsManager) {
Int_t AliTRDmcmSim::GetPID(Float_t q0, Float_t q1)
{
+ // get PID from accumulated charges q0 and q1
+
Int_t binQ0 = (Int_t) (q0 * fgPidNBinsQ0) + 1;
Int_t binQ1 = (Int_t) (q1 * fgPidNBinsQ1) + 1;
binQ0 = binQ0 >= fgPidNBinsQ0 ? fgPidNBinsQ0-1 : binQ0;
void AliTRDmcmSim::SetPIDlut(Int_t *lut, Int_t nbinsq0, Int_t nbinsq1)
{
+ // set a user-defined PID LUT
+
if (fgPidLutDelete)
delete [] fgPidLut;
void AliTRDmcmSim::SetPIDlut(TH2F *lut)
{
+ // set a user-defined PID LUT from a 2D histogram
+
if (fgPidLutDelete)
delete [] fgPidLut;
void AliTRDmcmSim::SetPIDlutDefault()
{
+ // use the default PID LUT
+
if (fgPidLutDelete )
delete [] fgPidLut;
Bool_t AliTRDmcmSim::StoreTracklets()
{
+ // store the found tracklets via the loader
+
if (fTrackletArray->GetEntriesFast() == 0)
return kTRUE;
Bool_t LoadMCM(AliRunLoader* const runloader, Int_t det, Int_t rob, Int_t mcm);
void NoiseTest(Int_t nsamples, Int_t mean, Int_t sigma, Int_t inputGain = 1, Int_t inputTail = 2);
- Int_t GetDataRaw(Int_t iadc, Int_t timebin) { return (fADCR[iadc][timebin] >> 2); } // Get unfiltered ADC data
- Int_t GetDataFiltered(Int_t iadc, Int_t timebin) { return (fADCF[iadc][timebin] >> 2); } // Get filtered ADC data
+ Int_t GetDataRaw(Int_t iadc, Int_t timebin) const { return (fADCR[iadc][timebin] >> 2); } // Get unfiltered ADC data
+ Int_t GetDataFiltered(Int_t iadc, Int_t timebin) const { return (fADCF[iadc][timebin] >> 2); } // Get filtered ADC data
void SetData(Int_t iadc, Int_t *adc); // Set ADC data with array
void SetData(Int_t iadc, Int_t it, Int_t adc ); // Set ADC data
void SetData(AliTRDarrayADC *adcArray,
// data display
void Print(Option_t* const option="") const; // print stored data to stdout
void Draw(Option_t* const option =""); // draw data (ADC data, hits and tracklets)
- void DumpData( char *f, char *target ); // Dump data stored (only for debugging)
+ void DumpData( const char *const f, const char *const target ); // Dump data stored (only for debugging)
protected:
Bool_t CheckInitialized(); // Check whether the class is initialized
AliTRDmcmSim(const AliTRDmcmSim &m); // not implemented
AliTRDmcmSim &operator=(const AliTRDmcmSim &m); // not implemented
- static Bool_t fgApplyCut;
+ static Bool_t fgApplyCut; // apply cut on deflection length
- static Int_t fgAddBaseline;
+ static Int_t fgAddBaseline; // add baseline to the ADC values
- static Float_t fgChargeNorm;
- static Int_t fgPidNBinsQ0;
- static Int_t fgPidNBinsQ1;
- static Int_t fgPidLutDefault[40][50];
- static Int_t *fgPidLut;
- static Bool_t fgPidLutDelete;
+ static Float_t fgChargeNorm; // normalization factor for charge (for PID)
+ static Int_t fgPidNBinsQ0; // number of bins in the PID LUT for Q0
+ static Int_t fgPidNBinsQ1; // number of bins in the PID LUT for Q1
+ static Int_t fgPidLutDefault[40][50]; // the default PID LUT
+ static Int_t *fgPidLut; // pointer to user defined PID LUT
+ static Bool_t fgPidLutDelete; // owns the LUT
ClassDef(AliTRDmcmSim,4)
};
AliTRDtrackletGTU& AliTRDtrackletGTU::operator=(const AliTRDtrackletGTU &rhs)
{
+ // assignment operator
+
if (&rhs != this) {
fTracklet = rhs.fTracklet;
for (Int_t zch = 0; zch < fGtuParam->GetNZChannels(); zch++)
fSubChannel[zch] = subch;
}
-Int_t AliTRDtrackletGTU::GetSubChannel(Int_t zch)
+Int_t AliTRDtrackletGTU::GetSubChannel(Int_t zch) const
{
// get the subchannel in the given z-channel
return fSubChannel[zch];
Int_t AliTRDtrackletGTU::GetLabel() const
{
+ // get the MC label for the tracklet, -1 if none
+
if ( fTracklet->IsA() == TClass::GetClass("AliTRDtrackletMCM"))
return ((AliTRDtrackletMCM*) fTracklet)->GetLabel();
else
Int_t GetYbin() const { return fTracklet->GetYbin(); }
Int_t GetdY() const { return fTracklet->GetdY(); }
Int_t GetZbin() const { return fTracklet->GetZbin(); }
- Int_t GetPID() const { return fTracklet->GetPID(); }
+ Int_t GetPID() const { return ((Int_t) (255 * fTracklet->GetPID())); }
Double_t GetPID(Int_t is) const { return fTracklet->GetPID(is); }
// ----- Getters for calculated properties -----
Int_t GetYProj() const { return fYProj; }
Int_t GetAlpha() const { return fAlpha; }
Int_t GetYPrime() const { return fYPrime; }
- Int_t GetSubChannel(Int_t zch);
+ Int_t GetSubChannel(Int_t zch) const;
// ----- Getters for offline corresponding values -----
Bool_t CookPID() { return kFALSE; }
fROB(-1),
fQ0(0),
fQ1(0),
+ fNHits(0),
+ fNHits0(0),
+ fNHits1(0),
fLabel(-1)
{
fGeo = new AliTRDgeometry();
fROB(-1),
fQ0(0),
fQ1(0),
+ fNHits(0),
+ fNHits0(0),
+ fNHits1(0),
fLabel(-1)
{
fGeo = new AliTRDgeometry();
fROB(rob),
fQ0(0),
fQ1(0),
+ fNHits(0),
+ fNHits0(0),
+ fNHits1(0),
fLabel(-1)
{
fGeo = new AliTRDgeometry();
fROB(rhs.fROB),
fQ0(rhs.fQ0),
fQ1(rhs.fQ1),
+ fNHits(rhs.fNHits),
+ fNHits0(rhs.fNHits0),
+ fNHits1(rhs.fNHits1),
fLabel(rhs.fLabel)
{
fGeo = new AliTRDgeometry();
// ----- Getters for offline corresponding values -----
Bool_t CookPID() { return kFALSE; }
- Double_t GetPID(Int_t /* is */) const { return 0; }
+ Double_t GetPID(Int_t /* is */) const { return GetPID()/255.; }
Int_t GetDetector() const { return fHCId / 2; }
Int_t GetHCId() const { return fHCId; }
Float_t GetdYdX() const { return (GetdY() * 140e-4 / 3.); }
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+////////////////////////////////////////////////////////////////////////////
+// //
+// TRAP config //
+// //
+// Author: J. Klein (Jochen.Klein@cern.ch) //
+// //
+////////////////////////////////////////////////////////////////////////////
+
#include "AliLog.h"\r
\r
#include "AliTRDgeometry.h"\r
for(Int_t linkPair=0; linkPair<fgkMaxLinkPairs; linkPair++) {\r
if(ExtAliToAli(extali, linkPair, rocType)!=0) {\r
Int_t i=0;\r
- while(fMcmlist[i] != -1 && i<fMcmlistSize) {\r
+ while(fMcmlist[i] != -1 && i<fgkMcmlistSize) {\r
if(fMcmlist[i]==127)\r
SetTrapReg( (TrapReg_t) mcmReg, data, det);\r
else\r
}\r
\r
\r
-Short_t AliTRDtrapConfig::GetRobAB( UShort_t robsel, UShort_t linkpair )\r
+Short_t AliTRDtrapConfig::GetRobAB( UShort_t robsel, UShort_t linkpair ) const\r
{\r
// Converts the ROB part of the extended ALICE ID to robs\r
\r
}\r
\r
\r
-AliTRDtrapConfig::TrapReg_t AliTRDtrapConfig::GetRegByAddress(Int_t address)\r
+AliTRDtrapConfig::TrapReg_t AliTRDtrapConfig::GetRegByAddress(Int_t address) const\r
{\r
+ // get register by its address
+ // used for reading of configuration data as sent to real FEE
+
TrapReg_t mcmReg = kLastReg;\r
Int_t reg = 0;\r
do {\r
- if(fRegs[reg].addr == address)\r
+ if(fRegs[reg].fAddr == address)\r
mcmReg = (TrapReg_t) reg;\r
reg++;\r
} while (mcmReg == kLastReg && reg < kLastReg);\r
#ifndef ALITRDTRAPCONFIG_H\r
#define ALITRDTRAPCONFIG_H\r
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+//
+// Class holding the configuration of the tracklet processor
+// in the TRD FEE
+//
+
\r
#include <TObject.h>\r
#include <TString.h>\r
kDMDELS, \r
kLastReg }; // enum of all TRAP registers, to be used for access to them\r
\r
- inline const char* GetRegName(TrapReg_t reg) { return fRegs[reg].name.Data(); }\r
- inline UShort_t GetRegAddress(TrapReg_t reg) { return fRegs[reg].addr; }\r
- inline UShort_t GetRegNBits(TrapReg_t reg) { return fRegs[reg].nbits; }\r
- inline UInt_t GetRegResetValue(TrapReg_t reg) { return fRegs[reg].res_val; }\r
+ const char* GetRegName(TrapReg_t reg) const { return fRegs[reg].fName.Data(); }\r
+ UShort_t GetRegAddress(TrapReg_t reg) const { return fRegs[reg].fAddr; }\r
+ UShort_t GetRegNBits(TrapReg_t reg) const { return fRegs[reg].fNbits; }\r
+ UInt_t GetRegResetValue(TrapReg_t reg) const { return fRegs[reg].fResetValue; }\r
\r
- TrapReg_t GetRegByAddress(Int_t address);\r
+ TrapReg_t GetRegByAddress(Int_t address) const;\r
\r
Int_t GetTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);\r
Bool_t PrintTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);\r
static AliTRDtrapConfig *fgInstance; // pointer to instance (singleton)\r
\r
struct SimpleReg_t {\r
- TString name; // Name of the register\r
- UShort_t addr; // Address in GIO of TRAP\r
- UShort_t nbits; // Number of bits, from 1 to 32\r
- UInt_t res_val; // reset value\r
+ TString fName; // Name of the register\r
+ UShort_t fAddr; // Address in GIO of TRAP\r
+ UShort_t fNbits; // Number of bits, from 1 to 32\r
+ UInt_t fResetValue; // reset value\r
SimpleReg_t(char *nnn = 0, UShort_t a = 0, UShort_t n = 0, UInt_t r = 0) : \r
- name(nnn), addr(a), nbits(n), res_val(r) {}\r
+ fName(nnn), fAddr(a), fNbits(n), fResetValue(r) {}\r
};\r
\r
struct RegValue_t {\r
kInvalid = 0,\r
kGlobal,\r
kIndividual\r
- } state;\r
+ } state; // mode of storage (global or per MCM)\r
union {\r
Int_t globalValue;\r
Int_t *individualValue;\r
RegValue_t fRegisterValue[kLastReg]; // array of TRAP register values in use\r
\r
Bool_t AddValues(UInt_t det, UInt_t cmd, UInt_t extali, UInt_t addr, UInt_t data);\r
- Short_t GetRobAB( UShort_t robsel, UShort_t linkpair ); // Converts the ROB part of the extended ALICE ID to robs\r
+ Short_t GetRobAB( UShort_t robsel, UShort_t linkpair ) const; // Converts the ROB part of the extended ALICE ID to robs\r
Short_t ChipmaskToMCMlist( Int_t cmA, Int_t cmB, UShort_t linkpair ); // Converts the chipmask to a list of MCMs \r
\r
static const UInt_t fgkScsnCmdWrite=10; // Command number for the write command \r
static const Int_t fgkMaxLinkPairs=4; // number of linkpairs used during configuration\r
static const Int_t fgkMaxMcm; // max. no. of MCMs to be treated\r
- static const Int_t fMcmlistSize=256; // list of MCMs to which a value has to be written\r
+ static const Int_t fgkMcmlistSize=256; // list of MCMs to which a value has to be written\r
\r
- Int_t fMcmlist[fMcmlistSize]; // stores the list of MCMs after the conversion from extAliID -> AliID\r
+ Int_t fMcmlist[fgkMcmlistSize]; // stores the list of MCMs after the conversion from extAliID -> AliID\r
\r
AliTRDtrapConfig(); // private constructor due to singleton implementation\r
\r
kDBankSCSNData };\r
*/\r
\r
+
+ private:
+ AliTRDtrapConfig& operator=(const AliTRDtrapConfig &rhs); // not implemented
+ AliTRDtrapConfig(const AliTRDtrapConfig& cfg); // not implemented
+
ClassDef(AliTRDtrapConfig, 2);\r
};\r
\r