X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSpList.cxx;h=c9e85eea895b9e3b44ecf0a3a8da3604902c45be;hb=b1a93215820d7e951a1c99ef34c21b2977f9c2ba;hp=61b9ba599c0138bbe79e29d932955e8fa9d4aaa6;hpb=9881a6821955168e9c245d55ed3ab7f0f29d9ff9;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSpList.cxx b/ITS/AliITSpList.cxx index 61b9ba599c0..c9e85eea895 100644 --- a/ITS/AliITSpList.cxx +++ b/ITS/AliITSpList.cxx @@ -32,7 +32,11 @@ ClassImp(AliITSpList) //______________________________________________________________________ -AliITSpList::AliITSpList(){ +AliITSpList::AliITSpList(): +fNi(0), +fNj(0), +fa(0), +fEntries(0){ // Default constructor // Inputs: // none. @@ -41,12 +45,13 @@ AliITSpList::AliITSpList(){ // Return: // A zeroed/empty AliITSpList class. - fNi = 0; - fNj = 0; - fa = 0; } //______________________________________________________________________ -AliITSpList::AliITSpList(Int_t imax,Int_t jmax){ +AliITSpList::AliITSpList(Int_t imax,Int_t jmax): +fNi(imax), +fNj(jmax), +fa(new AliITSpListItem[imax*jmax]), +fEntries(0){ // Standard constructor // Inputs: // none. @@ -55,30 +60,15 @@ AliITSpList::AliITSpList(Int_t imax,Int_t jmax){ // Return: // A setup AliITSpList class. - fNi = imax; - fNj = jmax; - fEntries = 0; - fa = new TClonesArray("AliITSpListItem",fNi*fNj); } //______________________________________________________________________ AliITSpList::~AliITSpList(){ // Default destructor - // Inputs: - // none. - // Outputs: - // none. - // Return: - // a properly destroyed class - - if(fa){ - fa->Delete(); - delete fa; - fa = 0; - } - fNi = 0; - fNj = 0; - fEntries = 0; + delete [] fa; + fNi = 0; + fNj = 0; + fEntries = 0; } //______________________________________________________________________ @@ -90,9 +80,8 @@ void AliITSpList::ClearMap(){ // none. // Return: // A zeroed AliITSpList class. - - fa->Delete(); - fEntries = 0; + for(Int_t i=0; iAt(k)!=0){ - fa->RemoveAt(k); - } // end for i && if + if((fa[k]).IsUsed())(fa[k]).MarkUnused(); if(k==fEntries-1) fEntries--; } //______________________________________________________________________ @@ -121,28 +107,18 @@ AliITSpList& AliITSpList::operator=(const AliITSpList &source){ // Return: // A copied AliITSpList object. - if(this == &source) return *this; - - if(this->fa!=0){ // if this->fa exists delete it first. - fa->Delete(); - delete fa; - fa = 0; - } // end if this->fa!=0 - this->fNi = source.fNi; - this->fNj = source.fNj; - this->fa = new TClonesArray(*(source.fa)); - this->fEntries = source.fEntries; - - return *this; + this->~AliITSpList(); + new(this) AliITSpList(source); + return *this; } //______________________________________________________________________ -AliITSpList::AliITSpList(const AliITSpList &source) : AliITSMap(source){ +AliITSpList::AliITSpList(const AliITSpList &source) : AliITSMap(source), +fNi(source.fNi), +fNj(source.fNj), +fa(new AliITSpListItem[fNi*fNj]), +fEntries(source.fEntries){ // Copy constructor - - fNi = source.fNi; - fNj = source.fNj; - fa = new TClonesArray(*(source.fa)); - fEntries = source.fEntries; + for(Int_t i=0; iGetIndex(); - TClonesArray &rfa = *fa; - if( fa->At( index ) == 0 ) { // most create AliITSpListItem - new(rfa[index])AliITSpListItem(-2,-1,pl->GetModule(),index,0.0); - } // end if - - ((AliITSpListItem*)(fa->At(index)))->AddTo( fileIndex,pl); + AliITSpListItem &lit = fa[index]; + if(!lit.IsUsed())lit.Build(-2,-1,pl->GetModule(),index,0.); + lit.AddTo(fileIndex,pl); if(index>=fEntries) fEntries = index +1; } //______________________________________________________________________ @@ -183,12 +156,14 @@ void AliITSpList::AddSignal(Int_t i,Int_t j,Int_t trk,Int_t ht,Int_t mod, // Return: // none. Int_t index = GetIndex(i,j); - TClonesArray &rfa = *fa; - if(GetpListItem(index)==0){ // must create AliITSpListItem - new(rfa[index])AliITSpListItem(trk,ht,mod,index,signal); - }else{ // AliITSpListItem exists, just add signal to it. - GetpListItem(index)->AddSignal(trk,ht,mod,index,signal); - } // end if + if (index<0) return; + AliITSpListItem &lit = fa[index]; + if(!lit.IsUsed()){ + lit.Build(trk,ht,mod,index,signal); + } + else { + lit.AddSignal(trk,ht,mod,index,signal); + } if(index>=fEntries) fEntries = index +1; } //______________________________________________________________________ @@ -205,12 +180,14 @@ void AliITSpList::AddNoise(Int_t i,Int_t j,Int_t mod,Double_t noise){ // Return: // none. Int_t index = GetIndex(i,j); - TClonesArray &rfa = *fa; - if(GetpListItem(index)==0){ // most create AliITSpListItem - new(rfa[index]) AliITSpListItem(mod,index,noise); - }else{ // AliITSpListItem exists, just add signal to it. - GetpListItem(index)->AddNoise(mod,index,noise); - } // end if + if (index<0) return; + AliITSpListItem &lit = fa[index]; + if(!lit.IsUsed()){ + lit.Build(mod,index,noise); + } + else { + lit.AddNoise(mod,index,noise); + } if(index>=fEntries) fEntries = index +1; } //______________________________________________________________________ @@ -227,14 +204,3 @@ void AliITSpList::GetCell(Int_t index,Int_t &i,Int_t &j) const { j = index - fNj*i; return; } -//______________________________________________________________________ -Int_t AliITSpList::GetIndex(Int_t i, Int_t j) const { - // returns the TClonesArray index for a given set of map indexes. - if(i<0||i>=fNi || j<0||j>=fNj){ - Warning("GetIndex","Index out of range 0