ROOT logo
#ifndef ALIITSPLISTITEM_H
#define ALIITSPLISTITEM_H
/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice     */

/* $Id$ */

#include <TObject.h>

using std::istream;

class AliITSpListItem: public TObject {
 public:
    // Default Constructor
    AliITSpListItem();
    // Standard Signal Constructor
    AliITSpListItem(Int_t track,Int_t hit,Int_t module,Int_t index,
		   Double_t signal);
    // Standard Noise Constructor
    AliITSpListItem(Int_t module,Int_t index,Double_t signal);
    // Class destrutor
    virtual ~AliITSpListItem();
    // Copy Oporator
    AliITSpListItem(const AliITSpListItem &source);
    // = Operator
    virtual AliITSpListItem& operator=(const AliITSpListItem &source);
    // Building methods: they set completely the status of the object
    void Build(Int_t module,Int_t index,Double_t noise);
    void Build(Int_t track,Int_t hit,Int_t module,Int_t index,Double_t signal);
    void Build(const AliITSpListItem &source);
    // Returns the signal value in the list of signals
    virtual Double_t GetSignal(Int_t i) const {
	                    return ( (i>=0&&i<fgksize) ? fSignal[i] : 0.0);}
    virtual Double_t GetSignal() const {
	                    return fTsignal;}
    virtual Double_t GetSignalAfterElect() const {
	                    return fSignalAfterElect;}
    // Returns the Sum/Total signal
    virtual Double_t GetSumSignal() const {return fTsignal+fNoise;}
    // Returns the  noise
    virtual Double_t GetNoise() const {return fNoise;}
    // Returns the number of stored singals.
    virtual Int_t GetNsignals() const {return fgksize;}
    // Addes track number and signal to this existing list.
    virtual void AddSignal(Int_t track,Int_t hit,Int_t module,
			   Int_t index,Double_t signal);
    // Adds signal after electronics to this existing list.
    virtual void AddSignalAfterElect(Int_t module,Int_t index,Double_t signal);
    // Addes noise to this existing list.
    virtual void AddNoise(Int_t module,Int_t index,Double_t noise);
    // Returns track number.
    virtual Int_t GetTrack(Int_t i) const {
	                    return ((i>=0&&i<fgksize) ? fTrack[i] : 0);}
    // Returns hit number.
    virtual Int_t GetHit(Int_t i) const {
	                    return ((i>=0&&i<fgksize) ? fHits[i] : 0);}
    // Returns module number.
    virtual Int_t GetModule() const {
	                    return fmodule;}
    // Returns index number.
    virtual Int_t GetIndex() const {
	                    return findex;}
    // Adds the contents of pl to this 
    virtual void Add(AliITSpListItem *pl);
    // Adds the contents of pl to this with track number off set given by
    // fileIndex.
    virtual void AddTo(Int_t fileIndex,AliITSpListItem *pl);
    // Shift an index number to occupy the upper four bits.
    virtual Int_t ShiftIndex(Int_t in,Int_t trk) const;
    // Standard ascii class print function
    void Print(ostream *os) const;
    // Standard ascii class read function
    void Read(istream *is);
    virtual void Print(Option_t *option="") const {TObject::Print(option);}
    virtual Int_t Read(const char *name) {return TObject::Read(name);}
    // Check if the item is used or marked as unused
    Bool_t IsUsed() const {return fUsed;}
    // Mark the object as unused
    void MarkUnused()  {fUsed = kFALSE;}
    // Returns max size of array for for Tracks, Hits, and signals.
    static Int_t GetMaxKept() {return fgksize;};

 private:
    static const Int_t fgksize = 10; // Array sizes
    Int_t    fmodule;         // module number
    Int_t    findex;          // Strip/row,col number linearlized.
    Int_t    fTrack[fgksize];  //[fgksize] track Number
    Int_t    fHits[fgksize];   //[fgksize] hit number
    Double_t fSignal[fgksize]; //[fgksize] Signals
    Double_t fTsignal;        // Total signal (no noise)
    Double_t fNoise;          // Total noise, coupling, ...
    Double_t fSignalAfterElect; // Signal after electronics
    Bool_t fUsed;              //! kTRUE if the item is built and in use

    ClassDef(AliITSpListItem,4) // Item list of signals and track numbers
};	
// Input and output functions for standard C++ input/output.
ostream & operator<<(ostream &os,AliITSpListItem &source);
istream & operator>>(istream &is,AliITSpListItem &source);


#endif
 AliITSpListItem.h:1
 AliITSpListItem.h:2
 AliITSpListItem.h:3
 AliITSpListItem.h:4
 AliITSpListItem.h:5
 AliITSpListItem.h:6
 AliITSpListItem.h:7
 AliITSpListItem.h:8
 AliITSpListItem.h:9
 AliITSpListItem.h:10
 AliITSpListItem.h:11
 AliITSpListItem.h:12
 AliITSpListItem.h:13
 AliITSpListItem.h:14
 AliITSpListItem.h:15
 AliITSpListItem.h:16
 AliITSpListItem.h:17
 AliITSpListItem.h:18
 AliITSpListItem.h:19
 AliITSpListItem.h:20
 AliITSpListItem.h:21
 AliITSpListItem.h:22
 AliITSpListItem.h:23
 AliITSpListItem.h:24
 AliITSpListItem.h:25
 AliITSpListItem.h:26
 AliITSpListItem.h:27
 AliITSpListItem.h:28
 AliITSpListItem.h:29
 AliITSpListItem.h:30
 AliITSpListItem.h:31
 AliITSpListItem.h:32
 AliITSpListItem.h:33
 AliITSpListItem.h:34
 AliITSpListItem.h:35
 AliITSpListItem.h:36
 AliITSpListItem.h:37
 AliITSpListItem.h:38
 AliITSpListItem.h:39
 AliITSpListItem.h:40
 AliITSpListItem.h:41
 AliITSpListItem.h:42
 AliITSpListItem.h:43
 AliITSpListItem.h:44
 AliITSpListItem.h:45
 AliITSpListItem.h:46
 AliITSpListItem.h:47
 AliITSpListItem.h:48
 AliITSpListItem.h:49
 AliITSpListItem.h:50
 AliITSpListItem.h:51
 AliITSpListItem.h:52
 AliITSpListItem.h:53
 AliITSpListItem.h:54
 AliITSpListItem.h:55
 AliITSpListItem.h:56
 AliITSpListItem.h:57
 AliITSpListItem.h:58
 AliITSpListItem.h:59
 AliITSpListItem.h:60
 AliITSpListItem.h:61
 AliITSpListItem.h:62
 AliITSpListItem.h:63
 AliITSpListItem.h:64
 AliITSpListItem.h:65
 AliITSpListItem.h:66
 AliITSpListItem.h:67
 AliITSpListItem.h:68
 AliITSpListItem.h:69
 AliITSpListItem.h:70
 AliITSpListItem.h:71
 AliITSpListItem.h:72
 AliITSpListItem.h:73
 AliITSpListItem.h:74
 AliITSpListItem.h:75
 AliITSpListItem.h:76
 AliITSpListItem.h:77
 AliITSpListItem.h:78
 AliITSpListItem.h:79
 AliITSpListItem.h:80
 AliITSpListItem.h:81
 AliITSpListItem.h:82
 AliITSpListItem.h:83
 AliITSpListItem.h:84
 AliITSpListItem.h:85
 AliITSpListItem.h:86
 AliITSpListItem.h:87
 AliITSpListItem.h:88
 AliITSpListItem.h:89
 AliITSpListItem.h:90
 AliITSpListItem.h:91
 AliITSpListItem.h:92
 AliITSpListItem.h:93
 AliITSpListItem.h:94
 AliITSpListItem.h:95
 AliITSpListItem.h:96
 AliITSpListItem.h:97
 AliITSpListItem.h:98
 AliITSpListItem.h:99
 AliITSpListItem.h:100
 AliITSpListItem.h:101
 AliITSpListItem.h:102