#include "AliDAQ.h"
#include "AliLog.h"
#include "AliRawReader.h"
+#include "AliLoader.h"
#include "AliRunLoader.h"
#include "AliGeomManager.h"
//_____________________________________________________________________________
AliTOFClusterFinderV1::AliTOFClusterFinderV1(AliTOFcalib *calib):
+ TNamed("AliTOFClusterFinderV1",""),
fRunLoader(0),
fDigits(new TClonesArray("AliTOFdigit", 4000)),
fRecPoints(new TClonesArray("AliTOFcluster", 4000)),
fNumberOfTofClusters(0),
fNumberOfTofDigits(0),
- fMaxDeltaTime(0),
+ fkRecoParam(0),//AliTOFReconstructor::GetRecoParam()),
+ fMaxDeltaTime(0),//fkRecoParam->GetMaxDeltaTime()),
fVerbose(0),
fDecoderVersion(0),
fTOFcalib(calib),
fTOFdigitMap(new AliTOFDigitMap()),
fTOFGeometry(new AliTOFGeometry()),
- fTOFdigits(0),
- fTOFRawStream(AliTOFRawStream())
+ fTOFdigits(new TTree()),
+ fTOFRawStream(AliTOFRawStream()),
+ fCalibrateTOFtimes(1)
{
//
// Constructor
//
- const AliTOFRecoParam *recoParam = AliTOFReconstructor::GetRecoParam(); // instantiate reco param from STEER...
- fMaxDeltaTime = recoParam->GetMaxDeltaTime();
+
+ for (Int_t ii=0; ii<kTofMaxCluster; ii++) fTofClusters[ii]=0x0;
+
+ if (AliTOFReconstructor::GetRecoParam()) {
+ fkRecoParam = AliTOFReconstructor::GetRecoParam();
+ fMaxDeltaTime = fkRecoParam->GetMaxDeltaTime();
+ }
+ else
+ fMaxDeltaTime = 2;
+
+ TString validity = (TString)fTOFcalib->GetOfflineValidity();
+ if (validity.CompareTo("valid")==0) {
+ AliInfo(Form(" validity = %s - Using offline calibration parameters", validity.Data()));
+ } else {
+ AliInfo(Form(" validity = %s - Using online calibration parameters", validity.Data()));
+ }
+
}
//_____________________________________________________________________________
AliTOFClusterFinderV1::AliTOFClusterFinderV1(AliRunLoader* runLoader, AliTOFcalib *calib):
+ TNamed("AliTOFClusterFinderV1",""),
fRunLoader(runLoader),
fDigits(new TClonesArray("AliTOFdigit", 4000)),
fRecPoints(new TClonesArray("AliTOFcluster", 4000)),
fNumberOfTofClusters(0),
fNumberOfTofDigits(0),
- fMaxDeltaTime(0),
+ fkRecoParam(0),//AliTOFReconstructor::GetRecoParam()),
+ fMaxDeltaTime(0),//fkRecoParam->GetMaxDeltaTime()),
fVerbose(0),
fDecoderVersion(0),
fTOFcalib(calib),
fTOFdigitMap(new AliTOFDigitMap()),
fTOFGeometry(new AliTOFGeometry()),
- fTOFdigits(0),
- fTOFRawStream(AliTOFRawStream())
+ fTOFdigits(new TTree()),
+ fTOFRawStream(AliTOFRawStream()),
+ fCalibrateTOFtimes(1)
{
//
// Constructor
//
- const AliTOFRecoParam *recoParam = AliTOFReconstructor::GetRecoParam(); // instantiate reco param from STEER...
- fMaxDeltaTime = recoParam->GetMaxDeltaTime();
+
+ for (Int_t ii=0; ii<kTofMaxCluster; ii++) fTofClusters[ii]=0x0;
+
+ if (AliTOFReconstructor::GetRecoParam()) {
+ fkRecoParam = AliTOFReconstructor::GetRecoParam();
+ fMaxDeltaTime = fkRecoParam->GetMaxDeltaTime();
+ }
+ else
+ fMaxDeltaTime = 2;
+
+ TString validity = (TString)fTOFcalib->GetOfflineValidity();
+ if (validity.CompareTo("valid")==0) {
+ AliInfo(Form(" validity = %s - Using offline calibration parameters", validity.Data()));
+ } else {
+ AliInfo(Form(" validity = %s - Using online calibration parameters", validity.Data()));
+ }
}
//_____________________________________________________________________________
AliTOFClusterFinderV1::AliTOFClusterFinderV1(const AliTOFClusterFinderV1 &source)
- :TObject(source),
+ :TNamed(source),
fRunLoader(0),
fDigits(source.fDigits),
fRecPoints(source.fRecPoints),
fNumberOfTofClusters(0),
fNumberOfTofDigits(0),
- fMaxDeltaTime(2),
+ fkRecoParam(0),//AliTOFReconstructor::GetRecoParam()),
+ fMaxDeltaTime(0),//fkRecoParam->GetMaxDeltaTime()),
fVerbose(0),
fDecoderVersion(source.fDecoderVersion),
fTOFcalib(source.fTOFcalib),
fTOFdigitMap(new AliTOFDigitMap()),
fTOFGeometry(new AliTOFGeometry()),
fTOFdigits(source.fTOFdigits),
- fTOFRawStream(source.fTOFRawStream)
-
+ fTOFRawStream(source.fTOFRawStream),
+ fCalibrateTOFtimes(1)
{
// copy constructor
+
+ for (Int_t ii=0; ii<kTofMaxCluster; ii++) fTofClusters[ii]=source.fTofClusters[ii];
+
+ if (AliTOFReconstructor::GetRecoParam()) {
+ fkRecoParam = AliTOFReconstructor::GetRecoParam();
+ fMaxDeltaTime = fkRecoParam->GetMaxDeltaTime();
+ }
+ else
+ fMaxDeltaTime = 2;
+
}
//_____________________________________________________________________________
return *this;
TObject::operator=(source);
+ for (Int_t ii=0; ii<kTofMaxCluster; ii++) fTofClusters[ii]=source.fTofClusters[ii];
fDigits=source.fDigits;
fRecPoints=source.fRecPoints;
fVerbose=source.fVerbose;
fTOFGeometry=source.fTOFGeometry;
fTOFdigits=source.fTOFdigits;
fTOFRawStream=source.fTOFRawStream;
+ fCalibrateTOFtimes=source.fCalibrateTOFtimes;
return *this;
}
delete fTOFdigits;
+ //if (fTofClusters || fNumberOfTofClusters) {
+ if (fNumberOfTofClusters) {
+ for (Int_t ii=0; ii<fNumberOfTofClusters; ii++)
+ if (fTofClusters[ii]) fTofClusters[ii]->Delete();
+ fNumberOfTofClusters = 0;
+ }
+
}
//_____________________________________________________________________________
Int_t inholes = 0;
+ fDigits->Clear();
TClonesArray &aDigits = *fDigits;
- if (digitsTree == 0x0)
+ if (digitsTree == 0x0) {
AliFatal("Can not get TreeD for TOF");
+ return;
+ }
TBranch *branch = digitsTree->GetBranch("TOF");
if (!branch) {
TClonesArray *digits = &staticDigits;
branch->SetAddress(&digits);
digitsTree->GetEvent(0);
- AliInfo(Form("Number of TOF digits: %d", digits->GetEntriesFast()));
+ AliDebug(1,Form("Number of TOF digits: %d", digits->GetEntriesFast()));
AliTOFdigit *tofDigit;
Bool_t status = kTRUE;
- AliInfo(" Calibrating TOF Digits: ");
+ AliDebug(1," Calibrating TOF Digits");
+ /*
TString validity = (TString)fTOFcalib->GetOfflineValidity();
- AliInfo(Form(" validity = %s", validity.Data()));
if (validity.CompareTo("valid")==0) {
- AliInfo(" ...using offline calibration parameters");
- }
- else {
- AliInfo(" ...using online calibration parameters");
- }
+ AliInfo(Form(" validity = %s - Using offline calibration parameters", validity.Data()));
+ } else
+ AliInfo(Form(" validity = %s - Using online calibration parameters", validity.Data()));
+ */
Int_t ii = 0;
for (ii=0; ii<digits->GetEntriesFast(); ii++) {
}
}
+ tdcCorr = tofDigit->GetTdc();
status = MakeSlewingCorrection(detectorIndex, tofDigit->GetToT(), tofDigit->GetTdc(), tdcCorr);
for (jj=0; jj<4; jj++) info[jj] = -1;
FillRecPoint();
clusterTree->Fill();
- AliInfo(Form("Number of found clusters: %d", fNumberOfTofClusters));
+ AliDebug(1,Form("Number of found clusters: %d", fNumberOfTofClusters));
ResetRecpoint();
ResetDigits();
- AliInfo(Form("Execution time to read TOF digits and to write TOF clusters : R:%.4fs C:%.4fs",
- stopwatch.RealTime(),stopwatch.CpuTime()));
+ AliDebug(1,Form("Execution time to read TOF digits and to write TOF clusters : R:%.4fs C:%.4fs",
+ stopwatch.RealTime(),stopwatch.CpuTime()));
if (inholes) AliWarning(Form("Clusters in the TOF holes: %d",inholes));
Raw2Digits(rawReader, fTOFdigits);
- AliDebug(2,Form("Number of TOF digits: %d", fNumberOfTofDigits));
+ AliDebug(1,Form("Number of TOF digits: %d", fNumberOfTofDigits));
ResetRecpoint();
Int_t bufsize = 32000;
clustersTree->Fill();
- AliInfo(Form("Number of found clusters: %d", fNumberOfTofClusters));
+ AliDebug(1,Form("Number of found clusters: %d", fNumberOfTofClusters));
ResetRecpoint();
ResetDigits();
- AliInfo(Form("Execution time to read TOF raw data and to write TOF clusters : R:%.4fs C:%.4fs",
- stopwatch.RealTime(),stopwatch.CpuTime()));
+ AliDebug(1,Form("Execution time to read TOF raw data and to write TOF clusters : R:%.4fs C:%.4fs",
+ stopwatch.RealTime(),stopwatch.CpuTime()));
}
Bool_t status = kTRUE;
- AliInfo(" Calibrating TOF Digits: ");
+ /*
TString validity = (TString)fTOFcalib->GetOfflineValidity();
- AliInfo(Form(" validity = %s", validity.Data()));
if (validity.CompareTo("valid")==0) {
- AliInfo(" ...using offline calibration parameters");
- }
- else {
- AliInfo(" ...using online calibration parameters");
- }
+ AliInfo(Form(" validity = %s - Using offline calibration parameters", validity.Data()));
+ } else
+ AliInfo(Form(" validity = %s - Using online calibration parameters", validity.Data()));
+ */
+
+ if (fDecoderVersion)
+ AliInfo("Using New Decoder");
Int_t indexDDL = 0;
Int_t iRawData = 0;
for (indexDDL=0; indexDDL<kDDL; indexDDL++) {
rawReader->Reset();
- if (fDecoderVersion) {
- AliInfo("Using New Decoder \n");
+ if (fDecoderVersion)
fTOFRawStream.LoadRawDataBuffers(indexDDL,fVerbose);
- }
else fTOFRawStream.LoadRawData(indexDDL);
clonesRawData = (TClonesArray*)fTOFRawStream.GetRawData();
- if (clonesRawData->GetEntriesFast()!=0) AliInfo(Form(" TOF raw data number = %3d", clonesRawData->GetEntriesFast()));
+ if (clonesRawData->GetEntriesFast()!=0) AliDebug(2,Form(" TOF raw data number = %3d", clonesRawData->GetEntriesFast()));
for (iRawData = 0; iRawData<clonesRawData->GetEntriesFast(); iRawData++) {
AliTOFrawData *tofRawDatum = (AliTOFrawData*)clonesRawData->UncheckedAt(iRawData);
dummy = detectorIndex[3];
detectorIndex[3] = detectorIndex[4];//padz
detectorIndex[4] = dummy;//padx
+
+ tdcCorr = tofRawDatum->GetTOF();
status = MakeSlewingCorrection(detectorIndex, tofRawDatum->GetTOT(), tofRawDatum->GetTOF(), tdcCorr);
digit[0] = tdcCorr;
detectorIndex[3] = detectorIndex[4];//padx
detectorIndex[4] = dummy;//padz
+ /* check valid index */
+ if (detectorIndex[0]==-1||detectorIndex[1]==-1||detectorIndex[2]==-1||detectorIndex[3]==-1||detectorIndex[4]==-1) continue;
+
// Do not reconstruct anything in the holes
if (detectorIndex[0]==13 || detectorIndex[0]==14 || detectorIndex[0]==15 ) { // sectors with holes
if (detectorIndex[1]==2) { // plate with holes
// i.e. fRecPoints
//
- Int_t dummy4_1 = -1;
- Int_t dummy3_1 = -1;
- Int_t dummy2_1 = -1;
- Int_t dummy = -1;
+ Int_t dummy4 = -1;
+ Int_t dummy3 = -1;
+ Int_t dummy2 = -1;
+ Int_t dummy = -1;
for(Int_t iPlate=AliTOFGeometry::NPlates()-1; iPlate>=0; iPlate--) {
for(Int_t iStrip=AliTOFGeometry::NStrip(iPlate)-1; iStrip>=0; iStrip--) {
//for (Int_t iSector=AliTOFGeometry::NSectors()-1; iSector>=0; iSector--) {
for (Int_t iSector=0; iSector<AliTOFGeometry::NSectors(); iSector++) {
+
+ if (fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))
+ AliDebug(1,Form(" Number of TOF digits in (%2d,%1d,%2d) -> %d",
+ iSector,iPlate,iStrip,fTOFdigitMap->FilledCellsInStrip(iSector,iPlate,iStrip)));
+
if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
FindClustersWithoutTOT(iSector, iPlate, iStrip); // clusters coming from digits without TOT measurement
+ if (fMaxDeltaTime>0) {
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- FindClustersPerStrip(iSector, iPlate, iStrip, 4); // 4 pads clusters
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ //if (fTOFdigitMap->FilledCellsInStrip(iSector,iPlate,iStrip)>=4)
+ FindClustersPerStrip(iSector, iPlate, iStrip, 4); // 4 pads clusters
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- dummy4_1 = fNumberOfTofClusters;
- FindClustersPerStrip(iSector, iPlate, iStrip, 4); // 4 pads clusters
- if (fNumberOfTofClusters!=dummy4_1)
- AliDebug(2, Form(" (4): n1= %5d, n2 = %5", dummy4_1, fNumberOfTofClusters));
+ dummy4 = fNumberOfTofClusters;
+ FindClustersPerStrip(iSector, iPlate, iStrip, 4); // 4 pads clusters
+ if (fNumberOfTofClusters!=dummy4)
+ AliDebug(2, Form(" (4): n1= %5d, n2 = %5d", dummy4, fNumberOfTofClusters));
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- FindClustersPerStrip(iSector, iPlate, iStrip, 3); // 3 pads clusters
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ FindClustersPerStrip(iSector, iPlate, iStrip, 3); // 3 pads clusters
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- dummy3_1 = fNumberOfTofClusters;
- FindClustersPerStrip(iSector, iPlate, iStrip, 3); // 3 pads clusters
- if (fNumberOfTofClusters!=dummy3_1)
- AliDebug(2, Form(" (3): n1= %5d, n2 = %5", dummy3_1, fNumberOfTofClusters));
+ dummy3 = fNumberOfTofClusters;
+ FindClustersPerStrip(iSector, iPlate, iStrip, 3); // 3 pads clusters
+ if (fNumberOfTofClusters!=dummy3)
+ AliDebug(2, Form(" (3): n1= %5d, n2 = %5d", dummy3, fNumberOfTofClusters));
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- FindClustersPerStrip(iSector, iPlate, iStrip, 2); // 2 pads clusters
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ FindClustersPerStrip(iSector, iPlate, iStrip, 2); // 2 pads clusters
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- dummy2_1 = fNumberOfTofClusters;
- FindClustersPerStrip(iSector, iPlate, iStrip, 2); // 2 pads clusters
- if (fNumberOfTofClusters!=dummy2_1)
- AliDebug(2, Form(" (2): n1= %5d, n2 =%5", dummy2_1, fNumberOfTofClusters));
+ dummy2 = fNumberOfTofClusters;
+ FindClustersPerStrip(iSector, iPlate, iStrip, 2); // 2 pads clusters
+ if (fNumberOfTofClusters!=dummy2)
+ AliDebug(2, Form(" (2): n1= %5d, n2 =%5d", dummy2, fNumberOfTofClusters));
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- dummy = fNumberOfTofClusters;
- FindClusters34(iSector, iPlate, iStrip); // 3 pads clusters between 4 hit pads
- if (fNumberOfTofClusters!=dummy)
- AliDebug(2, Form(" (3 between 4): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ dummy = fNumberOfTofClusters;
+ FindClusters34(iSector, iPlate, iStrip); // 3 pads clusters between 4 hit pads
+ if (fNumberOfTofClusters!=dummy)
+ AliDebug(2, Form(" (3 between 4): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- dummy = fNumberOfTofClusters;
- FindClusters23(iSector, iPlate, iStrip); // 2 pads clusters between 3 hit pads
- if (fNumberOfTofClusters!=dummy)
- AliDebug(2, Form(" (2 between 3): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ dummy = fNumberOfTofClusters;
+ FindClusters23(iSector, iPlate, iStrip); // 2 pads clusters between 3 hit pads
+ if (fNumberOfTofClusters!=dummy)
+ AliDebug(2, Form(" (2 between 3): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- dummy = fNumberOfTofClusters;
- FindClusters24(iSector, iPlate, iStrip); // 2 pads clusters between 4 hit pads
- if (fNumberOfTofClusters!=dummy)
- AliDebug(2, Form(" (2 between 4): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ dummy = fNumberOfTofClusters;
+ FindClusters24(iSector, iPlate, iStrip); // 2 pads clusters between 4 hit pads
+ if (fNumberOfTofClusters!=dummy)
+ AliDebug(2, Form(" (2 between 4): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
- if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
- dummy = fNumberOfTofClusters;
- FindOnePadClusterPerStrip(iSector, iPlate, iStrip); // 1 pad clusters
- if (fNumberOfTofClusters!=dummy)
- AliDebug(2,Form(" (1): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ dummy = fNumberOfTofClusters;
+ FindOnePadClusterPerStrip(iSector, iPlate, iStrip); // 1 pad clusters
+ if (fNumberOfTofClusters!=dummy)
+ AliDebug(2,Form(" (1): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
+
+ if (fTOFdigitMap->DigitInStrip(iSector,iPlate,iStrip)>0)
+ AliDebug(2, Form(" (1): number of clusters = %5d (remaining digit %2d), -%2d %1d %2d-",
+ fNumberOfTofClusters, fTOFdigitMap->DigitInStrip(iSector,iPlate,iStrip),
+ iSector, iPlate, iStrip));
+
+ }
+ else {
+ if (!(fTOFdigitMap->StripDigitCheck(iSector,iPlate,iStrip))) continue;
+ dummy = fNumberOfTofClusters;
+ FindOnePadClusterPerStrip(iSector, iPlate, iStrip); // 1 pad clusters
+ if (fNumberOfTofClusters!=dummy)
+ AliDebug(2,Form(" (1): n1 = %5d, n2 = %5d", fNumberOfTofClusters, dummy));
+
+ if (fTOFdigitMap->DigitInStrip(iSector,iPlate,iStrip)>0)
+ AliDebug(2, Form(" (1): number of clusters = %5d (remaining digit %2d), -%2d %1d %2d-",
+ fNumberOfTofClusters, fTOFdigitMap->DigitInStrip(iSector,iPlate,iStrip),
+ iSector, iPlate, iStrip));
+
+ }
- if (fTOFdigitMap->DigitInStrip(iSector,iPlate,iStrip)>0)
- AliDebug(2, Form(" (1): number of clusters = %5d (remaining digit %2d), -%2d %1d %2d-",
- fNumberOfTofClusters, fTOFdigitMap->DigitInStrip(iSector,iPlate,iStrip),
- iSector, iPlate, iStrip));
}
}
Int_t detectorIndex[5];
for (jj=0; jj<5; jj++) detectorIndex[jj] = -1;
- Int_t parTOF[5];
- for (jj=0; jj<5; jj++) parTOF[jj] = -1;
+ Int_t parTOF[7];
+ for (jj=0; jj<7; jj++) parTOF[jj] = -1;
Int_t trackLabels[3];
for (jj=0; jj<3; jj++) trackLabels[jj] = -1;
Int_t digitIndex = -1;
parTOF[2] = fTofClusters[ii]->GetADC(); // ADC=TOT
parTOF[3] = fTofClusters[ii]->GetTDCND(); // TDCND
parTOF[4] = fTofClusters[ii]->GetTDCRAW();//RAW
+ parTOF[5] = 0;
+ parTOF[6] = 0;
status = fTofClusters[ii]->GetStatus();
posClus[0] = fTofClusters[ii]->GetX();
//
const Int_t kMaxNumberOfTracksPerDigit = 3;
- const Int_t kMaxNumberOfDigitsPerVolume = 3;
+ const Int_t kMaxNumberOfDigitsPerVolume = 10;
Int_t jj = 0;
Double_t covClus[6];
for (jj=0; jj<6; jj++) covClus[jj] = 0.;
- Int_t parTOF[5];
- for (jj=0; jj<5; jj++) parTOF[jj] = 0;
+ Int_t parTOF[7];
+ for (jj=0; jj<7; jj++) parTOF[jj] = 0;
Bool_t status = kTRUE; //assume all sim channels ok in the beginning...
Int_t tracks[kMaxNumberOfTracksPerDigit];
- for (jj=0; jj<3; jj++) tracks[jj] = -1;
+ for (jj=0; jj<kMaxNumberOfTracksPerDigit; jj++) tracks[jj] = -1;
Int_t dummyCounter=-1;
parTOF[2] = Int_t(digitInteresting->GetAdc());
parTOF[3] = Int_t(digitInteresting->GetTdcND());
parTOF[4] = Int_t(digitInteresting->GetTdc());
+ parTOF[5] = 0;
+ parTOF[6] = 0;
volIdClus = fTOFGeometry->GetAliSensVolIndex(det[0],det[1],det[2]);
//volIdClus = GetClusterVolIndex(det);
//
const Int_t kMaxNumberOfTracksPerDigit = 3;
- const Int_t kMaxNumberOfDigitsPerVolume = 3;
+ const Int_t kMaxNumberOfDigitsPerVolume = 10;
Int_t jj = 0;
Double_t covClus[6];
for (jj=0; jj<6; jj++) covClus[jj] = 0.;
- Int_t parTOF[5];
- for (jj=0; jj<5; jj++) parTOF[jj] = 0;
+ Int_t parTOF[7];
+ for (jj=0; jj<7; jj++) parTOF[jj] = 0;
Bool_t status = kTRUE; //assume all sim channels ok in the beginning...
Int_t tracks[kMaxNumberOfTracksPerDigit];
- for (jj=0; jj<3; jj++) tracks[jj] = -1;
+ for (jj=0; jj<kMaxNumberOfTracksPerDigit; jj++) tracks[jj] = -1;
Int_t dummyCounter=-1;
parTOF[2] = Int_t(digitInteresting->GetAdc());
parTOF[3] = Int_t(digitInteresting->GetTdcND());
parTOF[4] = Int_t(digitInteresting->GetTdc());
+ parTOF[5] = 0;
+ parTOF[6] = 0;
volIdClus = fTOFGeometry->GetAliSensVolIndex(det[0],det[1],det[2]);
//volIdClus = GetClusterVolIndex(det);
const Int_t kMaxNumberOfInterestingPads = 4;
const Int_t kMaxNumberOfTracksPerDigit = 3;
- const Int_t kMaxNumberOfDigitsPerVolume = 3;
+ const Int_t kMaxNumberOfDigitsPerVolume = 10;
Int_t ii = 0;
Int_t iPadX = -1;
Int_t iPadZ = -1;
- Int_t parTOF[5];
- for (jj=0; jj<5; jj++) parTOF[jj] = 0;
+ Int_t parTOF[7];
+ for (jj=0; jj<7; jj++) parTOF[jj] = 0;
Double_t posClus[3];
for (jj=0; jj<3; jj++) posClus[jj] = 0.;
Int_t det[5];
Double_t covClus[6];
for (jj=0; jj<6; jj++) covClus[jj] = 0.;
Int_t tracks[kMaxNumberOfTracksPerDigit];
- for (jj=0; jj<3; jj++) tracks[jj] = -1;
+ for (jj=0; jj<kMaxNumberOfTracksPerDigit; jj++) tracks[jj] = -1;
Int_t dummyCounter=-1;
Bool_t alreadyStored = kFALSE;
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
for (jj=0; jj<3; jj++) indDet[jj][4] = padsCluster[2*jj+1+3];
GetClusterPars(/*check,*/ 3, indDet, interestingWeight, posClus, covClus);
for (jj=0; jj<3; jj++) delete [] indDet[jj];
+ delete [] indDet;
// To fill the track index array
dummyCounter=-1;
} // loop on iPad
- for (ii=0; ii<kMaxNumberOfInterestingPads; ii++)
+ for (ii=0; ii<kMaxNumberOfInterestingPads; ii++) {
for (jj=0; jj<kMaxNumberOfDigitsPerVolume; jj++) {
- delete selectedDigit[ii][jj];
+ delete [] selectedDigit[ii][jj];
selectedDigit[ii][jj] = 0x0;
}
-
+ delete [] selectedDigit[ii];
+ selectedDigit[ii] = 0x0;
+ }
+ delete [] selectedDigit;
+ selectedDigit = 0x0;
}
//_____________________________________________________________________________
const Int_t kMaxNumberOfInterestingPads = 4;
const Int_t kMaxNumberOfTracksPerDigit = 3;
- const Int_t kMaxNumberOfDigitsPerVolume = 3;
+ const Int_t kMaxNumberOfDigitsPerVolume = 10;
Int_t ii = 0;
Int_t iPadZ = -1;
Bool_t check = kFALSE;
- Int_t parTOF[5];
- for (jj=0; jj<5; jj++) parTOF[jj] = 0;
+ Int_t parTOF[7];
+ for (jj=0; jj<7; jj++) parTOF[jj] = 0;
Double_t posClus[3];
for (jj=0; jj<3; jj++) posClus[jj] = 0.;
Int_t det[5];
Double_t covClus[6];
for (jj=0; jj<6; jj++) covClus[jj] = 0.;
Int_t tracks[kMaxNumberOfTracksPerDigit];
- for (jj=0; jj<3; jj++) tracks[jj] = -1;
+ for (jj=0; jj<kMaxNumberOfTracksPerDigit; jj++) tracks[jj] = -1;
Int_t dummyCounter=-1;
Bool_t alreadyStored = kFALSE;
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
for (jj=0; jj<2; jj++) indDet[jj][4] = padsCluster[2*jj+1+3];
GetClusterPars(/*check,*/ 2, indDet, interestingWeight, posClus, covClus);
for (jj=0; jj<2; jj++) delete [] indDet[jj];
+ delete [] indDet;
// To fill the track index array
dummyCounter=-1;
} // loop on iPad
- for (ii=0; ii<kMaxNumberOfInterestingPads; ii++)
+ for (ii=0; ii<kMaxNumberOfInterestingPads; ii++) {
for (jj=0; jj<kMaxNumberOfDigitsPerVolume; jj++) {
- delete selectedDigit[ii][jj];
+ delete [] selectedDigit[ii][jj];
selectedDigit[ii][jj] = 0x0;
}
-
+ delete [] selectedDigit[ii];
+ selectedDigit[ii] = 0x0;
+ }
+ delete [] selectedDigit;
+ selectedDigit = 0x0;
}
//_____________________________________________________________________________
const Int_t kMaxNumberOfInterestingPads = 4;
const Int_t kMaxNumberOfTracksPerDigit = 3;
- const Int_t kMaxNumberOfDigitsPerVolume = 3;
+ const Int_t kMaxNumberOfDigitsPerVolume = 10;
Int_t ii = 0;
Int_t iPadZ = -1;
Bool_t check = kFALSE;
- Int_t parTOF[5];
- for (jj=0; jj<5; jj++) parTOF[jj] = 0;
+ Int_t parTOF[7];
+ for (jj=0; jj<7; jj++) parTOF[jj] = 0;
Double_t posClus[3];
for (jj=0; jj<3; jj++) posClus[jj] = 0.;
Int_t det[5];
Double_t covClus[6];
for (jj=0; jj<6; jj++) covClus[jj] = 0.;
Int_t tracks[kMaxNumberOfTracksPerDigit];
- for (jj=0; jj<3; jj++) tracks[jj] = -1;
+ for (jj=0; jj<kMaxNumberOfTracksPerDigit; jj++) tracks[jj] = -1;
Int_t dummyCounter=-1;
Bool_t alreadyStored = kFALSE;
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
if (digitInteresting->GetToT()<=0) continue; // AdC
digitIndexLocal++; // AdC
- AliDebug(1,Form(" %2d %1d %2d %1d %2d %f %f %f %f %5d %5d %5d %5d",
+ AliDebug(1,Form(" %2d %1d %2d %1d %2d %d %d %d %d %5d %5d %5d %5d",
vol[0], vol[1], vol[2] ,vol[4], vol[3],
digitInteresting->GetTdc(), digitInteresting->GetAdc(),
digitInteresting->GetToT(), digitInteresting->GetToT()*digitInteresting->GetToT(),
for (jj=0; jj<2; jj++) indDet[jj][4] = padsCluster[2*jj+1+3];
GetClusterPars(/*check,*/ 2, indDet, interestingWeight, posClus, covClus);
for (jj=0; jj<2; jj++) delete [] indDet[jj];
+ delete [] indDet;
// To fill the track index array
dummyCounter=-1;
} // loop on iPad
- for (ii=0; ii<kMaxNumberOfInterestingPads; ii++)
+ for (ii=0; ii<kMaxNumberOfInterestingPads; ii++) {
for (jj=0; jj<kMaxNumberOfDigitsPerVolume; jj++) {
- delete selectedDigit[ii][jj];
+ delete [] selectedDigit[ii][jj];
selectedDigit[ii][jj] = 0x0;
}
-
+ delete [] selectedDigit[ii];
+ selectedDigit[ii] = 0x0;
+ }
+ delete [] selectedDigit;
+ selectedDigit = 0x0;
}
//_____________________________________________________________________________
const Int_t kMaxNumberOfInterestingPads = 4;
const Int_t kMaxNumberOfTracksPerDigit = 3;
- const Int_t kMaxNumberOfDigitsPerVolume = 3;
+ const Int_t kMaxNumberOfDigitsPerVolume = 10;
Int_t ii = 0;
Int_t iPadZ = -1;
Bool_t check = kFALSE;
- Int_t parTOF[5];
- for (jj=0; jj<5; jj++) parTOF[jj] = 0;
+ Int_t parTOF[7];
+ for (jj=0; jj<7; jj++) parTOF[jj] = 0;
Double_t posClus[3];
for (jj=0; jj<3; jj++) posClus[jj] = 0.;
Int_t det[5];
Double_t covClus[6];
for (jj=0; jj<6; jj++) covClus[jj] = 0.;
Int_t tracks[kMaxNumberOfTracksPerDigit];
- for (jj=0; jj<3; jj++) tracks[jj] = -1;
+ for (jj=0; jj<kMaxNumberOfTracksPerDigit; jj++) tracks[jj] = -1;
Int_t dummyCounter=-1;
Bool_t alreadyStored = kFALSE;
AliDebug(1,Form(" e adesso %1d", interestingCounter+1));
+ Int_t adesso1 = -1;
+ Int_t adesso2 = -1;
+ Int_t adesso3 = -1;
+ Int_t adesso4 = -1;
+
switch(interestingCounter+1) {
case 2:
- for (Int_t adesso1=0; adesso1<interestingCounter+1; adesso1++) {
+ //for (adesso1=0; adesso1<interestingCounter+1; adesso1++) {
+ adesso1 = 0;
for (Int_t firstIndex=0; firstIndex<kMaxNumberOfDigitsPerVolume; firstIndex++) {
if (selectedDigit[adesso1][firstIndex]==0x0) continue;
- for (Int_t adesso2=adesso1+1; adesso2<interestingCounter+1; adesso2++) {
+ //for (adesso2=adesso1+1; adesso2<interestingCounter+1; adesso2++) {
+ adesso2 = 1;
for (Int_t secondIndex=0; secondIndex<kMaxNumberOfDigitsPerVolume; secondIndex++) {
if (selectedDigit[adesso2][secondIndex]==0x0) continue;
- if (TMath::Abs(selectedDigit[adesso1][firstIndex]->GetTDC()-selectedDigit[adesso2][secondIndex]->GetTDC())>fMaxDeltaTime) continue;
+ if (TMath::Abs(selectedDigit[adesso1][firstIndex]->GetTDC()-selectedDigit[adesso2][secondIndex]->GetTDC())>fMaxDeltaTime) {
+ AliDebug(1,Form(" selD1[%d][%d]->GetTDC()=%d selD2[%d][%d]->GetTDC()=%d -- %d ",
+ adesso1,firstIndex,(Int_t)selectedDigit[adesso1][firstIndex]->GetTDC(),
+ adesso2,secondIndex,(Int_t)selectedDigit[adesso2][secondIndex]->GetTDC(),
+ fMaxDeltaTime));
+ continue;
+ }
- AliDebug(1, Form(" %1d %1d (0x%x) %1d %1d (0x%x)", adesso1, firstIndex,selectedDigit[adesso1][firstIndex],
+ AliDebug(1, Form(" %1d %1d (0x%p) %1d %1d (0x%p)", adesso1, firstIndex,selectedDigit[adesso1][firstIndex],
adesso2, secondIndex,selectedDigit[adesso2][secondIndex]));
interestingTOF[0] = selectedDigit[adesso1][firstIndex]->GetTDC();
for (jj=0; jj<interestingCounter+1; jj++) indDet[jj][4] = padsCluster[2*jj+1+3];
GetClusterPars(/*check,*/ interestingCounter+1, indDet, interestingWeight, posClus, covClus);
for (jj=0; jj<interestingCounter+1; jj++) delete [] indDet[jj];
+ delete [] indDet;
// To fill the track index array
dummyCounter=-1;
} // close loop on second digit
- } // close loop on adesso2
+ //} // close loop on adesso2
} // close loop on first digit
- } // close loop on adesso1
+ //} // close loop on adesso1
break;
case 3:
- for (Int_t adesso1=0; adesso1<interestingCounter+1; adesso1++) {
+ //for (adesso1=0; adesso1<interestingCounter+1; adesso1++) {
+ adesso1 = 0;
for (Int_t firstIndex=0; firstIndex<kMaxNumberOfDigitsPerVolume; firstIndex++) {
if (selectedDigit[adesso1][firstIndex]==0x0) continue;
- for (Int_t adesso2=adesso1+1; adesso2<interestingCounter+1; adesso2++) {
+ //for (adesso2=adesso1+1; adesso2<interestingCounter+1; adesso2++) {
+ adesso2 = 1;
for (Int_t secondIndex=0; secondIndex<kMaxNumberOfDigitsPerVolume; secondIndex++) {
if (selectedDigit[adesso2][secondIndex]==0x0) continue;
- for (Int_t adesso3=adesso2+1; adesso3<interestingCounter+1; adesso3++) {
+ //for (adesso3=adesso2+1; adesso3<interestingCounter+1; adesso3++) {
+ adesso3 = 2;
for (Int_t thirdIndex=0; thirdIndex<kMaxNumberOfDigitsPerVolume; thirdIndex++) {
if (selectedDigit[adesso3][thirdIndex]==0x0) continue;
for (jj=0; jj<interestingCounter+1; jj++) indDet[jj][4] = padsCluster[2*jj+1+3];
GetClusterPars(/*check,*/ interestingCounter+1, indDet, interestingWeight, posClus, covClus);
for (jj=0; jj<interestingCounter+1; jj++) delete [] indDet[jj];
+ delete [] indDet;
+
// To fill the track index array
dummyCounter=-1;
} // close loop on third digit
- } // close loop on adesso3
+ //} // close loop on adesso3
} // close loop on second digit
- } // close loop on adesso2
+ //} // close loop on adesso2
} // close loop on first digit
- } // close loop on adesso1
+ //} // close loop on adesso1
break;
case 4:
- Int_t adesso1 = 0;
+ adesso1 = 0;
for (Int_t firstIndex=0; firstIndex<kMaxNumberOfDigitsPerVolume; firstIndex++) {
if (selectedDigit[adesso1][firstIndex]==0x0) continue;
- Int_t adesso2 = 1;
+ adesso2 = 1;
for (Int_t secondIndex=0; secondIndex<kMaxNumberOfDigitsPerVolume; secondIndex++) {
if (selectedDigit[adesso2][secondIndex]==0x0) continue;
- Int_t adesso3 = 2;
+ adesso3 = 2;
for (Int_t thirdIndex=0; thirdIndex<kMaxNumberOfDigitsPerVolume; thirdIndex++) {
if (selectedDigit[adesso3][thirdIndex]==0x0) continue;
- Int_t adesso4 = 3;
+ adesso4 = 3;
for (Int_t fourthIndex=0; fourthIndex<kMaxNumberOfDigitsPerVolume; fourthIndex++) {
if (selectedDigit[adesso4][fourthIndex]==0x0) continue;
for (jj=0; jj<interestingCounter+1; jj++) indDet[jj][4] = padsCluster[2*jj+1+3];
GetClusterPars(/*check,*/ interestingCounter+1, indDet, interestingWeight, posClus, covClus);
for (jj=0; jj<interestingCounter+1; jj++) delete [] indDet[jj];
+ delete [] indDet;
// To fill the track index array
dummyCounter=-1;
} // loop on iPad
- for (ii=0; ii<kMaxNumberOfInterestingPads; ii++)
+ for (ii=0; ii<kMaxNumberOfInterestingPads; ii++) {
for (jj=0; jj<kMaxNumberOfDigitsPerVolume; jj++) {
- delete selectedDigit[ii][jj];
+ delete [] selectedDigit[ii][jj];
selectedDigit[ii][jj] = 0x0;
}
+ delete [] selectedDigit[ii];
+ selectedDigit[ii] = 0x0;
+ }
+ delete [] selectedDigit;
+ selectedDigit = 0x0;
}
//_____________________________________________________________________________
else
AliDebug(2, Form(" Good Status for channel %d",index));
+
+ if (fCalibrateTOFtimes) { // AdC
+
// Get Rough channel online equalization
Double_t roughDelay = (Double_t)calDelay->GetDelay(index); // in ns
AliDebug(2,Form(" channel delay (ns) = %f", roughDelay));
timeCorr = (Double_t)(tofDigitTdc)*AliTOFGeometry::TdcBinWidth()*1.E-3-timeCorr;//redefine the time
timeCorr *= 1.E3;
AliDebug(2,Form(" The channel time, corr (ps)= %e",timeCorr ));
- tdcCorr = (Int_t)(timeCorr/AliTOFGeometry::TdcBinWidth()); //the corrected time (tdc counts)
+ //tdcCorr = (Int_t)(timeCorr/AliTOFGeometry::TdcBinWidth()); //the corrected time (tdc counts)
+ tdcCorr = TMath::Nint(timeCorr/AliTOFGeometry::TdcBinWidth()); //the corrected time (tdc counts)
+ } // AdC
+
return output;
}
AliLoader *localTOFLoader = (AliLoader*)fRunLoader->GetLoader("TOFLoader");
TTree * localTreeD = (TTree*)localTOFLoader->TreeD();
- if (localTreeD == 0x0)
+ if (localTreeD == 0x0) {
AliFatal("Can not get TreeD");
+ return;
+ }
TBranch *branch = localTreeD->GetBranch("TOF");
if (!branch) {
Int_t *parTOF, Double_t *posClus, Bool_t &check)
{
//
- //
+ // Calculates the mean values for cluster position (x,y,z),
+ // TOF charge and time
//
Double_t tofAverage = 0.;
parTOF[2] = Int_t(adcAverage);
parTOF[3] = Int_t(tofAverage);//tofND
parTOF[4] = Int_t(tofAverage);//tofRAW
+ parTOF[5] = 0;
+ parTOF[6] = 0;
}