/*
$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
#include <TF1.h>
#include <TTree.h>
#include <TH1.h>
+#include <TFile.h>
#include "AliRun.h"
if (fDigitsManager) {
delete fDigitsManager;
+ fDigitsManager = NULL;
}
}
fLUT[ilut] = lut[ilut];
}
+ fDigitsManager->CreateArrays();
+
}
//_____________________________________________________________________________
return kFALSE;
}
+ fDigitsManager->Open(fInputFile->GetName());
+
// Read in the digit arrays
return (fDigitsManager->ReadDigits());
// 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");
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) {
}
+ 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);
,idet
,clusterCharge
,clusterTracks
+ ,clusterSigmaY2
,iType);
}
/ ((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);
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]));
}