X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliSimDigits.cxx;h=3257e952e3ab84d453cbcaa7358e70bea9ae3cbb;hb=e9e3c6d42c8277a5d75591144727bf9fb36354b0;hp=338ff2e0fc633bbb5dfb08bb014d786aaea3176b;hpb=73042f0190050b5b5f317a6327d5ae1849e730d5;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliSimDigits.cxx b/TPC/AliSimDigits.cxx index 338ff2e0fc6..3257e952e3a 100644 --- a/TPC/AliSimDigits.cxx +++ b/TPC/AliSimDigits.cxx @@ -13,51 +13,28 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -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 @@ -67,28 +44,59 @@ 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() { - // AliDigits::Invalidate(); - if (fTracks != 0) fTracks->Delete(); - if (fTrIndex != 0) fTrIndex->Delete(); + + if (fTracks != 0) { + delete fTracks; + } + if (fTrIndex != 0) { + delete fTrIndex; + } } +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); @@ -188,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); // @@ -219,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; @@ -243,15 +254,20 @@ 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 = + Int_t icurrent=-1; //current index Int_t izero; //number of zero Int_t inum; //number of digits with the same current track id - Int_t lastID =0; //last track id + Int_t lastID =0; //last track id + + Int_t *cbuff=fTracks->GetArray(); //MI change + for (Int_t lev =0; lev 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+1); //MI change - allocate +1 (*buf)[icurrent] = inum; icurrent++; (*buf)[icurrent] = lastID; @@ -278,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); + if (icurrent>=buf->fN) buf->Set(icurrent*2+1); (*buf)[icurrent]= -izero; //write how many under zero inum++; izero = 0; @@ -287,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); + if ((icurrent+1)>=buf->fN) buf->Set(icurrent*2+1); (*buf)[icurrent] = inum; icurrent++; (*buf)[icurrent] = lastID; @@ -298,24 +315,24 @@ void AliSimDigits::CompresTrackBuffer1() else { inum++; } - - }//end of loop over rows + cbuff++; //MI change + }//end of loop over row 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; @@ -339,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; @@ -395,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