- //Split suspiciously big cluster
- if (nDigits > 4&&nDigits < 25) {
- if(q!=0) cluster.SetY(y/q + dStrip - 0.25*nDigits);
- else cluster.SetY(istrip-1 + dStrip - 0.25*nDigits);
- cluster.SetQ(0.5*q);
- if (nClusters[0] == kMax) {
- Error("FindClustersSSD", "Too many 1D clusters !");
- return;
+ //cout<<"strip "<<adc<<" / "<<side<<": "<<strip<<endl;
+
+ if( cal ){
+ noise = side ?cal->GetNoiseN(strip) :cal->GetNoiseP(strip);
+ gain = side ?cal->GetGainN(strip) :cal->GetGainP(strip);
+ stripOK = ( noise>=1. && signal>=3.0*noise
+ //&& !cal->IsPChannelBad(strip)
+ );
+ }
+ } else stripOK = 0; // end of data
+
+ bool newCluster = ( (abs(strip-ostrip)!=1) || !stripOK );
+
+ if( newCluster ){
+
+ //* Store the previous cluster
+
+ if( nDigits>0 && q>0 && snFlag ){
+
+ if (nClusters1D[side] >= kMaxADCClusters-1 ) {
+ AliWarning("HLT ClustersFinderSSD: Too many 1D clusters !");
+ }else {
+
+ Ali1Dcluster &cluster = clusters1D[side][nClusters1D[side]++];
+ cluster.SetY( y / q + dStrip);
+ cluster.SetQ(q);
+ cluster.SetNd(nDigits);
+ cluster.SetLabels(lab);
+ //cout<<"cluster 1D side "<<side<<": y= "<<y<<" q= "<<q<<" d="<<dStrip<<" Y="<<cluster.GetY()<<endl;
+ //Split suspiciously big cluster
+
+ if( repa->GetUseUnfoldingInClusterFinderSSD()
+ && nDigits > 4 && nDigits < 25
+ ){
+ cluster.SetY(y/q + dStrip - 0.25*nDigits);
+ cluster.SetQ(0.5*q);
+ Ali1Dcluster& cluster2 = clusters1D[side][nClusters1D[side]++];
+ cluster2.SetY(y/q + dStrip + 0.25*nDigits);
+ cluster2.SetQ(0.5*q);
+ cluster2.SetNd(nDigits);
+ cluster2.SetLabels(lab);
+ } // unfolding is on