class TObjArray;
class TCanvas;
+#include <TTree.h>
+
#include "AliITSNeuralPoint.h"
class AliITSNeuralTracker : public TObject {
public:
AliITSNeuralTracker();
- AliITSNeuralTracker(const AliITSNeuralTracker &t);
- AliITSNeuralTracker& operator=(const AliITSNeuralTracker&);
-
virtual ~AliITSNeuralTracker();
// ******************************************************************************
// ******************************************************************************
class AliITSNode : public AliITSNeuralPoint {
public:
- AliITSNode() {fInnerOf = fOuterOf = fMatches = 0; fNext = fPrev = 0;}
- AliITSNode(const AliITSNode &t);
- AliITSNode(AliITSNeuralPoint *p, Bool_t init = kTRUE) // declared inline
- : AliITSNeuralPoint(p) { fInnerOf = fOuterOf = fMatches = 0; fNext = fPrev = 0;
+ AliITSNode():fPosInTree(0),fInnerOf(0),fOuterOf(0),fMatches(0),fNext(0),fPrev(0){}
+
+ AliITSNode(AliITSNeuralPoint *p, Bool_t init = kTRUE): AliITSNeuralPoint(p),fPosInTree(0),fInnerOf(0),fOuterOf(0),fMatches(0),fNext(0),fPrev(0) {
if (init) { fInnerOf = new TObjArray; fOuterOf = new TObjArray; fMatches = new TObjArray;}}
AliITSNode(AliITSRecPoint *p, AliITSgeomMatrix *gm)
- : AliITSNeuralPoint(p,gm) {fInnerOf = fOuterOf = fMatches = 0; fNext = fPrev = 0;}
+ : AliITSNeuralPoint(p,gm),fPosInTree(0),fInnerOf(0),fOuterOf(0),fMatches(0),fNext(0),fPrev(0) {}
virtual ~AliITSNode()
{fInnerOf = fOuterOf = fMatches = 0; fNext = fPrev = 0;}
- AliITSNode& operator=(const AliITSNode&);
+
Double_t ThetaDeg() {return GetTheta()*180.0/TMath::Pi();}
AliITSNode*& Prev() {return fPrev;}
private:
-
+ AliITSNode(const AliITSNode &t);
+ AliITSNode& operator=(const AliITSNode& t);
Int_t fPosInTree; // position in tree of converted points
-
TObjArray *fInnerOf; //!
TObjArray *fOuterOf; //!
TObjArray *fMatches; //!
class AliITSneuron : public TObject {
public:
AliITSneuron():fUsed(0),fActivation(0.),fInner(0),fOuter(0),fGain(0) { }
- AliITSneuron(const AliITSneuron &t);
+
virtual ~AliITSneuron() {fInner=fOuter=0;fGain=0;}
- AliITSneuron& operator=(const AliITSneuron&);
+
Double_t Weight(AliITSneuron *n);
void Add2Gain(AliITSneuron *n, Double_t multconst, Double_t exponent);
private:
+ AliITSneuron(const AliITSneuron &t);
+ AliITSneuron& operator=(const AliITSneuron& t);
+
Int_t fUsed; // utility flag
Double_t fActivation; // Activation value
AliITSNode *fInner; //! inner point
class AliITSlink : public TObject {
public:
AliITSlink() : fWeight(0.), fLinked(0) { }
- AliITSlink(const AliITSlink &t);
- virtual ~AliITSlink() {fLinked = 0;}
- AliITSlink& operator=(const AliITSlink&);
+ virtual ~AliITSlink() {fLinked = 0;}
+
Double_t& Weight() {return fWeight;}
AliITSneuron*& Linked() {return fLinked;}
private:
+
+ AliITSlink(const AliITSlink &t);
+ AliITSlink& operator=(const AliITSlink& t);
Double_t fWeight; // Weight value
AliITSneuron *fLinked; //! the connected neuron
Bool_t Update(); // an updating cycle
void CleanNetwork(); // removes deactivated units and resolves competitions
Int_t Save(Int_t sectoridx); // save found tracks for # sector
- TTree* GetChains() {return fChains;}
+ TTree* GetChains() const {return fChains;}
void WriteChains() {fChains->Write();}
private:
+ AliITSNeuralTracker(const AliITSNeuralTracker &n);
+ AliITSNeuralTracker& operator=(const AliITSNeuralTracker& t);
+
Bool_t CheckOccupation() const;
Int_t fSectorNum; // number of azymuthal sectors