Upgraded simulation of zero suppression algorithm and code cleanup (F. Prino)
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Apr 2008 14:31:53 +0000 (14:31 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Apr 2008 14:31:53 +0000 (14:31 +0000)
ITS/AliITSetfSDD.cxx
ITS/AliITSsimulationSDD.cxx

index 2daca2a..8e26a3c 100644 (file)
@@ -33,12 +33,6 @@ ClassImp(AliITSetfSDD)
 const Int_t AliITSetfSDD::AliITSetfSDDparam::fgkMaxNofPoles = 5;
 const Int_t AliITSetfSDD::AliITSetfSDDparam::fgkMaxNofSamples = 1024;
 
-Int_t ppower(Int_t b, Int_t e) {
-  Int_t power = 1;
-  for(Int_t i=0; i<e; i++) power *= b;
-  return power;
-}
-
 AliITSetfSDD::AliITSetfSDD():
 fTimeDelay(0),
 fSamplingTime(0),
@@ -84,10 +78,9 @@ fWI(0)
   fTimeDelay = 53.5;
   if(amplif == 2) fTimeDelay = 35.5;
   fSamplingTime = timestep;
-
+  Double_t xGiga=1.0E+9;
   fT0 = 0.;
-  fDf = ppower(10,9)/(AliITSetfSDDparam::NumberOfSamples()*fSamplingTime);
-
+  fDf = xGiga/(AliITSetfSDDparam::NumberOfSamples()*fSamplingTime);
   Int_t i,j;
   fZeroM = new Double_t[AliITSetfSDDparam::NumberOfPoles()];
   fZeroR = new Double_t [AliITSetfSDDparam::NumberOfPoles()];
@@ -182,8 +175,8 @@ fWI(0)
       Double_t vVI = vVM*sin(vVA);
       //cout << "VM: " << vVM << ", VA: " << vVA << endl;
       //cout << "VR: " << vVR << ", VI: " << vVI << endl;
-      fTfR[i] = vVR*ppower(10,9);
-      fTfI[i] = vVI*ppower(10,9);
+      fTfR[i] = vVR*xGiga;
+      fTfI[i] = vVI*xGiga;
       //cout << "fTfR[" << i << "] = " << fTfR[i] << endl;
       //cout << "fTfI[" << i << "] = " << fTfI[i] << endl;
       if(i) {
index e8a9ff5..bc38771 100644 (file)
@@ -855,23 +855,32 @@ void AliITSsimulationSDD::Compress2D(){
       Int_t ian=i+iWing*fNofMaps/2;
       if( !fAnodeFire[ian] ) continue;
       for (Int_t itb=0; itb<fMaxNofSamples; itb++) {
+       Int_t nLow=0, nHigh=0;      
        Float_t cC=fHitMap2->GetSignal(ian,itb);
        if(cC<=tL) continue;
+       nLow++; // cC is greater than tL
+       if(cC>tH) nHigh++;
        //                     N
        // Get "quintuple":   WCE
        //                     S
        Float_t wW=0.;
        if(itb>0) wW=fHitMap2->GetSignal(ian,itb-1);
+       if(wW>tL) nLow++;
+       if(wW>tH) nHigh++;
        Float_t eE=0.;
        if(itb<fMaxNofSamples-1) eE=fHitMap2->GetSignal(ian,itb+1);
+       if(eE>tL) nLow++;
+       if(eE>tH) nHigh++;
        Float_t nN=0.;
        if(i<(fNofMaps/2-1)) nN=fHitMap2->GetSignal(ian+1,itb);
+       if(nN>tL) nLow++;
+       if(nN>tH) nHigh++;
        Float_t sS=0.;
        if(i>0) sS=fHitMap2->GetSignal(ian-1,itb);
-       
-       Int_t thres=tH;  // another cell in quintuplet should pass high threshold
-       if(cC>tH) thres=tL; // another cell in quintuplet should pass low threshold
-       if(wW>thres || eE>thres || nN>thres || sS>thres){  
+       if(sS>tL) nLow++;
+       if(sS>tH) nHigh++;
+       
+       if(nLow>=3 && nHigh>=1){
          Int_t signal=(Int_t)(cC-tL);
          if(do10to8) signal = Convert10to8(signal);
          AddDigit(ian,itb,signal);  // store C (subtracting low threshold)