]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCclustererMI.cxx
Fix in documentation
[u/mrichter/AliRoot.git] / TPC / AliTPCclustererMI.cxx
index 049ef19c400a49e69504678cba7eeece9a6ab434..dbc0425e1534b94bcee3a6b8810d2be963542949 100644 (file)
@@ -745,7 +745,11 @@ void AliTPCclustererMI::Digits2Clusters(AliRawReader* rawReader)
     AliTPCCalROC * gainROC    = gainTPC->GetCalROC(fSector);  // pad gains per given sector
     AliTPCCalROC * pedestalROC = pedestalTPC->GetCalROC(fSector);  // pedestal per given sector
     AliTPCCalROC * noiseROC   = noiseTPC->GetCalROC(fSector);  // noise per given sector
+    //check the presence of the calibration
+    if (!noiseROC ||!pedestalROC ) {
+      AliError(Form("Missing calibration per sector\t%d\n",fSector));
+      continue;
+    }
     Int_t nRows = 0;
     Int_t nDDLs = 0, indexDDL = 0;
     if (fSector < kNIS) {
@@ -824,17 +828,19 @@ void AliTPCclustererMI::Digits2Clusters(AliRawReader* rawReader)
       }else{
        allBins[iRow][iPad*fMaxTime+iTimeBin] = signal;
       }
-      allBins[iRow][iPad*fMaxTime+0]=1.;  // pad with signal
+      allBins[iRow][iPad*fMaxTime+0]+=1.;  // pad with signal
 
       // Temporary
       digCounter++;
     } // End of the loop over altro data
     //
     //
+    //
+    //
     // Now loop over rows and perform pedestal subtraction
     if (digCounter==0) continue;
-    //    if (fPedSubtraction) {
-    if (calcPedestal) {
+    //    if (calcPedestal) {
+    if (kTRUE) {
       for (Int_t iRow = 0; iRow < nRows; iRow++) {
        Int_t maxPad;
        if (fSector < kNIS)
@@ -843,6 +849,15 @@ void AliTPCclustererMI::Digits2Clusters(AliRawReader* rawReader)
          maxPad = fParam->GetNPadsUp(iRow);
 
        for (Int_t iPad = 3; iPad < maxPad + 3; iPad++) {
+         //
+         // Temporary fix for data production - !!!! MARIAN
+         // The noise calibration should take mean and RMS - currently the Gaussian fit used
+         // In case of double peak  - the pad should be rejected
+         //
+         // Line mean - if more than given digits over threshold - make a noise calculation
+         // and pedestal substration
+         if (!calcPedestal && allBins[iRow][iPad*fMaxTime+0]<50) continue;
+         //
          if (allBins[iRow][iPad*fMaxTime+0] <1 ) continue;  // no data
          Float_t *p = &allBins[iRow][iPad*fMaxTime+3];
          //Float_t pedestal = TMath::Median(fMaxTime, p);      
@@ -910,7 +925,9 @@ void AliTPCclustererMI::Digits2Clusters(AliRawReader* rawReader)
   delete [] allSigBins;
   delete [] allNSigBins;
   
-  Info("Digits2Clusters", "File  %s Event\t%d\tNumber of found clusters : %d\n", fOutput->GetName(),*(rawReader->GetEventId()), nclusters);
+  if (rawReader->GetEventId() && fOutput ){
+    Info("Digits2Clusters", "File  %s Event\t%d\tNumber of found clusters : %d\n", fOutput->GetName(),*(rawReader->GetEventId()), nclusters);
+  }
 
 }
 
@@ -940,14 +957,15 @@ void AliTPCclustererMI::FindClusters(AliTPCCalROC * noiseROC)
     if (b[0]<minMaxCutAbs) continue;   //threshold for maxima  
     //
     if (b[-1]+b[1]+b[-fMaxTime]+b[fMaxTime]<=0) continue;  // cut on isolated clusters 
-    //    if (b[-1]+b[1]<=0) continue;               // cut on isolated clusters
-    //if (b[-fMaxTime]+b[fMaxTime]<=0) continue; // cut on isolated clusters
+    if (b[-1]+b[1]<=0) continue;               // cut on isolated clusters
+    if (b[-fMaxTime]+b[fMaxTime]<=0) continue; // cut on isolated clusters
     //
     if ((b[0]+b[-1]+b[1])<minUpDownCutAbs) continue;   //threshold for up down  (TRF) 
     if ((b[0]+b[-fMaxTime]+b[fMaxTime])<minLeftRightCutAbs) continue;   //threshold for left right (PRF)    
     if (!IsMaximum(*b,fMaxTime,b)) continue;
     //
     Float_t noise = noiseROC->GetValue(fRow, i/fMaxTime);
+    if (noise>fRecoParam->GetMaxNoise()) continue;
     // sigma cuts
     if (b[0]<minMaxCutSigma*noise) continue;   //threshold form maxima  
     if ((b[0]+b[-1]+b[1])<minUpDownCutSigma*noise) continue;   //threshold for up town TRF