X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=inline;f=MUON%2FAliMUONClusterFinderPeakCOG.cxx;h=c0fbb5a78e12ebec615ab1f4f71bce72f9f65b6c;hb=2dffffd6a61dc16790d7376bc17ee281ea26df92;hp=6b7d1543aadcac28b41dd0f4d772642005939b11;hpb=99c136e1c3e77da0cd9cfccb149742d67c36aaa2;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONClusterFinderPeakCOG.cxx b/MUON/AliMUONClusterFinderPeakCOG.cxx index 6b7d1543aad..c0fbb5a78e1 100644 --- a/MUON/AliMUONClusterFinderPeakCOG.cxx +++ b/MUON/AliMUONClusterFinderPeakCOG.cxx @@ -45,6 +45,8 @@ //#include #include +using std::endl; +using std::cout; /// \cond CLASSIMP ClassImp(AliMUONClusterFinderPeakCOG) /// \endcond @@ -98,8 +100,9 @@ AliMUONClusterFinderPeakCOG::~AliMUONClusterFinderPeakCOG() //_____________________________________________________________________________ Bool_t -AliMUONClusterFinderPeakCOG::Prepare(Int_t detElemId, TClonesArray* pads[2], - const AliMpArea& area, const AliMpVSegmentation* seg[2]) +AliMUONClusterFinderPeakCOG::Prepare(Int_t detElemId, TObjArray* pads[2], + const AliMpArea& area, + const AliMpVSegmentation* seg[2]) { /// Prepare for clustering // AliCodeTimerAuto("",0) @@ -148,6 +151,9 @@ AliMUONClusterFinderPeakCOG::NextCluster() // if the cluster list is exhausted, we need to go to the next // pre-cluster and treat it + fClusterList.Delete(); // reset the list of clusters for this pre-cluster + fClusterNumber = -1; + fPreCluster = fPreClusterFinder->NextCluster(); if (!fPreCluster) @@ -156,9 +162,6 @@ AliMUONClusterFinderPeakCOG::NextCluster() return 0x0; } - fClusterList.Delete(); // reset the list of clusters for this pre-cluster - fClusterNumber = -1; - WorkOnPreCluster(); // WorkOnPreCluster may have used only part of the pads, so we check that @@ -254,7 +257,7 @@ AliMUONClusterFinderPeakCOG::CheckPrecluster(const AliMUONCluster& origCluster) // Disregard small clusters (leftovers from splitting or noise) if ((origCluster.Multiplicity()==1 || origCluster.Multiplicity()==2) && - origCluster.Charge(0)+origCluster.Charge(1) < 10) + origCluster.Charge(0)+origCluster.Charge(1) < 1.525) // JC: adc -> fc { return 0x0; } @@ -324,7 +327,7 @@ AliMUONClusterFinderPeakCOG::CheckPreclusterTwoCathodes(AliMUONCluster* cluster) = fkSegmentation[cath1]->PadByPosition(pad->Position().X(),pad->Position().Y(),kFALSE); if (!mpPad.IsValid()) continue; //if (nFlags == 1 && pad->Charge() < fgkZeroSuppression * 3) continue; - if (nFlags == 1 && pad->Charge() < 20) continue; + if (nFlags == 1 && pad->Charge() < 3.05) continue; // JC: adc -> fc AliDebug(2,Form("Releasing the following pad : de,cath,ix,iy %d,%d,%d,%d charge %e", fDetElemId,pad->Cathode(),pad->Ix(),pad->Iy(),pad->Charge())); toBeRemoved.AddLast(pad); @@ -530,7 +533,7 @@ void AliMUONClusterFinderPeakCOG::BuildPixArrayOneCathode(AliMUONCluster& cluste // AliDebug(2,Form("cluster.Multiplicity=%d",cluster.Multiplicity())); TVector2 dim = cluster.MinPadDimensions (-1, kFALSE); - Double_t width[2] = {dim.X(), dim.Y()}, xy0[2]; + Double_t width[2] = {dim.X(), dim.Y()}, xy0[2] = { 0.0, 0.0 }; Int_t found[2] = {0}, mult = cluster.Multiplicity(); for ( Int_t i = 0; i < mult; ++i) { @@ -598,17 +601,17 @@ void AliMUONClusterFinderPeakCOG::BuildPixArrayOneCathode(AliMUONCluster& cluste for (Int_t i = 1; i <= nbins[0]; ++i) { Double_t x = xaxis->GetBinCenter(i); for (Int_t j = 1; j <= nbins[1]; ++j) { - if (hist2->GetCellContent(i,j) < 0.1) continue; + if (hist2->GetBinContent(hist2->GetBin(i,j)) < 0.01525) continue; // JC: adc -> fc if (cath0 != cath1) { // Two-sided cluster - Double_t cont = hist2->GetCellContent(i,j); + Double_t cont = hist2->GetBinContent(hist2->GetBin(i,j)); if (cont < 999.) continue; - if (cont-Int_t(cont/1000.)*1000. < 0.5) continue; + if (cont-Int_t(cont/1000.)*1000. < 0.07625) continue; // JC: adc -> fc } - //if (hist2->GetCellContent(i,j) < 1.1 && cluster.Multiplicity(0) && + //if (hist2->GetBinContent(hist2->GetBin(i,j)) < 1.1 && cluster.Multiplicity(0) && // cluster.Multiplicity(1)) continue; Double_t y = yaxis->GetBinCenter(j); - Double_t charge = hist1->GetCellContent(i,j); + Double_t charge = hist1->GetBinContent(hist1->GetBin(i,j)); AliMUONPad* pixPtr = new AliMUONPad(x, y, width[0], width[1], charge); fPixArray->Add(pixPtr); } @@ -649,11 +652,11 @@ void AliMUONClusterFinderPeakCOG::PadOverHist(Int_t idir, Int_t ix0, Int_t iy0, else { // Fill histogram Double_t cont = pad->Charge(); - if (hist2->GetCellContent(ix0, ixy) > 0.1) - cont = TMath::Min (hist1->GetCellContent(ix0, ixy), cont) - + TMath::Min (TMath::Max(hist1->GetCellContent(ix0, ixy),cont)*0.1, 10.); - hist1->SetCellContent(ix0, ixy, cont); - hist2->SetCellContent(ix0, ixy, hist2->GetCellContent(ix0, ixy)+amask); + if (hist2->GetBinContent(hist2->GetBin(ix0, ixy)) > 0.01525) // JC: adc -> fc + cont = TMath::Min (hist1->GetBinContent(hist1->GetBin(ix0, ixy)), cont) + + TMath::Min (TMath::Max(hist1->GetBinContent(hist1->GetBin(ix0, ixy)),cont)*0.1, 1.525); // JC: adc -> fc + hist1->SetBinContent(hist1->GetBin(ix0, ixy), cont); + hist2->SetBinContent(hist2->GetBin(ix0, ixy), hist2->GetBinContent(hist2->GetBin(ix0, ixy))+amask); } } @@ -666,11 +669,11 @@ void AliMUONClusterFinderPeakCOG::PadOverHist(Int_t idir, Int_t ix0, Int_t iy0, else { // Fill histogram Double_t cont = pad->Charge(); - if (hist2->GetCellContent(ix0, ixy) > 0.1) - cont = TMath::Min (hist1->GetCellContent(ix0, ixy), cont) - + TMath::Min (TMath::Max(hist1->GetCellContent(ix0, ixy),cont)*0.1,10.); - hist1->SetCellContent(ix0, ixy, cont); - hist2->SetCellContent(ix0, ixy, hist2->GetCellContent(ix0, ixy)+amask); + if (hist2->GetBinContent(hist2->GetBin(ix0, ixy)) > 0.01525) // JC: adc -> fc + cont = TMath::Min (hist1->GetBinContent(hist1->GetBin(ix0, ixy)), cont) + + TMath::Min (TMath::Max(hist1->GetBinContent(hist1->GetBin(ix0, ixy)),cont)*0.1,1.525); // JC: adc -> fc + hist1->SetBinContent(hist1->GetBin(ix0, ixy), cont); + hist2->SetBinContent( hist2->GetBin(ix0, ixy), hist2->GetBinContent(hist2->GetBin(ix0, ixy))+amask); } } } @@ -692,6 +695,9 @@ Int_t AliMUONClusterFinderPeakCOG::FindLocalMaxima(TObjArray *pixArray, Int_t *l Double_t xylim[4] = {999, 999, 999, 999}; Int_t nPix = pixArray->GetEntriesFast(); + + if ( nPix <= 0 ) return 0; + AliMUONPad *pixPtr = 0; for (Int_t ipix = 0; ipix < nPix; ++ipix) { pixPtr = (AliMUONPad*) pixArray->UncheckedAt(ipix); @@ -717,7 +723,7 @@ Int_t AliMUONClusterFinderPeakCOG::FindLocalMaxima(TObjArray *pixArray, Int_t *l for (Int_t i = 1; i <= ny; ++i) { indx = (i-1) * nx; for (Int_t j = 1; j <= nx; ++j) { - if (fHistAnode->GetCellContent(j,i) < 0.5) continue; + if (fHistAnode->GetBinContent(fHistAnode->GetBin(j,i)) < 0.07625) continue; // JC: adc -> fc //if (isLocalMax[indx+j-1] < 0) continue; if (isLocalMax[indx+j-1] != 0) continue; FlagLocalMax(fHistAnode, i, j, isLocalMax); @@ -729,7 +735,7 @@ Int_t AliMUONClusterFinderPeakCOG::FindLocalMaxima(TObjArray *pixArray, Int_t *l for (Int_t j = 1; j <= nx; ++j) { if (isLocalMax[indx+j-1] > 0) { localMax[nMax] = indx + j - 1; - maxVal[nMax++] = fHistAnode->GetCellContent(j,i); + maxVal[nMax++] = fHistAnode->GetBinContent(fHistAnode->GetBin(j,i)); if (nMax > 99) break; } } @@ -750,7 +756,7 @@ void AliMUONClusterFinderPeakCOG::FlagLocalMax(TH2D *hist, Int_t i, Int_t j, Int Int_t nx = hist->GetNbinsX(); Int_t ny = hist->GetNbinsY(); - Int_t cont = TMath::Nint (hist->GetCellContent(j,i)); + Int_t cont = TMath::Nint (hist->GetBinContent(hist->GetBin(j,i))); Int_t cont1 = 0, indx = (i-1)*nx+j-1, indx1 = 0, indx2 = 0; Int_t ie = i + 2, je = j + 2; @@ -761,7 +767,7 @@ void AliMUONClusterFinderPeakCOG::FlagLocalMax(TH2D *hist, Int_t i, Int_t j, Int if (j1 < 1 || j1 > nx) continue; if (i == i1 && j == j1) continue; indx2 = indx1 + j1 - 1; - cont1 = TMath::Nint (hist->GetCellContent(j1,i1)); + cont1 = TMath::Nint (hist->GetBinContent(hist->GetBin(j1,i1))); if (cont < cont1) { isLocalMax[indx] = -1; return; } else if (cont > cont1) isLocalMax[indx2] = -1; else { // the same charge @@ -820,9 +826,9 @@ void AliMUONClusterFinderPeakCOG::FindCluster(AliMUONCluster& cluster, Double_t wy = fHistAnode->GetYaxis()->GetBinWidth(1)/2; Double_t yc = fHistAnode->GetYaxis()->GetBinCenter(ic); Double_t xc = fHistAnode->GetXaxis()->GetBinCenter(jc); - Double_t cont = fHistAnode->GetCellContent(jc,ic); - AliMUONPad* pixPtr = new AliMUONPad (xc, yc, wx, wy, cont); - if (fDebug) pixPtr->Print("full"); + Double_t cont = fHistAnode->GetBinContent(fHistAnode->GetBin(jc,ic)); + AliMUONPad pixel(xc, yc, wx, wy, cont); + if (fDebug) pixel.Print("full"); Int_t npad = cluster.Multiplicity(); @@ -832,7 +838,7 @@ void AliMUONClusterFinderPeakCOG::FindCluster(AliMUONCluster& cluster, for (Int_t j = 0; j < npad; ++j) { AliMUONPad* pad = cluster.Pad(j); - if ( Overlap(*pad,*pixPtr) ) + if ( Overlap(*pad,pixel) ) { if (fDebug) { cout << j << " "; pad->Print("full"); } if (pad->Charge() > qMax[pad->Cathode()]) { @@ -893,7 +899,7 @@ void AliMUONClusterFinderPeakCOG::FindCluster(AliMUONCluster& cluster, } //qAver = TMath::Sqrt(qAver); - if ( qAver >= 14 ) + if ( qAver >= 2.135 ) // JC: adc -> fc { AliMUONCluster* cluster1 = new AliMUONCluster(cluster);