- for (i=0;i<fNofMaps;i++) {
- if( !fAnodeFire[i] ) continue;
- if (read && i<fNofMaps) GetAnodeBaseline(i,baseline,noise);
- for(k=0; k<fScaleSize*fMaxNofSamples; k++) {
- fInZR[k] = fHitMap2->GetSignal(i,k);
- if( bAddNoise ) {
- contrib = (baseline + noise*gRandom->Gaus());
- fInZR[k] += contrib;
- }
- } // end for k
- for(k=0; k<fMaxNofSamples; k++) {
- Double_t newcont = 0.;
- Double_t maxcont = 0.;
- for(kk=0;kk<fScaleSize;kk++) {
- newcont = fInZR[fScaleSize*k+kk];
- if(newcont > maxcont) maxcont = newcont;
- } // end for kk
- newcont = maxcont;
- if (newcont >= maxadc) newcont = maxadc -1;
- if(newcont >= baseline){
- Warning("","newcont=%d>=baseline=%d",newcont,baseline);
- } // end if
- // back to analog: ?
- fHitMap2->SetHit(i,k,newcont);
- } // end for k
- } // end for i loop over anodes
- return;
- } // end if DoFFT
-
- for (i=0;i<fNofMaps;i++) {
- if( !fAnodeFire[i] ) continue;
- if (read && i<fNofMaps) GetAnodeBaseline(i,baseline,noise);
- for(k=0; k<fScaleSize*fMaxNofSamples; k++) {
- fInZR[k] = fHitMap2->GetSignal(i,k);
- if( bAddNoise ) {
- contrib = (baseline + noise*gRandom->Gaus());
- fInZR[k] += contrib;
- }
- fInZI[k] = 0.;
- } // end for k
- FastFourierTransform(fElectronics,&fInZR[0],&fInZI[0],1);
- for(k=0; k<fScaleSize*fMaxNofSamples; k++) {
- Double_t rw = fElectronics->GetTraFunReal(k);
- Double_t iw = fElectronics->GetTraFunImag(k);
- fOutZR[k] = fInZR[k]*rw - fInZI[k]*iw;
- fOutZI[k] = fInZR[k]*iw + fInZI[k]*rw;
- } // end for k
- FastFourierTransform(fElectronics,&fOutZR[0],&fOutZI[0],-1);
- for(k=0; k<fMaxNofSamples; k++) {
- Double_t newcont1 = 0.;
- Double_t maxcont1 = 0.;
- for(kk=0;kk<fScaleSize;kk++) {
- newcont1 = fOutZR[fScaleSize*k+kk];
- if(newcont1 > maxcont1) maxcont1 = newcont1;
- } // end for kk
- newcont1 = maxcont1;
- if (newcont1 >= maxadc) newcont1 = maxadc -1;
- fHitMap2->SetHit(i,k,newcont1);
- } // end for k
- } // end for i loop over anodes
- return;
-}
-//____________________________________________________________________
-void AliITSsimulationSDD::ApplyDeadChannels() {
- // Set dead channel signal to zero
- AliITSresponseSDD * response = (AliITSresponseSDD *)GetResp();
-
- // nothing to do
- if( response->GetDeadModules() == 0 &&
- response->GetDeadChips() == 0 &&
- response->GetDeadChannels() == 0 )
- return;
-
- static AliITS *iTS = (AliITS*)gAlice->GetModule( "ITS" );
-
- Int_t fMaxNofSamples = GetSeg()->Npx();
- AliITSgeom *geom = iTS->GetITSgeom();
- Int_t firstSDDMod = geom->GetStartDet( 1 );
- // loop over wings
- for( Int_t j=0; j<2; j++ ) {
- Int_t mod = (fModule-firstSDDMod)*2 + j;
- for( Int_t u=0; u<response->Chips(); u++ )
- for( Int_t v=0; v<response->Channels(); v++ ) {
- Float_t Gain = response->Gain( mod, u, v );
- for( Int_t k=0; k<fMaxNofSamples; k++ ) {
- Int_t i = j*response->Chips()*response->Channels() +
- u*response->Channels() +
- v;
- Double_t signal = Gain * fHitMap2->GetSignal( i, k );
- fHitMap2->SetHit( i, k, signal ); ///
- }
- }
- }
+ for(k=0; k<fMaxNofSamples; k++) {
+ Double_t newcont = 0.;
+ Double_t maxcont = 0.;
+ for(kk=0;kk<fScaleSize;kk++) {
+ newcont = fInZR[fScaleSize*k+kk];
+ if(newcont > maxcont) maxcont = newcont;
+ } // end for kk
+ newcont = maxcont;
+ if (newcont >= maxadc) newcont = maxadc -1;
+ if(newcont >= baseline){
+ Warning("","newcont=%d>=baseline=%d",newcont,baseline);
+ } // end if
+ // back to analog: ?
+ fHitMap2->SetHit(i,k,newcont);
+ } // end for k
+ }else{
+ FastFourierTransform(fElectronics,&fInZR[0],&fInZI[0],1);
+ for(k=0; k<fScaleSize*fMaxNofSamples; k++) {
+ Double_t rw = fElectronics->GetTraFunReal(k);
+ Double_t iw = fElectronics->GetTraFunImag(k);
+ fOutZR[k] = fInZR[k]*rw - fInZI[k]*iw;
+ fOutZI[k] = fInZR[k]*iw + fInZI[k]*rw;
+ } // end for k
+ FastFourierTransform(fElectronics,&fOutZR[0],&fOutZI[0],-1);
+ for(k=0; k<fMaxNofSamples; k++) {
+ Double_t newcont1 = 0.;
+ Double_t maxcont1 = 0.;
+ for(kk=0;kk<fScaleSize;kk++) {
+ newcont1 = fOutZR[fScaleSize*k+kk];
+ if(newcont1 > maxcont1) maxcont1 = newcont1;
+ } // end for kk
+ newcont1 = maxcont1;
+ if (newcont1 >= maxadc) newcont1 = maxadc -1;
+ fHitMap2->SetHit(i,k,newcont1);
+ } // end for k
+ }
+ } // end for i loop over anodes
+ return;