From: kowal2 Date: Wed, 5 Jun 2002 15:37:31 +0000 (+0000) Subject: Added cross-talk from the wires beyond the first and the last rows X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=b584c7ddbaf2c047a851b889abb5de6d12a2249e;hp=00cb2f277084df8de68f5bb3013a374be6cac869;p=u%2Fmrichter%2FAliRoot.git Added cross-talk from the wires beyond the first and the last rows --- diff --git a/TPC/AliTPC.cxx b/TPC/AliTPC.cxx index a71d5c712ba..992cc5e94cc 100644 --- a/TPC/AliTPC.cxx +++ b/TPC/AliTPC.cxx @@ -15,6 +15,9 @@ /* $Log$ +Revision 1.58 2002/05/27 14:33:14 hristov +The new class AliTrackReference used (M.Ivanov) + Revision 1.57 2002/05/07 17:23:11 kowal2 Linear gain inefficiency instead of the step one at the wire edges. @@ -1857,7 +1860,7 @@ void AliTPC::Hits2DigitsSector(Int_t isec) Int_t nrows =fTPCParam->GetNRow(isec); - row= new TObjArray* [nrows]; + row= new TObjArray* [nrows+2]; // 2 extra rows for cross talk MakeSector(isec,nrows,tH,ntracks,row); @@ -1915,7 +1918,7 @@ void AliTPC::DigitizeRow(Int_t irow,Int_t isec,TObjArray **rows) Float_t zerosup = fTPCParam->GetZeroSup(); - Int_t nrows =fTPCParam->GetNRow(isec); + // Int_t nrows =fTPCParam->GetNRow(isec); fCurrentIndex[1]= isec; @@ -1943,14 +1946,16 @@ void AliTPC::DigitizeRow(Int_t irow,Int_t isec,TObjArray **rows) // //calculate signal // - Int_t row1 = TMath::Max(irow-fTPCParam->GetNCrossRows(),0); - Int_t row2 = TMath::Min(irow+fTPCParam->GetNCrossRows(),nrows-1); + //Int_t row1 = TMath::Max(irow-fTPCParam->GetNCrossRows(),0); + //Int_t row2 = TMath::Min(irow+fTPCParam->GetNCrossRows(),nrows-1); + Int_t row1=irow; + Int_t row2=irow+2; for (Int_t row= row1;row<=row2;row++){ Int_t nTracks= rows[row]->GetEntries(); for (i1=0;i1Zero(); // clear single track signal matrix Float_t trackLabel = GetSignal(rows[row],i1,m2,m1,indexRange); GetList(trackLabel,nofPads,m2,indexRange,pList); @@ -2050,7 +2055,7 @@ Float_t AliTPC::GetSignal(TObjArray *p1, Int_t ntr, AliTPCFastVector &v = *tv; Float_t label = v(0); - Int_t centralPad = (fTPCParam->GetNPads(fCurrentIndex[1],fCurrentIndex[3])-1)/2; + Int_t centralPad = (fTPCParam->GetNPads(fCurrentIndex[1],fCurrentIndex[3]-1)-1)/2; Int_t nElectrons = (tv->GetNrows()-1)/4; indexRange[0]=9999; // min pad @@ -2221,10 +2226,10 @@ void AliTPC::MakeSector(Int_t isec,Int_t nrows,TTree *TH, // of electrons, one AliTPCFastVectors per each track. //---------------------------------------------- - Int_t *nofElectrons = new Int_t [nrows]; // electron counter for each row - AliTPCFastVector **tracks = new AliTPCFastVector* [nrows]; //pointers to the track vectors + Int_t *nofElectrons = new Int_t [nrows+2]; // electron counter for each row + AliTPCFastVector **tracks = new AliTPCFastVector* [nrows+2]; //pointers to the track vectors - for(i=0; i0){ AliTPCFastVector &v = *tracks[i]; @@ -2324,14 +2329,16 @@ void AliTPC::MakeSector(Int_t isec,Int_t nrows,TTree *TH, xyz[3]= (Float_t) (-gasgain*TMath::Log(rn)); index[0]=1; - TransportElectron(xyz,index); //MI change -august + TransportElectron(xyz,index); Int_t rowNumber; - fTPCParam->GetPadRow(xyz,index); //MI change august - rowNumber = index[2]; + fTPCParam->GetPadRow(xyz,index); + // row 0 - cross talk from the innermost row + // row fNRow+1 cross talk from the outermost row + rowNumber = index[2]+1; //transform position to local digit coordinates //relative to nearest pad row - if ((rowNumber<0)||rowNumber>=fTPCParam->GetNRow(isec)) continue; - Float_t x1,y1; + if ((rowNumber<0)||rowNumber>fTPCParam->GetNRow(isec)+1) continue; + Float_t x1,y1; if (isec GetNInnerSector()) { x1 = xyz[1]*fTPCParam->GetInnerPadPitchWidth(); y1 = fTPCParam->GetYInner(rowNumber); @@ -2340,9 +2347,7 @@ void AliTPC::MakeSector(Int_t isec,Int_t nrows,TTree *TH, x1=xyz[1]*fTPCParam->GetOuterPadPitchWidth(); y1 = fTPCParam->GetYOuter(rowNumber); } - // gain inefficiency at the wires edges - linear - x1=TMath::Abs(x1); y1-=1.; if(x1>y1) xyz[3]*=TMath::Max(1.e-6,(y1-x1+1.)); @@ -2375,7 +2380,7 @@ void AliTPC::MakeSector(Int_t isec,Int_t nrows,TTree *TH, // store remaining track (the last one) if not empty // - for(i=0;i0){ AliTPCFastVector &v = *tracks[i]; v(0) = previousTrack; @@ -2592,13 +2597,10 @@ void AliTPC::TransportElectron(Float_t *xyz, Int_t *index) // ExB if (fTPCParam->GetMWPCReadout()==kTRUE){ - Float_t x1=xyz[0]; - fTPCParam->Transform2to2NearestWire(xyz,index); - Float_t dx=xyz[0]-x1; + Float_t dx = fTPCParam->Transform2to2NearestWire(xyz,index); xyz[1]+=dx*(fTPCParam->GetOmegaTau()); } - //add nonisochronity (not implemented yet) - + //add nonisochronity (not implemented yet) } ClassImp(AliTPCdigit) diff --git a/TPC/AliTPCParam.h b/TPC/AliTPCParam.h index f037a7b12c8..86c9ee74b0e 100644 --- a/TPC/AliTPCParam.h +++ b/TPC/AliTPCParam.h @@ -509,10 +509,12 @@ inline Float_t AliTPCParam::Transform2to2NearestWire(Float_t *xyz, Int_t *index Float_t xnew,dx; if (index[1]