/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
+//***********************************************************************
+//
+// It consist of a TClonesArray of
+// AliITSpListItem objects
+// This array can be accessed via 2 indexed
+// it is used at digitization level by
+// all the 3 ITS subdetectors
+//
+// ***********************************************************************
+#include "TArrayI.h"
#include "TClonesArray.h"
+#include "AliLog.h"
#include "AliITSMap.h"
#include "AliITSpListItem.h"
if(i<0||i>=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) {
+ 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
- virtual Double_t GetSignal(Int_t i,Int_t j) {
+ virtual Double_t GetSignal(Int_t i,Int_t j) const {
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) {
+ Double_t GetSignalOnly(Int_t i,Int_t j)const {
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) {
+ Double_t GetNoise(Int_t i,Int_t j) const {
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) {
+ Double_t GetTSignal(Int_t i,Int_t j,Int_t k) const {
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) {
+ Int_t GetTrack(Int_t i,Int_t j,Int_t k) const {
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) {
+ Int_t GetHit(Int_t i,Int_t j,Int_t k) const {
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) {
+ Int_t GetNSignals(Int_t i,Int_t j) const {
if(GetpListItem(i,j)==0) return 0;
return GetpListItem(i,j)->GetNsignals();
}
// returns hit index in TClonesArray
virtual Int_t GetHitIndex(Int_t i,Int_t j) const {return GetIndex(i,j);}
// returns "hit" AliITSpListItem as a TObject.
- TObject * GetHit(Int_t i,Int_t j){return (TObject*)GetpListItem(i,j);}
+ TObject * GetHit(Int_t i,Int_t j) const {return (TObject*)GetpListItem(i,j);}
// tests hit status.
virtual 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 TClonesArray of pList Items
- TClonesArray * GetpListItems(){return fa;}
// returns the pList Item stored in the TClonesArray
- AliITSpListItem* GetpListItem(Int_t index){
- if(fa!=0)return (AliITSpListItem*) (fa->At(index));
- else return 0;}
+ AliITSpListItem* GetpListItem(Int_t index) { if((fa[index]).IsUsed())
+ return &(fa[index]);
+ else return NULL;}
// returns the pList Item stored in the TObject array
AliITSpListItem* GetpListItem(Int_t i,Int_t j) const {
- if(fa!=0)return (AliITSpListItem*) (fa->At(GetIndex(i,j)));
- else return 0;}
+ if((fa[GetIndex(i,j)]).IsUsed())return &(fa[GetIndex(i,j)]);
+ else return NULL; }
// Fill pList from digits. Not functional yet
virtual void FillMap(){NotImplemented("FillMap");}
+ virtual void FillMap2() {NotImplemented("FillMap2");}
// Sets threshold for significance. Not of relavance in this case.
virtual void SetThreshold(Int_t /* i */){NotImplemented("SetThreshold");}
+ virtual void SetThresholdArr(TArrayI /*thr*/) {NotImplemented("SetThresholdArr");}
// Sets a single hit. Not of relavance in this case.
virtual void SetHit(Int_t /* i */,Int_t /* j */,Int_t /* k */){NotImplemented("SetHit");}
// Flags a hit. Not of relavence in this case.
virtual void FlagHit(Int_t /* i */,Int_t /* j */){NotImplemented("FlagHit");}
virtual void GetCell(Int_t index,Int_t &i,Int_t &j) const;
+ // GetIndex returns the TClonesArray index for a given set of map indexes.
+ static Int_t GetIndex(Int_t i,Int_t j,Int_t maxj){
+ return maxj*i+j;}
private:
// private methods
- Int_t GetIndex(Int_t i,Int_t j) const;
+ Int_t GetIndex(Int_t i,Int_t j) const {
+ if(i<0||i>=fNi || j<0||j>=fNj){AliWarning(Form("Index out of range 0<i=%d<%d and 0<0j=%d<%d",i,fNi,j,fNj)); return -1;}
+ return GetIndex(i,j,fNj);}
void NotImplemented(const char *method) const {if(gDebug>0)
- Warning(method,"This method is not implemented for this class");}
+ Warning(method,"This method is not implemented for this class");}
// data members
Int_t fNi,fNj; // The max index in i,j.
- TClonesArray *fa; // array of pList items
+ AliITSpListItem *fa; // array of pList items
Int_t fEntries; // keepts track of the number of non-zero entries.
- ClassDef(AliITSpList,3) // list of signals and track numbers
+ ClassDef(AliITSpList,5) // list of signals and track numbers
};
#endif