Protection for big cluster size (even in case of non zero suppression)
authordibari <dibari@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Apr 2008 14:59:18 +0000 (14:59 +0000)
committerdibari <dibari@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Apr 2008 14:59:18 +0000 (14:59 +0000)
From now cluster deconvolution is on

HMPID/AliHMPIDCluster.cxx
HMPID/AliHMPIDCluster.h
HMPID/AliHMPIDReconstructor.h

index a7e5db6..3e4351b 100644 (file)
@@ -233,6 +233,7 @@ void AliHMPIDCluster::Print(Option_t* opt)const
     case       kSi1  : status="size 1   (cog)"   ;break;
     case       kNoLoc: status="no LocMax(fit)"   ;break;
     case       kAbn  : status="Abnormal fit  "   ;break;
+    case       kBig  : status="Big Clu(>100) "   ;break;
     
     default:            status="??????"          ;break;   
   }
@@ -256,10 +257,14 @@ Int_t AliHMPIDCluster::Solve(TClonesArray *pCluLst,Int_t *pSigmaCut, Bool_t isTr
   const Int_t kMaxLocMax=6;                                                              //max allowed number of loc max for fitting
 //  
   CoG();                                                                                 //First calculate CoG for the given cluster
+  
   Int_t iCluCnt=pCluLst->GetEntriesFast();                                               //get current number of clusters already stored in the list by previous operations
-  if(isTryUnfold==kFALSE || Size()==1) {                                                 //if cluster contains single pad there is no way to improve the knowledge 
-    fSt = (isTryUnfold)? kSi1: kNot;
-    if(fParam->GetInstType()) SetClusterParams(fXX,fYY,fCh);  
+  
+  Int_t rawSize = Size();                                                                //get current raw cluster size
+  
+  if(rawSize>100 || isTryUnfold==kFALSE || Size()==1) {                                  //No deconv if: 1 - big cluster (also avoid no zero suppression!)
+    fSt = (isTryUnfold)? kSi1: kNot;                                                     //              2 - flag is set to FALSE
+    if(fParam->GetInstType()) SetClusterParams(fXX,fYY,fCh);                             //              3 - size = 1
     new ((*pCluLst)[iCluCnt++]) AliHMPIDCluster(*this);  //add this raw cluster 
     return 1;
   } 
@@ -285,7 +290,6 @@ Int_t AliHMPIDCluster::Solve(TClonesArray *pCluLst,Int_t *pSigmaCut, Bool_t isTr
 //Phase 1. Find number of local maxima. Strategy is to check if the current pad has QDC more then all neigbours. Also find the box contaning the cluster   
   fNlocMax=0;
 
-  Int_t rawSize = Size();
   for(Int_t iDig1=0;iDig1<rawSize;iDig1++) {                                               //first digits loop
     
     AliHMPIDDigit *pDig1 = Dig(iDig1);                                                   //take next digit    
index dff77a0..c7a7914 100644 (file)
@@ -19,7 +19,7 @@ class TClonesArray;        //Solve()
 class AliHMPIDCluster :public AliCluster3D
 {
 public:
-  enum EClusterStatus {kFrm,kCoG,kLo1,kUnf,kMax,kNot,kEdg,kSi1,kNoLoc,kAbn,kEmp=-1};      //status flags    
+  enum EClusterStatus {kFrm,kCoG,kLo1,kUnf,kMax,kNot,kEdg,kSi1,kNoLoc,kAbn,kBig,kEmp=-1};      //status flags    
       AliHMPIDCluster():AliCluster3D(),
                           fCh(-1),fSi(-1),fSt(kEmp),fBox(-1),fNlocMax(-1),fMaxQpad(-1),fMaxQ(-1),fQRaw(0),
                           fQ(0),fErrQ(-1),fXX(0),fErrX(-1),fYY(0),fErrY(-1),fChi2(-1),fDigs(0),fParam(AliHMPIDParam::Instance())
index 4aa2b42..d0588f1 100644 (file)
@@ -32,7 +32,7 @@ public:
   using AliReconstructor::Reconstruct;                                                                                  // 
 
   //private part  
-  static        void           Dig2Clu (TObjArray *pDigLst,TObjArray *pCluLst,Int_t *pUserCut,Bool_t isUnfold=kFALSE     );//digits->clusters
+  static        void           Dig2Clu (TObjArray *pDigLst,TObjArray *pCluLst,Int_t *pUserCut,Bool_t isUnfold=kTRUE     );//digits->clusters
   static        void           FormClu (AliHMPIDCluster *pClu,AliHMPIDDigit *pDig,TClonesArray *pDigLst,TMatrixF *pPadMap);//cluster formation recursive algorithm
   static inline AliHMPIDDigit* UseDig  (Int_t padX,Int_t padY,                    TClonesArray *pDigLst,TMatrixF *pDigMap);//use this pad's digit to form a cluster
   inline Bool_t                IsDigSurvive(AliHMPIDDigit *pDig                                                     )const;//check for sigma cut