#ifndef ALIITSPLISTSSDITEM_H #define ALIITSPLISTSSDITEM_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id$ */ #include 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(AliITSpListItem &source); // = Opoerator virtual AliITSpListItem& operator=(const AliITSpListItem &source); // Returns the signal value in the list of signals virtual Double_t GetSignal(Int_t i){ return ( (i>=0&&i=0&&i=0&&i>(istream &is,AliITSpListItem &source); #endif #ifndef ALIITSPLISTSSD_H #define ALIITSPLISTSSD_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ #include "AliITSMap.h" class TObjArray; class AliITSpListItem; class AliITSpList: public AliITSMap { private: // returns the TObjArray index for a give set of map indecies. Int_t GetIndex(Int_t i,Int_t j){ if(i<0||i>=fNi || j<0||j>=fNj){ Warning("GetIndex","Index out of range 0=fNi || j<0||j>=fNj){i=-1;j=-1; return;} } // Returns the signal+noise for a give map coordinate Double_t GetSignal(Int_t index){ if(GetpListItem(index)==0) return 0.0; return GetpListItem(index)->GetSumSignal(); } // Returns the signal+noise for a give map coordinate Double_t GetSignal(Int_t i,Int_t j){ if(GetpListItem(i,j)==0) return 0.0; return GetpListItem(i,j)->GetSumSignal(); } // Returns the signal only for a give map coordinate Double_t GetSignalOnly(Int_t i,Int_t j){ if(GetpListItem(i,j)==0) return 0.0; return GetpListItem(i,j)->GetSignal(); } // Returns the noise for a give map coordinate Double_t GetNoise(Int_t i,Int_t j){ if(GetpListItem(i,j)==0) return 0.0; return GetpListItem(i,j)->GetNoise(); } // returns the track number which generated the signal at a given map // coordinate. If there is no signal or only noise, then -2 is returned. // k is the track rank number. Double_t GetTSignal(Int_t i,Int_t j,Int_t k){ if(GetpListItem(i,j)==0) return 0.0; return GetpListItem(i,j)->GetSignal(k); } // returns the track number which generated the signal at a given map // coordinate. If there is no signal or only noise, then -2 is returned. // k is the track rank number. Int_t GetTrack(Int_t i,Int_t j,Int_t k){ if(GetpListItem(i,j)==0) return -2; return GetpListItem(i,j)->GetTrack(k); } // returns the hit number which generated the signal at a given map // coordinate. If there is no signal or only noise, then -2 is returned. // k is the hit rank number. Int_t GetHit(Int_t i,Int_t j,Int_t k){ if(GetpListItem(i,j)==0) return -2; return GetpListItem(i,j)->GetHit(k); } // returns the number of Signal values Int_t GetNSignals(Int_t i,Int_t j){ if(GetpListItem(i,j)==0) return 0; return GetpListItem(i,j)->GetNsignals(); } // Adds the contents of pl to the list with track number off set given by // fileIndex. virtual void AddItemTo(Int_t fileIndex, AliITSpListItem *pl); // Adds a Signal value to the map. Creating and expanding arrays as needed. void AddSignal(Int_t i,Int_t j,Int_t trk,Int_t ht,Int_t mod,Double_t sig); // Adds a Noise value to the map. Creating and expanding arrays as needed. void AddNoise(Int_t i,Int_t j,Int_t mod,Double_t noise); // Delete all AliITSpListItems and zero the TObjArray void ClearMap(); // Delete a particular AliITSpListItem in the TObjArray. void DeleteHit(Int_t i,Int_t j); // returns hit index in TObjArray Int_t GetHitIndex(Int_t i,Int_t j){return GetIndex(i,j);} // returns "hit" AliITSpListItem as a TObject. TObject * GetHit(Int_t i,Int_t j){return (TObject*)GetpListItem(i,j);} // tests hit status. FlagType TestHit(Int_t i,Int_t j){if(GetpListItem(i,j)==0) return kEmpty; else if(GetSignal(i,j)<=0) return kUnused; else return kUsed;} // Returns the pointer to the TObjArray of pList Items TObjArray * GetpListItems(){return fa;} // returns the pList Item stored in the TObject array AliITSpListItem* GetpListItem(Int_t index){ if(fa!=0)return (AliITSpListItem*) (fa->At(index)); else return 0;} // returns the pList Item stored in the TObject array AliITSpListItem* GetpListItem(Int_t i,Int_t j){ if(fa!=0)return (AliITSpListItem*) (fa->At(GetIndex(i,j))); else return 0;} // Fill pList from digits. Not functional yet void FillMap(){;} // Sets threshold for significance. Not of relavance in this case. void SetThreshold(Int_t i){i=0;} // Sets a single hit. Not of relavance in this case. void SetHit(Int_t i,Int_t j,Int_t k){i=j=k=0;} // Flags a hit. Not of relavence in this case. void FlagHit(Int_t i,Int_t j){i=j=0;} // returns the i,j index numbers from the liniarized index computed // from GetIndex above. void GetCell(Int_t index,Int_t &i,Int_t &j){ if(index<0 || index>=fNi*fNj){ Warning("GetCell","Index out of range 0<=index=%d<%d", index,fNi*fNj); i=-1;j=-1; return; } // end if i = index/fNj; j = index - fNj*i; return; } private: Int_t fNi,fNj; // The max index in i,j. TObjArray *fa; // array of pList items Int_t fEnteries; // keepts track of the number of non-zero entries. ClassDef(AliITSpList,3) // list of signals and track numbers }; // Input and output functions for standard C++ input/output. ostream & operator<<(ostream &os,AliITSpList &source); istream & operator>>(istream &is,AliITSpList &source); #endif