]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCclustererMI.cxx
cout removed
[u/mrichter/AliRoot.git] / TPC / AliTPCclustererMI.cxx
index 1c521c4d7ad956e9a4b6aaefccb5569dacbb5ea5..8b481f7b859fcd6a1b14c4fe3753599f10582d6d 100644 (file)
@@ -82,6 +82,8 @@
 #include "AliTPCTransform.h"
 #include "AliTPCclustererMI.h"
 
+using std::cerr;
+using std::endl;
 ClassImp(AliTPCclustererMI)
 
 
@@ -269,11 +271,25 @@ void AliTPCclustererMI::MakeCluster(Int_t k,Int_t max,Float_t *bins, UInt_t /*m*
 AliTPCclusterMI &c) 
 {
   //
+  //  Make cluster: characterized by position ( mean-  COG) , shape (RMS) a charge, QMax and Q tot
+  //  Additional correction:
+  //  a) To correct for charge below threshold, in the +1 neghborhood to the max charge charge 
+  //       is extrapolated using gaussian approximation assuming given cluster width.. 
+  //       Additional empirical factor is used to account for the charge fluctuation (kVirtualChargeFactor). 
+  //       Actual value of the  kVirtualChargeFactor should obtained minimimizing residuals between the cluster
+  //       and track interpolation.
+  //  b.) For space points with extended shape (in comparison with expected using parameterization) clusters are 
+  //      unfoded     
+  //  
+  //  NOTE. Actual/Empirical  values for correction are hardwired in the code.
+  //
+  // Input paramters for function:
   //  k    - Make cluster at position k  
   //  bins - 2 D array of signals mapped to 1 dimensional array - 
   //  max  - the number of time bins er one dimension
-  //  c    - refernce to cluster to be filled
+  //  c    - reference to cluster to be filled
   //
+  Double_t kVirtualChargeFactor=0.5;
   Int_t i0=k/max;  //central pad
   Int_t j0=k%max;  //central time bin
 
@@ -299,7 +315,7 @@ AliTPCclusterMI &c)
        Float_t ratio = TMath::Exp(-1.2*TMath::Abs(di)/sigmay2)*TMath::Exp(-1.2*TMath::Abs(dj)/sigmaz2);
        amp = ((matrix[2][0]-2)*(matrix[2][0]-2)/(matrix[-di+2][-dj]+2))*ratio;
        if (amp>2) amp = 2;
-       vmatrix[2+di][2+dj]=amp;
+       vmatrix[2+di][2+dj]= kVirtualChargeFactor*amp;
        vmatrix[2+2*di][2+2*dj]=0;
        if ( (di*dj)!=0){       
          //DIAGONAL ELEMENTS
@@ -670,6 +686,7 @@ void AliTPCclustererMI::Digits2Clusters()
     fParam->Dump();
     fRecoParam->Dump();
   }
+  fRowDig = NULL;
 
   //-----------------------------------------------------------------
   // Use HLT clusters
@@ -1614,12 +1631,13 @@ Int_t AliTPCclustererMI::ReadHLTClusters()
       AliError("HLT Clusters can not be found");
     }
 
-    if (pClusterAccess->FindObject("clusterarray")==NULL) {
+    TObject* pObj=pClusterAccess->FindObject("clusterarray");
+    if (pObj==NULL) {
       AliError("HLT clusters requested, but not cluster array not present");
       return -4;
     }
 
-    TClonesArray* clusterArray=dynamic_cast<TClonesArray*>(pClusterAccess->FindObject("clusterarray"));
+    TObjArray* clusterArray=dynamic_cast<TClonesArray*>(pObj);
     if (!clusterArray) {
       AliError("HLT cluster array is not of class type TClonesArray");
       return -5;