]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSClusterFinderV2SDD.cxx
Move histogram setting ranges from analysis modules to base class (to be moved to...
[u/mrichter/AliRoot.git] / ITS / AliITSClusterFinderV2SDD.cxx
index 8d065dfd218b82c1a8ae659e5cbd7f37b35e63e4..02b91c594b27a34c5790b6d67d23113b5fd89e11 100644 (file)
@@ -240,6 +240,7 @@ FindClustersSDD(AliBin* bins[2], TBits* anodeFired[2],
                if (index<0) continue;
                if (index>=kMaxBin) continue;
                AliBin *b=&bins[s][index];
+               if(b->GetQ()<0.1) continue;
                AliITSdigitSDD* d=(AliITSdigitSDD*)digits->UncheckedAt(b->GetIndex());
                for (Int_t itrack=0;itrack<10;itrack++){
                  Int_t track = (d->GetTracks())[itrack];
@@ -249,6 +250,9 @@ FindClustersSDD(AliBin* bins[2], TBits* anodeFired[2],
                }
              }
            }
+         } 
+         else { // raw data
+           if (fRawID2ClusID) milab[0] = fNClusters+1; // RS: store clID+1 as a reference to the cluster
          }
          
 
@@ -290,12 +294,12 @@ FindClustersSDD(AliBin* bins[2], TBits* anodeFired[2],
          y=trk[1];
          z=trk[2]; 
          
+         q+=(driftTime*rsdd->GetADCvsDriftTime(fModule)); // correction for zero supp.
          q/=rsdd->GetADCtokeV(fModule);
-         q+=(driftTime*rsdd->GetChargevsTime()); // correction for zero supp.
          if(cal-> IsAMAt20MHz()) q*=2.; // account for 1/2 sampling freq.
          if(q<repa->GetMinClusterChargeSDD()) continue; // remove noise clusters
          
-         Float_t hit[5] = {y, z, 0.0030*0.0030, 0.0020*0.0020, q};
+         Float_t hit[6] = {y, z, 0.0030*0.0030, 0.0020*0.0020, q, 0.};
          Int_t  info[3] = {clSizTb, clSizAnode, fNlayer[fModule]};
          if (digits) CheckLabels2(milab);
          milab[3]=fNdet[fModule];
@@ -308,6 +312,7 @@ FindClustersSDD(AliBin* bins[2], TBits* anodeFired[2],
          else {
            fDetTypeRec->AddRecPoint(cc);
          }
+         fNClusters++; // RS
          ncl++;
        }
       }
@@ -321,7 +326,7 @@ void AliITSClusterFinderV2SDD::RawdataToClusters(AliRawReader* rawReader){
     //------------------------------------------------------------
   // This function creates ITS clusters from raw data
   //------------------------------------------------------------
-
+  fNClusters = 0; //RS
   AliITSRawStream* inputSDD=AliITSRawStreamSDD::CreateRawStreamSDD(rawReader);
   AliDebug(1,Form("%s is used",inputSDD->ClassName()));
 
@@ -366,6 +371,9 @@ void AliITSClusterFinderV2SDD::FindClustersSDD(AliITSRawStream* input)
   for(Int_t iMod=0; iMod<kModulesPerDDL; iMod++) vectModId[iMod]=-1;
 
   // read raw data input stream
+  int countRW = 0; //RS
+  if (fRawID2ClusID) fRawID2ClusID->Reset(); //RS if array was provided, we shall store the rawID -> ClusterID
+  //
   while (input->Next()) {
     Int_t iModule = input->GetModuleID();
     if(iModule<0){
@@ -437,6 +445,7 @@ void AliITSClusterFinderV2SDD::FindClustersSDD(AliITSRawStream* input)
            fDDLBins[iHybrid][index].SetQ(q);
            fDDLBins[iHybrid][index].SetMask(1);
            fDDLBins[iHybrid][index].SetIndex(index);
+           fDDLBins[iHybrid][index].SetRawID(countRW); //RS register raw id
            ddlAnodeFired[iHybrid]->SetBitNumber(iz);
          }else{
            AliWarning(Form("Invalid SDD cell: Anode=%d   TimeBin=%d",iz,itb));   
@@ -444,6 +453,7 @@ void AliITSClusterFinderV2SDD::FindClustersSDD(AliITSRawStream* input)
        }
       }
     }
+    countRW++; //RS
   }
   for(Int_t iHyb=0;iHyb<kHybridsPerDDL;iHyb++){ 
    delete ddlAnodeFired[iHyb];