X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliSimDigits.cxx;h=3257e952e3ab84d453cbcaa7358e70bea9ae3cbb;hb=3456f527243764882c765da62e3e36d81a0c232d;hp=bcef1be68cdfbb2801a0f7cd3d1d60fb2074028c;hpb=a6bc70e033d93f592248b6ae63af106e68997d62;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliSimDigits.cxx b/TPC/AliSimDigits.cxx index bcef1be68cd..3257e952e3a 100644 --- a/TPC/AliSimDigits.cxx +++ b/TPC/AliSimDigits.cxx @@ -13,60 +13,27 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -Revision 1.5 2001/11/24 16:10:22 kowal2 -Faster algorithms. - -Revision 1.4 2000/10/05 16:01:49 kowal2 -Corrected for memory leaks. - -Revision 1.3 2000/06/30 12:07:49 kowal2 -Updated from the TPC-PreRelease branch - -Revision 1.2.4.3 2000/06/26 07:39:42 kowal2 -Changes to obey the coding rules - -Revision 1.2.4.2 2000/06/25 08:38:41 kowal2 -Splitted from AliTPCtracking - -Revision 1.2.4.1 2000/06/14 16:45:13 kowal2 -Improved algorithms. Compiler warnings removed. - -Revision 1.2 2000/04/17 09:37:33 kowal2 -removed obsolete AliTPCDigitsDisplay.C - -Revision 1.1.4.2 2000/04/10 11:37:42 kowal2 - -Digits handling in a new data structure - -*/ - -// +/* $Id$ */ /////////////////////////////////////////////////////////////////////////////// // // // Alice segment manager object // -// -// AliSimDigits object (derived from AliDigits) // +// AliSimDigits object (derived from AliDigits) // // provide additional track information to digit // -// -// Origin: Marian Ivanov GSI Darmstadt // -// +// Origin: Marian Ivanov GSI Darmstadt // +// // // // -// // /////////////////////////////////////////////////////////////////////////////// #include "TClass.h" -#include +#include #include "TError.h" #include "AliSegmentID.h" #include "AliH2F.h" -#include "AliArrayI.h" -#include "AliArrayS.h" +#include "TArrayI.h" #include "AliDigits.h" #include "AliSimDigits.h" -#include "AliTPC.h" +#include "AliTPCdigit.h" #include @@ -77,12 +44,30 @@ Digits handling in a new data structure ClassImp(AliSimDigits) AliSimDigits::AliSimDigits() + :AliDigits(), + fTracks(0), + fTrIndex(0), + fNlevel(0), + fTrBufType(0) { // AliDigits::Invalite(); - fTracks = 0; - fTrIndex = 0; + InvalidateTrack(); } +// +AliSimDigits::AliSimDigits(const AliSimDigits ¶m) + :AliDigits(), + fTracks(0), + fTrIndex(0), + fNlevel(0), + fTrBufType(0) +{ + // + // dummy + // + fTrIndex = param.fTrIndex; +} +// AliSimDigits::~AliSimDigits() { @@ -94,15 +79,24 @@ AliSimDigits::~AliSimDigits() } } +AliSimDigits & AliSimDigits::operator =(const AliSimDigits & param) +{ + // + // assignment operator - dummy + // + fTrIndex=param.fTrIndex; + return (*this); +} +//__________________________________________________________________ void AliSimDigits::InvalidateTrack() { // //set default (invalid parameters) if ( fTracks != 0) delete fTracks; - fTracks = new AliArrayI; + fTracks = new TArrayI; if ( fTrIndex != 0) delete fTrIndex; - fTrIndex = new AliArrayI; + fTrIndex = new TArrayI; for (Int_t i = 0; i<3; i++){ fTracks->Set(0); @@ -202,7 +196,7 @@ Int_t AliSimDigits::GetTrackID1(Int_t row, Int_t column, Int_t level) id = fTracks->At(i); } id-=2; - if ( (row>=rowold) && (row<=rownew) ) return id; + if ( (row>=rowold) && (rowSet(elems); fTrIndex->Set(0); // @@ -233,9 +227,12 @@ void AliSimDigits::ExpandTrackBuffer1() Int_t num = fTracks->At(i); if (num<0) row-=num; //negative number mean number of zeroes (no tracks of gibven level no need to write to array) else { + num %= 10000000; //PH: take into account the case of underlying events i++; Int_t id = fTracks->At(i); - for (j = 0; j=fNrows) { row=0; @@ -257,9 +254,9 @@ void AliSimDigits::CompresTrackBuffer1() // fTrBufType = 1; - AliArrayI * buf = new AliArrayI; //create new buffer + TArrayI * buf = new TArrayI; //create new buffer buf->Set(fNrows*fNcols*fNlevel); //lets have the nearly the "worst case" - AliArrayI * index = new AliArrayI; + TArrayI * index = new TArrayI; index->Set(fNcols*fNlevel); // Int_t * pindex = @@ -284,7 +281,7 @@ void AliSimDigits::CompresTrackBuffer1() if (id <= 0) { if ( inum> 0 ) { //if we have some tracks in buffer icurrent++; - if ((icurrent+1)>=buf->fN) buf->Expand(icurrent*2+1); //MI change - allocate +1 + if ((icurrent+1)>=buf->fN) buf->Set(icurrent*2+1); //MI change - allocate +1 (*buf)[icurrent] = inum; icurrent++; (*buf)[icurrent] = lastID; @@ -298,7 +295,7 @@ void AliSimDigits::CompresTrackBuffer1() if ( izero > 0 ) { //if we have currently izero count of non tracks digits icurrent++; - if (icurrent>=buf->fN) buf->Expand(icurrent*2+1); + if (icurrent>=buf->fN) buf->Set(icurrent*2+1); (*buf)[icurrent]= -izero; //write how many under zero inum++; izero = 0; @@ -307,7 +304,7 @@ void AliSimDigits::CompresTrackBuffer1() else{ //if we change track id from another track id icurrent++; - if ((icurrent+1)>=buf->fN) buf->Expand(icurrent*2+1); + if ((icurrent+1)>=buf->fN) buf->Set(icurrent*2+1); (*buf)[icurrent] = inum; icurrent++; (*buf)[icurrent] = lastID; @@ -323,19 +320,19 @@ void AliSimDigits::CompresTrackBuffer1() if ( izero > 0 ) { //if we have currently izero count of non tracks digits icurrent++; - if (icurrent>=buf->fN) buf->Expand(icurrent*2); + if (icurrent>=buf->fN) buf->Set(icurrent*2); (*buf)[icurrent]= -izero; //write how many under zero } if ( inum> 0 ) { //if we have some tracks in buffer icurrent++; - if ((icurrent+1)>=buf->fN) buf->Expand(icurrent*2); + if ((icurrent+1)>=buf->fN) buf->Set(icurrent*2); (*buf)[icurrent] = inum; icurrent++; (*buf)[icurrent] = id; } }//end of loop over columns }//end of loop over differnet track level - buf->Expand(icurrent+1); + buf->Set(icurrent+1); delete fTracks; fTracks = buf; delete fTrIndex; @@ -359,7 +356,7 @@ void AliSimDigits::CompresTrackBuffer2() } -Int_t AliSimDigits::GetTrackID2(Int_t row, Int_t column, Int_t level) +Int_t AliSimDigits::GetTrackID2(Int_t /*row*/, Int_t /*column*/, Int_t /*level*/) { //returnb track id of digits - for buffer compresion 2 return -2; @@ -415,13 +412,46 @@ TClonesArray * AliSimDigits::GenerTPCClonesArray(TClonesArray * arr) dig.fSignal= amp; dig.fPadRow =fSegmentID; dig.fSector =fSegmentID; - dig.fTracks[0]= GetTrackID(row,col,0); - dig.fTracks[1]= GetTrackID(row,col,1); - dig.fTracks[2]= GetTrackID(row,col,2); + dig.GetTracks()[0]= GetTrackID(row,col,0); + dig.GetTracks()[1]= GetTrackID(row,col,1); + dig.GetTracks()[2]= GetTrackID(row,col,2); TClonesArray &ldigits = *digits; new(ldigits[index++]) AliTPCdigit(dig); } } return digits; } +void AliSimDigits::GlitchFilter(){ + // + // glitch filter, optionally + // + + for (Int_t i=0;i