]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDclusterizerV1.cxx
Remove unneccessary header files
[u/mrichter/AliRoot.git] / TRD / AliTRDclusterizerV1.cxx
index 4a0e43cf352e27e65f2e605464027ecea8851797..057b85427eb425a8c74adbf1e6f5fc8b9b8ed6dd 100644 (file)
 
 /*
 $Log$
+Revision 1.13  2001/05/28 17:07:58  hristov
+Last minute changes; ExB correction in AliTRDclusterizerV1; taking into account of material in G10 TEC frames and material between TEC planes (C.Blume,S.Sedykh)
+
+Revision 1.12  2001/05/21 17:42:58  hristov
+Constant casted to avoid the ambiguity
+
+Revision 1.11  2001/05/21 16:45:47  hristov
+Last minute changes (C.Blume)
+
 Revision 1.10  2001/05/07 08:06:44  cblume
 Speedup of the code. Create only AliTRDcluster
 
@@ -68,6 +77,7 @@ Add new TRD classes
 #include <TF1.h>
 #include <TTree.h>
 #include <TH1.h>
+#include <TFile.h>
 
 #include "AliRun.h"
 
@@ -132,6 +142,7 @@ AliTRDclusterizerV1::~AliTRDclusterizerV1()
 
   if (fDigitsManager) {
     delete fDigitsManager;
+    fDigitsManager = NULL;
   }
 
 }
@@ -204,6 +215,8 @@ void AliTRDclusterizerV1::Init()
     fLUT[ilut] = lut[ilut];
   }
 
+  fDigitsManager->CreateArrays();
+
 }
 
 //_____________________________________________________________________________
@@ -219,6 +232,8 @@ Bool_t AliTRDclusterizerV1::ReadDigits()
     return kFALSE;
   }
 
+  fDigitsManager->Open(fInputFile->GetName());
+
   // Read in the digit arrays
   return (fDigitsManager->ReadDigits());  
 
@@ -242,6 +257,17 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
   // Get the geometry
   AliTRDgeometry *geo = fTRD->GetGeometry();
 
+  Float_t timeBinSize = geo->GetTimeBinSize();
+  // Half of ampl.region
+  const Float_t kAmWidth = AliTRDgeometry::AmThick()/2.; 
+
+  AliTRDdigitizer *digitizer = (AliTRDdigitizer*) fInputFile->Get("digitizer");
+  printf("AliTRDclusterizerV1::MakeCluster -- ");
+  printf("Got digitizer\n");
+  Float_t omegaTau = digitizer->GetOmegaTau();
+  printf("AliTRDclusterizerV1::MakeCluster -- ");
+  printf("OmegaTau = %f \n",omegaTau);
   printf("AliTRDclusterizerV1::MakeCluster -- ");
   printf("Start creating clusters.\n");
 
@@ -344,9 +370,9 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
           for ( col = 2;  col <  nColMax;    col++) {
             for (time = 0; time < nTimeTotal; time++) {
 
-              Int_t signalL = digits->GetDataUnchecked(row,col  ,time);
-              Int_t signalM = digits->GetDataUnchecked(row,col-1,time);
-              Int_t signalR = digits->GetDataUnchecked(row,col-2,time);
+              Int_t signalL = TMath::Abs(digits->GetDataUnchecked(row,col  ,time));
+              Int_t signalM = TMath::Abs(digits->GetDataUnchecked(row,col-1,time));
+              Int_t signalR = TMath::Abs(digits->GetDataUnchecked(row,col-2,time));
  
              // Look for the maximum
               if (signalM >= maxThresh) {
@@ -518,6 +544,18 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
 
                }
 
+                Float_t clusterSigmaY2 = (clusterSignal[2] + clusterSignal[0]) / clusterCharge 
+                                       - (clusterPads[1]-col-0.5) * (clusterPads[1]-col-0.5);
+
+                // Correct for ExB displacement
+                if (digitizer->GetExB()) { 
+                  Int_t   local_time_bin = (Int_t) clusterPads[2];
+                  Float_t driftLength    = local_time_bin * timeBinSize + kAmWidth;
+                  Float_t colSize        = geo->GetColPadSize(iplan);
+                  Float_t deltaY         = omegaTau*driftLength/colSize;
+                  clusterPads[1]         = clusterPads[1] - deltaY;
+                }
+                                       
                 if (fVerbose) {
                   printf("-----------------------------------------------------------\n");
                   printf("Create cluster no. %d\n",nClusters);
@@ -546,6 +584,7 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
                                 ,idet
                                 ,clusterCharge
                                 ,clusterTracks
+                               ,clusterSigmaY2
                                 ,iType);
 
               }
@@ -614,8 +653,8 @@ Float_t AliTRDclusterizerV1::Unfold(Float_t eps, Float_t* padSignal)
                      / ((1-ratio)*padSignal[2] + padSignal[3] + padSignal[4]);
 
     // Set cluster charge ratio
-    Float_t ampLeft  = padSignal[1];
-    Float_t ampRight = padSignal[3];
+    Float_t ampLeft  = padSignal[1] / PadResponse(0 - maxLeft );
+    Float_t ampRight = padSignal[3] / PadResponse(0 - maxRight);
 
     // Apply pad response to parameters
     newLeftSignal[0]  = ampLeft  * PadResponse(-1 - maxLeft);
@@ -627,7 +666,7 @@ Float_t AliTRDclusterizerV1::Unfold(Float_t eps, Float_t* padSignal)
     newRightSignal[2] = ampRight * PadResponse( 1 - maxRight);
 
     // Calculate new overlapping ratio
-    ratio = TMath::Min(1.0,newLeftSignal[2] / 
+    ratio = TMath::Min((Float_t)1.0,newLeftSignal[2] / 
                           (newLeftSignal[2] + newRightSignal[0]));
 
   }