LCOV - code coverage report
Current view: top level - PHOS/PHOSrec - AliPHOSClusterizerv2.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 29 3.4 %
Date: 2016-06-14 17:26:59 Functions: 1 8 12.5 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : /* $Id$ */
      17             : 
      18             : //////////////////////////////////////////////////////////////////////////////
      19             : //  Clusterization class for IHEP reconstruction.
      20             : // Performs clusterization (collects neighbouring active cells)
      21             : // It differs from AliPHOSClusterizerv1 in neighbour definition only
      22             : //*-- Author: Boris Polichtchouk, IHEP
      23             : 
      24             : // --- ROOT system ---
      25             : #include "TBenchmark.h"
      26             : 
      27             : // --- Standard library ---
      28             : 
      29             : // --- AliRoot header files ---
      30             : #include "AliLog.h"
      31             : #include "AliPHOSClusterizerv2.h"
      32             : #include "AliPHOSEvalRecPoint.h"
      33             : #include "AliPHOSRecCpvManager.h"
      34             : #include "AliPHOSRecEmcManager.h"
      35             : #include "AliPHOSGeometry.h"
      36             : #include "AliPHOSDigit.h"
      37             : 
      38          20 : ClassImp(AliPHOSClusterizerv2)
      39             : 
      40             : //____________________________________________________________________________
      41           0 : AliPHOSClusterizerv2::AliPHOSClusterizerv2() : AliPHOSClusterizerv1() 
      42           0 : {}
      43             : 
      44             : //____________________________________________________________________________
      45             : AliPHOSClusterizerv2::AliPHOSClusterizerv2(AliPHOSGeometry *geom):
      46           0 : AliPHOSClusterizerv1(geom)
      47           0 : {}
      48             : 
      49             : //____________________________________________________________________________
      50             : void AliPHOSClusterizerv2::GetNumberOfClustersFound(int* numb) const
      51             : {
      52             :   // Returns the number of found EMC and CPV rec.points
      53             : 
      54           0 :   numb[0] = fEMCRecPoints->GetEntries();  
      55           0 :   numb[1] = fCPVRecPoints->GetEntries();  
      56           0 : }
      57             : 
      58             : //____________________________________________________________________________
      59             : void AliPHOSClusterizerv2::Digits2Clusters(Option_t* option)
      60             : {
      61             :   // Steering method
      62             : 
      63           0 :   if(strstr(option,"tim"))
      64           0 :     gBenchmark->Start("PHOSClusterizer"); 
      65             :   
      66           0 :   if(strstr(option,"print"))
      67           0 :     Print() ; 
      68           0 : }
      69             : //   AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
      70             : 
      71             : //   TFolder* wPoolF =  gime->PhosLoader()->GetDetectorDataFolder();
      72             :   
      73             : //   TObjArray* wPool = new TObjArray(400);
      74             : //   wPool->SetName("SmartPoints");
      75             : //   wPoolF->Add(wPool);
      76             : //   wPoolF->Add(this);
      77             : 
      78             : //   Int_t nevents = gime->MaxEvent() ;
      79             : //   Int_t ievent ;
      80             : 
      81             : //   for(ievent = 0; ievent<nevents; ievent++) {
      82             :     
      83             : //     gime->Event(ievent,"D") ;
      84             :     
      85             : //     AliInfo(Form("MakeClusters invoked..")) ;
      86             : //     MakeClusters() ;
      87             : //     AliInfo(Form("MakeClusters done.")) ;
      88             : 
      89             : 
      90             : //     //SmartRecPoints will communicate with wPool.
      91             : 
      92             : //     AliPHOSEvalRecPoint* rp=0;
      93             : 
      94             : //     // CPV reconstruction
      95             : 
      96             : //     AliPHOSRecCpvManager* recCpv = new AliPHOSRecCpvManager();
      97             : //     wPoolF->Add(recCpv);
      98             : 
      99             : //     Int_t iPoint; //loop variable
     100             : 
     101             : //     for(iPoint=0; iPoint<gime->CpvRecPoints()->GetEntriesFast(); iPoint++) {
     102             : //       rp = new AliPHOSEvalRecPoint(iPoint, kTRUE);
     103             : //       rp->MakeJob();
     104             : //     }
     105             : 
     106             : //     AliPHOSEvalRecPoint pt;
     107             : //     pt.UpdateWorkingPool();
     108             : 
     109             : //     TObjArray * cpvRecPoints = gime->CpvRecPoints() ; 
     110             : //     Int_t nOldCpv = cpvRecPoints->GetEntries();
     111             : //     cpvRecPoints->Delete();
     112             : //     cpvRecPoints->Compress();
     113             : 
     114             : //     Int_t i; //loop variable
     115             : 
     116             : //     for(i=0; i<wPool->GetEntries(); i++)
     117             : //       cpvRecPoints->Add(wPool->At(i));
     118             : 
     119             : //     wPool->Clear();
     120             : //     wPool->Compress();
     121             : 
     122             : //     wPoolF->Remove(recCpv);
     123             : //     delete recCpv;
     124             : 
     125             : //     AliInfo(Form("       %d", gime->CpvRecPoints()->GetEntries() )) ;
     126             : //     AliInfo(Form("       %d cpvRecPoints", cpvRecPoints->GetEntries() )) ;
     127             : 
     128             : 
     129             : //     // Now Emc reconstruction
     130             : 
     131             : //     AliPHOSRecEmcManager* recEmc = new AliPHOSRecEmcManager();
     132             : //     wPoolF->Add(recEmc);
     133             : 
     134             : //     for(iPoint=0; iPoint<gime->EmcRecPoints()->GetEntriesFast(); iPoint++) {
     135             : //       rp = new AliPHOSEvalRecPoint(iPoint, kFALSE);
     136             : //       rp->MakeJob();
     137             : //     }
     138             : 
     139             : //     pt.UpdateWorkingPool();
     140             : 
     141             : //     TObjArray * emcRecPoints = gime->EmcRecPoints() ; 
     142             : //     Int_t nOldEmc = emcRecPoints->GetEntries();
     143             : //     emcRecPoints->Delete();
     144             : //     emcRecPoints->Compress();
     145             : 
     146             : //     for(i=0; i<wPool->GetEntries(); i++)
     147             : //       emcRecPoints->Add(wPool->At(i));
     148             : 
     149             : //     wPool->Clear();
     150             : //     wPool->Compress();
     151             : 
     152             : //     wPoolF->Remove(recEmc);
     153             : //     delete recEmc;
     154             : 
     155             : //     TString message ; 
     156             : //     message  = "       %d  OLD cpvRecPoints\n" ; 
     157             : //     message += "       %d\n" ; 
     158             : //     message += "       %d cpvRecPoints\n" ; 
     159             : 
     160             : //     message += "       %d OLD emcRecPoints " ; 
     161             : //     message += "       %d\n" ;
     162             : //     message += "       %d emcRecPoints\n" ;
     163             : 
     164             : //     AliInfo(Form("%s", message.Data(), 
     165             : //       nOldCpv, 
     166             : //       gime->CpvRecPoints()->GetEntries(),cpvRecPoints->GetEntries(), 
     167             : //       nOldEmc, 
     168             : //       gime->EmcRecPoints()->GetEntries(), emcRecPoints->GetEntries() )); 
     169             :     
     170             : 
     171             : //     WriteRecPoints();
     172             : 
     173             : 
     174             : //   } // loop over events
     175             : 
     176             : //   if(strstr(option,"tim")) {
     177             : //     gBenchmark->Stop("PHOSClusterizer");
     178             : //     AliInfo(Form("took %f seconds for Clusterizing", gBenchmark->GetCpuTime("PHOSClusterizer") )) ;
     179             : //   }
     180             : // }
     181             : 
     182             : //____________________________________________________________________________
     183             : Int_t AliPHOSClusterizerv2::AreNeighbours(AliPHOSDigit* d1, AliPHOSDigit* d2) const
     184             : {
     185             :   // Points are neighbours if they have common edge.
     186             :   // Points with common vertex are NOT neighbours.
     187             :   // This treatment of neighbourship is the part of 
     188             :   // IHEP algorithm of clusterization.
     189             : 
     190             :   // Gives the neighbourness of two digits = 0 are not neighbour but continue searching 
     191             :   //                                       = 1 are neighbour
     192             :   //                                       = 2 are not neighbour but do not continue searching
     193             :   // The order of d1 and d2 is important: first (d1) should be a digit already in a cluster 
     194             :   // which is compared to a digit (d2)  not yet in a cluster  
     195             : 
     196             :   Int_t rv = 0 ; 
     197             : 
     198           0 :   Int_t relid1[4] ; 
     199           0 :   fGeom->AbsToRelNumbering(d1->GetId(), relid1) ; 
     200             : 
     201           0 :   Int_t relid2[4] ; 
     202           0 :   fGeom->AbsToRelNumbering(d2->GetId(), relid2) ; 
     203             :  
     204           0 :   if ( (relid1[0] == relid2[0]) && (relid1[1]==relid2[1]) ) { // inside the same PHOS module and the same PPSD Module 
     205           0 :     Int_t rowdiff = TMath::Abs( relid1[2] - relid2[2] ) ;  
     206           0 :     Int_t coldiff = TMath::Abs( relid1[3] - relid2[3] ) ;  
     207             :     
     208           0 :     if ( ( (coldiff < 1) && (rowdiff <= 1) ) || ( ( coldiff <= 1 )  && ( rowdiff < 1 ) ) ){
     209             :       rv = 1 ; 
     210           0 :     }
     211             :     else {
     212           0 :       if((relid2[2] > relid1[2]) && (relid2[3] > relid1[3]+1)) 
     213           0 :         rv = 2; //  Difference in row numbers is too large to look further 
     214             :     }
     215             : 
     216           0 :   } 
     217             :   else {
     218             :     
     219           0 :     if( (relid1[0] < relid2[0]) || (relid1[1] < relid2[1]) )  
     220           0 :       rv=2 ;
     221             : 
     222             :   }
     223             : 
     224           0 :   return rv ; 
     225             : 
     226           0 : }

Generated by: LCOV version 1.11