]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/JetCorrel/CorrelList.h
bugfix: implementing function SendMLFromDet added as pure virtual in r43691
[u/mrichter/AliRoot.git] / PWG4 / JetCorrel / CorrelList.h
CommitLineData
7488b3de 1#ifndef CORRELLIST_H
2#define CORRELLIST_H
c97d2ae1 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5/* $Id: $ */
6
7//__________________________________________
e1b97289 8// The particle list class CorrelList_t: implements a single-linked list
9// Supporting classes:
10// list node defined by class CorrelListNode_t and
11// list iterator defined by class CorrelListIter_t
c97d2ae1 12//-- Author: Paul Constantin
13
14#include "CorrelParticle.h"
15#include "CorrelTrack.h"
16#include "CorrelRecoParent.h"
17
e1b97289 18class CorrelList_t;
19class CorrelListIter_t;
c97d2ae1 20
e1b97289 21class CorrelListNode_t {
22 public:
23 CorrelListNode_t();
24 CorrelListNode_t(CorrelParticle_t* p, CorrelListNode_t* n);
25 CorrelListNode_t(const CorrelListNode_t& rhs);
26 ~CorrelListNode_t();
27 const CorrelListNode_t& operator=(const CorrelListNode_t& rhs);
28 CorrelParticle_t* GetData() const {return fPart;}
29 CorrelListNode_t* GetNext() const {return fNext;}
30
31 private:
7488b3de 32 CorrelParticle_t* fPart; // pointer to contained particle
33 CorrelListNode_t* fNext; // pointer to next node
e1b97289 34};
c97d2ae1 35
e1b97289 36class CorrelListIter_t {
37 public:
38 CorrelListIter_t();
39 CorrelListIter_t(CorrelListNode_t* theNode);
40 CorrelListIter_t(const CorrelListIter_t& rhs);
41 ~CorrelListIter_t();
42 const CorrelListIter_t& operator=(const CorrelListIter_t& rhs);
43
44 Bool_t HasEnded() const {return (fCurr==NULL);}
7488b3de 45 void Check() const;
e1b97289 46 void Move() {Check(); fCurr=fCurr->GetNext();}
7488b3de 47 CorrelListNode_t* Node() const {Check(); return fCurr;}
48 CorrelParticle_t* Data() const {Check(); return fCurr->GetData();}
e1b97289 49
50 private:
51 CorrelListNode_t* fCurr; // iterator "current node"
52};
c97d2ae1 53
e1b97289 54class CorrelList_t : public TObject {
55 public:
56 CorrelList_t();
57 virtual ~CorrelList_t() {Reset();}
58 void Reset();
59 const CorrelList_t& operator=(const CorrelList_t& rhs); // makes shallow copy
60 CorrelList_t* DeepCopy(); // use this method to get a deep copy
61
62 void Push(CorrelParticle_t* p);
63 UInt_t Size() const {return fSize;}
64 UInt_t EvtID() const {return fEvtID;}
11ad5089 65 cPartType_t PartID() const {return fPartID;}
e1b97289 66 Bool_t Filled() const {return fFilled;}
67 void SetFilled(Bool_t f) {fFilled=f;}
11ad5089 68 void Label(cPartType_t p, UInt_t e) {fPartID=p; fEvtID=e;}
e1b97289 69 CorrelListIter_t Head() const {return CorrelListIter_t(fHead);}
7488b3de 70 void ShowHead() const;
71 void Show() const;
e1b97289 72
73 private:
11ad5089 74 UInt_t fSize; //! list size
75 UInt_t fEvtID; //! event ID
76 Bool_t fFilled; //! is filled
77 cPartType_t fPartID; //! particle ID
78 CorrelListNode_t* fHead; //! list head
e1b97289 79
80 CorrelList_t(const CorrelList_t& rhs); // forbid copy constructor
7488b3de 81
82 ClassDef(CorrelList_t, 1); //CorrelList_t
e1b97289 83};
c97d2ae1 84
85#endif