hijing TMEVSIM mevsim THbtp HBTP TEPEMGEN EPEMGEN \
FASTSIM microcern \
RAWDatabase RAWDatarec RAWDatasim \
- AliL3Src AliL3Comp AliL3Misc AliL3MUON \
- AliL3Hough AliL3ITS \
+ AliHLTSrc AliHLTComp AliHLTMisc AliHLTMUON \
+ AliHLTHough AliHLTITS \
# THerwig herwig TPHIC
ifeq (macosx,$(ALICE_TARGET))
hijing TMEVSIM mevsim THbtp HBTP TEPEMGEN EPEMGEN \
FASTSIM microcern \
RAWDatabase RAWDatarec RAWDatasim \
- AliL3Src AliL3Comp AliL3Misc AliL3MUON \
- AliL3Hough AliL3ITS
+ AliHLTSrc AliHLTComp AliHLTMisc AliHLTMUON \
+ AliHLTHough AliHLTITS
PACKBLIBS := -L$(ROOTSYS)/lib $(ROOTCLIBS) $(ROOTPLIBS) $(SYSLIBS)
hijing TMEVSIM mevsim THbtp HBTP TEPEMGEN EPEMGEN \
FASTSIM microcern \
RAWDatabase RAWDatarec RAWDatasim \
- AliL3Src AliL3Comp AliL3Misc AliL3MUON \
- AliL3Hough AliL3ITS \
+ AliHLTSrc AliHLTComp AliHLTMisc AliHLTMUON \
+ AliHLTHough AliHLTITS \
# THerwig herwig TPHIC
PACKBLIBS := $(ROOTCLIBS) $(ROOTPLIBS) -lTreePlayer -lGeomPainter -lGed -lRGL $(SYSLIBS)
gSystem->Load("libTOFsim");
gSystem->Load("libTOFrec");
- gSystem->Load("libAliL3ITS");
- gSystem->Load("libAliL3Src");
- gSystem->Load("libAliL3Misc");
- gSystem->Load("libAliL3Comp");
+ gSystem->Load("libAliHLTITS");
+ gSystem->Load("libAliHLTSrc");
+ gSystem->Load("libAliHLTMisc");
+ gSystem->Load("libAliHLTComp");
gSystem->Load("libThread");
- gSystem->Load("libAliL3Hough");
+ gSystem->Load("libAliHLTHough");
gSystem->Load("libANALYSIS");
gSystem->Load("libAlieve.so");
// @(#) $Id$
-// Original file : src/AliL3StandardIncludes.h,v 1.5
+// Original file : src/AliHLTStandardIncludes.h,v 1.5
#ifndef ALIHLTSTDINCLUDESH
#define ALIHLTSTDINCLUDESH
2005-09-07 Files imported from src comp and kalman into new TPCLib
a short history of files ...
- AliHLTTPCBenchmark.cxx AliL3Benchmark.cxx,v 1.10 2005/06/14 10:55:21 cvetan Exp
- AliHLTTPCBenchmark.h AliL3Benchmark.h,v 1.6 2004/06/26 11:39:40 loizides
- AliHLTTPCClusterFinder.cxx original AliL3ClustFinderNew.cxx
- AliHLTTPCClusterFinder.h original AliL3ClustFinderNew.h
- AliHLTTPCClustFinderNew.cxx AliL3ClustFinderNew.cxx,v 1.29 2005/06/14 10:55:21 cvetan Exp
- AliHLTTPCClustFinderNew.h AliL3ClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides Exp
- AliHLTTPCConfMapFit.cxx AliL3ConfMapFit.cxx,v 1.14 2005/06/14 10:55:21 cvetan Exp
- AliHLTTPCConfMapFit.h AliL3ConfMapFit.h,v 1.5 2004/07/05 09:03:11 loizides Exp
- AliHLTTPCConfMapper.cxx AliL3ConfMapper.cxx,v 1.26 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCConfMapper.h AliL3ConfMapper.h,v 1.11 2004/07/05 09:03:11 loizides Exp $
- AliHLTTPCConfMapPoint.cxx AliL3ConfMapPoint.cxx,v 1.10 2005/06/23 17:46:55 hristov Exp $
- AliHLTTPCConfMapPoint.h AliL3ConfMapPoint.h,v 1.8 2005/06/23 17:46:55 hristov Exp $
- AliHLTTPCConfMapTrack.cxx AliL3ConfMapTrack.cxx,v 1.16 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCConfMapTrack.h AliL3ConfMapTrack.h,v 1.4 2004/06/16 11:25:06 loizides Exp $
+ AliHLTTPCBenchmark.cxx AliHLTBenchmark.cxx,v 1.10 2005/06/14 10:55:21 cvetan Exp
+ AliHLTTPCBenchmark.h AliHLTBenchmark.h,v 1.6 2004/06/26 11:39:40 loizides
+ AliHLTTPCClusterFinder.cxx original AliHLTClustFinderNew.cxx
+ AliHLTTPCClusterFinder.h original AliHLTClustFinderNew.h
+ AliHLTTPCClustFinderNew.cxx AliHLTClustFinderNew.cxx,v 1.29 2005/06/14 10:55:21 cvetan Exp
+ AliHLTTPCClustFinderNew.h AliHLTClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides Exp
+ AliHLTTPCConfMapFit.cxx AliHLTConfMapFit.cxx,v 1.14 2005/06/14 10:55:21 cvetan Exp
+ AliHLTTPCConfMapFit.h AliHLTConfMapFit.h,v 1.5 2004/07/05 09:03:11 loizides Exp
+ AliHLTTPCConfMapper.cxx AliHLTConfMapper.cxx,v 1.26 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCConfMapper.h AliHLTConfMapper.h,v 1.11 2004/07/05 09:03:11 loizides Exp $
+ AliHLTTPCConfMapPoint.cxx AliHLTConfMapPoint.cxx,v 1.10 2005/06/23 17:46:55 hristov Exp $
+ AliHLTTPCConfMapPoint.h AliHLTConfMapPoint.h,v 1.8 2005/06/23 17:46:55 hristov Exp $
+ AliHLTTPCConfMapTrack.cxx AliHLTConfMapTrack.cxx,v 1.16 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCConfMapTrack.h AliHLTConfMapTrack.h,v 1.4 2004/06/16 11:25:06 loizides Exp $
AliHLTTPC.cxx AliLevel3.cxx,v 1.42 2004/06/11 16:06:33 loizides Exp $
Mod: Digits-thing
- AliHLTTPCDigitData.h AliL3DigitData.h,v 1.5 2004/05/12 11:51:27 loizides Exp $
- AliHLTTPCDisplay.cxx AliL3Display.cxx,v 1.26 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCDigitData.h AliHLTDigitData.h,v 1.5 2004/05/12 11:51:27 loizides Exp $
+ AliHLTTPCDisplay.cxx AliHLTDisplay.cxx,v 1.26 2005/06/14 10:55:21 cvetan Exp $
Mod.
- AliHLTTPCDisplay.h AliL3Display.h,v 1.14 2004/06/30 08:30:14 loizides Exp $
+ AliHLTTPCDisplay.h AliHLTDisplay.h,v 1.14 2004/06/30 08:30:14 loizides Exp $
Mod.
- AliHLTTPCFileHandler.cxx AliL3FileHandler.cxx,v 1.49 2005/06/23 17:46:55 hristov Exp $
- AliHLTTPCFileHandler.h AliL3FileHandler.h,v 1.19 2004/06/11 16:06:33 loizides Exp $
- AliHLTTPCFitter.cxx AliL3Fitter.cxx,v 1.14 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCFitter.h AliL3Fitter.h,v 1.7 2004/07/05 09:02:18 loizides Exp $
- AliHLTTPCGlobalMerger.cxx AliL3GlobalMerger.cxx,v 1.13 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCGlobalMerger.h AliL3GlobalMerger.h,v 1.6 2004/02/02 15:00:34 loizides Exp $
+ AliHLTTPCFileHandler.cxx AliHLTFileHandler.cxx,v 1.49 2005/06/23 17:46:55 hristov Exp $
+ AliHLTTPCFileHandler.h AliHLTFileHandler.h,v 1.19 2004/06/11 16:06:33 loizides Exp $
+ AliHLTTPCFitter.cxx AliHLTFitter.cxx,v 1.14 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCFitter.h AliHLTFitter.h,v 1.7 2004/07/05 09:02:18 loizides Exp $
+ AliHLTTPCGlobalMerger.cxx AliHLTGlobalMerger.cxx,v 1.13 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCGlobalMerger.h AliHLTGlobalMerger.h,v 1.6 2004/02/02 15:00:34 loizides Exp $
AliHLTTPC.h AliLevel3.h,v 1.24 2004/06/11 16:06:33 loizides
Added AliHLTDigitReaderUnpacked
- AliHLTTPCInterMerger.cxx AliL3InterMerger.cxx,v 1.8 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCInterMerger.h AliL3InterMerger.h,v 1.4 2004/02/02 15:00:34 loizides Exp $
- AliHLTTPCLog.cxx AliL3Log.cxx,v 1.1 2004/05/14 09:37:22 loizides Exp $
- AliHLTTPCLogging.h AliL3Logging.h,v 1.11 2004/10/09 11:28:31 loizides Exp $
- AliHLTTPCLog.h AliL3Log.h,v 1.2 2004/06/11 16:06:33 loizides Exp $
- AliHLTTPCMemHandler.cxx AliL3MemHandler.cxx,v 1.52 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCMemHandler.h AliL3MemHandler.h,v 1.30 2004/10/06 08:51:20 cvetan Exp $
- AliHLTTPCMerger.cxx AliL3Merger.cxx,v 1.16 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCMerger.h AliL3Merger.h,v 1.8 2004/06/11 16:06:33 loizides Exp $
- AliHLTTPCRootTypes.h AliL3RootTypes.h,v 1.12 2004/06/15 14:02:38 loizides Exp $
- AliHLTTPCSpacePointData.h AliL3SpacePointData.h,v1.4 2003/07/27 21:02:09 loizides Exp $
+ AliHLTTPCInterMerger.cxx AliHLTInterMerger.cxx,v 1.8 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCInterMerger.h AliHLTInterMerger.h,v 1.4 2004/02/02 15:00:34 loizides Exp $
+ AliHLTTPCLog.cxx AliHLTLog.cxx,v 1.1 2004/05/14 09:37:22 loizides Exp $
+ AliHLTTPCLogging.h AliHLTLogging.h,v 1.11 2004/10/09 11:28:31 loizides Exp $
+ AliHLTTPCLog.h AliHLTLog.h,v 1.2 2004/06/11 16:06:33 loizides Exp $
+ AliHLTTPCMemHandler.cxx AliHLTMemHandler.cxx,v 1.52 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCMemHandler.h AliHLTMemHandler.h,v 1.30 2004/10/06 08:51:20 cvetan Exp $
+ AliHLTTPCMerger.cxx AliHLTMerger.cxx,v 1.16 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCMerger.h AliHLTMerger.h,v 1.8 2004/06/11 16:06:33 loizides Exp $
+ AliHLTTPCRootTypes.h AliHLTRootTypes.h,v 1.12 2004/06/15 14:02:38 loizides Exp $
+ AliHLTTPCSpacePointData.h AliHLTSpacePointData.h,v1.4 2003/07/27 21:02:09 loizides Exp $
Added: Bool_t fUsed;
- AliHLTTPCStandardIncludes.h AliL3StandardIncludes.h,v 1.5 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCTrackArray.cxx AliL3TrackArray.cxx,v 1.21 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCTrackArray.h AliL3TrackArray.h,v 1.7 2004/06/11 16:06:33 loizides Exp $
- AliHLTTPCTrack.cxx AliL3Track.cxx,v 1.322005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCTrack.h AliL3Track.h,v 1.18 2005/03/31 04:48:58 cvetan Exp $
- AliHLTTPCTrackMerger.cxx AliL3TrackMerger.cxx,v 1.12 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCTrackMerger.h AliL3TrackMerger.h,v 1.6 2005/04/19 04:29:01 cvetan Exp $
- AliHLTTPCTrackSegmentData.h AliL3TrackSegmentData.h,v 1.7 2005/03/31 04:48:59 cvetan Exp $
- AliHLTTPCTransform.cxx AliL3Transform.cxx,v 1.53 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCTransform.h AliL3Transform.h,v 1.37 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCVertexArray.cxx AliL3VertexArray.cxx,v 1.7 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCVertexArray.h AliL3VertexArray.h,v 1.4 2004/06/11 16:06:33 loizides Exp $
- AliHLTTPCVertex.cxx AliL3Vertex.cxx,v 1.5 2004/07/02 11:41:18 loizides Exp $
- AliHLTTPCVertexData.h AliL3VertexData.h,v 1.2 2003/07/27 21:02:09 loizides Exp $
- AliHLTTPCVertexFinder.cxx AliL3VertexFinder.cxx,v 1.9 2005/06/14 10:55:21 cvetan Exp $
- AliHLTTPCVertexFinder.h AliL3VertexFinder.h,v 1.7 2004/06/18 10:55:26 loizides Exp $
- AliHLTTPCVertex.h AliL3Vertex.h,v 1.4 2004/07/02 11:41:18 loizides Exp $
- AliHLTTPCDataCompressorHelper.cxx From comp: AliL3DataCompressorHelper.cxx,v 1.5 2004/06/15 10:26:57 hristov Exp $
- AliHLTTPCDataCompressorHelper.h From comp: AliL3DataCompressorHelper.h,v 1.4 2004/06/15 10:26:57 hristov Exp $
- AliHLTTPCModels.h From comp: AliL3Models.h,v 1.11 2004/05/17 16:37:19 hristov Exp $
- AliHLTTPCModelTrack.h From comp: AliL3ModelTrack.h,v 1.13 2004/06/15 10:26:57 hristov Exp $
- AliHLTTPCModelTrack.cxx From comp: AliL3ModelTrack.cxx,v 1.18 2005/02/14 11:50:11 hristov Exp $
+ AliHLTTPCStandardIncludes.h AliHLTStandardIncludes.h,v 1.5 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCTrackArray.cxx AliHLTTrackArray.cxx,v 1.21 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCTrackArray.h AliHLTTrackArray.h,v 1.7 2004/06/11 16:06:33 loizides Exp $
+ AliHLTTPCTrack.cxx AliHLTTrack.cxx,v 1.322005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCTrack.h AliHLTTrack.h,v 1.18 2005/03/31 04:48:58 cvetan Exp $
+ AliHLTTPCTrackMerger.cxx AliHLTTrackMerger.cxx,v 1.12 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCTrackMerger.h AliHLTTrackMerger.h,v 1.6 2005/04/19 04:29:01 cvetan Exp $
+ AliHLTTPCTrackSegmentData.h AliHLTTrackSegmentData.h,v 1.7 2005/03/31 04:48:59 cvetan Exp $
+ AliHLTTPCTransform.cxx AliHLTTransform.cxx,v 1.53 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCTransform.h AliHLTTransform.h,v 1.37 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCVertexArray.cxx AliHLTVertexArray.cxx,v 1.7 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCVertexArray.h AliHLTVertexArray.h,v 1.4 2004/06/11 16:06:33 loizides Exp $
+ AliHLTTPCVertex.cxx AliHLTVertex.cxx,v 1.5 2004/07/02 11:41:18 loizides Exp $
+ AliHLTTPCVertexData.h AliHLTVertexData.h,v 1.2 2003/07/27 21:02:09 loizides Exp $
+ AliHLTTPCVertexFinder.cxx AliHLTVertexFinder.cxx,v 1.9 2005/06/14 10:55:21 cvetan Exp $
+ AliHLTTPCVertexFinder.h AliHLTVertexFinder.h,v 1.7 2004/06/18 10:55:26 loizides Exp $
+ AliHLTTPCVertex.h AliHLTVertex.h,v 1.4 2004/07/02 11:41:18 loizides Exp $
+ AliHLTTPCDataCompressorHelper.cxx From comp: AliHLTDataCompressorHelper.cxx,v 1.5 2004/06/15 10:26:57 hristov Exp $
+ AliHLTTPCDataCompressorHelper.h From comp: AliHLTDataCompressorHelper.h,v 1.4 2004/06/15 10:26:57 hristov Exp $
+ AliHLTTPCModels.h From comp: AliHLTModels.h,v 1.11 2004/05/17 16:37:19 hristov Exp $
+ AliHLTTPCModelTrack.h From comp: AliHLTModelTrack.h,v 1.13 2004/06/15 10:26:57 hristov Exp $
+ AliHLTTPCModelTrack.cxx From comp: AliHLTModelTrack.cxx,v 1.18 2005/02/14 11:50:11 hristov Exp $
AliHLTTPCRawDataFormat.h from online Pub/Sub framework
AliHLTTPCClusterDataFormat.h from online Pub/Sub framework
AliHLTTPCTrackletDataFormat.h from online Pub/Sub framework
--- /dev/null
+
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+
+#ifdef use_aliroot
+#pragma link C++ class AliHLTITStrack;
+#pragma link C++ class AliHLTITStracker;
+#pragma link C++ class AliHLTITSVertexerZ;
+#pragma link C++ class AliHLTITSclusterer;
+#endif
+
+#endif
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-#include "AliL3ITSVertexerZ.h"
+#include "AliHLTITSVertexerZ.h"
#include<TString.h>
#include<TH1.h>
#include<TMath.h>
// Origin: Cvetan Cheshkov, CERN, Cvetan.Cheshkov@cern.ch
//-------------------------------------------------------------------------
-ClassImp(AliL3ITSVertexerZ)
+ClassImp(AliHLTITSVertexerZ)
-AliL3ITSVertexerZ::AliL3ITSVertexerZ():AliITSVertexerZ(){
+AliHLTITSVertexerZ::AliHLTITSVertexerZ():AliITSVertexerZ(){
// Constructor in case that there is no runloader
SetDiffPhiMax();
SetDebug();
}
-AliL3ITSVertexerZ::AliL3ITSVertexerZ(TString filename,Float_t x0, Float_t y0):AliITSVertexerZ(filename,x0,y0)
+AliHLTITSVertexerZ::AliHLTITSVertexerZ(TString filename,Float_t x0, Float_t y0):AliITSVertexerZ(filename,x0,y0)
{
// Standard Constructor
}
//______________________________________________________________________
-AliESDVertex* AliL3ITSVertexerZ::FindVertexForCurrentEvent(Int_t evnumber){
+AliESDVertex* AliHLTITSVertexerZ::FindVertexForCurrentEvent(Int_t evnumber){
// Defines the AliESDVertex for the current event
fCurrentVertex = 0;
}
//______________________________________________________________________
-AliESDVertex* AliL3ITSVertexerZ::FindVertexForCurrentEvent(AliITSgeom *geom,TTree *tR){
+AliESDVertex* AliHLTITSVertexerZ::FindVertexForCurrentEvent(AliITSgeom *geom,TTree *tR){
// Defines the AliESDVertex for the current event
fCurrentVertex = 0;
class AliITSgeom;
//-------------------------------------------------------------------------
-class AliL3ITSVertexerZ : public AliITSVertexerZ {
+class AliHLTITSVertexerZ : public AliITSVertexerZ {
public:
- AliL3ITSVertexerZ();
- AliL3ITSVertexerZ(TString filename,Float_t x0=0., Float_t y0=0.);
+ AliHLTITSVertexerZ();
+ AliHLTITSVertexerZ(TString filename,Float_t x0=0., Float_t y0=0.);
AliESDVertex* FindVertexForCurrentEvent(Int_t evnumb);
AliESDVertex* FindVertexForCurrentEvent(AliITSgeom *geom,TTree *tR);
- ClassDef(AliL3ITSVertexerZ,1) //HLT ITS vertexer
+ ClassDef(AliHLTITSVertexerZ,1) //HLT ITS vertexer
};
+typedef AliHLTITSVertexerZ AliL3ITSVertexerZ; // for backward compatibility
+
#endif
// Origin: Cvetan Cheshkov, CERN, Cvetan.Cheshkov@cern.ch
//-------------------------------------------------------------------------
-#include "AliL3ITSclusterer.h"
+#include "AliHLTITSclusterer.h"
#include "AliRawReader.h"
#include "AliITSgeom.h"
#include "AliITSRawStreamSPD.h"
#include <TTree.h>
#include <TClonesArray.h>
-ClassImp(AliL3ITSclusterer)
+ClassImp(AliHLTITSclusterer)
-AliL3ITSclusterer::AliL3ITSclusterer(const AliITSgeom *geom):AliITSclustererV2(geom)
+AliHLTITSclusterer::AliHLTITSclusterer(const AliITSgeom *geom):AliITSclustererV2(geom)
{
fNModule = geom->GetIndexMax();
}
-void AliL3ITSclusterer::Digits2Clusters(AliRawReader* rawReader,TTree *cTree)
+void AliHLTITSclusterer::Digits2Clusters(AliRawReader* rawReader,TTree *cTree)
{
TClonesArray *array=new TClonesArray("AliITSclusterV2",1000);
class AliRawReader;
//-------------------------------------------------------------------------
-class AliL3ITSclusterer : public AliITSclustererV2 {
+class AliHLTITSclusterer : public AliITSclustererV2 {
public:
- AliL3ITSclusterer():AliITSclustererV2(){fNModule = 0;}
- AliL3ITSclusterer(const AliITSgeom *geom);
+ AliHLTITSclusterer():AliITSclustererV2(){fNModule = 0;}
+ AliHLTITSclusterer(const AliITSgeom *geom);
void Digits2Clusters(AliRawReader* rawReader,TTree *cTree);
private:
Int_t fNModule; // total number of modules
- ClassDef(AliL3ITSclusterer,1) //HLT ITS clusterer
+ ClassDef(AliHLTITSclusterer,1) //HLT ITS clusterer
};
+typedef AliHLTITSclusterer AliL3ITSclusterer; // for backward compatibility
+
#endif
#include <TMath.h>
-#include "AliL3ITStrack.h"
+#include "AliHLTITStrack.h"
-ClassImp(AliL3ITStrack)
+ClassImp(AliHLTITStrack)
//____________________________________________________________________________
-AliL3ITStrack::AliL3ITStrack()
+AliHLTITStrack::AliHLTITStrack()
:AliITStrackV2()
{
//------------------------------------------------------------------
}
//____________________________________________________________________________
-AliL3ITStrack::AliL3ITStrack(AliESDtrack& t)
+AliHLTITStrack::AliHLTITStrack(AliESDtrack& t)
:AliITStrackV2(t)
{
//------------------------------------------------------------------
}
//____________________________________________________________________________
-AliL3ITStrack::AliL3ITStrack(const AliL3ITStrack& t)
+AliHLTITStrack::AliHLTITStrack(const AliHLTITStrack& t)
: AliITStrackV2(t)
{
//------------------------------------------------------------------
}
//_____________________________________________________________________________
-Int_t AliL3ITStrack::Compare(const TObject *o) const {
+Int_t AliHLTITStrack::Compare(const TObject *o) const {
//-----------------------------------------------------------------
// This function compares tracks according to the their curvature
//-----------------------------------------------------------------
- AliL3ITStrack *t=(AliL3ITStrack*)o;
+ AliHLTITStrack *t=(AliHLTITStrack*)o;
Double_t co=TMath::Abs(t->Get1Pt());
Double_t c =TMath::Abs(Get1Pt());
// Double_t co=t->GetSigmaY2()*t->GetSigmaZ2();
#include <AliITStrackV2.h>
-class AliL3ITStrack : public AliITStrackV2 {
+class AliHLTITStrack : public AliITStrackV2 {
public:
- AliL3ITStrack();
- AliL3ITStrack(AliESDtrack& t);
- AliL3ITStrack(const AliL3ITStrack& t);
+ AliHLTITStrack();
+ AliHLTITStrack(AliESDtrack& t);
+ AliHLTITStrack(const AliHLTITStrack& t);
Int_t Compare(const TObject *o) const;
- ClassDef(AliL3ITStrack,2) //HLT ITS reconstructed track
+ ClassDef(AliHLTITStrack,2) //HLT ITS reconstructed track
};
+typedef AliHLTITStrack AliL3ITStrack; // for backward compatibility
+
#endif
//-------------------------------------------------------------------------
#include "AliESD.h"
-#include "AliL3ITStrack.h"
-#include "AliL3ITStracker.h"
+#include "AliHLTITStrack.h"
+#include "AliHLTITStracker.h"
-ClassImp(AliL3ITStracker)
+ClassImp(AliHLTITStracker)
static Int_t CorrectForDeadZoneMaterial(AliITStrackV2 *t) {
//--------------------------------------------------------------------
return 0;
}
-Int_t AliL3ITStracker::Clusters2Tracks(AliESD *event) {
+Int_t AliHLTITStracker::Clusters2Tracks(AliESD *event) {
//--------------------------------------------------------------------
// This functions reconstructs HLT ITS tracks
//--------------------------------------------------------------------
AliESDtrack *esd=event->GetTrack(nentr);
- AliL3ITStrack *t=0;
+ AliHLTITStrack *t=0;
try {
- t=new AliL3ITStrack(*esd);
+ t=new AliHLTITStrack(*esd);
} catch (const Char_t *msg) {
Warning("Clusters2Tracks",msg);
delete t;
for (fPass=0; fPass<2; fPass++) {
Int_t &constraint=fConstraint[fPass]; if (constraint<0) continue;
for (Int_t i=0; i<nentr; i++) {
- AliL3ITStrack *t=(AliL3ITStrack*)itsTracks.UncheckedAt(i);
+ AliHLTITStrack *t=(AliHLTITStrack*)itsTracks.UncheckedAt(i);
if (t==0) continue; //this track has been already tracked
Int_t tpcLabel=t->GetLabel(); //save the TPC track label
ResetTrackToFollow(*t);
return 0;
}
-Int_t AliL3ITStracker::PropagateBack(AliESD *event) {
+Int_t AliHLTITStracker::PropagateBack(AliESD *event) {
//--------------------------------------------------------------------
// This functions propagates reconstructed ITS tracks back
//--------------------------------------------------------------------
return 0;
}
-Int_t AliL3ITStracker::RefitInward(AliESD *event) {
+Int_t AliHLTITStracker::RefitInward(AliESD *event) {
//--------------------------------------------------------------------
// This functions refits ITS tracks using the
// "inward propagated" TPC tracks
class AliESD;
class AliITSgeom;
-class AliL3ITStrack;
+class AliHLTITStrack;
//-------------------------------------------------------------------------
-class AliL3ITStracker : public AliITStrackerV2 {
+class AliHLTITStracker : public AliITStrackerV2 {
public:
- AliL3ITStracker():AliITStrackerV2(){ fConstraint[0]=1; fConstraint[1]=0; }
- AliL3ITStracker(const AliITSgeom *geom) : AliITStrackerV2(geom){ fConstraint[0]=1; fConstraint[1]=0; }
+ AliHLTITStracker():AliITStrackerV2(){ fConstraint[0]=1; fConstraint[1]=0; }
+ AliHLTITStracker(const AliITSgeom *geom) : AliITStrackerV2(geom){ fConstraint[0]=1; fConstraint[1]=0; }
Int_t Clusters2Tracks(AliESD *event);
Int_t PropagateBack(AliESD *event);
Int_t RefitInward(AliESD *event);
- ClassDef(AliL3ITStracker,1) //HLT ITS tracker
+ ClassDef(AliHLTITStracker,1) //HLT ITS tracker
};
+typedef AliHLTITStracker AliL3ITStracker; // for backward compatibility
+
#endif
+++ /dev/null
-
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#ifdef use_aliroot
-#pragma link C++ class AliL3ITStrack;
-#pragma link C++ class AliL3ITStracker;
-#pragma link C++ class AliL3ITSVertexerZ;
-#pragma link C++ class AliL3ITSclusterer;
-#endif
-
-#endif
#include "AliMagF.h"
#include "AliGenEventHeader.h"
- #include "AliL3ITStrack.h"
- #include "AliL3ITStracker.h"
- #include "AliL3ITSVertexerZ.h"
+ #include "AliHLTITStrack.h"
+ #include "AliHLTITStracker.h"
+ #include "AliHLTITSVertexerZ.h"
#endif
//extern TSystem *gSystem;
Int_t RunHLTITS(Int_t nev=1,Int_t run=0) {
- // gSystem->Load("libAliL3ITS.so");
+ // gSystem->Load("libAliHLTITS.so");
TStopwatch timer;
timer.Start();
geom->ReadNewFile("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det");
//An instance of the HLT ITS tracker
- AliL3ITStracker itsTracker(geom);
+ AliHLTITStracker itsTracker(geom);
TFile *ef=TFile::Open("AliESDs.root");
if (!ef || !ef->IsOpen()) {cerr<<"Can't AliESDs.root !\n"; return 1;}
Double_t cvtx[3]={0.005,0.005,0.010};
cout<<"MC vertex position: "<<v[2]<<endl;
- AliL3ITSVertexerZ vertexer("null");
+ AliHLTITSVertexerZ vertexer("null");
AliESDVertex* vertex = NULL;
TStopwatch timer2;
timer2.Start();
$(DICT): $(HDRS)
@echo "Generating dictionary..."
rootcint -f $(DICT) -c $(CINTCXXFLAGS) $(INCLUDES) \
- $(DEFSTR) -include AliL3StandardIncludes.h $(HDRS)
+ $(DEFSTR) -include AliHLTStandardIncludes.h $(HDRS)
$(OBJDIR)/%.o: %.cxx
$(CXX) $(CXXFLAGS) $(DEFSTR) -c $(INCLUDES) -o $@ $<
// @(#) $Id$
-// Original: AliL3Benchmark.h,v 1.6 2004/06/26 11:39:40 loizides
+// Original: AliHLTBenchmark.h,v 1.6 2004/06/26 11:39:40 loizides
#ifndef AliHLTTPCBenchmarkH
#define AliHLTTPCBenchmarkH
// @(#) $Id$
-//Original: AliL3ClustFinderNew.cxx,v 1.29 2005/06/14 10:55:21 cvetan
+//Original: AliHLTClustFinderNew.cxx,v 1.29 2005/06/14 10:55:21 cvetan
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>, Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3ClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides
+// Original: AliHLTClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides
#ifndef AliHLTTPC_ClustFinderNew
#define AliHLTTPC_ClustFinderNew
// @(#) $Id$
-// Original: AliL3ClustFinderNew.cxx,v 1.29 2005/06/14 10:55:21 cvetan Exp
+// Original: AliHLTClustFinderNew.cxx,v 1.29 2005/06/14 10:55:21 cvetan Exp
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
// @(#) $Id$
-// Original: AliL3ClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides
+// Original: AliHLTClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides
#ifndef AliHLTTPC_ClusterFinder
#define AliHLTTPC_ClusterFinder
// @(#) $Id$
-// Original: AliL3ConfMapFit.cxx,v 1.14 2005/06/14 10:55:21 cvetan
+// Original: AliHLTConfMapFit.cxx,v 1.14 2005/06/14 10:55:21 cvetan
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3ConfMapFit.h,v 1.5 2004/07/05 09:03:11 loizides
+// Original: AliHLTConfMapFit.h,v 1.5 2004/07/05 09:03:11 loizides
#ifndef ALIHLTTPC_ConfMapFit
#define ALIHLTTPC_ConfMapFit
// @(#) $Id$
-// Original: AliL3ConfMapPoint.cxx,v 1.10 2005/06/23 17:46:55 hristov
+// Original: AliHLTConfMapPoint.cxx,v 1.10 2005/06/23 17:46:55 hristov
// Author: Anders Vestbo <mailto:vestbo$fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3ConfMapPoint.h,v 1.8 2005/06/23 17:46:55 hristov
+// Original: AliHLTConfMapPoint.h,v 1.8 2005/06/23 17:46:55 hristov
#ifndef ALIHLTTPCConfMapPointH
#define ALIHLTTPCConfMapPointH
// @(#) $Id$
-// Original: AliL3ConfMapTrack.cxx,v 1.16 2005/06/14 10:55:21 cvetan
+// Original: AliHLTConfMapTrack.cxx,v 1.16 2005/06/14 10:55:21 cvetan
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>, Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3ConfMapTrack.h,v 1.4 2004/06/16 11:25:06 loizides
+// Original: AliHLTConfMapTrack.h,v 1.4 2004/06/16 11:25:06 loizides
#ifndef ALIHLTTPC_ConfMapTrack
#define ALIHLTTPC_ConfMapTrack
// @(#) $Id$
-// Original: AliL3ConfMapper.cxx,v 1.26 2005/06/14 10:55:21 cvetan Exp $
+// Original: AliHLTConfMapper.cxx,v 1.26 2005/06/14 10:55:21 cvetan Exp $
/** \class AliHLTTPCConfMapper
<pre>
// @(#) $Id$
-// Original: AliL3ConfMapper.h,v 1.11 2004/07/05 09:03:11 loizides
+// Original: AliHLTConfMapper.h,v 1.11 2004/07/05 09:03:11 loizides
#ifndef ALIHLTTPCCONFMAPPER_H
#define ALIHLTTPCCONFMAPPER_H
// @(#) $Id$
-// Original: AliL3DataCompressorHelper.cxx,v 1.5 2004/06/15 10:26:57 hristov Exp $
+// Original: AliHLTDataCompressorHelper.cxx,v 1.5 2004/06/15 10:26:57 hristov Exp $
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3DataCompressorHelper.h,v 1.4 2004/06/15 10:26:57 hristov Exp $
+// Original: AliHLTDataCompressorHelper.h,v 1.4 2004/06/15 10:26:57 hristov Exp $
#ifndef AliHLTTPC_DataCompressorHelper
#define AliHLTTPC_DataCompressorHelper
// @(#) $Id$
-// Original: AliL3DigitData.h,v 1.5 2004/05/12 11:51:27 loizides
+// Original: AliHLTDigitData.h,v 1.5 2004/05/12 11:51:27 loizides
#ifndef _ALIHLTTPCDIGITDATA_H_
#define _ALIHLTTPCDIGITDATA_H_
// @(#) $Id$
-// Original: AliL3FileHandler.cxx,v 1.49 2005/06/23 17:46:55 hristov
+// Original: AliHLTFileHandler.cxx,v 1.49 2005/06/23 17:46:55 hristov
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>, Anders Vestbo <mailto:vestbo$fi.uib.no>, C. Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3FileHandler.h,v 1.19 2004/06/11 16:06:33 loizides
+// Original: AliHLTFileHandler.h,v 1.19 2004/06/11 16:06:33 loizides
#ifndef ALIHLTTPCFILEHANDLER_H
#define ALIHLTTPCFILEHANDLER_H
// @(#) $Id$
-// Original: AliL3Fitter.cxx,v 1.14 2005/06/14 10:55:21 cvetan
+// Original: AliHLTFitter.cxx,v 1.14 2005/06/14 10:55:21 cvetan
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3Fitter.h,v 1.7 2004/07/05 09:02:18 loizides
+// Original: AliHLTFitter.h,v 1.7 2004/07/05 09:02:18 loizides
#ifndef ALIHLTTPCFITTER_H
#define ALIHLTTPCFITTER_H
// @(#) $Id$
-// Original: AliL3GlobalMerger.cxx,v 1.13 2005/06/14 10:55:21 cvetan
+// Original: AliHLTGlobalMerger.cxx,v 1.13 2005/06/14 10:55:21 cvetan
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3GlobalMerger.h,v 1.6 2004/02/02 15:00:34 loizides
+// Original: AliHLTGlobalMerger.h,v 1.6 2004/02/02 15:00:34 loizides
#ifndef ALIHLTTPC_GLOBALMERGER_H
#define ALIHLTTPC_GLOBALMERGER_H
// @(#) $Id$
-// Original: AliL3InterMerger.cxx,v 1.8 2005/06/14 10:55:21 cvetan
+// Original: AliHLTInterMerger.cxx,v 1.8 2005/06/14 10:55:21 cvetan
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3InterMerger.h,v 1.4 2004/02/02 15:00:34 loizides Exp $
+// Original: AliHLTInterMerger.h,v 1.4 2004/02/02 15:00:34 loizides Exp $
#ifndef ALIHLTTPCINTERMERGER_H
#define ALIHLTTPCINTERMERGER_H
// $Id$
-// Original: AliL3Log.cxx,v 1.1 2004/05/14 09:37:22 loizides
+// Original: AliHLTLog.cxx,v 1.1 2004/05/14 09:37:22 loizides
#ifndef use_logging
// @(#) $Id$
-// Original: AliL3Log.h,v 1.2 2004/06/11 16:06:33 loizides Exp $
+// Original: AliHLTLog.h,v 1.2 2004/06/11 16:06:33 loizides Exp $
#ifndef ALIHLTTPCLOG_H
#define ALIHLTTPCLOG_H
// @(#) $Id$
-// Original: AliL3Logging.h,v 1.11 2004/10/09 11:28:31 loizides
+// Original: AliHLTLogging.h,v 1.11 2004/10/09 11:28:31 loizides
#ifndef ALIHLTTPCLOGGING_H
#define ALIHLTTPCLOGGING_H
// @(#) $Id$
-// Original: AliL3MemHandler.cxx,v 1.52 2005/06/14 10:55:21 cvetan
+// Original: AliHLTMemHandler.cxx,v 1.52 2005/06/14 10:55:21 cvetan
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>, Anders Vestbo <mailto:vestbo$fi.uib.no>, Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3MemHandler.h,v 1.30 2004/10/06 08:51:20 cvetan
+// Original: AliHLTMemHandler.h,v 1.30 2004/10/06 08:51:20 cvetan
#ifndef ALIHLTTPC_MEMHANDLER_H
#define ALIHLTTPC_MEMHANDLER_H
//$Id$
-// Original: AliL3Merger.cxx,v 1.16 2005/06/14 10:55:21 cvetan
+// Original: AliHLTMerger.cxx,v 1.16 2005/06/14 10:55:21 cvetan
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © Uli
// @(#) $Id$
-// Original: AliL3Merger.h,v 1.8 2004/06/11 16:06:33 loizides
+// Original: AliHLTMerger.h,v 1.8 2004/06/11 16:06:33 loizides
#ifndef ALIHLTTPCMERGER_H
#define ALIHLTTPCMERGER_H
//#define PI 3.14159265358979312
// @(#) $Id$
-// Original: AliL3ModelTrack.cxx,v 1.18 2005/02/14 11:50:11 hristov
+// Original: AliHLTModelTrack.cxx,v 1.18 2005/02/14 11:50:11 hristov
// Author: Anders Vestbo <mailto:vestbo$fi.uib.no>
//*-- Copyright © ALICE HLT Group
//_____________________________________________________________
// @(#) $Id$
-// Original: AliL3ModelTrack.h,v 1.13 2004/06/15 10:26:57 hristov
+// Original: AliHLTModelTrack.h,v 1.13 2004/06/15 10:26:57 hristov
#ifndef AliHLTTPCModel_Track
#define AliHLTTPCModel_Track
// @(#) $Id$
-// Original: AliL3Models.h,v 1.11 2004/05/17 16:37:19 hristov
+// Original: AliHLTModels.h,v 1.11 2004/05/17 16:37:19 hristov
#ifndef AliHLTTPCModels_H
#define AliHLTTPCModels_H
// @(#) $Id$
-// Original: AliL3RootTypes.h,v 1.12 2004/06/15 14:02:38 loizides
+// Original: AliHLTRootTypes.h,v 1.12 2004/06/15 14:02:38 loizides
#ifndef ALIHLTTPCROOTTYPES_H
#define ALIHLTTPCROOTTYPES_H
// @(#) $Id$
-// Original: AliL3SpacePointData.h,v 1.4 2003/07/27 21:02:09 loizides
+// Original: AliHLTSpacePointData.h,v 1.4 2003/07/27 21:02:09 loizides
#ifndef SPACEPOINTDATA_H
#define SPACEPOINTDATA_H
// @(#) $Id$
-// Original: AliL3Track.cxx,v 1.32 2005/06/14 10:55:21 cvetan
+// Original: AliHLTTrack.cxx,v 1.32 2005/06/14 10:55:21 cvetan
// Author: Anders Vestbo <mailto:vestbo$fi.uib.no>, Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3Track.h,v 1.18 2005/03/31 04:48:58 cvetan
+// Original: AliHLTTrack.h,v 1.18 2005/03/31 04:48:58 cvetan
#ifndef ALIHLTTPCTRACK_H
#define ALIHLTTPCTRACK_H
// @(#) $Id$
-// Original: AliL3TrackArray.cxx,v 1.21 2005/06/14 10:55:21 cvetan
+// Original: AliHLTTrackArray.cxx,v 1.21 2005/06/14 10:55:21 cvetan
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3TrackArray.h,v 1.7 2004/06/11 16:06:33 loizides
+// Original: AliHLTTrackArray.h,v 1.7 2004/06/11 16:06:33 loizides
#ifndef ALIHLTTPCTRACKARRAY_H
#define ALIHLTTPCTRACKARRAY_H
// @(#) $Id$
-// Original: AliL3TrackMerger.cxx,v 1.12 2005/06/14 10:55:21 cvetan
+// Original: AliHLTTrackMerger.cxx,v 1.12 2005/06/14 10:55:21 cvetan
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3TrackMerger.h,v 1.6 2005/04/19 04:29:01 cvetan
+// Original: AliHLTTrackMerger.h,v 1.6 2005/04/19 04:29:01 cvetan
#ifndef ALIHLTTPCTRACKMERGER_H
#define ALIHLTTPCTRACKMERGER_H
// @(#) $Id$
-// Original: AliL3TrackSegmentData.h,v 1.7 2005/03/31 04:48:59 cvetan
+// Original: AliHLTTrackSegmentData.h,v 1.7 2005/03/31 04:48:59 cvetan
#ifndef _ALIHLTTPCTRACKSEGMENTDATA_H_
#define _ALIHLTTPCTRACKSEGMENTDATA_H_
// @(#) $Id$
-// Original: AliL3Transform.cxx,v 1.53 2005/06/14 10:55:21 cvetan
+// Original: AliHLTTransform.cxx,v 1.53 2005/06/14 10:55:21 cvetan
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>, Uli Frankenfeld <mailto:franken@fi.uib.no>, Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3Transform.h,v 1.37 2005/06/14 10:55:21 cvetan
+// Original: AliHLTTransform.h,v 1.37 2005/06/14 10:55:21 cvetan
#ifndef ALIHLTTPCTRANSFORM_H
#define ALIHLTTPCTRANSFORM_H
// @(#) $Id$
-// Original: AliL3Vertex.cxx,v 1.5 2004/07/02 11:41:18 loizides Exp $
+// Original: AliHLTVertex.cxx,v 1.5 2004/07/02 11:41:18 loizides Exp $
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3Vertex.h,v 1.4 2004/07/02 11:41:18 loizides
+// Original: AliHLTVertex.h,v 1.4 2004/07/02 11:41:18 loizides
#ifndef ALIHLTTPCVERTEX_H
#define ALIHLTTPCVERTEX_H
// @(#) $Id$
-// Original: AliL3VertexArray.cxx,v 1.7 2005/06/14 10:55:21 cvetan
+// Original: AliHLTVertexArray.cxx,v 1.7 2005/06/14 10:55:21 cvetan
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3VertexArray.h,v 1.4 2004/06/11 16:06:33 loizides
+// Original: AliHLTVertexArray.h,v 1.4 2004/06/11 16:06:33 loizides
#ifndef AliHLTTPCVERTEXARRAY_H
#define AliHLTTPCVERTEXARRAY_H
// @(#) $Id$
-// Original: AliL3VertexData.h,v 1.2 2003/07/27 21:02:09 loizides
+// Original: AliHLTVertexData.h,v 1.2 2003/07/27 21:02:09 loizides
#ifndef VERTEXDATA_H
#define VERTEXDATA_H
// @(#) $Id$
-// Original: AliL3VertexFinder.cxx,v 1.9 2005/06/14 10:55:21 cvetan
+// Original: AliHLTVertexFinder.cxx,v 1.9 2005/06/14 10:55:21 cvetan
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
// @(#) $Id$
-// Original: AliL3VertexFinder.h,v 1.7 2004/06/18 10:55:26 loizides
+// Original: AliHLTVertexFinder.h,v 1.7 2004/06/18 10:55:26 loizides
#ifndef AliHLTTPCVERTEXFINDER_H
#define AliHLTTPCVERTEXFINDER_H
// @(#) $Id$
-// Original: AliL3Display.cxx,v 1.26 2005/06/14 10:55:21 cvetan
+// Original: AliHLTDisplay.cxx,v 1.26 2005/06/14 10:55:21 cvetan
/** \class AliHLTTPCDisplay
<pre>
// XEmacs -*-C++-*-
// @(#) $Id$
-// Original: AliL3Display.h,v 1.14 2004/06/30 08:30:14 loizides
+// Original: AliHLTDisplay.h,v 1.14 2004/06/30 08:30:14 loizides
#ifndef ALIHLTTPCDISPLAY_H
#define ALIHLTTPCDISPLAY_H
export CVS_RSH=ssh
export CVSROOT=$USER@kjekspc1.fi.uib.no:/cvs/hltcvs
#export CVSIGNORE="lib src hough comp exa programs misc trigger sim
-#AliL3CompCint.h AliL3CompCint.cxx AliL3HoughCint.h
-#AliL3HoughCint.cxx AliL3Cint.cxx AliL3Cint.h lib_ROOT lib_ALIROOT
-#AliL3MiscCint.cxx AliL3MiscCint.h"
+#AliHLTCompCint.h AliHLTCompCint.cxx AliHLTHoughCint.h
+#AliHLTHoughCint.cxx AliHLTCint.cxx AliHLTCint.h lib_ROOT lib_ALIROOT
+#AliHLTMiscCint.cxx AliHLTMiscCint.h"
export ALIHLT_USEPACKAGE=ALIROOT
#export ALIHLT_USEPACKAGE=ROOT
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-/** /class AliL3ClusterFitter
+/** /class AliHLTClusterFitter
//<pre>
//_____________________________________________________________
//
-// AliL3ClusterFitter
+// AliHLTClusterFitter
//
</pre>
*/
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3ClusterFitter.h"
-#include "AliL3FitUtilities.h"
-#include "AliL3DigitData.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3TrackArray.h"
-#include "AliL3MemHandler.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3SpacePointData.h"
+#include "AliHLTClusterFitter.h"
+#include "AliHLTFitUtilities.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTModelTrack.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTSpacePointData.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3ClusterFitter)
+ClassImp(AliHLTClusterFitter)
-Int_t AliL3ClusterFitter::fgBadFitError=0;
-Int_t AliL3ClusterFitter::fgFitError=0;
-Int_t AliL3ClusterFitter::fgResultError=0;
-Int_t AliL3ClusterFitter::fgFitRangeError=0;
+Int_t AliHLTClusterFitter::fgBadFitError=0;
+Int_t AliHLTClusterFitter::fgFitError=0;
+Int_t AliHLTClusterFitter::fgResultError=0;
+Int_t AliHLTClusterFitter::fgFitRangeError=0;
-AliL3ClusterFitter::AliL3ClusterFitter()
+AliHLTClusterFitter::AliHLTClusterFitter()
{
// default constructor
plane=0;
fEvent=0;
}
-AliL3ClusterFitter::AliL3ClusterFitter(Char_t *path)
+AliHLTClusterFitter::AliHLTClusterFitter(Char_t *path)
{
// constructor
strcpy(fPath,path);
fEvent=0;
}
-AliL3ClusterFitter::~AliL3ClusterFitter()
+AliHLTClusterFitter::~AliHLTClusterFitter()
{
// destructor
if(fSeeds)
delete [] fClusters;
}
-void AliL3ClusterFitter::Init(Int_t slice,Int_t patch,Int_t *rowrange,AliL3TrackArray *tracks)
+void AliHLTClusterFitter::Init(Int_t slice,Int_t patch,Int_t *rowrange,AliHLTTrackArray *tracks)
{
//Assuming tracklets found by the line transform
fSlice=slice;
fPatch=patch;
- if(rowrange[0] > AliL3Transform::GetLastRow(patch) || rowrange[1] < AliL3Transform::GetFirstRow(patch))
- cerr<<"AliL3ClusterFitter::Init : Wrong rows "<<rowrange[0]<<" "<<rowrange[1]<<endl;
+ if(rowrange[0] > AliHLTTransform::GetLastRow(patch) || rowrange[1] < AliHLTTransform::GetFirstRow(patch))
+ cerr<<"AliHLTClusterFitter::Init : Wrong rows "<<rowrange[0]<<" "<<rowrange[1]<<endl;
fRowMin=rowrange[0];
fRowMax=rowrange[1];
if(fRowMin < 0)
fRowMin = 0;
- if(fRowMax > AliL3Transform::GetLastRow(fPatch))
- fRowMax = AliL3Transform::GetLastRow(fPatch);
+ if(fRowMax > AliHLTTransform::GetLastRow(fPatch))
+ fRowMax = AliHLTTransform::GetLastRow(fPatch);
fFitted=fFailed=0;
- Int_t ntimes = AliL3Transform::GetNTimeBins()+1;
- Int_t npads = AliL3Transform::GetNPads(AliL3Transform::GetLastRow(fPatch))+1;//Max num of pads.
+ Int_t ntimes = AliHLTTransform::GetNTimeBins()+1;
+ Int_t npads = AliHLTTransform::GetNPads(AliHLTTransform::GetLastRow(fPatch))+1;//Max num of pads.
Int_t bounds = ntimes*npads;
if(fRow)
delete [] fRow;
if(fTracks)
delete fTracks;
- fTracks = new AliL3TrackArray("AliL3ModelTrack");
+ fTracks = new AliHLTTrackArray("AliHLTModelTrack");
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
- AliL3ModelTrack *mtrack = (AliL3ModelTrack*)fTracks->NextTrack();
+ AliHLTModelTrack *mtrack = (AliHLTModelTrack*)fTracks->NextTrack();
mtrack->Init(slice,patch);
mtrack->SetTgl(track->GetTgl());
mtrack->SetRowRange(rowrange[0],rowrange[1]);
{
Float_t hit[3];
track->GetLineCrossingPoint(j,hit);
- hit[0] += AliL3Transform::Row2X(track->GetFirstRow());
+ hit[0] += AliHLTTransform::Row2X(track->GetFirstRow());
Float_t r = sqrt(hit[0]*hit[0] + hit[1]*hit[1]);
hit[2] = r*track->GetTgl();
Int_t se,ro;
- AliL3Transform::Slice2Sector(slice,j,se,ro);
- AliL3Transform::Local2Raw(hit,se,ro);
- if(hit[1]<0 || hit[1]>=AliL3Transform::GetNPads(j) || hit[2]<0 || hit[2]>=AliL3Transform::GetNTimeBins())
+ AliHLTTransform::Slice2Sector(slice,j,se,ro);
+ AliHLTTransform::Local2Raw(hit,se,ro);
+ if(hit[1]<0 || hit[1]>=AliHLTTransform::GetNPads(j) || hit[2]<0 || hit[2]>=AliHLTTransform::GetNTimeBins())
{
mtrack->SetPadHit(j,-1);
mtrack->SetTimeHit(j,-1);
}
mtrack->SetPadHit(j,hit[1]);
mtrack->SetTimeHit(j,hit[2]);
- mtrack->SetCrossingAngleLUT(j,fabs(track->GetPsiLine() - AliL3Transform::Pi()/2));
- //if(mtrack->GetCrossingAngleLUT(j) > AliL3Transform::Deg2Rad(20))
+ mtrack->SetCrossingAngleLUT(j,fabs(track->GetPsiLine() - AliHLTTransform::Pi()/2));
+ //if(mtrack->GetCrossingAngleLUT(j) > AliHLTTransform::Deg2Rad(20))
// cout<<"Angle "<<mtrack->GetCrossingAngleLUT(j)<<" psiline "<<track->GetPsiLine()*180/3.1415<<endl;
mtrack->CalculateClusterWidths(j);
}
// cout<<"Copied "<<fTracks->GetNTracks()<<" tracks "<<endl;
}
-void AliL3ClusterFitter::Init(Int_t slice,Int_t patch)
+void AliHLTClusterFitter::Init(Int_t slice,Int_t patch)
{
// Initialization
fSlice=slice;
fPatch=patch;
- fRowMin=AliL3Transform::GetFirstRow(patch);
- fRowMax=AliL3Transform::GetLastRow(patch);
+ fRowMin=AliHLTTransform::GetFirstRow(patch);
+ fRowMax=AliHLTTransform::GetLastRow(patch);
fFitted=fFailed=0;
- Int_t ntimes = AliL3Transform::GetNTimeBins()+1;
- Int_t npads = AliL3Transform::GetNPads(AliL3Transform::GetLastRow(fPatch))+1;//Max num of pads.
+ Int_t ntimes = AliHLTTransform::GetNTimeBins()+1;
+ Int_t npads = AliHLTTransform::GetNPads(AliHLTTransform::GetLastRow(fPatch))+1;//Max num of pads.
Int_t bounds = ntimes*npads;
if(fRow)
delete [] fRow;
fRow = new Digit[bounds];
if(fTracks)
delete fTracks;
- fTracks = new AliL3TrackArray("AliL3ModelTrack");
+ fTracks = new AliHLTTrackArray("AliHLTModelTrack");
}
-void AliL3ClusterFitter::LoadLocalSegments()
+void AliHLTClusterFitter::LoadLocalSegments()
{
// loads local segments
Char_t filename[1024];
sprintf(filename,"%s/hough/tracks_ho_%d_%d_%d.raw",fPath,fEvent,fSlice,fPatch);
- AliL3MemHandler mem;
+ AliHLTMemHandler mem;
mem.SetBinaryInput(filename);
mem.Binary2TrackArray(fTracks);
mem.CloseBinaryInput();
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fTracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fTracks->GetCheckedTrack(i);
if(!track) continue;
track->CalculateHelix();
continue;
Int_t sector,row;
- AliL3Transform::Slice2Sector(fSlice,j,sector,row);
- AliL3Transform::Local2Raw(xyzCross,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,j,sector,row);
+ AliHLTTransform::Local2Raw(xyzCross,sector,row);
- if(xyzCross[1] < 0 || xyzCross[1] >= AliL3Transform::GetNPads(j) ||
- xyzCross[2] < 0 || xyzCross[2] >= AliL3Transform::GetNTimeBins()) //track goes out of range
+ if(xyzCross[1] < 0 || xyzCross[1] >= AliHLTTransform::GetNPads(j) ||
+ xyzCross[2] < 0 || xyzCross[2] >= AliHLTTransform::GetNTimeBins()) //track goes out of range
continue;
track->SetPadHit(j,xyzCross[1]);
}
}
-void AliL3ClusterFitter::LoadSeeds(Int_t *rowrange,Bool_t offline,Int_t eventnr,Float_t zvertex)
+void AliHLTClusterFitter::LoadSeeds(Int_t *rowrange,Bool_t offline,Int_t eventnr,Float_t zvertex)
{
//Function assumes _global_ tracks written to a single file.
cout<<"Loading the seeds"<<endl;
else
sprintf(fname,"%s/hough/tracks_%d.raw",fPath,fEvent);
- cout<<"AliL3ClusterFitter::LoadSeeds : Loading input tracks from "<<fname<<endl;
+ cout<<"AliHLTClusterFitter::LoadSeeds : Loading input tracks from "<<fname<<endl;
- AliL3MemHandler tfile;
+ AliHLTMemHandler tfile;
tfile.SetBinaryInput(fname);
if(fSeeds)
delete fSeeds;
- fSeeds = new AliL3TrackArray("AliL3ModelTrack");
+ fSeeds = new AliHLTTrackArray("AliHLTModelTrack");
tfile.Binary2TrackArray(fSeeds);
tfile.CloseBinaryInput();
Int_t clustercount=0;
for(Int_t i=0; i<fSeeds->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fSeeds->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fSeeds->GetCheckedTrack(i);
if(!track) continue;
if(!offline)
{
- if(i==0) cerr<<"AliL3ClusterFitter::LoadSeeds : Cutting on pt of 4 GeV!!"<<endl;
+ if(i==0) cerr<<"AliHLTClusterFitter::LoadSeeds : Cutting on pt of 4 GeV!!"<<endl;
if(track->GetPt() > 4.)
{
fSeeds->Remove(i);
//Calculate the crossing point between track and padrow
Float_t angle = 0; //Perpendicular to padrow in local coordinates
- AliL3Transform::Local2GlobalAngle(&angle,slice);
- if(!track->CalculateReferencePoint(angle,AliL3Transform::Row2X(j)))
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
+ if(!track->CalculateReferencePoint(angle,AliHLTTransform::Row2X(j)))
{
//cerr<<"No crossing in slice "<<slice<<" padrow "<<j<<endl;
continue;
xyzCross[2] += zvertex;
Int_t sector,row;
- AliL3Transform::Slice2Sector(slice,j,sector,row);
- AliL3Transform::Global2Raw(xyzCross,sector,row);
+ AliHLTTransform::Slice2Sector(slice,j,sector,row);
+ AliHLTTransform::Global2Raw(xyzCross,sector,row);
//cout<<"Examining slice "<<slice<<" row "<<j<<" pad "<<xyzCross[1]<<" time "<<xyzCross[2]<<endl;
- if(xyzCross[1] < 0 || xyzCross[1] >= AliL3Transform::GetNPads(j)) //Track leaves the slice
+ if(xyzCross[1] < 0 || xyzCross[1] >= AliHLTTransform::GetNPads(j)) //Track leaves the slice
{
newslice:
}
//cout<<"Track leaving, trying slice "<<slice<<endl;
angle=0;
- AliL3Transform::Local2GlobalAngle(&angle,slice);
- if(!track->CalculateReferencePoint(angle,AliL3Transform::Row2X(j)))
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
+ if(!track->CalculateReferencePoint(angle,AliHLTTransform::Row2X(j)))
{
cerr<<"No crossing in slice "<<slice<<" padrow "<<j<<endl;
continue;
xyzCross[2] = track->GetPointZ();
xyzCross[2] += zvertex;
Int_t sector,row;
- AliL3Transform::Slice2Sector(slice,j,sector,row);
- AliL3Transform::Global2Raw(xyzCross,sector,row);
- if(xyzCross[1] < 0 || xyzCross[1] >= AliL3Transform::GetNPads(j)) //track is in the borderline
+ AliHLTTransform::Slice2Sector(slice,j,sector,row);
+ AliHLTTransform::Global2Raw(xyzCross,sector,row);
+ if(xyzCross[1] < 0 || xyzCross[1] >= AliHLTTransform::GetNPads(j)) //track is in the borderline
{
if(xyzCross[1] > 0 && lastcross > 0 || xyzCross[1] < 0 && lastcross < 0)
goto newslice;
}
}
- if(xyzCross[2] < 0 || xyzCross[2] >= AliL3Transform::GetNTimeBins())//track goes out of range
+ if(xyzCross[2] < 0 || xyzCross[2] >= AliHLTTransform::GetNTimeBins())//track goes out of range
continue;
- if(xyzCross[1] < 0 || xyzCross[1] >= AliL3Transform::GetNPads(j))
+ if(xyzCross[1] < 0 || xyzCross[1] >= AliHLTTransform::GetNPads(j))
{
cerr<<"Slice "<<slice<<" padrow "<<j<<" pad "<<xyzCross[1]<<" time "<<xyzCross[2]<<endl;
track->Print();
track->SetPadHit(j,xyzCross[1]);
track->SetTimeHit(j,xyzCross[2]);
angle=0;
- AliL3Transform::Local2GlobalAngle(&angle,slice);
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
Float_t crossingangle = track->GetCrossingAngle(j,slice);
track->SetCrossingAngleLUT(j,crossingangle);
cout<<"Loaded "<<fSeeds->GetNTracks()<<" seeds and "<<clustercount<<" clusters"<<endl;
}
-void AliL3ClusterFitter::FindClusters()
+void AliHLTClusterFitter::FindClusters()
{
// finds clusters
if(!fTracks)
{
- cerr<<"AliL3ClusterFitter::Process : No tracks"<<endl;
+ cerr<<"AliHLTClusterFitter::Process : No tracks"<<endl;
return;
}
if(!fRowData)
{
- cerr<<"AliL3ClusterFitter::Process : No data "<<endl;
+ cerr<<"AliHLTClusterFitter::Process : No data "<<endl;
return;
}
- AliL3DigitRowData *rowPt = fRowData;
- AliL3DigitData *digPt=0;
+ AliHLTDigitRowData *rowPt = fRowData;
+ AliHLTDigitData *digPt=0;
Int_t pad,time;
Short_t charge;
if(fRowMin < 0)
{
- fRowMin = AliL3Transform::GetFirstRow(fPatch);
- fRowMax = AliL3Transform::GetLastRow(fPatch);
+ fRowMin = AliHLTTransform::GetFirstRow(fPatch);
+ fRowMax = AliHLTTransform::GetLastRow(fPatch);
}
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
{
if((Int_t)rowPt->fRow < fRowMin)
{
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
continue;
}
else if((Int_t)rowPt->fRow > fRowMax)
break;
else if((Int_t)rowPt->fRow != i)
{
- cerr<<"AliL3ClusterFitter::FindClusters : Mismatching row numbering "<<i<<" "<<rowPt->fRow<<endl;
+ cerr<<"AliHLTClusterFitter::FindClusters : Mismatching row numbering "<<i<<" "<<rowPt->fRow<<endl;
exit(5);
}
fCurrentPadRow = i;
- memset((void*)fRow,0,(AliL3Transform::GetNTimeBins()+1)*(AliL3Transform::GetNPads(i)+1)*sizeof(Digit));
- digPt = (AliL3DigitData*)rowPt->fDigitData;
+ memset((void*)fRow,0,(AliHLTTransform::GetNTimeBins()+1)*(AliHLTTransform::GetNPads(i)+1)*sizeof(Digit));
+ digPt = (AliHLTDigitData*)rowPt->fDigitData;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
pad = digPt[j].fPad;
time = digPt[j].fTime;
charge = digPt[j].fCharge;
- fRow[(AliL3Transform::GetNTimeBins()+1)*pad+time].fCharge = charge;
- fRow[(AliL3Transform::GetNTimeBins()+1)*pad+time].fUsed = kFALSE;
+ fRow[(AliHLTTransform::GetNTimeBins()+1)*pad+time].fCharge = charge;
+ fRow[(AliHLTTransform::GetNTimeBins()+1)*pad+time].fUsed = kFALSE;
//cout<<"Row "<<i<<" pad "<<pad<<" time "<<time<<" charge "<<charge<<endl;
}
for(Int_t k=0; k<fProcessTracks->GetNTracks(); k++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fProcessTracks->GetCheckedTrack(k);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fProcessTracks->GetCheckedTrack(k);
if(!track) continue;
if(fSeeding)
if(track->GetClusterModel(i)->fSlice != fSlice) continue;
- if(track->GetPadHit(i) < 0 || track->GetPadHit(i) > AliL3Transform::GetNPads(i)-1 ||
- track->GetTimeHit(i) < 0 || track->GetTimeHit(i) > AliL3Transform::GetNTimeBins()-1)
+ if(track->GetPadHit(i) < 0 || track->GetPadHit(i) > AliHLTTransform::GetNPads(i)-1 ||
+ track->GetTimeHit(i) < 0 || track->GetTimeHit(i) > AliHLTTransform::GetNTimeBins()-1)
{
track->SetCluster(i,0,0,0,0,0,0);
continue;
fFailed++;
}
}
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
}
fSeeding = kTRUE;
}
-Bool_t AliL3ClusterFitter::CheckCluster(Int_t trackindex)
+Bool_t AliHLTClusterFitter::CheckCluster(Int_t trackindex)
{
//Check if this is a single or overlapping cluster
- AliL3ModelTrack *track = (AliL3ModelTrack*)fProcessTracks->GetCheckedTrack(trackindex);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fProcessTracks->GetCheckedTrack(trackindex);
Int_t row = fCurrentPadRow;
if(fDebug)
cout<<"Failed to fit cluster at row "<<row<<" pad "<<(Int_t)rint(track->GetPadHit(row))<<" time "
<<(Int_t)rint(track->GetTimeHit(row))<<" hitcharge "
- <<fRow[(AliL3Transform::GetNTimeBins()+1)*(Int_t)rint(track->GetPadHit(row))+(Int_t)rint(track->GetTimeHit(row))].fCharge<<endl;
+ <<fRow[(AliHLTTransform::GetNTimeBins()+1)*(Int_t)rint(track->GetPadHit(row))+(Int_t)rint(track->GetTimeHit(row))].fCharge<<endl;
fgFitRangeError++;
return kFALSE;
}
for(Int_t t=trackindex+1; t<fProcessTracks->GetNTracks(); t++)
{
- AliL3ModelTrack *tr = (AliL3ModelTrack*)fProcessTracks->GetCheckedTrack(t);
+ AliHLTModelTrack *tr = (AliHLTModelTrack*)fProcessTracks->GetCheckedTrack(t);
if(!tr) continue;
if(fSeeding)
if(tr->GetClusterModel(row)->fSlice != fSlice) continue;
return kTRUE;
}
-Bool_t AliL3ClusterFitter::SetFitRange(AliL3ModelTrack *track,Int_t *padrange,Int_t *timerange)
+Bool_t AliHLTClusterFitter::SetFitRange(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange)
{
// sets the fit range
Int_t row = fCurrentPadRow;
- Int_t nt = AliL3Transform::GetNTimeBins()+1;
+ Int_t nt = AliHLTTransform::GetNTimeBins()+1;
Int_t nsearchbins=0;
- if(row < AliL3Transform::GetNRowLow())
+ if(row < AliHLTTransform::GetNRowLow())
nsearchbins=25;
- else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1())
+ else if(row < AliHLTTransform::GetNRowLow() + AliHLTTransform::GetNRowUp1())
nsearchbins=25;
else
nsearchbins=25;
j=timemax;
while(abs(timemax-j) < zw)
{
- if(i<0 || i>=AliL3Transform::GetNPads(row) || j<0 || j>=AliL3Transform::GetNTimeBins()) break;
+ if(i<0 || i>=AliHLTTransform::GetNPads(row) || j<0 || j>=AliHLTTransform::GetNTimeBins()) break;
if(fRow[nt*i+j].fCharge)
{
if(i < padrange[0]) padrange[0]=i;
{
for(Int_t j=timemax-zw; j<=timemax+zw; j++)
{
- if(i<0 || i>=AliL3Transform::GetNPads(row) || j<0 || j>=AliL3Transform::GetNTimeBins()) continue;
+ if(i<0 || i>=AliHLTTransform::GetNPads(row) || j<0 || j>=AliHLTTransform::GetNTimeBins()) continue;
if(fRow[nt*i+j].fCharge)
{
if(i < padrange[0]) padrange[0]=i;
return kFALSE;
}
-Bool_t AliL3ClusterFitter::IsMaximum(Int_t pad,Int_t time)
+Bool_t AliHLTClusterFitter::IsMaximum(Int_t pad,Int_t time)
{
// checks the maximum
- if(pad<0 || pad >= AliL3Transform::GetNPads(fCurrentPadRow) ||
- time<0 || time >= AliL3Transform::GetNTimeBins())
+ if(pad<0 || pad >= AliHLTTransform::GetNPads(fCurrentPadRow) ||
+ time<0 || time >= AliHLTTransform::GetNTimeBins())
return kFALSE;
- Int_t nt = AliL3Transform::GetNTimeBins()+1;
+ Int_t nt = AliHLTTransform::GetNTimeBins()+1;
if(fRow[nt*pad+time].fUsed == kTRUE) return kFALSE; //Peak has been assigned before
Int_t charge = fRow[nt*pad+time].fCharge;
if(charge == 1024 || charge==0) return kFALSE;
return kTRUE;
}
-void AliL3ClusterFitter::CalculateWeightedMean(AliL3ModelTrack *track,Int_t *padrange,Int_t *timerange)
+void AliHLTClusterFitter::CalculateWeightedMean(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange)
{
// calculates weighted mean
Float_t sum=0;
Int_t npads=0;
Float_t pad=0,time=0;
- Int_t nt = AliL3Transform::GetNTimeBins()+1;
+ Int_t nt = AliHLTTransform::GetNTimeBins()+1;
for(Int_t i=padrange[0]; i<=padrange[1]; i++)
{
Int_t lsum=0;
track->SetCluster(fCurrentPadRow,0,0,0,0,0,0);
}
-void AliL3ClusterFitter::FitClusters(AliL3ModelTrack *track,Int_t *padrange,Int_t *timerange)
+void AliHLTClusterFitter::FitClusters(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange)
{
//Handle single and overlapping clusters
/*
if( (Int_t)rint(track->GetClusterModel(fCurrentPadRow)->fDPad) <= 1 ||
- (Int_t)rint(track->GetClusterModel(fCurrentPadRow)->fDPad) >= AliL3Transform::GetNPads(fCurrentPadRow)-2 ||
+ (Int_t)rint(track->GetClusterModel(fCurrentPadRow)->fDPad) >= AliHLTTransform::GetNPads(fCurrentPadRow)-2 ||
(Int_t)rint(track->GetClusterModel(fCurrentPadRow)->fDTime) <= 1 ||
- (Int_t)rint(track->GetClusterModel(fCurrentPadRow)->fDTime) >= AliL3Transform::GetNTimeBins()-2)
+ (Int_t)rint(track->GetClusterModel(fCurrentPadRow)->fDTime) >= AliHLTTransform::GetNTimeBins()-2)
{
CalculateWeightedMean(track,padrange,timerange);
return;
Int_t maxTracks = FIT_MAXPAR/NUM_PARS;
if(track->GetNOverlaps(fCurrentPadRow) > maxTracks)
{
- cerr<<"AliL3ClusterFitter::FitOverlappingClusters : Too many overlapping tracks"<<endl;
+ cerr<<"AliHLTClusterFitter::FitOverlappingClusters : Too many overlapping tracks"<<endl;
return;
}
Int_t *overlaps = track->GetOverlaps(fCurrentPadRow);
Int_t k=-1;
while(k < track->GetNOverlaps(fCurrentPadRow))
{
- AliL3ModelTrack *tr=0;
+ AliHLTModelTrack *tr=0;
if(k==-1)
tr = track;
else
- tr = (AliL3ModelTrack*)fProcessTracks->GetCheckedTrack(overlaps[k]);
+ tr = (AliHLTModelTrack*)fProcessTracks->GetCheckedTrack(overlaps[k]);
k++;
if(!tr) continue;
if(!tr->IsSet(fCurrentPadRow) && !tr->IsPresent(fCurrentPadRow))//cluster has not been set and is not present
//Fill the overlapping tracks:
while(k < track->GetNOverlaps(fCurrentPadRow))
{
- AliL3ModelTrack *tr=0;
+ AliHLTModelTrack *tr=0;
if(k==-1)
tr = track;
else
- tr = (AliL3ModelTrack*)fProcessTracks->GetCheckedTrack(overlaps[k]);
+ tr = (AliHLTModelTrack*)fProcessTracks->GetCheckedTrack(overlaps[k]);
k++;
if(!tr) continue;
//The local maxima is temporary stored in the cluster model:
Int_t hitpad = (Int_t)rint(tr->GetClusterModel(fCurrentPadRow)->fDPad);
Int_t hittime = (Int_t)rint(tr->GetClusterModel(fCurrentPadRow)->fDTime);
- Int_t charge = fRow[(AliL3Transform::GetNTimeBins()+1)*hitpad + hittime].fCharge;
+ Int_t charge = fRow[(AliHLTTransform::GetNTimeBins()+1)*hitpad + hittime].fCharge;
if(fDebug)
cout<<"Fitting track cluster, pad "<<tr->GetPadHit(fCurrentPadRow)<<" time "
{
if(!tr->IsPresent(fCurrentPadRow))
{
- cerr<<"AliL3ClusterFitter::FindClusters : Cluster not present; there is a bug here"<<endl;
+ cerr<<"AliHLTClusterFitter::FindClusters : Cluster not present; there is a bug here"<<endl;
exit(5);
}
Int_t charge;
Int_t timeNum=0;
for(Int_t j=timerange[0]; j<=timerange[1]; j++)
{
- Int_t charge = fRow[(AliL3Transform::GetNTimeBins()+1)*i + j].fCharge;
+ Int_t charge = fRow[(AliHLTTransform::GetNTimeBins()+1)*i + j].fCharge;
if(charge <= 0) continue;
nOverlaps=0;
while(k < track->GetNOverlaps(fCurrentPadRow))
{
- AliL3ModelTrack *tr=0;
+ AliHLTModelTrack *tr=0;
if(k==-1)
tr = track;
else
- tr = (AliL3ModelTrack*)fProcessTracks->GetCheckedTrack(overlaps[k]);
+ tr = (AliHLTModelTrack*)fProcessTracks->GetCheckedTrack(overlaps[k]);
k++;
if(!tr) continue;
if(!tr->IsPresent(fCurrentPadRow))
if(tr->IsSet(fCurrentPadRow)) continue;//This cluster has been set before
Int_t lpatch;
- if(fCurrentPadRow < AliL3Transform::GetNRowLow())
+ if(fCurrentPadRow < AliHLTTransform::GetNRowLow())
lpatch=0;
- else if(fCurrentPadRow < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1())
+ else if(fCurrentPadRow < AliHLTTransform::GetNRowLow() + AliHLTTransform::GetNRowUp1())
lpatch=1;
else
lpatch=2;
//if(chisqF < fChiSqMax[(Int_t)overlapping])//cluster fit is good enough
if(chisqF < fChiSqMax[lpatch])//cluster fit is good enough
{
- totCharge = (Int_t)(2*AliL3Transform::Pi() * a[nOverlaps*NUM_PARS+1] * a[nOverlaps*NUM_PARS+3] * a[nOverlaps*NUM_PARS+5]);
+ totCharge = (Int_t)(2*AliHLTTransform::Pi() * a[nOverlaps*NUM_PARS+1] * a[nOverlaps*NUM_PARS+3] * a[nOverlaps*NUM_PARS+5]);
Float_t fpad = a[nOverlaps*NUM_PARS+2];
Float_t ftime = a[nOverlaps*NUM_PARS+4];
- if(totCharge < 0 || fpad < -1 || fpad > AliL3Transform::GetNPads(fCurrentPadRow) ||
- ftime < -1 || ftime > AliL3Transform::GetNTimeBins())
+ if(totCharge < 0 || fpad < -1 || fpad > AliHLTTransform::GetNPads(fCurrentPadRow) ||
+ ftime < -1 || ftime > AliHLTTransform::GetNTimeBins())
{
if(fDebug)
- cout<<"AliL3ClusterFitter::Fatal result(s) in fit; in slice "<<fSlice<<" row "<<fCurrentPadRow
+ cout<<"AliHLTClusterFitter::Fatal result(s) in fit; in slice "<<fSlice<<" row "<<fCurrentPadRow
<<"; pad "<<fpad<<" time "<<ftime<<" charge "<<totCharge<<" xywidth "<<a[nOverlaps*NUM_PARS+3]
<<" zwidth "<<a[nOverlaps*NUM_PARS+5]<<" peakcharge "<<a[nOverlaps*NUM_PARS+1]<<endl;
tr->SetCluster(fCurrentPadRow,0,0,0,0,0,0);
//Set the digits to used:
for(Int_t i=padrange[0]; i<=padrange[1]; i++)
for(Int_t j=timerange[0]; j<=timerange[1]; j++)
- fRow[(AliL3Transform::GetNTimeBins()+1)*i + j].fUsed = kTRUE;
+ fRow[(AliHLTTransform::GetNTimeBins()+1)*i + j].fUsed = kTRUE;
*/
fFitted++;
}
delete [] plane;
}
-void AliL3ClusterFitter::SetClusterfitFalse(AliL3ModelTrack *track)
+void AliHLTClusterFitter::SetClusterfitFalse(AliHLTModelTrack *track)
{
//Cluster fit failed, so set the clusters to all the participating
//tracks to zero.
Int_t *overlaps = track->GetOverlaps(fCurrentPadRow);
while(i < track->GetNOverlaps(fCurrentPadRow))
{
- AliL3ModelTrack *tr=0;
+ AliHLTModelTrack *tr=0;
if(i==-1)
tr = track;
else
- tr = (AliL3ModelTrack*)fProcessTracks->GetCheckedTrack(overlaps[i]);
+ tr = (AliHLTModelTrack*)fProcessTracks->GetCheckedTrack(overlaps[i]);
i++;
if(!tr) continue;
//Set the digit data to unused, so it can be fitted to another bastard:
Int_t hitpad = (Int_t)rint(tr->GetClusterModel(fCurrentPadRow)->fDPad);
Int_t hittime = (Int_t)rint(tr->GetClusterModel(fCurrentPadRow)->fDTime);
- fRow[(AliL3Transform::GetNTimeBins()+1)*hitpad + hittime].fUsed = kFALSE;
+ fRow[(AliHLTTransform::GetNTimeBins()+1)*hitpad + hittime].fUsed = kFALSE;
tr->SetCluster(fCurrentPadRow,0,0,0,0,0,0);
}
}
-void AliL3ClusterFitter::AddClusters()
+void AliHLTClusterFitter::AddClusters()
{
// adds clusters
if(!fClusters)
{
- fClusters = new AliL3SpacePointData[fNMaxClusters];
+ fClusters = new AliHLTSpacePointData[fNMaxClusters];
fNClusters=0;
}
if(fDebug)
cout<<"Writing cluster in slice "<<fSlice<<" patch "<<fPatch<<endl;
- AliL3TrackArray *tracks=0;
+ AliHLTTrackArray *tracks=0;
if(fSeeding==kTRUE)
tracks = fSeeds;
else
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3ModelTrack *tr = (AliL3ModelTrack*)tracks->GetCheckedTrack(i);
+ AliHLTModelTrack *tr = (AliHLTModelTrack*)tracks->GetCheckedTrack(i);
if(!tr) continue;
UInt_t *hitids = tr->GetHitNumbers();
tr->GetTime(i,time);
tr->GetClusterCharge(i,charge);
- if(pad < -1 || pad >= AliL3Transform::GetNPads(i) ||
- time < -1 || time >= AliL3Transform::GetNTimeBins())
+ if(pad < -1 || pad >= AliHLTTransform::GetNPads(i) ||
+ time < -1 || time >= AliHLTTransform::GetNTimeBins())
{
continue;
// cout<<"slice "<<fSlice<<" row "<<i<<" pad "<<pad<<" time "<<time<<endl;
tr->GetSigmaZ2(i,zwidth);
Float_t xyz[3];
Int_t sector,row;
- AliL3Transform::Slice2Sector(fSlice,i,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,i,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
if(fNClusters >= fNMaxClusters)
{
- cerr<<"AliL3ClusterFitter::AddClusters : Too many clusters "<<fNClusters<<endl;
+ cerr<<"AliHLTClusterFitter::AddClusters : Too many clusters "<<fNClusters<<endl;
exit(5);
}
fClusters[fNClusters].fZ = xyz[2];
fClusters[fNClusters].fCharge = charge;
fClusters[fNClusters].fPadRow = i;
- Int_t pa = AliL3Transform::GetPatch(i);
+ Int_t pa = AliHLTTransform::GetPatch(i);
if(xywidth==0 || zwidth==0)
- cerr<<"AliL3ClusterFitter::AddClusters : Cluster with zero width"<<endl;
+ cerr<<"AliHLTClusterFitter::AddClusters : Cluster with zero width"<<endl;
if(xywidth>0)
- fClusters[fNClusters].fSigmaY2 = xywidth*pow(AliL3Transform::GetPadPitchWidth(pa),2);
+ fClusters[fNClusters].fSigmaY2 = xywidth*pow(AliHLTTransform::GetPadPitchWidth(pa),2);
else
fClusters[fNClusters].fSigmaY2 = 1;
if(zwidth>0)
- fClusters[fNClusters].fSigmaZ2 = zwidth*pow(AliL3Transform::GetZWidth(),2);
+ fClusters[fNClusters].fSigmaZ2 = zwidth*pow(AliHLTTransform::GetZWidth(),2);
else
fClusters[fNClusters].fSigmaZ2 = 1;
Int_t pat=fPatch;
pat=0;
fClusters[fNClusters].fID = fNClusters + ((fSlice&0x7f)<<25)+((pat&0x7)<<22);
- if(nhits >= AliL3Transform::GetNRows())
+ if(nhits >= AliHLTTransform::GetNRows())
{
- cerr<<"AliL3ClusterFitter::AddClusters : Cluster counter of out range "<<nhits<<endl;
+ cerr<<"AliHLTClusterFitter::AddClusters : Cluster counter of out range "<<nhits<<endl;
exit(5);
}
hitids[nhits++] = fClusters[fNClusters].fID;
Int_t ftime = (Int_t)rint(time);
if(fpad < 0)
fpad=0;
- if(fpad >= AliL3Transform::GetNPads(i))
- fpad = AliL3Transform::GetNPads(i)-1;
+ if(fpad >= AliHLTTransform::GetNPads(i))
+ fpad = AliHLTTransform::GetNPads(i)-1;
if(ftime<0)
ftime=0;
- if(ftime >= AliL3Transform::GetNTimeBins())
- ftime = AliL3Transform::GetNTimeBins()-1;
+ if(ftime >= AliHLTTransform::GetNTimeBins())
+ ftime = AliHLTTransform::GetNTimeBins()-1;
GetTrackID(fpad,ftime,trackID);
fClusters[fNClusters].fTrackID[0] = trackID[0];
fClusters[fNClusters].fTrackID[1] = trackID[1];
}
}
-void AliL3ClusterFitter::WriteTracks(Int_t minHits)
+void AliHLTClusterFitter::WriteTracks(Int_t minHits)
{
// writes tracks
if(!fSeeds)
return;
- AliL3TrackArray *fakes = new AliL3TrackArray();
+ AliHLTTrackArray *fakes = new AliHLTTrackArray();
Int_t clustercount=0;
for(Int_t i=0; i<fSeeds->GetNTracks(); i++)
{
- AliL3ModelTrack *tr = (AliL3ModelTrack*)fSeeds->GetCheckedTrack(i);
+ AliHLTModelTrack *tr = (AliHLTModelTrack*)fSeeds->GetCheckedTrack(i);
if(!tr) continue;
if(tr->GetNHits() < minHits)
{
cout<<"Writing "<<clustercount<<" clusters"<<endl;
fSeeds->Compress();
- AliL3MemHandler mem;
+ AliHLTMemHandler mem;
Char_t filename[1024];
sprintf(filename,"%s/fitter/tracks_%d.raw",fPath,fEvent);
mem.SetBinaryOutput(filename);
delete fakes;
}
-void AliL3ClusterFitter::WriteClusters(Bool_t global)
+void AliHLTClusterFitter::WriteClusters(Bool_t global)
{
// writes clusters
- AliL3MemHandler mem;
+ AliHLTMemHandler mem;
if(fDebug)
cout<<"Write "<<fNClusters<<" clusters to file"<<endl;
Char_t filename[1024];
// @(#) $Id$
-#ifndef AliL3_ClusterFitter
-#define AliL3_ClusterFitter
+#ifndef AliHLT_ClusterFitter
+#define AliHLT_ClusterFitter
-#include "AliL3Modeller.h"
-#include "AliL3Transform.h"
+#include "AliHLTModeller.h"
+#include "AliHLTTransform.h"
-class AliL3ModelTrack;
-class AliL3TrackArray;
-class AliL3SpacePointData;
+class AliHLTModelTrack;
+class AliHLTTrackArray;
+class AliHLTSpacePointData;
-class AliL3ClusterFitter : public AliL3Modeller {
+class AliHLTClusterFitter : public AliHLTModeller {
public:
- AliL3ClusterFitter();
- AliL3ClusterFitter(Char_t *path);
- virtual ~AliL3ClusterFitter();
+ AliHLTClusterFitter();
+ AliHLTClusterFitter(Char_t *path);
+ virtual ~AliHLTClusterFitter();
- void Init(Int_t slice,Int_t patch,Int_t *rowrange,AliL3TrackArray *tracks);
+ void Init(Int_t slice,Int_t patch,Int_t *rowrange,AliHLTTrackArray *tracks);
void Init(Int_t slice,Int_t patch);
void LoadSeeds(Int_t *rowrange,Bool_t offline=kTRUE,Int_t eventnr=0,Float_t zvertex=0.0);
void LoadLocalSegments();
void SetOuterWidthFactor(Float_t y,Float_t z) {fYOuterWidthFactor=y; fZOuterWidthFactor=z;}
Float_t GetYWidthFactor() const
- {return fCurrentPadRow < AliL3Transform::GetLastRow(1) ? fYInnerWidthFactor : fYOuterWidthFactor;}
+ {return fCurrentPadRow < AliHLTTransform::GetLastRow(1) ? fYInnerWidthFactor : fYOuterWidthFactor;}
Float_t GetZWidthFactor() const
- {return fCurrentPadRow < AliL3Transform::GetLastRow(1) ? fZInnerWidthFactor : fZOuterWidthFactor;}
- AliL3TrackArray *GetSeeds() {return fSeeds;}
+ {return fCurrentPadRow < AliHLTTransform::GetLastRow(1) ? fZInnerWidthFactor : fZOuterWidthFactor;}
+ AliHLTTrackArray *GetSeeds() {return fSeeds;}
private:
Int_t fNmaxOverlaps; // Max number of overlaps
Int_t fNMaxClusters; // Max number of clusters
Int_t fNClusters; // umver of clusters
Int_t fEvent; // Current event
- AliL3TrackArray *fSeeds; //! Array of seed
- AliL3TrackArray *fProcessTracks; //! Array of processed tracks
- AliL3SpacePointData *fClusters; //! Array of clusters
+ AliHLTTrackArray *fSeeds; //! Array of seed
+ AliHLTTrackArray *fProcessTracks; //! Array of processed tracks
+ AliHLTSpacePointData *fClusters; //! Array of clusters
- void FitClusters(AliL3ModelTrack *track,Int_t *padrange,Int_t *timerange);
+ void FitClusters(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange);
Bool_t CheckCluster(Int_t trackindex);
Bool_t IsMaximum(Int_t pad,Int_t time);
- Bool_t SetFitRange(AliL3ModelTrack *track,Int_t *padrange,Int_t *timerange);
- void SetClusterfitFalse(AliL3ModelTrack *track);
- void CalculateWeightedMean(AliL3ModelTrack *track,Int_t *padrange,Int_t *timerange);
+ Bool_t SetFitRange(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange);
+ void SetClusterfitFalse(AliHLTModelTrack *track);
+ void CalculateWeightedMean(AliHLTModelTrack *track,Int_t *padrange,Int_t *timerange);
- ClassDef(AliL3ClusterFitter,1)
+ ClassDef(AliHLTClusterFitter,1)
};
+typedef AliHLTClusterFitter AliL3ClusterFitter; // for backward compatibility
+
#endif
--- /dev/null
+// @(#) $Id$
+
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+
+#pragma link C++ typedef AliL3Modeller;
+#ifndef macosx
+#pragma link C++ typedef AliL3ModelTrack;
+#endif
+#pragma link C++ typedef AliL3Compress;
+#pragma link C++ typedef AliL3CompressAC;
+#pragma link C++ typedef AliL3ClusterFitter;
+#pragma link C++ typedef AliL3DataCompressor;
+#pragma link C++ typedef AliL3ClusterModel;
+#ifndef macosx
+#pragma link C++ typedef AliL3DataCompressorHelper;
+#endif
+#ifdef use_aliroot
+#pragma link C++ typedef AliL3OfflineDataCompressor;
+#endif
+
+#pragma link C++ class AliHLTModeller;
+#ifndef macosx
+#pragma link C++ class AliHLTModelTrack;
+#endif
+#pragma link C++ class AliHLTCompress;
+#pragma link C++ class AliHLTCompressAC;
+#pragma link C++ class AliHLTClusterFitter;
+#pragma link C++ class AliHLTDataCompressor;
+#pragma link C++ class AliHLTClusterModel;
+#ifndef macosx
+#pragma link C++ class AliHLTDataCompressorHelper;
+#endif
+#ifdef use_aliroot
+#pragma link C++ class AliHLTOfflineDataCompressor;
+#endif
+
+#endif
+
//*-- Copyright © ALICE HLT Group
//_____________________________________________________________
//
-// AliL3Compress
+// AliHLTCompress
//
// Class for compressing and uncompressing data.
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#include "bitio.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Models.h"
-#include "AliL3DigitData.h"
-#include "AliL3Logging.h"
-#include "AliL3TrackArray.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3Transform.h"
-#include "AliL3MemHandler.h"
-#include "AliL3DataCompressorHelper.h"
-#include "AliL3DataCompressor.h"
-#include "AliL3SpacePointData.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTModels.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTModelTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTDataCompressorHelper.h"
+#include "AliHLTDataCompressor.h"
+#include "AliHLTSpacePointData.h"
#if 0
#ifdef use_root
#include <TRandom.h>
#endif
#ifdef use_aliroot
-#include "AliL3FileHandler.h"
+#include "AliHLTFileHandler.h"
#endif
#endif
-#include "AliL3Compress.h"
+#include "AliHLTCompress.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3Compress)
+ClassImp(AliHLTCompress)
-AliL3Compress::AliL3Compress()
+AliHLTCompress::AliHLTCompress()
{
// default constructor
fTracks=0;
fEvent=-1;
}
-AliL3Compress::AliL3Compress(Int_t slice,Int_t patch,Char_t *path,Bool_t writeshape,Int_t event)
+AliHLTCompress::AliHLTCompress(Int_t slice,Int_t patch,Char_t *path,Bool_t writeshape,Int_t event)
{
// constructor
fEvent=event;
fWriteShape=writeshape;
}
-AliL3Compress::~AliL3Compress()
+AliHLTCompress::~AliHLTCompress()
{
// destructor
if(fTracks)
delete fTracks;
}
-Bool_t AliL3Compress::WriteFile(AliL3TrackArray *tracks,Char_t *filename)
+Bool_t AliHLTCompress::WriteFile(AliHLTTrackArray *tracks,Char_t *filename)
{
// writes file
Char_t fname[1024];
FILE *file = fopen(fname,"w");
if(!file)
{
- cerr<<"AliL3Compress::WriteFile : Error opening file "<<fname<<endl;
+ cerr<<"AliHLTCompress::WriteFile : Error opening file "<<fname<<endl;
return kFALSE;
}
Short_t ntracks = tracks->GetNTracks();
Int_t count=0;
- AliL3ClusterModel *clusters=0;
- AliL3TrackModel *model=0;
+ AliHLTClusterModel *clusters=0;
+ AliHLTTrackModel *model=0;
for(Int_t i=0; i<ntracks; i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)tracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
//Do not save useless tracks or clusters:
model = track->GetModel();
//if(model->fNClusters==0) continue;
clusters = track->GetClusters();
- if(fwrite(model,sizeof(AliL3TrackModel),1,file)!=1) break;
- //if(fwrite(clusters,model->fNClusters*sizeof(AliL3ClusterModel),1,file)!=1) break;
- if(fwrite(clusters,AliL3Transform::GetNRows(fPatch)*sizeof(AliL3ClusterModel),1,file)!=1) break;
+ if(fwrite(model,sizeof(AliHLTTrackModel),1,file)!=1) break;
+ //if(fwrite(clusters,model->fNClusters*sizeof(AliHLTClusterModel),1,file)!=1) break;
+ if(fwrite(clusters,AliHLTTransform::GetNRows(fPatch)*sizeof(AliHLTClusterModel),1,file)!=1) break;
count++;
}
return kTRUE;
}
-Bool_t AliL3Compress::ReadFile(Char_t which,Char_t *filename)
+Bool_t AliHLTCompress::ReadFile(Char_t which,Char_t *filename)
{
//Read the trackfile.
}
else
{
- cerr<<"AliL3Compress::ReadFile() : Wrong option"<<endl;
+ cerr<<"AliHLTCompress::ReadFile() : Wrong option"<<endl;
return kFALSE;
}
}
FILE *file = fopen(fname,"r");
if(!file)
{
- cerr<<"AliL3Compress::ReadFile : Cannot open file "<<fname<<endl;
+ cerr<<"AliHLTCompress::ReadFile : Cannot open file "<<fname<<endl;
return kFALSE;
}
if(fTracks)
delete fTracks;
- fTracks = new AliL3TrackArray("AliL3ModelTrack");
+ fTracks = new AliHLTTrackArray("AliHLTModelTrack");
while(!feof(file))
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fTracks->NextTrack();
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fTracks->NextTrack();
track->Init(fSlice,fPatch);
- AliL3TrackModel *model = track->GetModel();
- AliL3ClusterModel *clusters = track->GetClusters();
- if(fread(model,sizeof(AliL3TrackModel),1,file)!=1) break;
- //if(fread(clusters,model->fNClusters*sizeof(AliL3ClusterModel),1,file)!=1) break;
- if(fread(clusters,AliL3Transform::GetNRows(fPatch)*sizeof(AliL3ClusterModel),1,file)!=1) break;
+ AliHLTTrackModel *model = track->GetModel();
+ AliHLTClusterModel *clusters = track->GetClusters();
+ if(fread(model,sizeof(AliHLTTrackModel),1,file)!=1) break;
+ //if(fread(clusters,model->fNClusters*sizeof(AliHLTClusterModel),1,file)!=1) break;
+ if(fread(clusters,AliHLTTransform::GetNRows(fPatch)*sizeof(AliHLTClusterModel),1,file)!=1) break;
track->FillTrack();
}
return kTRUE;
}
-Bool_t AliL3Compress::CompressFile()
+Bool_t AliHLTCompress::CompressFile()
{
// compresses file
Char_t fname[100];
FILE *input = fopen(fname,"r");
if(!input)
{
- cerr<<"AliL3Compress::CompressFile() : Error opening file: "<<fname<<endl;
+ cerr<<"AliHLTCompress::CompressFile() : Error opening file: "<<fname<<endl;
return kFALSE;
}
- AliL3TrackModel track;
- AliL3ClusterModel cluster;
+ AliHLTTrackModel track;
+ AliHLTClusterModel cluster;
Int_t temp;
Int_t power;
timeo=pado=chargeo=padshapeo=timeshapeo=0;
while(!feof(input))
{
- if(fread(&track,sizeof(AliL3TrackModel),1,input)!=1) break;
+ if(fread(&track,sizeof(AliHLTTrackModel),1,input)!=1) break;
if(output->mask != 0x80) //Write the current byte to file.
{
- //cerr<<"\nAliL3Compress::CompressFile() : Writing overhead bits!!!"<<endl;
+ //cerr<<"\nAliHLTCompress::CompressFile() : Writing overhead bits!!!"<<endl;
if(putc(output->rack,output->file )!=output->rack)
- cerr<<"AliL3Compress::ComressFile : Error writing to bitfile"<<endl;
+ cerr<<"AliHLTCompress::ComressFile : Error writing to bitfile"<<endl;
output->mask=0x80;
output->rack=0;
}
//Write track parameters:
- fwrite(&track,sizeof(AliL3TrackModel),1,output->file);
+ fwrite(&track,sizeof(AliHLTTrackModel),1,output->file);
Int_t origslice=-1,slice,clustercount=0;
- for(Int_t i=0; i<AliL3Transform::GetNRows(fPatch); i++)
+ for(Int_t i=0; i<AliHLTTransform::GetNRows(fPatch); i++)
{
- if(fread(&cluster,sizeof(AliL3ClusterModel),1,input)!=1) break;
+ if(fread(&cluster,sizeof(AliHLTClusterModel),1,input)!=1) break;
//Write empty flag:
temp = (Int_t)cluster.fPresent;
if(cluster.fSlice<0 || cluster.fSlice>35)
{
- cerr<<"AliL3DataCompress::CompressFile : Fucked up slice number :"<<cluster.fSlice<<endl;
+ cerr<<"AliHLTDataCompress::CompressFile : Fucked up slice number :"<<cluster.fSlice<<endl;
exit(5);
}
OutputBit(output,0);
else
OutputBit(output,1);
- power = 1<<(AliL3DataCompressorHelper::GetNTimeBits()-1);
+ power = 1<<(AliHLTDataCompressorHelper::GetNTimeBits()-1);
if(abs(temp)>=power)
{
//cout<<abs(temp)<<" "<<power<<endl;
timeo++;
temp=power - 1;
}
- OutputBits(output,abs(temp),(AliL3DataCompressorHelper::GetNTimeBits()-1));
+ OutputBits(output,abs(temp),(AliHLTDataCompressorHelper::GetNTimeBits()-1));
//Write pad information:
temp = (Int_t)rint(cluster.fDPad);
OutputBit(output,0);
else
OutputBit(output,1);
- power = 1<<(AliL3DataCompressorHelper::GetNPadBits()-1);
+ power = 1<<(AliHLTDataCompressorHelper::GetNPadBits()-1);
if(abs(temp)>=power)
{
pado++;
temp=power - 1;
}
- OutputBits(output,abs(temp),(AliL3DataCompressorHelper::GetNPadBits()-1));
+ OutputBits(output,abs(temp),(AliHLTDataCompressorHelper::GetNPadBits()-1));
//Write charge information:
temp = (Int_t)cluster.fDCharge;
- power = 1<<(AliL3DataCompressorHelper::GetNChargeBits());
+ power = 1<<(AliHLTDataCompressorHelper::GetNChargeBits());
if(abs(temp)>=power)
{
chargeo++;
temp=power - 1;
}
- OutputBits(output,abs(temp),(AliL3DataCompressorHelper::GetNChargeBits()));
+ OutputBits(output,abs(temp),(AliHLTDataCompressorHelper::GetNChargeBits()));
if(fWriteShape)
{
OutputBit(output,0);
else
OutputBit(output,1);
- power = 1<<(AliL3DataCompressorHelper::GetNShapeBits()-1);
+ power = 1<<(AliHLTDataCompressorHelper::GetNShapeBits()-1);
if(abs(temp) >= power)
{
padshapeo++;
temp = power - 1;
}
- OutputBits(output,abs(temp),(AliL3DataCompressorHelper::GetNShapeBits()-1));
+ OutputBits(output,abs(temp),(AliHLTDataCompressorHelper::GetNShapeBits()-1));
temp = (Int_t)rint(cluster.fDSigmaZ);
if(temp<0)
OutputBit(output,0);
else
OutputBit(output,1);
- power = 1<<(AliL3DataCompressorHelper::GetNShapeBits()-1);
+ power = 1<<(AliHLTDataCompressorHelper::GetNShapeBits()-1);
if(abs(temp) >= power)
{
timeshapeo++;
temp=power - 1;
}
- OutputBits(output,abs(temp),(AliL3DataCompressorHelper::GetNShapeBits()-1));
+ OutputBits(output,abs(temp),(AliHLTDataCompressorHelper::GetNShapeBits()-1));
}
clustercount++;
return kTRUE;
}
-Bool_t AliL3Compress::ExpandFile()
+Bool_t AliHLTCompress::ExpandFile()
{
// expands file
Char_t fname[100];
FILE *output = fopen(fname,"w");
if(!output)
{
- cerr<<"AliL3Compress::ExpandFile() : Error opening file: "<<fname<<endl;
+ cerr<<"AliHLTCompress::ExpandFile() : Error opening file: "<<fname<<endl;
return kFALSE;
}
- AliL3TrackModel trackmodel;
- AliL3ClusterModel *clusters=0;
+ AliHLTTrackModel trackmodel;
+ AliHLTClusterModel *clusters=0;
Int_t count=0;
- clusters = new AliL3ClusterModel[(AliL3Transform::GetNRows(fPatch))];
+ clusters = new AliHLTClusterModel[(AliHLTTransform::GetNRows(fPatch))];
while(!feof(input->file))
{
input->mask=0x80;//make sure we read a new byte from file.
//Read and write track:
- if(fread(&trackmodel,sizeof(AliL3TrackModel),1,input->file)!=1) break;
- fwrite(&trackmodel,sizeof(AliL3TrackModel),1,output);
+ if(fread(&trackmodel,sizeof(AliHLTTrackModel),1,input->file)!=1) break;
+ fwrite(&trackmodel,sizeof(AliHLTTrackModel),1,output);
- memset(clusters,0,AliL3Transform::GetNRows(fPatch)*sizeof(AliL3ClusterModel));
+ memset(clusters,0,AliHLTTransform::GetNRows(fPatch)*sizeof(AliHLTClusterModel));
Int_t origslice=-1,clustercount=0;
- for(Int_t i=0; i<AliL3Transform::GetNRows(fPatch); i++)
+ for(Int_t i=0; i<AliHLTTransform::GetNRows(fPatch); i++)
{
Int_t temp,sign;
//Read time information:
sign=InputBit(input);
- temp = InputBits(input,(AliL3DataCompressorHelper::GetNTimeBits()-1));
+ temp = InputBits(input,(AliHLTDataCompressorHelper::GetNTimeBits()-1));
if(!sign)
temp*=-1;
clusters[i].fDTime = temp;
//Read pad information:
sign=InputBit(input);
- temp = InputBits(input,(AliL3DataCompressorHelper::GetNPadBits()-1));
+ temp = InputBits(input,(AliHLTDataCompressorHelper::GetNPadBits()-1));
if(!sign)
temp*=-1;
clusters[i].fDPad = temp;
//Read charge information:
- temp=InputBits(input,(AliL3DataCompressorHelper::GetNChargeBits()));
+ temp=InputBits(input,(AliHLTDataCompressorHelper::GetNChargeBits()));
clusters[i].fDCharge = temp;
if(fWriteShape)
{
//Read shape information:
sign = InputBit(input);
- temp = InputBits(input,(AliL3DataCompressorHelper::GetNShapeBits()-1));
+ temp = InputBits(input,(AliHLTDataCompressorHelper::GetNShapeBits()-1));
if(!sign)
temp*=-1;
clusters[i].fDSigmaY = temp;
sign = InputBit(input);
- temp = InputBits(input,(AliL3DataCompressorHelper::GetNShapeBits()-1));
+ temp = InputBits(input,(AliHLTDataCompressorHelper::GetNShapeBits()-1));
if(!sign)
temp*=-1;
clusters[i].fDSigmaZ = temp;
clustercount++;
}
count++;
- //fwrite(clusters,(trackmodel.fNClusters)*sizeof(AliL3ClusterModel),1,output);
- fwrite(clusters,AliL3Transform::GetNRows(fPatch)*sizeof(AliL3ClusterModel),1,output);
+ //fwrite(clusters,(trackmodel.fNClusters)*sizeof(AliHLTClusterModel),1,output);
+ fwrite(clusters,AliHLTTransform::GetNRows(fPatch)*sizeof(AliHLTClusterModel),1,output);
}
delete [] clusters;
return kTRUE;
}
-void AliL3Compress::CompressRemaining(AliL3SpacePointData *clusters[36][6],UInt_t nclusters[36][6])
+void AliHLTCompress::CompressRemaining(AliHLTSpacePointData *clusters[36][6],UInt_t nclusters[36][6])
{
//Write the remaining clusters in a compressed format.
Char_t filename[1024];
- Int_t nrows = AliL3Transform::GetNRows();
+ Int_t nrows = AliHLTTransform::GetNRows();
Int_t *npoints = new Int_t[nrows];
for(Int_t slice=0; slice<=35; slice++)
{
BIT_FILE *output = OpenOutputBitFile(filename);
if(!output)
{
- cerr<<"AliL3Compress::CompressRemaining : Cannot open file "<<filename<<endl;
+ cerr<<"AliHLTCompress::CompressRemaining : Cannot open file "<<filename<<endl;
exit(5);
}
- AliL3SpacePointData *cl = clusters[slice][patch];
+ AliHLTSpacePointData *cl = clusters[slice][patch];
memset(npoints,0,nrows*sizeof(Int_t));
UInt_t i;
OutputBits(output,padrow,8);//Write padrow #
if(npoints[padrow] >= 1<<10)
{
- cerr<<"AliL3Compress::CompressRemaining : Too many remaining clusters "<<npoints[padrow]<<endl;
+ cerr<<"AliHLTCompress::CompressRemaining : Too many remaining clusters "<<npoints[padrow]<<endl;
exit(5);
}
OutputBits(output,npoints[padrow],10);//Write number of clusters on this padrow
Float_t xyz[3] = {cl[i].fX,cl[i].fY,cl[i].fZ};
Int_t sector,row,buff;
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
- AliL3Transform::Global2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Global2Raw(xyz,sector,row);
- Float_t padw = sqrt(cl[i].fSigmaY2) / AliL3Transform::GetPadPitchWidth(AliL3Transform::GetPatch(padrow));
- Float_t timew = sqrt(cl[i].fSigmaZ2) / AliL3Transform::GetZWidth();
+ Float_t padw = sqrt(cl[i].fSigmaY2) / AliHLTTransform::GetPadPitchWidth(AliHLTTransform::GetPatch(padrow));
+ Float_t timew = sqrt(cl[i].fSigmaZ2) / AliHLTTransform::GetZWidth();
//Check for saturation in the widths.
//Basically only store a certain number of decimals here, and cut the widths which is higher:
- if(padw >= (1<<AliL3DataCompressorHelper::GetNShapeBitsRemaining()) / AliL3DataCompressorHelper::GetPadPrecisionFactor())
- padw = (1<<AliL3DataCompressorHelper::GetNShapeBitsRemaining()) / AliL3DataCompressorHelper::GetPadPrecisionFactor() - 1/AliL3DataCompressorHelper::GetPadPrecisionFactor();
- if(timew >= (1<<AliL3DataCompressorHelper::GetNShapeBitsRemaining()) / AliL3DataCompressorHelper::GetTimePrecisionFactor())
- timew = (1<<AliL3DataCompressorHelper::GetNShapeBitsRemaining()) / AliL3DataCompressorHelper::GetTimePrecisionFactor() - 1/AliL3DataCompressorHelper::GetTimePrecisionFactor();;
+ if(padw >= (1<<AliHLTDataCompressorHelper::GetNShapeBitsRemaining()) / AliHLTDataCompressorHelper::GetPadPrecisionFactor())
+ padw = (1<<AliHLTDataCompressorHelper::GetNShapeBitsRemaining()) / AliHLTDataCompressorHelper::GetPadPrecisionFactor() - 1/AliHLTDataCompressorHelper::GetPadPrecisionFactor();
+ if(timew >= (1<<AliHLTDataCompressorHelper::GetNShapeBitsRemaining()) / AliHLTDataCompressorHelper::GetTimePrecisionFactor())
+ timew = (1<<AliHLTDataCompressorHelper::GetNShapeBitsRemaining()) / AliHLTDataCompressorHelper::GetTimePrecisionFactor() - 1/AliHLTDataCompressorHelper::GetTimePrecisionFactor();;
//Write pad
- buff = (Int_t)rint(xyz[1]*AliL3DataCompressorHelper::GetPadPrecisionFactor());
+ buff = (Int_t)rint(xyz[1]*AliHLTDataCompressorHelper::GetPadPrecisionFactor());
if(buff<0)
{
- cerr<<"AliL3Compress:CompressRemaining : Wrong pad value "<<buff<<endl;
+ cerr<<"AliHLTCompress:CompressRemaining : Wrong pad value "<<buff<<endl;
exit(5);
}
- OutputBits(output,buff,AliL3DataCompressorHelper::GetNPadBitsRemaining());
+ OutputBits(output,buff,AliHLTDataCompressorHelper::GetNPadBitsRemaining());
//Write time
- buff = (Int_t)rint(xyz[2]*AliL3DataCompressorHelper::GetTimePrecisionFactor());
+ buff = (Int_t)rint(xyz[2]*AliHLTDataCompressorHelper::GetTimePrecisionFactor());
if(buff<0)
{
- cerr<<"AliL3Compress:CompressRemaining : Wrong time value "<<buff<<endl;
+ cerr<<"AliHLTCompress:CompressRemaining : Wrong time value "<<buff<<endl;
exit(5);
}
- OutputBits(output,buff,AliL3DataCompressorHelper::GetNTimeBitsRemaining());
+ OutputBits(output,buff,AliHLTDataCompressorHelper::GetNTimeBitsRemaining());
//Write widths
- buff = (Int_t)rint(padw*AliL3DataCompressorHelper::GetPadPrecisionFactor());
- OutputBits(output,buff,AliL3DataCompressorHelper::GetNShapeBitsRemaining());
- buff = (Int_t)rint(timew*AliL3DataCompressorHelper::GetTimePrecisionFactor());
- OutputBits(output,buff,AliL3DataCompressorHelper::GetNShapeBitsRemaining());
+ buff = (Int_t)rint(padw*AliHLTDataCompressorHelper::GetPadPrecisionFactor());
+ OutputBits(output,buff,AliHLTDataCompressorHelper::GetNShapeBitsRemaining());
+ buff = (Int_t)rint(timew*AliHLTDataCompressorHelper::GetTimePrecisionFactor());
+ OutputBits(output,buff,AliHLTDataCompressorHelper::GetNShapeBitsRemaining());
//Write charge
buff = cl[i].fCharge;
- if(buff >= 1<<(AliL3DataCompressorHelper::GetNChargeBits()))
- buff = (1<<(AliL3DataCompressorHelper::GetNChargeBits()))-1;
- OutputBits(output,buff,AliL3DataCompressorHelper::GetNChargeBits());
+ if(buff >= 1<<(AliHLTDataCompressorHelper::GetNChargeBits()))
+ buff = (1<<(AliHLTDataCompressorHelper::GetNChargeBits()))-1;
+ OutputBits(output,buff,AliHLTDataCompressorHelper::GetNChargeBits());
}
CloseOutputBitFile(output);
delete [] npoints;
}
-void AliL3Compress::ExpandRemaining(TempCluster **clusters,Int_t *ncl, Int_t /*maxpoints*/)
+void AliHLTCompress::ExpandRemaining(TempCluster **clusters,Int_t *ncl, Int_t /*maxpoints*/)
{
//Expand the remaining clusters stored using function CompressRemaining
clusters[slice][ncl[slice]].fPadrow = padrow;
//Read pad
- buff = InputBits(input,AliL3DataCompressorHelper::GetNPadBitsRemaining());
- clusters[slice][ncl[slice]].fPad = (Float_t)buff/AliL3DataCompressorHelper::GetPadPrecisionFactor();
+ buff = InputBits(input,AliHLTDataCompressorHelper::GetNPadBitsRemaining());
+ clusters[slice][ncl[slice]].fPad = (Float_t)buff/AliHLTDataCompressorHelper::GetPadPrecisionFactor();
//Read time
- buff = InputBits(input,AliL3DataCompressorHelper::GetNTimeBitsRemaining());
- clusters[slice][ncl[slice]].fTime = (Float_t)buff/AliL3DataCompressorHelper::GetTimePrecisionFactor();
+ buff = InputBits(input,AliHLTDataCompressorHelper::GetNTimeBitsRemaining());
+ clusters[slice][ncl[slice]].fTime = (Float_t)buff/AliHLTDataCompressorHelper::GetTimePrecisionFactor();
//Read widths
- buff = InputBits(input,AliL3DataCompressorHelper::GetNShapeBitsRemaining());
- clusters[slice][ncl[slice]].fSigmaY2 = pow((Float_t)buff/AliL3DataCompressorHelper::GetPadPrecisionFactor(),2);
- buff = InputBits(input,AliL3DataCompressorHelper::GetNShapeBitsRemaining());
- clusters[slice][ncl[slice]].fSigmaZ2 = pow((Float_t)buff/AliL3DataCompressorHelper::GetPadPrecisionFactor(),2);
+ buff = InputBits(input,AliHLTDataCompressorHelper::GetNShapeBitsRemaining());
+ clusters[slice][ncl[slice]].fSigmaY2 = pow((Float_t)buff/AliHLTDataCompressorHelper::GetPadPrecisionFactor(),2);
+ buff = InputBits(input,AliHLTDataCompressorHelper::GetNShapeBitsRemaining());
+ clusters[slice][ncl[slice]].fSigmaZ2 = pow((Float_t)buff/AliHLTDataCompressorHelper::GetPadPrecisionFactor(),2);
//Read charge
- buff = InputBits(input,AliL3DataCompressorHelper::GetNChargeBits());
+ buff = InputBits(input,AliHLTDataCompressorHelper::GetNChargeBits());
clusters[slice][ncl[slice]].fCharge = buff;
ncl[slice]++;
}
}
-void AliL3Compress::PrintCompRatio(ofstream *outfile)
+void AliHLTCompress::PrintCompRatio(ofstream *outfile)
{
// prints the compression ratio
- AliL3MemHandler *mem = new AliL3MemHandler();
+ AliHLTMemHandler *mem = new AliHLTMemHandler();
Char_t fname[1024];
UInt_t remainSize=0,digitSize=0;
for(Int_t i=0; i<36; i++)
if(digitSize==0)
{
- cerr<<"AliL3Compress::PrintCompRatio : Zero digit size, not able to obtain comp. ratios!"<<endl;
+ cerr<<"AliHLTCompress::PrintCompRatio : Zero digit size, not able to obtain comp. ratios!"<<endl;
return;
}
Float_t compratio = (Float_t)(compressSize + remainSize)/(Float_t)digitSize;
Float_t entropy[3];
- Int_t trackSize = GetEntropy(entropy[0],entropy[1],entropy[2])*sizeof(AliL3TrackModel);
+ Int_t trackSize = GetEntropy(entropy[0],entropy[1],entropy[2])*sizeof(AliHLTTrackModel);
if(outfile)
{
ofstream &out = *outfile;
cout<<"Entropy of residuals : "<<entropy[0]<<" "<<entropy[1]<<endl;
}
-Int_t AliL3Compress::GetEntropy(Float_t &padEntropy,Float_t &timeEntropy,Float_t &chargeEntropy)
+Int_t AliHLTCompress::GetEntropy(Float_t &padEntropy,Float_t &timeEntropy,Float_t &chargeEntropy)
{
//Calculate the entropy of the quantized residuals in both directions
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fTracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fTracks->GetCheckedTrack(i);
if(!track) continue;
- for(Int_t padrow=0; padrow<AliL3Transform::GetNRows(); padrow++)
+ for(Int_t padrow=0; padrow<AliHLTTransform::GetNRows(); padrow++)
{
if(!track->IsPresent(padrow)) continue;
Int_t dpad = abs((Int_t)rint(track->GetClusterModel(padrow)->fDPad));
Int_t dcharge = (Int_t)track->GetClusterModel(padrow)->fDCharge;
if(dpad >= knmax || dtime >= knmax || dcharge >= knmax)
{
- cerr<<"AliL3Compress::GetEntropy : Quantization out of range: "<<dpad<<" "<<dtime<<" "<<dcharge<<endl;
+ cerr<<"AliHLTCompress::GetEntropy : Quantization out of range: "<<dpad<<" "<<dtime<<" "<<dcharge<<endl;
break;
}
pads[dpad]++;
--- /dev/null
+// @(#) $Id$
+
+#ifndef AliHLT_Compress
+#define AliHLT_Compress
+
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTDataCompressor.h"
+
+class AliHLTCompress {
+
+ public:
+ AliHLTCompress();
+ AliHLTCompress(Int_t slice,Int_t patch,Char_t *path="./",Bool_t writeshape=kFALSE,Int_t event=-1);
+ virtual ~AliHLTCompress();
+
+ Bool_t WriteFile(AliHLTTrackArray *tracks,Char_t *filename=0);
+ Bool_t ReadFile(Char_t which,Char_t *filename=0);
+ virtual Bool_t CompressFile();
+ virtual Bool_t ExpandFile();
+ void CompressRemaining(AliHLTSpacePointData *points[36][6],UInt_t npoints[36][6]);
+ void ExpandRemaining(TempCluster **clusters,Int_t *ncl,Int_t maxclusters);
+ virtual void PrintCompRatio(STDOF *outfile=0);
+ Int_t GetEntropy(Float_t &padEntropy,Float_t &timeEntropy,Float_t &chargeEntropy);
+
+ AliHLTTrackArray *GetTracks() {return fTracks;}
+
+ protected:
+ AliHLTTrackArray *fTracks; //! Array of tracks
+ Int_t fSlice; // Slice
+ Int_t fPatch; // Patch
+ Char_t fPath[100]; // Path to the files
+ Bool_t fWriteShape; // Flag to write the shape
+ Int_t fEvent; // Current event
+
+
+ ClassDef(AliHLTCompress,1)
+
+};
+
+typedef AliHLTCompress AliL3Compress; // for backward compatibility
+
+#endif
//*-- Copyright © ALICE HLT Group
//_____________________________________________________________
//
-// AliL3CompressAC
+// AliHLTCompressAC
//
// Compression class which performs Arithmetic Coding of the quantized residuals.
// The implemented algorithm is inspired by the examples in The Data Compression Book
using namespace std;
#endif
-#include "AliL3StandardIncludes.h"
-#include "AliL3TrackArray.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3Transform.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Compress.h"
-#include "AliL3DataCompressorHelper.h"
-#include "AliL3CompressAC.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTModelTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTCompress.h"
+#include "AliHLTDataCompressorHelper.h"
+#include "AliHLTCompressAC.h"
-ClassImp(AliL3CompressAC)
+ClassImp(AliHLTCompressAC)
-AliL3CompressAC::AliL3CompressAC()
+AliHLTCompressAC::AliHLTCompressAC()
{
// default constructor
fCount=0;
fCode=0;
}
-AliL3CompressAC::AliL3CompressAC(Int_t slice,Int_t patch,Char_t *path,Bool_t writeshape,Int_t event) :
- AliL3Compress(slice,patch,path,writeshape,event)
+AliHLTCompressAC::AliHLTCompressAC(Int_t slice,Int_t patch,Char_t *path,Bool_t writeshape,Int_t event) :
+ AliHLTCompress(slice,patch,path,writeshape,event)
{
// constructor
fCount=0;
fCode=0;
}
-AliL3CompressAC::~AliL3CompressAC()
+AliHLTCompressAC::~AliHLTCompressAC()
{
// destructor
ClearArrays();
}
-void AliL3CompressAC::ClearArrays()
+void AliHLTCompressAC::ClearArrays()
{
// cleans all arrays
fMax=0;
delete [] fTotals;
}
-void AliL3CompressAC::BuildModel(BIT_FILE *output)
+void AliHLTCompressAC::BuildModel(BIT_FILE *output)
{
//Build the model from the input data, i.e. probability distributions of the quantized residuals.
UInt_t * temp = new UInt_t[nmax];
memset(&temp[0],0,nmax*sizeof(UInt_t));
- AliL3TrackArray *tracks = GetTracks();
+ AliHLTTrackArray *tracks = GetTracks();
for(Int_t t=0; t<tracks->GetNTracks(); t++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)tracks->GetCheckedTrack(t);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)tracks->GetCheckedTrack(t);
if(!track) continue;
- for(Int_t padrow=0; padrow<AliL3Transform::GetNRows(); padrow++)
+ for(Int_t padrow=0; padrow<AliHLTTransform::GetNRows(); padrow++)
{
if(!track->IsPresent(padrow)) continue;
qres = abs((Int_t)rint(track->GetClusterModel(padrow)->fDPad));
if(qres >= nmax)
{
- cerr<<"AliL3CompressAC::BuildModel() : Residual values seems way too big!"<<endl;
+ cerr<<"AliHLTCompressAC::BuildModel() : Residual values seems way too big!"<<endl;
continue;
}
if(qres > fMax)
delete [] temp;
}
-void AliL3CompressAC::RebuildModel(BIT_FILE *input)
+void AliHLTCompressAC::RebuildModel(BIT_FILE *input)
{
//Rebuild the model from the counts written to the beginning of the compressed file.
FillTotals();
}
-void AliL3CompressAC::FillTotals()
+void AliHLTCompressAC::FillTotals()
{
//Fill the array of totals, which is actually the model being used during encoding/decoding.
if(fMax == 0)
- cerr<<"AliL3CompressAC::FillTotals : max value is zero!"<<endl;
+ cerr<<"AliHLTCompressAC::FillTotals : max value is zero!"<<endl;
fTotals = new UInt_t[fMax+3];//up to max, and one reserved for endofstream symbol
fTotals[fMax+2] = fTotals[fMax+1]+1;//Used for the scale
}
-void AliL3CompressAC::PrintTotals() const
+void AliHLTCompressAC::PrintTotals() const
{
// prints totals
cout<<"Totals:"<<endl;
}
}
-void AliL3CompressAC::InitEncoder()
+void AliHLTCompressAC::InitEncoder()
{
// inits the encoder
fLow = 0;
fUnderflowBits=0;
}
-void AliL3CompressAC::InitDecoder(BIT_FILE *input)
+void AliHLTCompressAC::InitDecoder(BIT_FILE *input)
{
// inits the decoder
fCode=0;
fHigh = 0xffff;
}
-void AliL3CompressAC::ConvertIntToSymbol(Int_t value)
+void AliHLTCompressAC::ConvertIntToSymbol(Int_t value)
{
// converst integer to symbol
UInt_t range = fHigh - fLow + 1;
fLow = fLow + (UShort_t)((range*fTotals[value])/fTotals[fMax+2]);
}
-UInt_t AliL3CompressAC::ConvertSymbolToInt()
+UInt_t AliHLTCompressAC::ConvertSymbolToInt()
{
// converts symbol to integer
UInt_t range = (UInt_t)(fHigh-fLow) + 1;
return j;
}
-void AliL3CompressAC::EncodeSymbol(BIT_FILE *output)
+void AliHLTCompressAC::EncodeSymbol(BIT_FILE *output)
{
// encodes symbol
while(1)
}
}
-void AliL3CompressAC::RemoveSymbolFromStream(BIT_FILE *input,Int_t j)
+void AliHLTCompressAC::RemoveSymbolFromStream(BIT_FILE *input,Int_t j)
{
// remves symbol fro stream
UInt_t range = (UInt_t)(fHigh-fLow)+1;
}
}
-void AliL3CompressAC::FlushEncoder(BIT_FILE *output)
+void AliHLTCompressAC::FlushEncoder(BIT_FILE *output)
{
//Flush the encoder:
OutputBit(output,fLow & 0x4000);
}
-Bool_t AliL3CompressAC::CompressFile()
+Bool_t AliHLTCompressAC::CompressFile()
{
// comresses file
Char_t fname[100];
FILE *input = fopen(fname,"r");
if(!input)
{
- cerr<<"AliL3CompressAC::CompressFileAC() : Error opening file: "<<fname<<endl;
+ cerr<<"AliHLTCompressAC::CompressFileAC() : Error opening file: "<<fname<<endl;
return kFALSE;
}
BuildModel(output);
- AliL3TrackModel track;
+ AliHLTTrackModel track;
Int_t temp,power,i,j;
fseek(input,0,SEEK_END);
UInt_t size = ftell(input);
rewind(input);
- Int_t trackcount = size/(sizeof(AliL3TrackModel) + sizeof(AliL3ClusterModel)*AliL3Transform::GetNRows(fPatch));
+ Int_t trackcount = size/(sizeof(AliHLTTrackModel) + sizeof(AliHLTClusterModel)*AliHLTTransform::GetNRows(fPatch));
//Write the number of tracks in the beginning of stream.
fwrite(&trackcount,sizeof(Int_t),1,output->file);
- AliL3ClusterModel **clusters = new AliL3ClusterModel*[trackcount];
+ AliHLTClusterModel **clusters = new AliHLTClusterModel*[trackcount];
Int_t *clustercount = new Int_t[trackcount];
i=0;
//Store the clusters in memory for later encoding and storing.
while(!feof(input))
{
- if(fread(&track,sizeof(AliL3TrackModel),1,input)!=1) break;
- fwrite(&track,sizeof(AliL3TrackModel),1,output->file);
+ if(fread(&track,sizeof(AliHLTTrackModel),1,input)!=1) break;
+ fwrite(&track,sizeof(AliHLTTrackModel),1,output->file);
- clusters[i] = new AliL3ClusterModel[AliL3Transform::GetNRows()];
+ clusters[i] = new AliHLTClusterModel[AliHLTTransform::GetNRows()];
clustercount[i]=0;
//Read in the clusters:
- fread(clusters[i],sizeof(AliL3ClusterModel),AliL3Transform::GetNRows(fPatch),input);
+ fread(clusters[i],sizeof(AliHLTClusterModel),AliHLTTransform::GetNRows(fPatch),input);
i++;
}
if(i != trackcount)
{
- cerr<<"AliL3CompressAC::CompressFile : Mismatching file size and trackcount "<<i<<" "<<trackcount<<endl;
+ cerr<<"AliHLTCompressAC::CompressFile : Mismatching file size and trackcount "<<i<<" "<<trackcount<<endl;
exit(5);
}
fclose(input);
for(i=0; i<trackcount; i++)
{
Int_t origslice=-1,slice;
- for(j=0; j<AliL3Transform::GetNRows(fPatch); j++)
+ for(j=0; j<AliHLTTransform::GetNRows(fPatch); j++)
{
temp = (Int_t)clusters[i][j].fPresent;
OutputBit(output,temp);
if(clusters[i][j].fSlice<0 || clusters[i][j].fSlice>35)
{
- cerr<<"AliL3DataCompress::CompressFile : Fucked up slice number :"<<clusters[i][j].fSlice<<endl;
+ cerr<<"AliHLTDataCompress::CompressFile : Fucked up slice number :"<<clusters[i][j].fSlice<<endl;
exit(5);
}
//Write charge information:
temp = (Int_t)clusters[i][j].fDCharge;
- power = 1<<(AliL3DataCompressorHelper::GetNChargeBits());
+ power = 1<<(AliHLTDataCompressorHelper::GetNChargeBits());
if(abs(temp)>=power)
{
temp=power - 1;
}
- OutputBits(output,abs(temp),(AliL3DataCompressorHelper::GetNChargeBits()));
+ OutputBits(output,abs(temp),(AliHLTDataCompressorHelper::GetNChargeBits()));
//Write sign information of the residuals:
temp = (Int_t)rint(clusters[i][j].fDTime);
OutputBit(output,0);
else
OutputBit(output,1);
- power = 1<<(AliL3DataCompressorHelper::GetNShapeBits()-1);
+ power = 1<<(AliHLTDataCompressorHelper::GetNShapeBits()-1);
if(abs(temp) >= power)
{
temp = power - 1;
}
- OutputBits(output,abs(temp),(AliL3DataCompressorHelper::GetNShapeBits()-1));
+ OutputBits(output,abs(temp),(AliHLTDataCompressorHelper::GetNShapeBits()-1));
temp = (Int_t)rint(clusters[i][j].fDSigmaZ);
if(temp<0)
OutputBit(output,0);
else
OutputBit(output,1);
- power = 1<<(AliL3DataCompressorHelper::GetNShapeBits()-1);
+ power = 1<<(AliHLTDataCompressorHelper::GetNShapeBits()-1);
if(abs(temp) >= power)
{
temp=power - 1;
}
- OutputBits(output,abs(temp),(AliL3DataCompressorHelper::GetNShapeBits()-1));
+ OutputBits(output,abs(temp),(AliHLTDataCompressorHelper::GetNShapeBits()-1));
}
clustercount[i]++;
}
{
Int_t counter=0;
- for(j=0; j<AliL3Transform::GetNRows(fPatch); j++)
+ for(j=0; j<AliHLTTransform::GetNRows(fPatch); j++)
{
if(!clusters[i][j].fPresent) continue;
temp = abs((Int_t)rint(clusters[i][j].fDTime));
}
if(counter != clustercount[i])
{
- cerr<<"AliL3CompressAC::CompressFile : Mismatching clustercount "<<counter<<" "<<clustercount[i]<<endl;
+ cerr<<"AliHLTCompressAC::CompressFile : Mismatching clustercount "<<counter<<" "<<clustercount[i]<<endl;
exit(5);
}
return kTRUE;
}
-Bool_t AliL3CompressAC::ExpandFile()
+Bool_t AliHLTCompressAC::ExpandFile()
{
// expands file
Char_t fname[100];
FILE *output = fopen(fname,"w");
if(!output)
{
- cerr<<"AliL3Compress::ExpandFile() : Error opening file: "<<fname<<endl;
+ cerr<<"AliHLTCompress::ExpandFile() : Error opening file: "<<fname<<endl;
return kFALSE;
}
int trackcount,i,j;
fread(&trackcount,sizeof(Int_t),1,input->file);
- AliL3TrackModel *trackmodels = new AliL3TrackModel[trackcount];
- AliL3ClusterModel **clusters = new AliL3ClusterModel*[trackcount];
+ AliHLTTrackModel *trackmodels = new AliHLTTrackModel[trackcount];
+ AliHLTClusterModel **clusters = new AliHLTClusterModel*[trackcount];
Int_t *clustercount = new Int_t[trackcount];
- fread(trackmodels,sizeof(AliL3TrackModel),trackcount,input->file);
+ fread(trackmodels,sizeof(AliHLTTrackModel),trackcount,input->file);
for(i=0; i<trackcount; i++)
{
- clusters[i] = new AliL3ClusterModel[AliL3Transform::GetNRows(fPatch)];
+ clusters[i] = new AliHLTClusterModel[AliHLTTransform::GetNRows(fPatch)];
clustercount[i]=0;
//Read the fixed size variables:
Int_t origslice=-1;
Int_t temp,sign;
- for(j=0; j<AliL3Transform::GetNRows(fPatch); j++)
+ for(j=0; j<AliHLTTransform::GetNRows(fPatch); j++)
{
//Read empty flag:
temp = InputBit(input);
}
if(origslice < 0 || origslice > 35)
{
- cerr<<"AliL3CompressAC::ExpandFile : Bad slice number "<<temp<<endl;
+ cerr<<"AliHLTCompressAC::ExpandFile : Bad slice number "<<temp<<endl;
exit(5);
}
clusters[i][j].fSlice = origslice;
}
//Read charge information:
- temp=InputBits(input,(AliL3DataCompressorHelper::GetNChargeBits()));
+ temp=InputBits(input,(AliHLTDataCompressorHelper::GetNChargeBits()));
clusters[i][j].fDCharge = temp;
//Read sign information of the residuals:
if(fWriteShape)
{
sign = InputBit(input);
- temp = InputBits(input,(AliL3DataCompressorHelper::GetNShapeBits()-1));
+ temp = InputBits(input,(AliHLTDataCompressorHelper::GetNShapeBits()-1));
if(!sign)
temp*=-1;
clusters[i][j].fDSigmaY = temp;
sign = InputBit(input);
- temp = InputBits(input,(AliL3DataCompressorHelper::GetNShapeBits()-1));
+ temp = InputBits(input,(AliHLTDataCompressorHelper::GetNShapeBits()-1));
if(!sign)
temp*=-1;
clusters[i][j].fDSigmaZ = temp;
for(i=0; i<trackcount; i++)
{
Int_t count=0;
- for(j=0; j<AliL3Transform::GetNRows(fPatch); j++)
+ for(j=0; j<AliHLTTransform::GetNRows(fPatch); j++)
{
if(!clusters[i][j].fPresent) continue;
if(count != clustercount[i])
{
- cerr<<"AliL3CompressAC::ExpandFile : Mismatching clustercount "<<count<<" "<<clustercount[i]<<endl;
+ cerr<<"AliHLTCompressAC::ExpandFile : Mismatching clustercount "<<count<<" "<<clustercount[i]<<endl;
exit(5);
}
}
//Now there should be a endofstream indicator, if not something went wrong during encoding/decoding.
temp = ConvertSymbolToInt();
if((UShort_t)temp != fMax + 1)
- cerr<<"AliL3CompressAC::ExpandFile : Missing the endofstream indicator!"<<endl;
+ cerr<<"AliHLTCompressAC::ExpandFile : Missing the endofstream indicator!"<<endl;
CloseInputBitFile(input);
//Write everything to the uncompressed outfile:
for(i=0; i<trackcount; i++)
{
- fwrite(&trackmodels[i],sizeof(AliL3TrackModel),1,output);
- fwrite(clusters[i],AliL3Transform::GetNRows(fPatch)*sizeof(AliL3ClusterModel),1,output);
+ fwrite(&trackmodels[i],sizeof(AliHLTTrackModel),1,output);
+ fwrite(clusters[i],AliHLTTransform::GetNRows(fPatch)*sizeof(AliHLTClusterModel),1,output);
}
fclose(output);
return kTRUE;
}
-void AliL3CompressAC::PrintCompRatio(ofstream *outfile)
+void AliHLTCompressAC::PrintCompRatio(ofstream *outfile)
{
// pristc compression ratio
- AliL3MemHandler *mem = new AliL3MemHandler();
+ AliHLTMemHandler *mem = new AliHLTMemHandler();
Char_t fname[1024];
UInt_t remainSize=0,digitSize=0;
for(Int_t i=0; i<36; i++)
if(digitSize==0)
{
- cerr<<"AliL3Compress::PrintCompRatio : Zero digit size, not able to obtain comp. ratios!"<<endl;
+ cerr<<"AliHLTCompress::PrintCompRatio : Zero digit size, not able to obtain comp. ratios!"<<endl;
return;
}
Float_t compratio = (Float_t)(compressSize + remainSize)/(Float_t)digitSize;
Float_t entropy[3];
- Int_t trackSize = GetEntropy(entropy[0],entropy[1],entropy[2])*sizeof(AliL3TrackModel);
+ Int_t trackSize = GetEntropy(entropy[0],entropy[1],entropy[2])*sizeof(AliHLTTrackModel);
if(outfile)
{
ofstream &out = *outfile;
// @(#) $Id$
-#ifndef AliL3_CompressAC
-#define AliL3_CompressAC
+#ifndef AliHLT_CompressAC
+#define AliHLT_CompressAC
-#include "AliL3Compress.h"
+#include "AliHLTCompress.h"
#include "bitio.h"
-class AliL3CompressAC : public AliL3Compress {
+class AliHLTCompressAC : public AliHLTCompress {
public:
- AliL3CompressAC();
- AliL3CompressAC(Int_t slice,Int_t patch,Char_t *path="./",Bool_t writeshape=kFALSE,Int_t event=-1);
- virtual ~AliL3CompressAC();
+ AliHLTCompressAC();
+ AliHLTCompressAC(Int_t slice,Int_t patch,Char_t *path="./",Bool_t writeshape=kFALSE,Int_t event=-1);
+ virtual ~AliHLTCompressAC();
Bool_t CompressFile();
Bool_t ExpandFile();
void RemoveSymbolFromStream(BIT_FILE *input,Int_t j);
void FlushEncoder(BIT_FILE *output);
- ClassDef(AliL3CompressAC,1)
+ ClassDef(AliHLTCompressAC,1)
};
+typedef AliHLTCompressAC AliL3CompressAC; // for backward compatibility
+
#endif
//*-- Copyright © ALICE HLT Group
//_____________________________________________________________
//
-// AliL3DataCompression
+// AliHLTDataCompression
//
// Interface class; binary <-> AliROOT handling of TPC data compression classes.
//
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Transform.h"
-#include "AliL3MemHandler.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3CompressAC.h"
-#include "AliL3TrackArray.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3Benchmark.h"
-#include "AliL3ClusterFitter.h"
+#include "AliHLTLogging.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTTransform.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTCompressAC.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTModelTrack.h"
+#include "AliHLTBenchmark.h"
+#include "AliHLTClusterFitter.h"
#ifdef use_aliroot
-#include "AliL3FileHandler.h"
+#include "AliHLTFileHandler.h"
#include <AliTPCcluster.h>
#include <AliTPCParamSR.h>
#include <AliTPCDigitsArray.h>
#include <TH2F.h>
#endif
-#include "AliL3DataCompressorHelper.h"
-#include "AliL3DataCompressor.h"
+#include "AliHLTDataCompressorHelper.h"
+#include "AliHLTDataCompressor.h"
#include <math.h>
#if __GNUC__ == 3
#endif
-ClassImp(AliL3DataCompressor)
+ClassImp(AliHLTDataCompressor)
-AliL3DataCompressor::AliL3DataCompressor()
+AliHLTDataCompressor::AliHLTDataCompressor()
{
// default constructor
fBenchmark=0;
fCompRatioFile=0;
fNusedClusters=0;
fNunusedClusters=0;
- memset(fClusters,0,36*6*sizeof(AliL3SpacePointData*));
+ memset(fClusters,0,36*6*sizeof(AliHLTSpacePointData*));
}
-AliL3DataCompressor::AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape)
+AliHLTDataCompressor::AliHLTDataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape)
{
// constructor
strcpy(fPath,path);
- fBenchmark = new AliL3Benchmark();
+ fBenchmark = new AliHLTBenchmark();
fInputTracks=0;
fKeepRemaining=keep;
fWriteClusterShape = writeshape;
fNusedClusters=0;
fNunusedClusters=0;
fNoCompression=kFALSE;
- memset(fClusters,0,36*6*sizeof(AliL3SpacePointData*));
+ memset(fClusters,0,36*6*sizeof(AliHLTSpacePointData*));
#ifdef use_root
Char_t name[1024];
sprintf(name,"rm -f %s/comp/*",path);//Clean the directory
OpenOutputFile();
}
-AliL3DataCompressor::~AliL3DataCompressor()
+AliHLTDataCompressor::~AliHLTDataCompressor()
{
// destructor
if(fInputTracks)
CloseOutputFile();
}
-void AliL3DataCompressor::DoBench(Char_t *fname)
+void AliHLTDataCompressor::DoBench(Char_t *fname)
{
// does benchmarking
fBenchmark->Analyze(fname);
}
-void AliL3DataCompressor::OpenOutputFile()
+void AliHLTDataCompressor::OpenOutputFile()
{
// opens the output file
#ifndef use_aliroot
- LOG(AliL3Log::kError,"AliL3DataCompressor::OpenOutputFile","Version")
+ LOG(AliHLTLog::kError,"AliHLTDataCompressor::OpenOutputFile","Version")
<<"You have to compile with use_aliroot flag in order to use this function"<<ENDLOG;
#else
Char_t filename[1024];
sprintf(filename,"%s/alirunfile.root",fPath);
TFile *f = TFile::Open(filename);
- AliTPCParam *param = (AliTPCParam*)f->Get(AliL3Transform::GetParamName());
+ AliTPCParam *param = (AliTPCParam*)f->Get(AliHLTTransform::GetParamName());
sprintf(filename,"%s/comp/AliTPCclusters.root",fPath);
fOutputFile = TFile::Open(filename,"RECREATE");
param->Write(param->GetTitle());
#endif
}
-void AliL3DataCompressor::CloseOutputFile()
+void AliHLTDataCompressor::CloseOutputFile()
{
// closes the output file
if(fCompRatioFile)
fOutputFile=0;
}
-void AliL3DataCompressor::LoadData(Int_t event,Bool_t sp)
+void AliHLTDataCompressor::LoadData(Int_t event,Bool_t sp)
{
// Loads data
fSinglePatch=sp;
fEvent=event;
- AliL3MemHandler *clusterfile[36][6];
+ AliHLTMemHandler *clusterfile[36][6];
Char_t fname[1024];
for(Int_t s=0; s<=35; s++)
{
if(fClusters[s][p])
delete fClusters[s][p];
fClusters[s][p] = 0;
- clusterfile[s][p] = new AliL3MemHandler();
+ clusterfile[s][p] = new AliHLTMemHandler();
if(fSinglePatch)
sprintf(fname,"%s/cf/points_%d_%d_%d.raw",fPath,fEvent,s,-1);
else
sprintf(fname,"%s/cf/points_%d_%d_%d.raw",fPath,fEvent,s,p);
clusterfile[s][p]->SetBinaryInput(fname);
- fClusters[s][p] = (AliL3SpacePointData*)clusterfile[s][p]->Allocate();
+ fClusters[s][p] = (AliHLTSpacePointData*)clusterfile[s][p]->Allocate();
clusterfile[s][p]->Binary2Memory(fNcl[s][p],fClusters[s][p]);
clusterfile[s][p]->CloseBinaryInput();
//cout<<endl<<"Reading from offlinecf"<<endl<<endl;
sprintf(fname,"%s/cf/tracks_%d.raw",fPath,fEvent);
- AliL3MemHandler *tfile = new AliL3MemHandler();
+ AliHLTMemHandler *tfile = new AliHLTMemHandler();
tfile->SetBinaryInput(fname);
if(fInputTracks)
delete fInputTracks;
- fInputTracks = new AliL3TrackArray();
+ fInputTracks = new AliHLTTrackArray();
tfile->Binary2TrackArray(fInputTracks);
tfile->CloseBinaryInput();
delete tfile;
}
-void AliL3DataCompressor::FillData(Int_t minHits,Bool_t expand)
+void AliHLTDataCompressor::FillData(Int_t minHits,Bool_t expand)
{
//Fill the track data into track and cluster structures, and write to file.
//Preparation for compressing it.
cout<<"Filling data; "<<fInputTracks->GetNTracks()<<" tracks"<<endl;
- AliL3TrackArray *comptracks = new AliL3TrackArray("AliL3ModelTrack");
+ AliHLTTrackArray *comptracks = new AliHLTTrackArray("AliHLTModelTrack");
fInputTracks->QSort();
for(Int_t i=0; i<fInputTracks->GetNTracks(); i++)
{
- AliL3Track *intrack = fInputTracks->GetCheckedTrack(i);
+ AliHLTTrack *intrack = fInputTracks->GetCheckedTrack(i);
if(!intrack) continue;
if(intrack->GetNHits()<minHits) break;
intrack->CalculateHelix();
- AliL3ModelTrack *outtrack = (AliL3ModelTrack*)comptracks->NextTrack();
+ AliHLTModelTrack *outtrack = (AliHLTModelTrack*)comptracks->NextTrack();
outtrack->SetNHits(intrack->GetNHits());
outtrack->SetRowRange(intrack->GetFirstRow(),intrack->GetLastRow());
outtrack->SetFirstPoint(intrack->GetFirstPointX(),intrack->GetFirstPointY(),intrack->GetFirstPointZ());
UInt_t pos = id&0x3fffff;
//UInt_t size;
- AliL3SpacePointData *points = fClusters[slice][patch];//->GetDataPointer(size);
+ AliHLTSpacePointData *points = fClusters[slice][patch];//->GetDataPointer(size);
Float_t xyz[3] = {points[pos].fX,points[pos].fY,points[pos].fZ};
Int_t padrow = points[pos].fPadRow;
//Calculate the crossing point between track and padrow
Float_t angle = 0; //Perpendicular to padrow in local coordinates
- AliL3Transform::Local2GlobalAngle(&angle,slice);
- if(!intrack->CalculateReferencePoint(angle,AliL3Transform::Row2X(padrow)))
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
+ if(!intrack->CalculateReferencePoint(angle,AliHLTTransform::Row2X(padrow)))
{
- cerr<<"AliL3DataCompressor::FillData : Error in crossing point calc on slice "<<slice<<" row "<<padrow<<endl;
+ cerr<<"AliHLTDataCompressor::FillData : Error in crossing point calc on slice "<<slice<<" row "<<padrow<<endl;
break;
//outtrack->Print(kFALSE);
//exit(5);
Float_t xyzCross[3] = {intrack->GetPointX(),intrack->GetPointY(),intrack->GetPointZ()};
Int_t sector,row;
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
- AliL3Transform::Global2Raw(xyzCross,sector,row);
- AliL3Transform::Global2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Global2Raw(xyzCross,sector,row);
+ AliHLTTransform::Global2Raw(xyz,sector,row);
outtrack->SetPadHit(padrow,xyzCross[1]);
outtrack->SetTimeHit(padrow,xyzCross[2]);
if(fWriteClusterShape)
{
- Int_t patch = AliL3Transform::GetPatch(padrow);
- Float_t sigmaY2 = points[pos].fSigmaY2 / pow(AliL3Transform::GetPadPitchWidth(patch),2);
- Float_t sigmaZ2 = points[pos].fSigmaZ2 / pow(AliL3Transform::GetZWidth(),2);
+ Int_t patch = AliHLTTransform::GetPatch(padrow);
+ Float_t sigmaY2 = points[pos].fSigmaY2 / pow(AliHLTTransform::GetPadPitchWidth(patch),2);
+ Float_t sigmaZ2 = points[pos].fSigmaZ2 / pow(AliHLTTransform::GetZWidth(),2);
outtrack->SetCluster(padrow,xyz[1],xyz[2],points[pos].fCharge,sigmaY2,sigmaZ2,3);
}
else
outtrack->SetCluster(padrow,xyz[1],xyz[2],points[pos].fCharge,0,0,3);
- //IMPORTANT: Set the slice in which cluster is, you need it in AliL3ModelTrack::FillTrack!
+ //IMPORTANT: Set the slice in which cluster is, you need it in AliHLTModelTrack::FillTrack!
outtrack->GetClusterModel(padrow)->fSlice=slice;
points[pos].fCharge = 0;//Mark this cluster as used.
fNusedClusters++;
}
if(!expand)
- outtrack->SetNClusters(AliL3Transform::GetNRows(-1));
+ outtrack->SetNClusters(AliHLTTransform::GetNRows(-1));
}
if(expand)
ExpandTrackData(comptracks);
cout<<"Writing "<<comptracks->GetNTracks()<<" tracks to file"<<endl;
- AliL3Compress *comp = new AliL3Compress(-1,-1,fPath,fWriteClusterShape,fEvent);
+ AliHLTCompress *comp = new AliHLTCompress(-1,-1,fPath,fWriteClusterShape,fEvent);
comp->WriteFile(comptracks);
delete comp;
delete comptracks;
}
-void AliL3DataCompressor::ExpandTrackData(AliL3TrackArray *tracks)
+void AliHLTDataCompressor::ExpandTrackData(AliHLTTrackArray *tracks)
{
//Loop over tracks and try to assign unused clusters.
//Only clusters which are closer than the max. residual are taken.
cout<<"Expanding "<<tracks->GetNTracks()<<" tracks"<<endl;
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)tracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
- if(track->GetNHits() == AliL3Transform::GetNRows()) continue;
+ if(track->GetNHits() == AliHLTTransform::GetNRows()) continue;
Int_t nhits = track->GetNHits();
//cout<<"Expanding track with "<<nhits<<" clusters"<<endl;
Int_t lastSlice=-1;
- for(Int_t padrow=AliL3Transform::GetNRows()-1; padrow>=0; padrow--)
+ for(Int_t padrow=AliHLTTransform::GetNRows()-1; padrow>=0; padrow--)
{
if(track->IsPresent(padrow))
{
continue;
//UInt_t size;
- AliL3SpacePointData *points = fClusters[lastSlice][0];//->GetDataPointer(size);
+ AliHLTSpacePointData *points = fClusters[lastSlice][0];//->GetDataPointer(size);
Float_t angle = 0;
- AliL3Transform::Local2GlobalAngle(&angle,lastSlice);
- if(!track->CalculateReferencePoint(angle,AliL3Transform::Row2X(padrow)))
+ AliHLTTransform::Local2GlobalAngle(&angle,lastSlice);
+ if(!track->CalculateReferencePoint(angle,AliHLTTransform::Row2X(padrow)))
continue;
Float_t xyzCross[3] = {track->GetPointX(),track->GetPointY(),track->GetPointZ()};
- AliL3Transform::Global2LocHLT(xyzCross,lastSlice);
+ AliHLTTransform::Global2LocHLT(xyzCross,lastSlice);
Float_t mindist = 123456789;
- AliL3SpacePointData *closest=0;
+ AliHLTSpacePointData *closest=0;
for(UInt_t j=0; j<fNcl[lastSlice][0]; j++)
{
if(points[j].fCharge == 0) continue;// || points[j].fPadRow != padrow) continue;
if(points[j].fPadRow < padrow) continue;
if(points[j].fPadRow > padrow) break;
Float_t xyz[3] = {points[j].fX,points[j].fY,points[j].fZ};
- AliL3Transform::Global2LocHLT(xyz,lastSlice);
+ AliHLTTransform::Global2LocHLT(xyz,lastSlice);
//Check for overflow:
- Int_t temp = (Int_t)rint((xyzCross[1]-xyz[1])/AliL3DataCompressorHelper::GetXYResidualStep(padrow));
- if( abs(temp) > 1<<(AliL3DataCompressorHelper::GetNPadBits()-1))
+ Int_t temp = (Int_t)rint((xyzCross[1]-xyz[1])/AliHLTDataCompressorHelper::GetXYResidualStep(padrow));
+ if( abs(temp) > 1<<(AliHLTDataCompressorHelper::GetNPadBits()-1))
continue;
- temp = (Int_t)rint((xyzCross[2]-xyz[2])/AliL3DataCompressorHelper::GetZResidualStep(padrow));
- if( abs(temp) > 1<<(AliL3DataCompressorHelper::GetNTimeBits()-1))
+ temp = (Int_t)rint((xyzCross[2]-xyz[2])/AliHLTDataCompressorHelper::GetZResidualStep(padrow));
+ if( abs(temp) > 1<<(AliHLTDataCompressorHelper::GetNTimeBits()-1))
continue;
Float_t dist = sqrt( pow(xyzCross[1]-xyz[1],2) + pow(xyzCross[2]-xyz[2],2) );
{
Int_t sector,row;
Float_t xyz[3] = {closest->fX,closest->fY,closest->fZ};
- AliL3Transform::Slice2Sector(lastSlice,padrow,sector,row);
- AliL3Transform::Local2Raw(xyzCross,sector,row);
- AliL3Transform::Global2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(lastSlice,padrow,sector,row);
+ AliHLTTransform::Local2Raw(xyzCross,sector,row);
+ AliHLTTransform::Global2Raw(xyz,sector,row);
track->SetPadHit(padrow,xyzCross[1]);
track->SetTimeHit(padrow,xyzCross[2]);
Float_t angle = track->GetCrossingAngle(padrow,lastSlice);
track->SetCrossingAngleLUT(padrow,angle);
track->CalculateClusterWidths(padrow,kTRUE);
- Int_t patch = AliL3Transform::GetPatch(padrow);
- Float_t sigmaY2 = closest->fSigmaY2 / pow(AliL3Transform::GetPadPitchWidth(patch),2);
- Float_t sigmaZ2 = closest->fSigmaZ2 / pow(AliL3Transform::GetZWidth(),2);
+ Int_t patch = AliHLTTransform::GetPatch(padrow);
+ Float_t sigmaY2 = closest->fSigmaY2 / pow(AliHLTTransform::GetPadPitchWidth(patch),2);
+ Float_t sigmaZ2 = closest->fSigmaZ2 / pow(AliHLTTransform::GetZWidth(),2);
track->SetCluster(padrow,xyz[1],xyz[2],closest->fCharge,sigmaY2,sigmaZ2,3);
}
else
track->SetCluster(padrow,xyz[1],xyz[2],closest->fCharge,0,0,3);
nhits++;
- //IMPORTANT: Set the slice in which cluster is, you need it in AliL3ModelTrack::FillTrack!
+ //IMPORTANT: Set the slice in which cluster is, you need it in AliHLTModelTrack::FillTrack!
track->GetClusterModel(padrow)->fSlice=lastSlice;
closest->fCharge = 0;//Mark this cluster as used.
}
}
- track->SetNClusters(AliL3Transform::GetNRows());
+ track->SetNClusters(AliHLTTransform::GetNRows());
//cout<<"Track was assigned "<<nhits<<" clusters"<<endl;
}
-void AliL3DataCompressor::DetermineMinBits()
+void AliHLTDataCompressor::DetermineMinBits()
{
//Make a pass through the modelled data (after FillData has been done) to determine
//how many bits is needed to encode the residuals _without_ overflows.
- AliL3Compress *comp = new AliL3Compress(-1,-1,fPath,fWriteClusterShape,fEvent);
+ AliHLTCompress *comp = new AliHLTCompress(-1,-1,fPath,fWriteClusterShape,fEvent);
comp->ReadFile('m');
- AliL3TrackArray *tracks = comp->GetTracks();
+ AliHLTTrackArray *tracks = comp->GetTracks();
if(tracks->GetNTracks()==0)
{
delete comp;
Int_t dpad,dtime,charge,dsigmaY,dsigmaZ,npadbits,ntimebits,nchargebits,nshapebits=0;
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)tracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
- for(Int_t padrow=0; padrow<AliL3Transform::GetNRows(); padrow++)
+ for(Int_t padrow=0; padrow<AliHLTTransform::GetNRows(); padrow++)
{
if(!track->IsPresent(padrow)) continue;
- dpad = AliL3DataCompressorHelper::Abs(AliL3DataCompressorHelper::Nint(track->GetClusterModel(padrow)->fDPad));
- dtime = AliL3DataCompressorHelper::Abs(AliL3DataCompressorHelper::Nint(track->GetClusterModel(padrow)->fDTime));
- charge = AliL3DataCompressorHelper::Abs((Int_t)track->GetClusterModel(padrow)->fDCharge);
- dsigmaY = AliL3DataCompressorHelper::Abs(AliL3DataCompressorHelper::Nint(track->GetClusterModel(padrow)->fDSigmaY));
- dsigmaZ = AliL3DataCompressorHelper::Abs(AliL3DataCompressorHelper::Nint(track->GetClusterModel(padrow)->fDSigmaZ));
+ dpad = AliHLTDataCompressorHelper::Abs(AliHLTDataCompressorHelper::Nint(track->GetClusterModel(padrow)->fDPad));
+ dtime = AliHLTDataCompressorHelper::Abs(AliHLTDataCompressorHelper::Nint(track->GetClusterModel(padrow)->fDTime));
+ charge = AliHLTDataCompressorHelper::Abs((Int_t)track->GetClusterModel(padrow)->fDCharge);
+ dsigmaY = AliHLTDataCompressorHelper::Abs(AliHLTDataCompressorHelper::Nint(track->GetClusterModel(padrow)->fDSigmaY));
+ dsigmaZ = AliHLTDataCompressorHelper::Abs(AliHLTDataCompressorHelper::Nint(track->GetClusterModel(padrow)->fDSigmaZ));
if(dpad > maxpad)
maxpad=dpad;
if(dtime > maxtime)
if(fWriteClusterShape)
nshapebits = (Int_t)ceil(log(Double_t(maxsigma))/log(2.)) + 1;
- nchargebits = AliL3DataCompressorHelper::GetNChargeBits();
+ nchargebits = AliHLTDataCompressorHelper::GetNChargeBits();
cout<<"Updating bitnumbers; pad "<<npadbits<<" time "<<ntimebits<<" charge "<<nchargebits<<" shape "<<nshapebits<<endl;
- AliL3DataCompressorHelper::SetBitNumbers(npadbits,ntimebits,nchargebits,nshapebits);
+ AliHLTDataCompressorHelper::SetBitNumbers(npadbits,ntimebits,nchargebits,nshapebits);
}
-void AliL3DataCompressor::WriteRemaining(Bool_t select)
+void AliHLTDataCompressor::WriteRemaining(Bool_t select)
{
//Write remaining clusters (not assigned to any tracks) to file
if(!fSinglePatch)
{
- cerr<<"AliL3Compressor::WriteRemaining : You have to modify this function when not running singlepatch"<<endl;
+ cerr<<"AliHLTCompressor::WriteRemaining : You have to modify this function when not running singlepatch"<<endl;
return;
}
if(!fNoCompression)
{
cout<<"Compressing remaining clusters "<<endl;
- AliL3Compress *comp = new AliL3Compress(-1,-1,fPath,fWriteClusterShape,fEvent);
+ AliHLTCompress *comp = new AliHLTCompress(-1,-1,fPath,fWriteClusterShape,fEvent);
comp->CompressRemaining(fClusters,fNcl);
delete comp;
return;
else
{
cout<<"Writing remaining clusters"<<endl;
- Int_t nrows = AliL3Transform::GetNRows();
+ Int_t nrows = AliHLTTransform::GetNRows();
Int_t *npoints = new Int_t[nrows];
Char_t filename[1024];
for(Int_t i=0; i<=35; i++)
FILE *outfile = fopen(filename,"w");
if(!outfile)
{
- cerr<<"AliL3DataCompressor::WriteRemaining : Cannot open file "<<filename<<endl;
+ cerr<<"AliHLTDataCompressor::WriteRemaining : Cannot open file "<<filename<<endl;
exit(5);
}
- AliL3SpacePointData *points = fClusters[i][patch];
+ AliHLTSpacePointData *points = fClusters[i][patch];
memset(npoints,0,nrows*sizeof(Int_t));
}
Int_t size =0;
Byte_t *data = 0;
- AliL3RemainingRow *tempPt=0;
+ AliHLTRemainingRow *tempPt=0;
Int_t lastRow = -2;
Int_t localcounter=0;
{
if(!tempPt)
{
- cerr<<"AliL3DataCompressor::WriteRemaining : Zero row pointer "<<endl;
+ cerr<<"AliHLTDataCompressor::WriteRemaining : Zero row pointer "<<endl;
exit(5);
}
if(localcounter != tempPt->fNClusters)
{
- cerr<<"AliL3DataCompressor::WriteRemaining : Mismatching clustercounter "<<localcounter<<" "
+ cerr<<"AliHLTDataCompressor::WriteRemaining : Mismatching clustercounter "<<localcounter<<" "
<<(Int_t)tempPt->fNClusters<<endl;
exit(5);
}
}
if(data)
delete [] data;
- size = sizeof(AliL3RemainingRow) + npoints[padrow]*sizeof(AliL3RemainingCluster);
+ size = sizeof(AliHLTRemainingRow) + npoints[padrow]*sizeof(AliHLTRemainingCluster);
data = new Byte_t[size];
- tempPt = (AliL3RemainingRow*)data;
+ tempPt = (AliHLTRemainingRow*)data;
localcounter=0;
tempPt->fPadRow = padrow;
}
if(localcounter >= npoints[padrow])
{
- cerr<<"AliL3DataCompressor::WriteRemaining : Cluster counter out of range: "
+ cerr<<"AliHLTDataCompressor::WriteRemaining : Cluster counter out of range: "
<<localcounter<<" "<<npoints[padrow]<<endl;
exit(5);
}
Float_t xyz[3] = {points[j].fX,points[j].fY,points[j].fZ};
Int_t sector,row;
- AliL3Transform::Slice2Sector(i,padrow,sector,row);
- AliL3Transform::Global2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(i,padrow,sector,row);
+ AliHLTTransform::Global2Raw(xyz,sector,row);
- Float_t padw = points[j].fSigmaY2 / pow(AliL3Transform::GetPadPitchWidth(AliL3Transform::GetPatch(padrow)),2);
- Float_t timew = points[j].fSigmaZ2 / pow(AliL3Transform::GetZWidth(),2);
+ Float_t padw = points[j].fSigmaY2 / pow(AliHLTTransform::GetPadPitchWidth(AliHLTTransform::GetPatch(padrow)),2);
+ Float_t timew = points[j].fSigmaZ2 / pow(AliHLTTransform::GetZWidth(),2);
tempPt->fClusters[localcounter].fPad = xyz[1];
tempPt->fClusters[localcounter].fTime = xyz[2];
tempPt->fClusters[localcounter].fCharge = points[j].fCharge;
}
}
-void AliL3DataCompressor::SelectRemainingClusters()
+void AliHLTDataCompressor::SelectRemainingClusters()
{
//Select which remaining clusters to write in addition to the compressed data.
//In particular one can here make sure that "important" clusters are not missed:
//intact.....
cout<<"Cleaning up clusters"<<endl;
- Int_t nrows = AliL3Transform::GetNRows();
+ Int_t nrows = AliHLTTransform::GetNRows();
Int_t gap=(Int_t)(0.125*nrows), shift=(Int_t)(0.5*gap);
for(Int_t slice=0; slice<36; slice++)
{
- AliL3SpacePointData *points = fClusters[slice][0];
+ AliHLTSpacePointData *points = fClusters[slice][0];
for(UInt_t i=0; i<fNcl[slice][0]; i++)
{
if(points[i].fCharge == 0) continue; //Already removed
Int_t padrow = (Int_t)points[i].fPadRow;
//Check the widths (errors) of the cluster, and remove big bastards:
- Float_t padw = sqrt(points[i].fSigmaY2) / AliL3Transform::GetPadPitchWidth(AliL3Transform::GetPatch(padrow));
- Float_t timew = sqrt(points[i].fSigmaZ2) / AliL3Transform::GetZWidth();
+ Float_t padw = sqrt(points[i].fSigmaY2) / AliHLTTransform::GetPadPitchWidth(AliHLTTransform::GetPatch(padrow));
+ Float_t timew = sqrt(points[i].fSigmaZ2) / AliHLTTransform::GetZWidth();
if(padw >= 2.55 || timew >= 2.55)//Because we use 1 byte to store
{
points[i].fCharge = 0;
Float_t xyz[3] = {points[i].fX,points[i].fY,points[i].fZ};
Int_t sector,row;
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
- AliL3Transform::Global2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Global2Raw(xyz,sector,row);
if(padrow >= nrows-1-gap-shift) continue;//save all the clusters in this region
//if(padrow >= nrows-1-shift) continue;
//Save the clusters at the borders:
- //if(xyz[1] < 3 || xyz[1] >= AliL3Transform::GetNPads(padrow)-4)
+ //if(xyz[1] < 3 || xyz[1] >= AliHLTTransform::GetNPads(padrow)-4)
// continue;
//Save clusters on padrows used for offline seeding:
}
-void AliL3DataCompressor::CompressAndExpand(Bool_t arithmeticCoding)
+void AliHLTDataCompressor::CompressAndExpand(Bool_t arithmeticCoding)
{
//Read tracks/clusters from file, compress data and uncompress it. Write compression rates to file.
if(fNoCompression)
return;
cout<<"Compressing and expanding data"<<endl;
- AliL3Compress *comp = 0;
+ AliHLTCompress *comp = 0;
if(arithmeticCoding)
- comp = new AliL3CompressAC(-1,-1,fPath,fWriteClusterShape,fEvent);
+ comp = new AliHLTCompressAC(-1,-1,fPath,fWriteClusterShape,fEvent);
else
- comp = new AliL3Compress(-1,-1,fPath,fWriteClusterShape,fEvent);
+ comp = new AliHLTCompress(-1,-1,fPath,fWriteClusterShape,fEvent);
comp->CompressFile();
comp->ExpandFile();
comp->PrintCompRatio(fCompRatioFile);
delete comp;
ofstream &out = *fCompRatioFile;
- out<<AliL3DataCompressorHelper::GetNPadBits()<<' '<<AliL3DataCompressorHelper::GetNTimeBits()<<' '
- <<AliL3DataCompressorHelper::GetNChargeBits()<<' '<<AliL3DataCompressorHelper::GetNShapeBits()<<' '
- <<AliL3DataCompressorHelper::GetNPadBitsRemaining()<<' '<<AliL3DataCompressorHelper::GetNTimeBitsRemaining()<<' '
- <<AliL3DataCompressorHelper::GetNShapeBitsRemaining()<<endl;
+ out<<AliHLTDataCompressorHelper::GetNPadBits()<<' '<<AliHLTDataCompressorHelper::GetNTimeBits()<<' '
+ <<AliHLTDataCompressorHelper::GetNChargeBits()<<' '<<AliHLTDataCompressorHelper::GetNShapeBits()<<' '
+ <<AliHLTDataCompressorHelper::GetNPadBitsRemaining()<<' '<<AliHLTDataCompressorHelper::GetNTimeBitsRemaining()<<' '
+ <<AliHLTDataCompressorHelper::GetNShapeBitsRemaining()<<endl;
/*
//Write the ratio between used and unused clusters to comp file:
out<<fNusedClusters<<' '<<fNunusedClusters<<endl;
}
-void AliL3DataCompressor::RestoreData(Bool_t remainingOnly)
+void AliHLTDataCompressor::RestoreData(Bool_t remainingOnly)
{
//Restore the uncompressed data together with the remaining clusters,
//and write to a final cluster file which serves as an input to the
//final offline tracker.
#ifndef use_aliroot
- LOG(AliL3Log::kError,"AliL3DataCompressor::RestoreData","Version")
+ LOG(AliHLTLog::kError,"AliHLTDataCompressor::RestoreData","Version")
<<"You have to compile with use_aliroot flag in order to use this function"<<ENDLOG;
#else
sprintf(filename,"%s/digitfile.root",fPath);
TFile *rootfile = TFile::Open(filename);
rootfile->cd();
- AliTPCParam *param = (AliTPCParam*)rootfile->Get(AliL3Transform::GetParamName());
+ AliTPCParam *param = (AliTPCParam*)rootfile->Get(AliHLTTransform::GetParamName());
AliTPCDigitsArray *darray = new AliTPCDigitsArray();
darray->Setup(param);
darray->SetClass("AliSimDigits");
- sprintf(filename,"TreeD_%s_%d",AliL3Transform::GetParamName(),fEvent);
+ sprintf(filename,"TreeD_%s_%d",AliHLTTransform::GetParamName(),fEvent);
Bool_t ok = darray->ConnectTree(filename);
if(!ok)
{
- cerr<<"AliL3DataCompressor::RestoreData : Problems connecting tree"<<endl;
+ cerr<<"AliHLTDataCompressor::RestoreData : Problems connecting tree"<<endl;
return;
}
Int_t falseid=0;
Int_t counter=0;
- for(Int_t padrow=AliL3Transform::GetFirstRow(-1); padrow<=AliL3Transform::GetLastRow(-1); padrow++)
+ for(Int_t padrow=AliHLTTransform::GetFirstRow(-1); padrow<=AliHLTTransform::GetLastRow(-1); padrow++)
{
Int_t sec,row;
- AliL3Transform::Slice2Sector(slice,padrow,sec,row);
+ AliHLTTransform::Slice2Sector(slice,padrow,sec,row);
AliTPCClustersRow *clrow=carray->CreateRow(sec,row);
AliSimDigits *digits = (AliSimDigits*)darray->LoadRow(sec,row);
digits->ExpandBuffer();
digits->ExpandTrackBuffer();
- Int_t patch = AliL3Transform::GetPatch(padrow);
+ Int_t patch = AliHLTTransform::GetPatch(padrow);
while(counter < ncl[slice] && clPt[counter]->fPadrow == padrow)
{
Float_t temp[3];
- AliL3Transform::Raw2Local(temp,sec,row,clPt[counter]->fPad,clPt[counter]->fTime);
+ AliHLTTransform::Raw2Local(temp,sec,row,clPt[counter]->fPad,clPt[counter]->fTime);
AliTPCcluster *c = new AliTPCcluster();
c->SetY(temp[1]);
c->SetZ(temp[2]);
c->SetQ(clPt[counter]->fCharge);
- c->SetSigmaY2(clPt[counter]->fSigmaY2*pow(AliL3Transform::GetPadPitchWidth(patch),2));
- c->SetSigmaZ2(clPt[counter]->fSigmaZ2*pow(AliL3Transform::GetZWidth(),2));
- Int_t pad = AliL3DataCompressorHelper::Nint(clPt[counter]->fPad);
- Int_t time = AliL3DataCompressorHelper::Nint(clPt[counter]->fTime);
+ c->SetSigmaY2(clPt[counter]->fSigmaY2*pow(AliHLTTransform::GetPadPitchWidth(patch),2));
+ c->SetSigmaZ2(clPt[counter]->fSigmaZ2*pow(AliHLTTransform::GetZWidth(),2));
+ Int_t pad = AliHLTDataCompressorHelper::Nint(clPt[counter]->fPad);
+ Int_t time = AliHLTDataCompressorHelper::Nint(clPt[counter]->fTime);
if(pad < 0)
pad=0;
- if(pad >= AliL3Transform::GetNPads(padrow))
- pad = AliL3Transform::GetNPads(padrow)-1;
- if(time < 0 || time >= AliL3Transform::GetNTimeBins())
+ if(pad >= AliHLTTransform::GetNPads(padrow))
+ pad = AliHLTTransform::GetNPads(padrow)-1;
+ if(time < 0 || time >= AliHLTTransform::GetNTimeBins())
cerr<<"row "<<padrow<<" pad "<<pad<<" time "<<time<<endl;
for(Int_t lab=0; lab<3; lab++)
if(lab==0 && c->GetLabel(0) < 0)
{
falseid++;
- //AliL3Transform::Local2Global(temp,slice);
+ //AliHLTTransform::Local2Global(temp,slice);
//cout<<"slice "<<slice<<" padrow "<<padrow<<" y "<<temp[1]<<" z "<<temp[2]<<" label "<<c->GetLabel(0)<<endl;
}
}
#endif
}
-void AliL3DataCompressor::ReadUncompressedData(TempCluster **clusters,Int_t *ncl,const Int_t kmaxpoints)
+void AliHLTDataCompressor::ReadUncompressedData(TempCluster **clusters,Int_t *ncl,const Int_t kmaxpoints)
{
// Reads uncompressed data
- AliL3Compress *comp = new AliL3Compress(-1,-1,fPath,fWriteClusterShape,fEvent);
+ AliHLTCompress *comp = new AliHLTCompress(-1,-1,fPath,fWriteClusterShape,fEvent);
if(fNoCompression)
{
cout<<endl<<"Reading unmodified data, no compression has been done here!!!!"<<endl<<endl;
comp->ReadFile('u');
}
- AliL3TrackArray *tracks = comp->GetTracks();
+ AliHLTTrackArray *tracks = comp->GetTracks();
//Float_t totcounter=0,pcounter=0,tcounter=0;
Int_t charge;
Float_t pad,time,sigmaY2,sigmaZ2;
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)tracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
- for(Int_t padrow=0; padrow < AliL3Transform::GetNRows(-1); padrow++)
+ for(Int_t padrow=0; padrow < AliHLTTransform::GetNRows(-1); padrow++)
{
if(!track->IsPresent(padrow)) continue;
track->GetPad(padrow,pad);
track->GetSigmaZ2(padrow,sigmaZ2);
Int_t slice = track->GetClusterModel(padrow)->fSlice;
/*
- if(pad < -1 || pad > AliL3Transform::GetNPads(padrow) || time < -1 || time > AliL3Transform::GetNTimeBins())
+ if(pad < -1 || pad > AliHLTTransform::GetNPads(padrow) || time < -1 || time > AliHLTTransform::GetNTimeBins())
{
- cerr<<"AliL3DataCompressor::ReadUncompressData : Wrong pad "<<pad<<" or time "<<time<<" on row "<<padrow<<" track index "<<i<<endl;
+ cerr<<"AliHLTDataCompressor::ReadUncompressData : Wrong pad "<<pad<<" or time "<<time<<" on row "<<padrow<<" track index "<<i<<endl;
track->Print();
exit(5);
}
*/
if(ncl[slice] >= kmaxpoints)
{
- cerr<<"AliL3DataCompressor::ReadUncompressedData : Too many clusters"<<endl;
+ cerr<<"AliHLTDataCompressor::ReadUncompressedData : Too many clusters"<<endl;
exit(5);
}
clusters[slice][ncl[slice]].fPad = pad;
delete comp;
}
-void AliL3DataCompressor::ReadRemaining(TempCluster **clusters,Int_t *ncl,const Int_t kmaxpoints)
+void AliHLTDataCompressor::ReadRemaining(TempCluster **clusters,Int_t *ncl,const Int_t kmaxpoints)
{
// reads remaining clusters
cout<<"Reading remaining clusters "<<endl;
if(!fNoCompression)
{
- AliL3Compress *comp = new AliL3Compress(-1,-1,fPath,fWriteClusterShape,fEvent);
+ AliHLTCompress *comp = new AliHLTCompress(-1,-1,fPath,fWriteClusterShape,fEvent);
comp->ExpandRemaining(clusters,ncl,kmaxpoints);
delete comp;
return;
}
else
{
- AliL3MemHandler mem;
+ AliHLTMemHandler mem;
Char_t filename[1024];
for(Int_t slice=0; slice<=35; slice++)
{
sprintf(filename,"%s/comp/remains_%d_%d_%d.raw",fPath,fEvent,slice,-1);
mem.SetBinaryInput(filename);
- AliL3RemainingRow *tempPt = (AliL3RemainingRow*)mem.Allocate();
+ AliHLTRemainingRow *tempPt = (AliHLTRemainingRow*)mem.Allocate();
Int_t nrows=0;
FILE *infile = mem.GetFilePointer();
while(!feof(infile))
{
Byte_t *dPt = (Byte_t*)tempPt;
- if(fread(tempPt,sizeof(AliL3RemainingRow),1,infile)!=1) break;
+ if(fread(tempPt,sizeof(AliHLTRemainingRow),1,infile)!=1) break;
- dPt += sizeof(AliL3RemainingRow);
+ dPt += sizeof(AliHLTRemainingRow);
- Int_t size = sizeof(AliL3RemainingCluster)*tempPt->fNClusters;
+ Int_t size = sizeof(AliHLTRemainingCluster)*tempPt->fNClusters;
fread(dPt,size,1,infile);
dPt += size;
- tempPt = (AliL3RemainingRow*)dPt;
+ tempPt = (AliHLTRemainingRow*)dPt;
nrows++;
}
mem.CloseBinaryInput();
UInt_t dummy;
- tempPt = (AliL3RemainingRow*)mem.GetDataPointer(dummy);
+ tempPt = (AliHLTRemainingRow*)mem.GetDataPointer(dummy);
for(Int_t i=0; i<nrows; i++)
{
- AliL3RemainingCluster *points = tempPt->fClusters;
+ AliHLTRemainingCluster *points = tempPt->fClusters;
Int_t padrow = (Int_t)tempPt->fPadRow;
//Int_t sector,row;
- //AliL3Transform::Slice2Sector(slice,padrow,sector,row);
+ //AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
//cout<<"Loading slice "<<slice<<" row "<<padrow<<" with "<<(Int_t)tempPt->fNClusters<<" clusters "<<endl;
for(Int_t j=0; j<tempPt->fNClusters; j++)
{
- //Float_t xyz[3] = {AliL3Transform::Row2X(padrow),points[j].fY,points[j].fZ};
- //AliL3Transform::Local2Raw(xyz,sector,row);
+ //Float_t xyz[3] = {AliHLTTransform::Row2X(padrow),points[j].fY,points[j].fZ};
+ //AliHLTTransform::Local2Raw(xyz,sector,row);
if(ncl[slice] >= kmaxpoints)
{
- cerr<<"AliL3DataCompressor::ReadRemaining : Too many clusters"<<endl;
+ cerr<<"AliHLTDataCompressor::ReadRemaining : Too many clusters"<<endl;
exit(5);
}
//cout<<"slice "<<slice<<" padrow "<<padrow<<" pad "<<xyz[1]<<" time "<<xyz[2]<<endl;
ncl[slice]++;
}
Byte_t *dPt = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3RemainingRow) + tempPt->fNClusters*sizeof(AliL3RemainingCluster);
+ Int_t size = sizeof(AliHLTRemainingRow) + tempPt->fNClusters*sizeof(AliHLTRemainingCluster);
dPt += size;
- tempPt = (AliL3RemainingRow*)dPt;
+ tempPt = (AliHLTRemainingRow*)dPt;
}
mem.Free();
}
}
-void AliL3DataCompressor::QSort(TempCluster **a, Int_t first, Int_t last)
+void AliHLTDataCompressor::QSort(TempCluster **a, Int_t first, Int_t last)
{
// Implementation of quick sort
static TempCluster *tmp;
}
}
-Int_t AliL3DataCompressor::Compare(TempCluster *a,TempCluster *b)
+Int_t AliHLTDataCompressor::Compare(TempCluster *a,TempCluster *b)
{
// compares two clusters
if(a->fPadrow < b->fPadrow) return -1;
// @(#) $Id$
-#ifndef AliL3_DataCompressor
-#define AliL3_DataCompressor
+#ifndef AliHLT_DataCompressor
+#define AliHLT_DataCompressor
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3SpacePointData;
-class AliL3Benchmark;
-class AliL3TrackArray;
-class AliL3Track;
+class AliHLTSpacePointData;
+class AliHLTBenchmark;
+class AliHLTTrackArray;
+class AliHLTTrack;
#ifdef use_root
class TH2F;
Int_t fPadrow; // Pad row
};
-class AliL3DataCompressor {
+class AliHLTDataCompressor {
public:
- AliL3DataCompressor();
- AliL3DataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
- virtual ~AliL3DataCompressor();
+ AliHLTDataCompressor();
+ AliHLTDataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape);
+ virtual ~AliHLTDataCompressor();
virtual void LoadData(Int_t event,Bool_t sp=kTRUE);
virtual void FillData(Int_t minhits,Bool_t expand);
Bool_t fNoCompression; //Just process the data through the chain, but do not compress. (input=output). Mostly for debugging...
private:
- AliL3Benchmark *fBenchmark; //! Benchmark
- AliL3TrackArray *fInputTracks; //! Array of input tracks
- AliL3SpacePointData *fClusters[36][6]; //! Array of pointers to clusters
+ AliHLTBenchmark *fBenchmark; //! Benchmark
+ AliHLTTrackArray *fInputTracks; //! Array of input tracks
+ AliHLTSpacePointData *fClusters[36][6]; //! Array of pointers to clusters
ofstream *fCompRatioFile; //! Stream to write the ration between use and unused clusters
#ifdef use_root
TFile *fOutputFile; //! Output file
UInt_t fNcl[36][6]; // Array containing numbers of clusters
void SelectRemainingClusters();
- void ExpandTrackData(AliL3TrackArray *tracks);
+ void ExpandTrackData(AliHLTTrackArray *tracks);
void ReadUncompressedData(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
void ReadRemaining(TempCluster **clusters,Int_t *ncl,const Int_t maxpoints);
void QSort(TempCluster **a, Int_t first, Int_t last);
void OpenOutputFile();
void CloseOutputFile();
- ClassDef(AliL3DataCompressor,1)
+ ClassDef(AliHLTDataCompressor,1)
};
+typedef AliHLTDataCompressor AliL3DataCompressor; // for backward compatibility
+
#endif
--- /dev/null
+// @(#) $Id$
+
+// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
+//*-- Copyright © ALICE HLT Group
+
+#include "AliHLTStandardIncludes.h"
+
+#include "AliHLTRootTypes.h"
+#include "AliHLTTransform.h"
+
+#include "AliHLTDataCompressorHelper.h"
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+//_____________________________________________________________
+//
+// AliHLTDataCompression
+//
+// Interface class; binary <-> AliROOT handling of TPC data compression classes.
+//
+
+
+ClassImp(AliHLTDataCompressorHelper)
+
+
+Int_t AliHLTDataCompressorHelper::fgNumTimeBits = 12;
+Int_t AliHLTDataCompressorHelper::fgNumPadBits = 12;
+Int_t AliHLTDataCompressorHelper::fgNumChargeBits = 14;
+Int_t AliHLTDataCompressorHelper::fgNumShapeBits = 14;
+Float_t AliHLTDataCompressorHelper::fgXYResidualStep1 = 0.03;
+Float_t AliHLTDataCompressorHelper::fgXYResidualStep2 = 0.03;
+Float_t AliHLTDataCompressorHelper::fgXYResidualStep3 = 0.03;
+Float_t AliHLTDataCompressorHelper::fgZResidualStep1 = 0.05;
+Float_t AliHLTDataCompressorHelper::fgZResidualStep2 = 0.05;
+Float_t AliHLTDataCompressorHelper::fgZResidualStep3 = 0.05;
+Float_t AliHLTDataCompressorHelper::fgXYWidthStep = 0.005;
+Float_t AliHLTDataCompressorHelper::fgZWidthStep = 0.005;
+Int_t AliHLTDataCompressorHelper::fgClusterCharge = 100;
+Int_t AliHLTDataCompressorHelper::fgNumPadBitsRemaining = 18;
+Int_t AliHLTDataCompressorHelper::fgNumTimeBitsRemaining = 19;
+Int_t AliHLTDataCompressorHelper::fgNumShapeBitsRemaining = 11;
+
+void AliHLTDataCompressorHelper::SetBitNumbers(Int_t pad,Int_t time,Int_t charge,Int_t shape)
+{
+ // sets the numbers of bits
+ fgNumPadBits = pad;
+ fgNumTimeBits = time;
+ fgNumChargeBits = charge;
+ fgNumShapeBits = shape;
+}
+
+void AliHLTDataCompressorHelper::SetTransverseResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width)
+{
+ // sets the transverse resolution
+ fgXYResidualStep1 = res1;
+ fgXYResidualStep2 = res2;
+ fgXYResidualStep3 = res3;
+ fgXYWidthStep = width;
+}
+
+void AliHLTDataCompressorHelper::SetLongitudinalResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width)
+{
+ // sets the longitudinal resolution
+ fgZResidualStep1 = res1;
+ fgZResidualStep2 = res2;
+ fgZResidualStep3 = res3;
+ fgZWidthStep = width;
+}
+
+void AliHLTDataCompressorHelper::SetRemainingBitNumbers(Int_t pad,Int_t time,Int_t shape)
+{
+ // sets the numbers of remaining bits
+ fgNumPadBitsRemaining = pad;
+ fgNumTimeBitsRemaining = time;
+ fgNumShapeBitsRemaining = shape;
+}
+
+Float_t AliHLTDataCompressorHelper::GetXYResidualStep(Int_t row)
+{
+ // gets the XY residual step
+ if(row < AliHLTTransform::GetNRowLow())
+ return fgXYResidualStep1;
+ else if(row < AliHLTTransform::GetNRowLow() + AliHLTTransform::GetNRowUp1())
+ return fgXYResidualStep2;
+ else if(row < AliHLTTransform::GetNRowLow() + AliHLTTransform::GetNRowUp1() + AliHLTTransform::GetNRowUp2())
+ return fgXYResidualStep3;
+ else
+ {
+ cerr<<"AliHLTDataCompressorHelper::GetXYResidualStep : Wrong row number "<<row<<endl;
+ return -1;
+ }
+}
+
+Float_t AliHLTDataCompressorHelper::GetZResidualStep(Int_t row)
+{
+ // gets the Z residual step
+ if(row < AliHLTTransform::GetNRowLow())
+ return fgZResidualStep1;
+ else if(row < AliHLTTransform::GetNRowLow() + AliHLTTransform::GetNRowUp1())
+ return fgZResidualStep2;
+ else if(row < AliHLTTransform::GetNRowLow() + AliHLTTransform::GetNRowUp1() + AliHLTTransform::GetNRowUp2())
+ return fgZResidualStep3;
+ else
+ {
+ cerr<<"AliHLTDataCompressorHelper::GetXYResidualStep : Wrong row number "<<row<<endl;
+ return -1;
+ }
+}
+
+Float_t AliHLTDataCompressorHelper::GetPadPrecisionFactor()
+{
+ // gets pad precision factor
+ Int_t nbits = fgNumPadBitsRemaining;
+ if(nbits >=21)
+ return 10000;
+ if(nbits >= 18)
+ return 1000;
+ if(nbits >= 14)
+ return 100;
+ if(nbits >= 11)
+ return 10;
+ if(nbits >= 8)
+ return 1;
+ else
+ {
+ cerr<<"AliHLTDataCompressorHelper::GetRemainingPadFactor : Too few bits for the pad direction: "<<nbits<<endl;
+ return 1;
+ }
+}
+
+Float_t AliHLTDataCompressorHelper::GetTimePrecisionFactor()
+{
+ // gest time precision factor
+ Int_t nbits = fgNumTimeBitsRemaining;
+ if(nbits >=23)
+ return 10000;
+ if(nbits >= 19)
+ return 1000;
+ if(nbits >= 16)
+ return 100;
+ if(nbits >= 13)
+ return 10;
+ if(nbits >= 9)
+ return 1;
+ else
+ {
+ cerr<<"AliHLTDataCompressorHelper::GetRemainingPadFactor : Too few bits for the pad direction: "<<nbits<<endl;
+ return 1;
+ }
+}
+
+
+Int_t AliHLTDataCompressorHelper::Nint(Double_t x)
+{
+ // Round to nearest integer. Rounds half integers
+ // to the nearest even integer.
+
+ Int_t i=0;
+ if (x >= 0) {
+ i = Int_t(x + 0.5);
+ if (x + 0.5 == Double_t(i) && i & 1) i--;
+ } else {
+ i = Int_t(x - 0.5);
+ if (x - 0.5 == Double_t(i) && i & 1) i++;
+
+ }
+ return i;
+}
// @(#) $Id$
-#ifndef AliL3_DataCompressorHelper
-#define AliL3_DataCompressorHelper
+#ifndef AliHLT_DataCompressorHelper
+#define AliHLT_DataCompressorHelper
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3DataCompressorHelper {
+class AliHLTDataCompressorHelper {
public:
- virtual ~AliL3DataCompressorHelper() {}
+ virtual ~AliHLTDataCompressorHelper() {}
static void SetBitNumbers(Int_t pad,Int_t time,Int_t charge,Int_t shape);
static void SetTransverseResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width=0.005);
static Int_t fgClusterCharge; // Cluster charge
- ClassDef(AliL3DataCompressorHelper,1)
+ ClassDef(AliHLTDataCompressorHelper,1)
};
+typedef AliHLTDataCompressorHelper AliL3DataCompressorHelper; // for backward compatibility
+
#endif
#include <stdlib.h>
#include <math.h>
#include <setjmp.h>
-#include "AliL3FitUtilities.h"
+#include "AliHLTFitUtilities.h"
jmp_buf env;
/*@(#) $Id$*/
-#ifndef AliL3FitUtilities
-#define AliL3FitUtilities
+#ifndef AliHLTFitUtilities
+#define AliHLTFitUtilities
/*This we do because this file is read both with c and c++ compiler,
and extern "C" is needed only in case of c++. */
--- /dev/null
+// @(#) $Id$
+
+// Author: Anders Vestbo <mailto:vestbo$fi.uib.no>
+//*-- Copyright © ALICE HLT Group
+//_____________________________________________________________
+// AliHLTModelTrack
+//
+//
+
+
+#include "AliHLTStandardIncludes.h"
+
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTVertex.h"
+#include "AliHLTDataCompressorHelper.h"
+
+#include "AliHLTModelTrack.h"
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+ClassImp(AliHLTModelTrack)
+
+AliHLTModelTrack::AliHLTModelTrack()
+{
+ // default constructor
+ fNClusters = 0;
+ fClusters = 0;
+ fOverlap = 0;
+ fPad=0;
+ fTime=0;
+ fNoverlaps=0;
+ fClusterCharge=0;
+ fTrackModel=0;
+ fCrossingAngle=0;
+ fParSigmaY2=0;
+ fParSigmaZ2=0;
+ fArraysCreated=kFALSE;
+}
+
+
+AliHLTModelTrack::~AliHLTModelTrack()
+{
+ // destructor
+ DeleteArrays();
+}
+
+void AliHLTModelTrack::DeleteArrays()
+{
+ // deletes all arrays
+ if(fClusters)
+ delete [] fClusters;
+ if(fPad)
+ delete [] fPad;
+ if(fTime)
+ delete [] fTime;
+ if(fCrossingAngle)
+ delete [] fCrossingAngle;
+ if(fParSigmaY2)
+ delete [] fParSigmaY2;
+ if(fParSigmaZ2)
+ delete [] fParSigmaZ2;
+ if(fTrackModel)
+ delete fTrackModel;
+ if(fNoverlaps)
+ delete [] fNoverlaps;
+ if(fOverlap)
+ {
+ for(Int_t i=0; i<AliHLTTransform::GetNRows(fPatch); i++)
+ delete [] fOverlap[i];
+ delete [] fOverlap;
+ }
+ fArraysCreated=kFALSE;
+}
+
+void AliHLTModelTrack::Init(Int_t /*slice*/,Int_t patch)
+{
+ // Initialization
+ if(fArraysCreated)
+ {
+ DeleteArrays();
+ }
+ fNClusters=AliHLTTransform::GetNRows(patch);
+ fPatch=patch;
+ Int_t nrows = AliHLTTransform::GetNRows(fPatch);
+ fClusters = new AliHLTClusterModel[nrows];
+ fPad = new Float_t[nrows];
+ fTime = new Float_t[nrows];
+ fCrossingAngle = new Float_t[nrows];
+ fParSigmaY2 = new Float_t[nrows];
+ fParSigmaZ2 = new Float_t[nrows];
+ fTrackModel = new AliHLTTrackModel;
+
+ fOverlap = new Int_t*[nrows];
+ fNoverlaps = new Int_t[nrows];
+ fMaxOverlaps = 5;
+
+ memset(fNoverlaps,0,nrows*sizeof(Int_t));
+ memset(fClusters,0,nrows*sizeof(AliHLTClusterModel));
+ memset(fPad,0,nrows*sizeof(Float_t));
+ memset(fTime,0,nrows*sizeof(Float_t));
+ memset(fCrossingAngle,0,nrows*sizeof(Float_t));
+ memset(fParSigmaY2,0,nrows*sizeof(Float_t));
+ memset(fParSigmaZ2,0,nrows*sizeof(Float_t));
+ memset(fTrackModel,0,sizeof(AliHLTTrackModel));
+ for(Int_t i=0; i<nrows; i++)
+ {
+ fOverlap[i] = new Int_t[fMaxOverlaps];
+ for(Int_t j=0; j<fMaxOverlaps; j++)
+ fOverlap[i][j]=-1;
+ fClusters[i].fSlice = -1;
+ }
+ fArraysCreated=kTRUE;
+}
+
+
+
+void AliHLTModelTrack::CalculateClusterWidths(Int_t row,Bool_t parametrize)
+{
+ //Cluster widths
+
+ Float_t xyz[3];
+ Int_t sr,lr;
+ Int_t index = row - AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::CalculcateClusterWidths : Wrond index "<<index<<" row "<<row<<endl;
+ return;
+ }
+ Int_t patch = AliHLTTransform::GetPatch(row);
+ AliHLTTransform::Slice2Sector(0,row,sr,lr);
+ AliHLTTransform::Raw2Local(xyz,sr,lr,GetPadHit(row),GetTimeHit(row));
+ fParSigmaY2[index] = AliHLTTransform::GetParSigmaY2(row,xyz[2],GetCrossingAngleLUT(row));
+ fParSigmaZ2[index] = AliHLTTransform::GetParSigmaZ2(row,xyz[2],GetTgl());
+
+ if(parametrize)
+ {
+ fParSigmaY2[index] = (fParSigmaY2[index] + (1./12)*pow(AliHLTTransform::GetPadPitchWidth(patch),2) );
+ fParSigmaY2[index] *= 0.108;
+ if(patch<2)
+ fParSigmaY2[index] *= 2.07;
+
+ fParSigmaZ2[index] = (fParSigmaZ2[index] + (1./12)*pow(AliHLTTransform::GetZWidth(),2) );
+ fParSigmaZ2[index] *= 0.169;
+ if(patch<2)
+ fParSigmaZ2[index] *= 1.77;
+ }
+
+ //convert to raw coordinates:
+ fParSigmaY2[index] /= pow(AliHLTTransform::GetPadPitchWidth(patch),2);
+ fParSigmaZ2[index] /= pow(AliHLTTransform::GetZWidth(),2);
+}
+
+void AliHLTModelTrack::SetCluster(Int_t row,Float_t fpad,Float_t ftime,Float_t charge,
+ Float_t sigmaY2,Float_t sigmaZ2,Int_t npads)
+{
+ AliHLTClusterModel *cl = GetClusterModel(row);
+
+ //First bit: Cluster is present or not
+ //Second bit: Cluster was set, meaning an fit attempt was done (if true)
+
+ cl->fPresent |= 0x2; //set second bit to true, because a fit attempt has been made
+
+ Int_t patch = AliHLTTransform::GetPatch(row);
+ if(!charge || npads == 1)
+ {
+ cl->fPresent &= ~0x1; //set first bit to false
+ }
+ else
+ {
+ cl->fPresent|=0x1;//set first bit to true
+ cl->fDPad = (fpad - GetPadHit(row))/(AliHLTDataCompressorHelper::GetXYResidualStep(row)/AliHLTTransform::GetPadPitchWidth(patch));
+ cl->fDTime = (ftime - GetTimeHit(row))/(AliHLTDataCompressorHelper::GetZResidualStep(row)/AliHLTTransform::GetZWidth());
+ cl->fDCharge = charge;
+ if(sigmaY2==0 && sigmaZ2==0)
+ {
+ cl->fDSigmaY=0;//if width is zero, shape is not supposed to be written
+ cl->fDSigmaZ=0;
+ }
+ else
+ {
+ //cl->fDSigmaY2 = (sigmaY2 - GetParSigmaY2(row))/(pow(AliHLTDataCompressorHelper::GetXYWidthStep(),2)/pow(AliHLTTransform::GetPadPitchWidth(patch),2));
+ //cl->fDSigmaZ2 = (sigmaZ2 - GetParSigmaZ2(row))/(pow(AliHLTDataCompressorHelper::GetZWidthStep(),2)/pow(AliHLTTransform::GetZWidth(),2));
+ cl->fDSigmaY = (sqrt(sigmaY2) - sqrt(GetParSigmaY2(row)))/(AliHLTDataCompressorHelper::GetXYWidthStep()/AliHLTTransform::GetPadPitchWidth(patch));
+ cl->fDSigmaZ = (sqrt(sigmaZ2) - sqrt(GetParSigmaZ2(row)))/(AliHLTDataCompressorHelper::GetZWidthStep()/AliHLTTransform::GetZWidth());
+ }
+ cl->fNPads = npads;
+ }
+}
+
+
+void AliHLTModelTrack::Set(AliHLTTrack *tpt)
+{
+ // Sets track and does initialization
+ AliHLTModelTrack *tr = (AliHLTModelTrack*)tpt;
+ SetRowRange(tr->GetFirstRow(),tr->GetLastRow());
+ SetPhi0(tr->GetPhi0());
+ SetKappa(tr->GetKappa());
+ SetFirstPoint(tr->GetFirstPointX(),tr->GetFirstPointY(),tr->GetFirstPointZ());
+ SetLastPoint(tr->GetLastPointX(),tr->GetLastPointY(),tr->GetLastPointZ());
+ SetPt(tr->GetPt());
+ SetPsi(tr->GetPsi());
+ SetTgl(tr->GetTgl());
+ SetCharge(tr->GetCharge());
+
+ if(fClusters)
+ {
+ cerr<<"AliHLTModelTrack::Set : Init has already been called for this object!"<<endl;
+ return;
+ }
+
+ //Init(tr->fSlice,tr->fPatch);
+ Init(0,tr->fPatch);
+ memcpy(fClusters,tr->fClusters,AliHLTTransform::GetNRows(fPatch)*sizeof(AliHLTClusterModel));
+ memcpy(fPad,tr->fPad,AliHLTTransform::GetNRows(fPatch)*sizeof(Float_t));
+ memcpy(fTime,tr->fTime,AliHLTTransform::GetNRows(fPatch)*sizeof(Float_t));
+ memcpy(fParSigmaY2,tr->fParSigmaY2,AliHLTTransform::GetNRows(fPatch)*sizeof(Float_t));
+ memcpy(fParSigmaZ2,tr->fParSigmaZ2,AliHLTTransform::GetNRows(fPatch)*sizeof(Float_t));
+ memcpy(fCrossingAngle,tr->fCrossingAngle,AliHLTTransform::GetNRows(fPatch)*sizeof(Float_t));
+ memcpy(fTrackModel,tr->fTrackModel,sizeof(AliHLTTrackModel));
+
+}
+
+Int_t AliHLTModelTrack::GetNPresentClusters()
+{
+ //Return the number of assigned clusters to the track.
+ //Differs from fNClusters, which should be equal to the
+ //number of padrows in the present patch.
+
+ Int_t count=0;
+
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
+ if(IsPresent(i))
+ count++;
+
+ return count;
+}
+
+void AliHLTModelTrack::FillModel()
+{
+ //Fill the track structure
+
+ if(fNClusters != AliHLTTransform::GetNRows(fPatch))
+ {
+ cout<<"AliHLTModelTrack::FillModel : fNClusters != nrows; beware, this could be caused by a bug!!!"<<endl;
+ fNClusters = AliHLTTransform::GetNRows(fPatch);
+ }
+
+ if(!fTrackModel)
+ {
+ cerr<<"AliHLTModelTrack::FillModel() : No trackmodel "<<endl;
+ return;
+ }
+ Double_t impact[3];
+ AliHLTVertex vertex;
+ CalculateHelix();
+ GetClosestPoint(&vertex,impact[0],impact[1],impact[2]);
+ fTrackModel->fKappa = GetKappa();
+ fTrackModel->fPhi = atan2(impact[1],impact[0]);
+ fTrackModel->fD = sqrt(impact[0]*impact[0] + impact[1]*impact[1]);
+ fTrackModel->fZ0 = impact[2];
+ fTrackModel->fTgl = GetTgl();
+
+ //We have to check on which of the vertex the track fit is lying
+ //This we need to encode the azimuthal angle coordinate of the center of curvature.
+ if(GetRadius() < sqrt(GetCenterX()*GetCenterX()+GetCenterY()*GetCenterY()))
+ fTrackModel->fD *=-1;
+
+}
+
+void AliHLTModelTrack::FillTrack()
+{
+ //Fill the track parameters from the structure.
+
+ if(!fTrackModel)
+ {
+ cerr<<"AliHLTModelTrack::FillTrack() : No data!!"<<endl;
+ return;
+ }
+ SetKappa(fTrackModel->fKappa);
+ Double_t impact[3],psi;
+ Float_t trackPhi0 = fTrackModel->fPhi;
+ if(fTrackModel->fD < 0)
+ trackPhi0 += AliHLTTransform::Pi();
+ Int_t charge = -1*(Int_t)copysign(1.,GetKappa());
+ impact[0] = fabs(fTrackModel->fD)*cos(fTrackModel->fPhi);
+ impact[1] = fabs(fTrackModel->fD)*sin(fTrackModel->fPhi);
+ impact[2] = fTrackModel->fZ0;
+
+ psi = trackPhi0 - charge*0.5*AliHLTTransform::Pi();
+ if(psi < 0)
+ psi += 2*AliHLTTransform::Pi();
+
+ SetCharge(charge);
+ SetFirstPoint(impact[0],impact[1],impact[2]);
+ SetPsi(psi);
+ SetTgl(fTrackModel->fTgl);
+ SetPt((AliHLTTransform::GetBFact()*AliHLTTransform::GetBField())/fabs(GetKappa()));
+ fNClusters = AliHLTTransform::GetNRows(fPatch);
+ CalculateHelix();
+
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
+ {
+ AliHLTClusterModel *cl = GetClusterModel(i);
+ if(!cl) continue;
+
+ if(cl->fSlice == -1)
+ {
+ SetPadHit(i,-1);
+ SetTimeHit(i,-1);
+ continue;
+ }
+ if(cl->fSlice < 0 || cl->fSlice > 35)
+ {
+ cerr<<"AliHLTModelTrack::FillTrack : Slice out of range "<<cl->fSlice<<" on row "<<i<<endl;
+ exit(5);
+ }
+
+ Float_t angle = 0;
+
+ AliHLTTransform::Local2GlobalAngle(&angle,cl->fSlice);
+ if(!CalculateReferencePoint(angle,AliHLTTransform::Row2X(i)))
+ {
+ if(IsPresent(i))
+ {
+ cerr<<"AliHLTModelTrack::FillTrack : Track does not cross slice "<<cl->fSlice<<" row "<<i<<" Points "
+ <<GetPointX()<<" "<<GetPointY()<<" "<<GetPointZ()<<endl;
+ Print();
+ exit(5);
+ }
+ SetPadHit(i,-1);
+ SetTimeHit(i,-1);
+ continue;
+ }
+ Float_t hit[3] = {GetPointX(),GetPointY(),GetPointZ()};
+ Int_t sector,row;
+ AliHLTTransform::Slice2Sector(cl->fSlice,i,sector,row);
+ AliHLTTransform::Global2Raw(hit,sector,row);
+
+ SetPadHit(i,hit[1]);
+ SetTimeHit(i,hit[2]);
+
+ Float_t crossingangle = GetCrossingAngle(i,cl->fSlice);
+
+ SetCrossingAngleLUT(i,crossingangle);
+ CalculateClusterWidths(i,kTRUE);
+
+ }
+}
+
+void AliHLTModelTrack::SetPadHit(Int_t row,Float_t pad)
+{
+ // sets pad hit
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::SetPadHit() : Wrong index: "<<index<<endl;
+ return;
+ }
+ fPad[index]=pad;
+}
+
+void AliHLTModelTrack::SetTimeHit(Int_t row,Float_t time)
+{
+ // sets time hit
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::SetTimeHit() : Wrong index: "<<index<<endl;
+ return;
+ }
+ fTime[index]=time;
+}
+
+void AliHLTModelTrack::SetCrossingAngleLUT(Int_t row,Float_t angle)
+{
+ // sets LUT for crossing angle
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::SetCrossingAngle() : Wrong index: "<<index<<endl;
+ return;
+ }
+ fCrossingAngle[index]=angle;
+}
+
+void AliHLTModelTrack::SetOverlap(Int_t row,Int_t id)
+{
+ // sets overlap
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::SetOverlap() : Wrong index: "<<index<<endl;
+ return;
+ }
+ if(fNoverlaps[index] >= fMaxOverlaps) return;
+ fOverlap[index][fNoverlaps[index]++] = id;
+}
+
+Bool_t AliHLTModelTrack::IsPresent(Int_t row)
+{
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ return (Bool_t)(cl->fPresent & 0x1);
+}
+
+Bool_t AliHLTModelTrack::IsSet(Int_t row)
+{
+ // checks if row was set
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ return (Bool_t)(cl->fPresent & 0x2);
+}
+
+Int_t AliHLTModelTrack::GetNPads(Int_t row)
+{
+ // gets number of pads
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ return cl->fNPads;
+}
+
+Bool_t AliHLTModelTrack::GetPad(Int_t row,Float_t &pad)
+{
+ // gets pad
+ //(fpad - GetPadHit(row))/(AliHLTDataCompressorHelper::GetXYResidualStep(row)/AliHLTTransform::GetPadPitchWidth(patch));
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ Int_t patch = AliHLTTransform::GetPatch(row);
+ pad = cl->fDPad*(AliHLTDataCompressorHelper::GetXYResidualStep(row)/AliHLTTransform::GetPadPitchWidth(patch)) + GetPadHit(row);
+ return IsPresent(row);
+}
+
+Bool_t AliHLTModelTrack::GetTime(Int_t row,Float_t &time)
+{
+ // gets time
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ time = cl->fDTime*(AliHLTDataCompressorHelper::GetZResidualStep(row)/AliHLTTransform::GetZWidth()) + GetTimeHit(row);
+ return IsPresent(row);
+}
+
+Bool_t AliHLTModelTrack::GetClusterCharge(Int_t row,Int_t &charge)
+{
+ // gets cluster's charge
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ charge = (Int_t)cl->fDCharge;// + AliHLTDataCompressorHelperHelper::GetClusterCharge();
+ return IsPresent(row);
+}
+
+Bool_t AliHLTModelTrack::GetSigmaY2(Int_t row,Float_t &sigma2)
+{
+ // gets SigmaY2
+ //cl->fDSigmaY = (sqrt(sigmaY2) - sqrt(GetParSigmaY2(row)))/(AliHLTDataCompressorHelper::GetXYWidthStep()/AliHLTTransform::GetPadPitchWidth(patch));
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ Int_t patch = AliHLTTransform::GetPatch(row);
+ Float_t sigma = cl->fDSigmaY*(AliHLTDataCompressorHelper::GetXYWidthStep()/AliHLTTransform::GetPadPitchWidth(patch)) + sqrt(GetParSigmaY2(row));
+ sigma2 = sigma*sigma;
+ return IsPresent(row);
+}
+
+Bool_t AliHLTModelTrack::GetSigmaZ2(Int_t row,Float_t &sigma2)
+{
+ // gets SigmaZ2
+ //cl->fDSigmaZ = (sqrt(sigmaZ2) - sqrt(GetParSigmaZ2(row)))/(AliHLTDataCompressorHelper::GetZWidthStep()/AliHLTTransform::GetZWidth());
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ Float_t sigma = cl->fDSigmaZ*(AliHLTDataCompressorHelper::GetZWidthStep()/AliHLTTransform::GetZWidth()) + sqrt(GetParSigmaZ2(row));
+ sigma2 = sigma*sigma;
+ return IsPresent(row);
+}
+
+Bool_t AliHLTModelTrack::GetPadResidual(Int_t row,Float_t &res)
+{
+ // gets pad residual
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ Int_t patch = AliHLTTransform::GetPatch(row);
+ res = cl->fDPad*(AliHLTDataCompressorHelper::GetXYResidualStep(row)/AliHLTTransform::GetPadPitchWidth(patch));
+ return IsPresent(row);
+}
+
+Bool_t AliHLTModelTrack::GetTimeResidual(Int_t row,Float_t &res)
+{
+ // gets time residual
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ res = cl->fDTime*(AliHLTDataCompressorHelper::GetZResidualStep(row)/AliHLTTransform::GetZWidth());
+ return IsPresent(row);
+}
+
+Bool_t AliHLTModelTrack::GetSigmaYResidual(Int_t row,Float_t &res)
+{
+ // gets SigmaY residual (?)
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ Int_t patch = AliHLTTransform::GetPatch(row);
+ res = cl->fDSigmaY*(AliHLTDataCompressorHelper::GetXYWidthStep()/AliHLTTransform::GetPadPitchWidth(patch));
+ return IsPresent(row);
+}
+
+Bool_t AliHLTModelTrack::GetSigmaZResidual(Int_t row,Float_t &res)
+{
+ // gets SigmaZ resigual (?)
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ res = cl->fDSigmaZ*(AliHLTDataCompressorHelper::GetZWidthStep()/AliHLTTransform::GetZWidth());
+ return IsPresent(row);
+}
+
+Int_t AliHLTModelTrack::GetSlice(Int_t row)
+{
+ // Gets slice
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ return cl->fSlice;
+}
+
+Float_t AliHLTModelTrack::GetPadHit(Int_t row)
+{
+ // Gets pad hit
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::GetPadHit() : Wrong index: "<<index<<" row "<<row<<endl;
+ return 0;
+ }
+ return fPad[index];
+}
+
+Float_t AliHLTModelTrack::GetTimeHit(Int_t row)
+{
+ // Gets time hit
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::GetTimeHit() : Wrong index: "<<index<<" row "<<row<<endl;
+ return 0;
+ }
+ return fTime[index];
+}
+
+Float_t AliHLTModelTrack::GetCrossingAngleLUT(Int_t row)
+{
+ // gets LUT for crossing angle
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::GetCrossingAngleLUT() : Wrong index: "<<index<<" row "<<row<<endl;
+ return 0;
+ }
+ return fCrossingAngle[index];
+}
+
+Float_t AliHLTModelTrack::GetParSigmaY2(Int_t row)
+{
+ // gets par SigmaY2 (?)
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::GetParSigmaY2() : Wrong index: "<<index<<" row "<<row<<endl;
+ return 0;
+ }
+ return fParSigmaY2[index];
+}
+
+Float_t AliHLTModelTrack::GetParSigmaZ2(Int_t row)
+{
+ // gets par SigmaZ2 (?)
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::GetParSigmaZ2() : Wrong index: "<<index<<" row "<<row<<endl;
+ return 0;
+ }
+ return fParSigmaZ2[index];
+}
+
+Int_t AliHLTModelTrack::GetNOverlaps(Int_t row)
+{
+ // gets number of overlaps
+ Int_t index = row - AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::GetOverlap() : Wrong index: "<<index<<endl;
+ return 0;
+ }
+ return fNoverlaps[index];
+}
+
+Int_t *AliHLTModelTrack::GetOverlaps(Int_t row)
+{
+ // gets overlaps
+ Int_t index = row - AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::GetOverlap() : Wrong index: "<<index<<endl;
+ return 0;
+ }
+ return fOverlap[index];
+}
+
+AliHLTClusterModel *AliHLTModelTrack::GetClusterModel(Int_t row)
+{
+ // gets cluster model
+ if(!fClusters) return 0;
+ Int_t index = row-AliHLTTransform::GetFirstRow(fPatch);
+ if(index < 0 || index > AliHLTTransform::GetNRows(fPatch))
+ {
+ cerr<<"AliHLTModelTrack::GetClusterModel() : Wrong index: "<<index<<endl;
+ return 0;
+ }
+ return &fClusters[index];
+}
+
+void AliHLTModelTrack::Print(Bool_t everything)
+{
+ //Print info
+
+ cout<<"First point "<<GetFirstPointX()<<" "<<GetFirstPointY()<<" "<<GetFirstPointZ()<<endl;
+ cout<<"Last point "<<GetLastPointX()<<" "<<GetLastPointY()<<" "<<GetLastPointZ()<<endl;
+ cout<<"Pt "<<GetPt()<<" kappa "<<GetKappa()<<" tgl "<<GetTgl()<<" psi "<<GetPsi()<<" charge "<<GetCharge()<<endl;
+ cout<<"Center "<<GetCenterX()<<" "<<GetCenterY()<<endl<<endl;
+ if(!everything)
+ return;
+ cout<<"NHits "<<GetNClusters()<<endl;
+
+ cout<<"Clusters:"<<endl;
+ Int_t origslice=-1,counter=0;
+ Float_t fpad,ftime,sigmaY2,sigmaZ2;
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
+ {
+ AliHLTClusterModel *cl = GetClusterModel(i);
+
+ if(!IsPresent(i))
+ {
+ cout<<i<<" Empty"<<" Slice "<<cl->fSlice<<" Padcrossing "<<GetPadHit(i)<<" Timecrossing "<<GetTimeHit(i)<<" ";
+ //AliHLTTransform::RawHLT2Global(xyz,cl->fSlice,i,GetPadHit(i),GetTimeHit(i));
+ //cout<<i<<" slice "<<cl->fSlice<<" x "<<xyz[0]<<" y "<<xyz[1]<<" z "<<xyz[2];
+ }
+ else
+ {
+ GetPad(i,fpad);
+ GetTime(i,ftime);
+ GetSigmaY2(i,sigmaY2);
+ GetSigmaZ2(i,sigmaZ2);
+ if(counter==0)
+ origslice=cl->fSlice;
+ else if(cl->fSlice != origslice)
+ cout<<"Change in slice "<<cl->fSlice<<" "<<origslice<<endl;
+ cout<<i<<" Slice "<<cl->fSlice<<" Dpad "<<cl->fDPad<<" Dtime "<<cl->fDTime<<" Dcharge "<<cl->fDCharge;
+ cout<<" sigmaY2 "<<sigmaY2<<" sigmaZ2 "<<sigmaZ2;
+ cout<<" parsigmaY2 "<<GetParSigmaY2(i)<<" parsigmaZ2 "<<GetParSigmaZ2(i);
+ cout<<" Pad "<<fpad<<" padhit "<<GetPadHit(i)<<" Time "<<ftime<<" timehit "<<GetTimeHit(i)<<" ";
+ counter++;
+ }
+ cout<<endl;
+ }
+}
+
+#ifdef do_mc
+void AliHLTModelTrack::SetClusterLabel(Int_t row,Int_t *trackID)
+{
+ // sets cluster label
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ cl->fTrackID[0] = trackID[0];
+ cl->fTrackID[1] = trackID[1];
+ cl->fTrackID[2] = trackID[2];
+#else
+ void AliHLTModelTrack::SetClusterLabel(Int_t /*row*/,Int_t */*trackID*/)
+{
+ // Does nothing if do_mc undefined
+ return;
+#endif
+}
+
+#ifdef do_mc
+void AliHLTModelTrack::GetClusterLabel(Int_t row,Int_t *trackID)
+{
+ // gets cluster label
+ AliHLTClusterModel *cl = GetClusterModel(row);
+ trackID[0] = cl->fTrackID[0];
+ trackID[1] = cl->fTrackID[1];
+ trackID[2] = cl->fTrackID[2];
+#else
+ void AliHLTModelTrack::GetClusterLabel(Int_t /*row*/,Int_t */*trackID*/)
+{
+ // Does nothing if do_mc undefined
+ return;
+#endif
+}
+
// @(#) $Id$
-#ifndef AliL3Model_Track
-#define AliL3Model_Track
+#ifndef AliHLTModel_Track
+#define AliHLTModel_Track
-#include "AliL3Track.h"
-#include "AliL3Models.h"
+#include "AliHLTTrack.h"
+#include "AliHLTModels.h"
-class AliL3ModelTrack : public AliL3Track {
+class AliHLTModelTrack : public AliHLTTrack {
public:
- AliL3ModelTrack();
- virtual ~AliL3ModelTrack();
+ AliHLTModelTrack();
+ virtual ~AliHLTModelTrack();
void Init(Int_t slice,Int_t patch);
void CalculateClusterWidths(Int_t row,Bool_t parametrize=kFALSE);
void FillModel();
void FillTrack();
void Print(Bool_t everything=kTRUE);
- void Set(AliL3Track *tpt);
+ void Set(AliHLTTrack *tpt);
void SetPadHit(Int_t row,Float_t f);
void SetTimeHit(Int_t row,Float_t f);
Bool_t IsPresent(Int_t row);
Bool_t IsSet(Int_t row);
- AliL3ClusterModel *GetClusters() {return fClusters;}
- AliL3TrackModel *GetModel() {return fTrackModel;}
- AliL3ClusterModel *GetClusterModel(Int_t row);
+ AliHLTClusterModel *GetClusters() {return fClusters;}
+ AliHLTTrackModel *GetModel() {return fTrackModel;}
+ AliHLTClusterModel *GetClusterModel(Int_t row);
Int_t *GetOverlaps(Int_t row);
Int_t GetNOverlaps(Int_t row);
Int_t GetNPads(Int_t row);
private:
Short_t fClusterCharge; //Average cluster charge
- AliL3ClusterModel *fClusters; //! Clusters
- AliL3TrackModel *fTrackModel; //! Track model
+ AliHLTClusterModel *fClusters; //! Clusters
+ AliHLTTrackModel *fTrackModel; //! Track model
Short_t fNClusters; // Number of clusters
Int_t fMaxOverlaps; // Max overlaps (?)
Int_t *fNoverlaps; //! Number of overlaps
void DeleteArrays();
- ClassDef(AliL3ModelTrack,1)
+ ClassDef(AliHLTModelTrack,1)
};
+typedef AliHLTModelTrack AliL3ModelTrack; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
//_____________________________________________________________
-// AliL3Modeller
+// AliHLTModeller
//
// Class for modeling TPC data.
//
// and no deconvolution is done.
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Modeller.h"
-#include "AliL3MemHandler.h"
-#include "AliL3TrackArray.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
-#include "AliL3SpacePointData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTModeller.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTModelTrack.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTSpacePointData.h"
#ifdef use_aliroot
-#include "AliL3FileHandler.h"
+#include "AliHLTFileHandler.h"
#endif
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3Modeller)
+ClassImp(AliHLTModeller)
-AliL3Modeller::AliL3Modeller()
+AliHLTModeller::AliHLTModeller()
{
// default constructor
fMemHandler=0;
}
-AliL3Modeller::~AliL3Modeller()
+AliHLTModeller::~AliHLTModeller()
{
// destructor
if(fMemHandler)
delete [] fRow;
}
-void AliL3Modeller::Init(Int_t slice,Int_t patch,Char_t *trackdata,Char_t *path,Bool_t houghtracks,Bool_t binary)
+void AliHLTModeller::Init(Int_t slice,Int_t patch,Char_t *trackdata,Char_t *path,Bool_t houghtracks,Bool_t binary)
{
// Initialization
fSlice = slice;
sprintf(fPath,"%s",path);
- fTracks = new AliL3TrackArray("AliL3ModelTrack");
+ fTracks = new AliHLTTrackArray("AliHLTModelTrack");
Char_t fname[100];
- AliL3MemHandler *file = new AliL3MemHandler();
+ AliHLTMemHandler *file = new AliHLTMemHandler();
if(!houghtracks)
sprintf(fname,"%s/tracks_tr_%d_0.raw",trackdata,fSlice); //output tracks from the tracker (no merging)
else
//sprintf(fname,"%s/tracks_ho_%d_%d.raw",trackdata,fSlice,fPatch);
if(!file->SetBinaryInput(fname))
{
- cerr<<"AliL3Modeller::Init : Error opening trackfile: "<<fname<<endl;
+ cerr<<"AliHLTModeller::Init : Error opening trackfile: "<<fname<<endl;
return;
}
file->Binary2TrackArray(fTracks);
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fTracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fTracks->GetCheckedTrack(i);
if(!track) continue;
track->Init(fSlice,fPatch);
track->CalculateHelix();
}
- Int_t ntimes = AliL3Transform::GetNTimeBins()+1;
- Int_t npads = AliL3Transform::GetNPads(AliL3Transform::GetLastRow(fPatch))+1;//Max num of pads.
+ Int_t ntimes = AliHLTTransform::GetNTimeBins()+1;
+ Int_t npads = AliHLTTransform::GetNPads(AliHLTTransform::GetLastRow(fPatch))+1;//Max num of pads.
Int_t bounds = ntimes*npads;
fRow = new Digit[bounds];
UInt_t ndigits=0;
- AliL3DigitRowData *digits=0;
+ AliHLTDigitRowData *digits=0;
#ifdef use_aliroot
- fMemHandler = new AliL3FileHandler();
+ fMemHandler = new AliHLTFileHandler();
fMemHandler->Init(slice,patch);
if(binary == kFALSE)
{
sprintf(fname,"%sdigits_%d_%d.raw",fPath,fSlice,fPatch);
if(!fMemHandler->SetBinaryInput(fname))
{
- cerr<<"AliL3Modeller::Init : Error opening file "<<fname<<endl;
+ cerr<<"AliHLTModeller::Init : Error opening file "<<fname<<endl;
return;
}
- digits=(AliL3DigitRowData*)fMemHandler->CompBinary2Memory(ndigits);
+ digits=(AliHLTDigitRowData*)fMemHandler->CompBinary2Memory(ndigits);
}
#else
- fMemHandler = new AliL3MemHandler();
+ fMemHandler = new AliHLTMemHandler();
fMemHandler->Init(slice,patch);
if(binary == kFALSE)
{
- cerr<<"AliL3Modeller::Init : Compile with AliROOT if you want rootfile as input"<<endl;
+ cerr<<"AliHLTModeller::Init : Compile with AliROOT if you want rootfile as input"<<endl;
return;
}
else
sprintf(fname,"%sdigits_%d_%d.raw",fPath,fSlice,fPatch);
if(!fMemHandler->SetBinaryInput(fname))
{
- cerr<<"AliL3Modeller::Init : Error opening file "<<fname<<endl;
+ cerr<<"AliHLTModeller::Init : Error opening file "<<fname<<endl;
return;
}
}
- digits=(AliL3DigitRowData*)fMemHandler->CompBinary2Memory(ndigits);
+ digits=(AliHLTDigitRowData*)fMemHandler->CompBinary2Memory(ndigits);
#endif
SetInputData(digits);
}
-void AliL3Modeller::FindClusters()
+void AliHLTModeller::FindClusters()
{
// Finds clusters
if(fDebug)
- cout<<"AliL3Modeller::FindClusters : Processing slice "<<fSlice<<" patch "<<fPatch<<endl;
+ cout<<"AliHLTModeller::FindClusters : Processing slice "<<fSlice<<" patch "<<fPatch<<endl;
if(!fTracks)
{
- cerr<<"AliL3Modeller::Process : No tracks"<<endl;
+ cerr<<"AliHLTModeller::Process : No tracks"<<endl;
return;
}
if(!fRowData)
{
- cerr<<"AliL3Modeller::Process : No data "<<endl;
+ cerr<<"AliHLTModeller::Process : No data "<<endl;
return;
}
- AliL3DigitRowData *rowPt = fRowData;
- AliL3DigitData *digPt=0;
+ AliHLTDigitRowData *rowPt = fRowData;
+ AliHLTDigitData *digPt=0;
Int_t pad,time;
Short_t charge;
Cluster cluster;
ClusterRegion region[200];
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
{
if(i != (Int_t)rowPt->fRow)
{
- cerr<<"AliL3Modeller::FindClusters : Mismatching rownumbering "<<i<<" "<<rowPt->fRow<<endl;
+ cerr<<"AliHLTModeller::FindClusters : Mismatching rownumbering "<<i<<" "<<rowPt->fRow<<endl;
return;
}
fCurrentPadRow = i;
- memset((void*)fRow,0,(AliL3Transform::GetNTimeBins()+1)*(AliL3Transform::GetNPads(i)+1)*sizeof(Digit));
- digPt = (AliL3DigitData*)rowPt->fDigitData;
+ memset((void*)fRow,0,(AliHLTTransform::GetNTimeBins()+1)*(AliHLTTransform::GetNPads(i)+1)*sizeof(Digit));
+ digPt = (AliHLTDigitData*)rowPt->fDigitData;
//cout<<"Loading row "<<i<<" with "<<(Int_t)rowPt->fNDigit<<" digits"<<endl;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
pad = digPt[j].fPad;
time = digPt[j].fTime;
charge = digPt[j].fCharge;
- fRow[(AliL3Transform::GetNTimeBins()+1)*pad + time].fCharge = charge;
- fRow[(AliL3Transform::GetNTimeBins()+1)*pad + time].fUsed = kFALSE;
+ fRow[(AliHLTTransform::GetNTimeBins()+1)*pad + time].fCharge = charge;
+ fRow[(AliHLTTransform::GetNTimeBins()+1)*pad + time].fUsed = kFALSE;
//cout<<"Row "<<i<<" pad "<<pad<<" time "<<time<<" charge "<<charge<<endl;
}
for(Int_t k=0; k<fTracks->GetNTracks(); k++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fTracks->GetCheckedTrack(k);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fTracks->GetCheckedTrack(k);
if(!track) continue;
if(track->GetPadHit(i)<0 || track->GetTimeHit(i)<0 || track->GetNOverlaps(i)>0)//track->GetOverlap(i)>=0)
Int_t ntimes=0;
for(time=region[pad].fMintime; time<=region[pad].fMaxtime; time++)
{
- charge = fRow[(AliL3Transform::GetNTimeBins()+1)*pad+time].fCharge;
+ charge = fRow[(AliHLTTransform::GetNTimeBins()+1)*pad+time].fCharge;
if(!charge) continue;
- if(fRow[(AliL3Transform::GetNTimeBins()+1)*pad+time].fUsed == kTRUE)
+ if(fRow[(AliHLTTransform::GetNTimeBins()+1)*pad+time].fUsed == kTRUE)
continue;
ntimes++;
cluster.fCharge += charge;
cluster.fSigmaY2 += pad*pad*charge;
cluster.fSigmaZ2 += time*time*charge;
- fRow[(AliL3Transform::GetNTimeBins()+1)*pad+time].fUsed = kTRUE;
+ fRow[(AliHLTTransform::GetNTimeBins()+1)*pad+time].fUsed = kTRUE;
}
if(ntimes)
npads++;
//Debug:
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fTracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fTracks->GetCheckedTrack(i);
if(!track) continue;
- if(track->GetNClusters() != AliL3Transform::GetNRows(fPatch))
- cerr<<endl<<"Mismatching hitcounts; nclusters: "<<track->GetNClusters()<<" nrows "<<AliL3Transform::GetNRows(fPatch)<<endl<<endl;
+ if(track->GetNClusters() != AliHLTTransform::GetNRows(fPatch))
+ cerr<<endl<<"Mismatching hitcounts; nclusters: "<<track->GetNClusters()<<" nrows "<<AliHLTTransform::GetNRows(fPatch)<<endl<<endl;
}
}
-void AliL3Modeller::LocateCluster(AliL3ModelTrack *track,ClusterRegion *region,Int_t &padmin,Int_t &padmax)
+void AliHLTModeller::LocateCluster(AliHLTModelTrack *track,ClusterRegion *region,Int_t &padmin,Int_t &padmax)
{
//Set the cluster range
//This method searches for _all_ nonzeros timebins which are neigbours.
prtmax = middlemax;
continue;
}
- else if(pad >= AliL3Transform::GetNPads(row))
+ else if(pad >= AliHLTTransform::GetNPads(row))
{
- padmax = AliL3Transform::GetNPads(row)-1;
+ padmax = AliHLTTransform::GetNPads(row)-1;
break;
}
time = hittime+1;
tm = kFALSE;
}
- else if(time >= AliL3Transform::GetNTimeBins())
+ else if(time >= AliHLTTransform::GetNTimeBins())
{
- //timemax = AliL3Transform::GetNTimeBins()-1;
+ //timemax = AliHLTTransform::GetNTimeBins()-1;
break;
}
- charge = fRow[(AliL3Transform::GetNTimeBins()+1)*pad+time].fCharge;
+ charge = fRow[(AliHLTTransform::GetNTimeBins()+1)*pad+time].fCharge;
//if(row==0)
//cout<<"charge "<<charge<<" at pad "<<pad<<" time "<<time<<endl;
if(charge>0)
}
-void AliL3Modeller::FillCluster(AliL3ModelTrack *track,Cluster *cluster,Int_t row,Int_t npads)
+void AliHLTModeller::FillCluster(AliHLTModelTrack *track,Cluster *cluster,Int_t row,Int_t npads)
{
// Fill clusters
if(cluster->fCharge==0)
-void AliL3Modeller::FillZeros(AliL3DigitRowData *rowPt,Bool_t reversesign)
+void AliHLTModeller::FillZeros(AliHLTDigitRowData *rowPt,Bool_t reversesign)
{
//Fill zero where data has been used.
- AliL3DigitData *digPt = (AliL3DigitData*)rowPt->fDigitData;
+ AliHLTDigitData *digPt = (AliHLTDigitData*)rowPt->fDigitData;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
Int_t pad = digPt[j].fPad;
Int_t time = digPt[j].fTime;
- if(fRow[(AliL3Transform::GetNTimeBins()+1)*pad+time].fUsed==kTRUE)
+ if(fRow[(AliHLTTransform::GetNTimeBins()+1)*pad+time].fUsed==kTRUE)
{
if(reversesign)
{
}
}
-void AliL3Modeller::WriteRemaining()
+void AliHLTModeller::WriteRemaining()
{
//Write remaining (nonzero) digits to file.
- AliL3DigitRowData *rowPt;
- rowPt = (AliL3DigitRowData*)fRowData;
+ AliHLTDigitRowData *rowPt;
+ rowPt = (AliHLTDigitRowData*)fRowData;
Int_t digitcount=0;
- Int_t *ndigits=new Int_t[(AliL3Transform::GetNRows(fPatch))];
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
+ Int_t *ndigits=new Int_t[(AliHLTTransform::GetNRows(fPatch))];
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
{
- AliL3DigitData *digPt = (AliL3DigitData*)rowPt->fDigitData;
- ndigits[(i-AliL3Transform::GetFirstRow(fPatch))]=0;
+ AliHLTDigitData *digPt = (AliHLTDigitData*)rowPt->fDigitData;
+ ndigits[(i-AliHLTTransform::GetFirstRow(fPatch))]=0;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
if(digPt[j].fCharge==0) continue;
digitcount++;
- ndigits[(i-AliL3Transform::GetFirstRow(fPatch))]++;
+ ndigits[(i-AliHLTTransform::GetFirstRow(fPatch))]++;
}
- //cout<<"Difference "<<(int)ndigits[(i-AliL3Transform::GetFirstRow(fPatch))]<<" "<<(int)rowPt->fNDigit<<endl;
+ //cout<<"Difference "<<(int)ndigits[(i-AliHLTTransform::GetFirstRow(fPatch))]<<" "<<(int)rowPt->fNDigit<<endl;
fMemHandler->UpdateRowPointer(rowPt);
}
- Int_t size = digitcount*sizeof(AliL3DigitData) + AliL3Transform::GetNRows(fPatch)*sizeof(AliL3DigitRowData);
+ Int_t size = digitcount*sizeof(AliHLTDigitData) + AliHLTTransform::GetNRows(fPatch)*sizeof(AliHLTDigitRowData);
Byte_t *data = new Byte_t[size];
memset(data,0,size);
- AliL3DigitRowData *tempPt = (AliL3DigitRowData*)data;
- rowPt = (AliL3DigitRowData*)fRowData;
+ AliHLTDigitRowData *tempPt = (AliHLTDigitRowData*)data;
+ rowPt = (AliHLTDigitRowData*)fRowData;
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
{
Int_t localcount=0;
tempPt->fRow = i;
- tempPt->fNDigit = ndigits[(i-AliL3Transform::GetFirstRow(fPatch))];
- AliL3DigitData *digPt = (AliL3DigitData*)rowPt->fDigitData;
+ tempPt->fNDigit = ndigits[(i-AliHLTTransform::GetFirstRow(fPatch))];
+ AliHLTDigitData *digPt = (AliHLTDigitData*)rowPt->fDigitData;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
if(digPt[j].fCharge==0) continue;
- if(localcount >= ndigits[(i-AliL3Transform::GetFirstRow(fPatch))])
+ if(localcount >= ndigits[(i-AliHLTTransform::GetFirstRow(fPatch))])
{
- cerr<<"AliL3Modeller::WriteRemaining : Digitarray out of range!!"<<endl;
+ cerr<<"AliHLTModeller::WriteRemaining : Digitarray out of range!!"<<endl;
return;
}
tempPt->fDigitData[localcount].fCharge = digPt[j].fCharge;
localcount++;
}
- if(ndigits[(i-AliL3Transform::GetFirstRow(fPatch))] != localcount)
+ if(ndigits[(i-AliHLTTransform::GetFirstRow(fPatch))] != localcount)
{
- cerr<<"AliL3Modeller::WriteRemaining : Mismatch in digitcount"<<endl;
+ cerr<<"AliHLTModeller::WriteRemaining : Mismatch in digitcount"<<endl;
return;
}
fMemHandler->UpdateRowPointer(rowPt);
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData) + ndigits[(i-AliL3Transform::GetFirstRow(fPatch))]*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData) + ndigits[(i-AliHLTTransform::GetFirstRow(fPatch))]*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}
Char_t fname[100];
- AliL3MemHandler *mem = new AliL3MemHandler();
+ AliHLTMemHandler *mem = new AliHLTMemHandler();
sprintf(fname,"%s/comp/remains_%d_%d.raw",fPath,fSlice,fPatch);
mem->Init(fSlice,fPatch);
mem->SetBinaryOutput(fname);
- mem->Memory2CompBinary((UInt_t)AliL3Transform::GetNRows(fPatch),(AliL3DigitRowData*)data);
+ mem->Memory2CompBinary((UInt_t)AliHLTTransform::GetNRows(fPatch),(AliHLTDigitRowData*)data);
mem->CloseBinaryOutput();
delete mem;
delete [] data;
delete [] ndigits;
}
-void AliL3Modeller::RemoveBadTracks()
+void AliHLTModeller::RemoveBadTracks()
{
//Remove tracsk which should not be included in the compression scheme.
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fTracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fTracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetPt() < 0.08)
}
-void AliL3Modeller::CalculateCrossingPoints()
+void AliHLTModeller::CalculateCrossingPoints()
{
// calculates crossing points
if(fDebug)
cout<<"Calculating crossing points on "<<fTracks->GetNTracks()<<" tracks"<<endl;
if(!fTracks)
{
- cerr<<"AliL3Modeller::CalculateCrossingPoints(): No tracks"<<endl;
+ cerr<<"AliHLTModeller::CalculateCrossingPoints(): No tracks"<<endl;
return;
}
Float_t hit[3];
Int_t sector,row;
- for(Int_t i=AliL3Transform::GetLastRow(fPatch); i>=AliL3Transform::GetFirstRow(fPatch); i--)
+ for(Int_t i=AliHLTTransform::GetLastRow(fPatch); i>=AliHLTTransform::GetFirstRow(fPatch); i--)
{
for(Int_t j=0; j<fTracks->GetNTracks(); j++)
{
- AliL3ModelTrack *track = (AliL3ModelTrack*)fTracks->GetCheckedTrack(j);
+ AliHLTModelTrack *track = (AliHLTModelTrack*)fTracks->GetCheckedTrack(j);
if(!track) continue;
if(!track->GetCrossingPoint(i,hit))
{
- //cerr<<"AliL3Modeller::CalculateCrossingPoints : Track "<<j<<" does not intersect row "<<i<<" :"<<endl<<
+ //cerr<<"AliHLTModeller::CalculateCrossingPoints : Track "<<j<<" does not intersect row "<<i<<" :"<<endl<<
// " pt "<<track->GetPt()<<
// " tgl "<<track->GetTgl()<<" psi "<<track->GetPsi()<<" charge "<<track->GetCharge()<<endl;
//fTracks->Remove(j);
}
//cout<<"X "<<hit[0]<<" Y "<<hit[1]<<" Z "<<hit[2]<<" tgl "<<track->GetTgl()<<endl;
- AliL3Transform::Slice2Sector(fSlice,i,sector,row);
- AliL3Transform::Local2Raw(hit,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,i,sector,row);
+ AliHLTTransform::Local2Raw(hit,sector,row);
//cout<<"Pad "<<hit[1]<<" time "<<hit[2]<<" in sector "<<sector<<" row "<<row<<endl;
- if(hit[1]<0 || hit[1]>AliL3Transform::GetNPads(i) ||
- hit[2]<0 || hit[2]>AliL3Transform::GetNTimeBins())
+ if(hit[1]<0 || hit[1]>AliHLTTransform::GetNPads(i) ||
+ hit[2]<0 || hit[2]>AliHLTTransform::GetNTimeBins())
{//Track is leaving the patch, so flag the track hits (<0)
track->SetPadHit(i,-1);
track->SetTimeHit(i,-1);
cout<<"And there are "<<fTracks->GetNTracks()<<" tracks remaining"<<endl;
}
-void AliL3Modeller::CheckForOverlaps(Float_t dangle,Int_t *rowrange)
+void AliHLTModeller::CheckForOverlaps(Float_t dangle,Int_t *rowrange)
{
//Flag the tracks that overlap
cout<<"Checking for overlaps on "<<fTracks->GetNTracks()<<endl;
Int_t counter=0;
- for(Int_t k=AliL3Transform::GetFirstRow(fPatch); k<=AliL3Transform::GetLastRow(fPatch); k++)
+ for(Int_t k=AliHLTTransform::GetFirstRow(fPatch); k<=AliHLTTransform::GetLastRow(fPatch); k++)
{
if(rowrange)
{
}
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3ModelTrack *track1 = (AliL3ModelTrack*)fTracks->GetCheckedTrack(i);
+ AliHLTModelTrack *track1 = (AliHLTModelTrack*)fTracks->GetCheckedTrack(i);
if(!track1) continue;
if(track1->GetPadHit(k)<0 || track1->GetTimeHit(k)<0) continue;
for(Int_t j=i+1; j<fTracks->GetNTracks(); j++)
{
- AliL3ModelTrack *track2 = (AliL3ModelTrack*)fTracks->GetCheckedTrack(j);
+ AliHLTModelTrack *track2 = (AliHLTModelTrack*)fTracks->GetCheckedTrack(j);
if(!track2) continue;
if(track2->GetPadHit(k)<0 || track2->GetTimeHit(k)<0) continue;
}
-void AliL3Modeller::CalcClusterWidth(Cluster *cl,Float_t &sigmaY2,Float_t &sigmaZ2)
+void AliHLTModeller::CalcClusterWidth(Cluster *cl,Float_t &sigmaY2,Float_t &sigmaZ2)
{
// calculates cluster's width
Float_t padw,timew;
- padw = AliL3Transform::GetPadPitchWidth(fPatch);
+ padw = AliHLTTransform::GetPadPitchWidth(fPatch);
Float_t charge = (Float_t)cl->fCharge;
Float_t pad = (Float_t)cl->fPad/charge;
*/
s2 = (Float_t)cl->fSigmaZ2/charge - time*time;
- timew = AliL3Transform::GetZWidth();
+ timew = AliHLTTransform::GetZWidth();
sigmaZ2 = (s2);// +1./12);//*timew*timew;
}
#ifdef do_mc
-void AliL3Modeller::GetTrackID(Int_t pad,Int_t time,Int_t *trackID)
+void AliHLTModeller::GetTrackID(Int_t pad,Int_t time,Int_t *trackID)
{
// Gets track ID
- AliL3DigitRowData *rowPt = (AliL3DigitRowData*)fRowData;
+ AliHLTDigitRowData *rowPt = (AliHLTDigitRowData*)fRowData;
trackID[0]=trackID[1]=trackID[2]=-2;
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
{
if(rowPt->fRow < (UInt_t)fCurrentPadRow)
{
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
continue;
}
- AliL3DigitData *digPt = (AliL3DigitData*)rowPt->fDigitData;
+ AliHLTDigitData *digPt = (AliHLTDigitData*)rowPt->fDigitData;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
Int_t cpad = digPt[j].fPad;
break;
}
#else
- void AliL3Modeller::GetTrackID(Int_t /*pad*/,Int_t /*time*/,Int_t */*trackID*/)
+ void AliHLTModeller::GetTrackID(Int_t /*pad*/,Int_t /*time*/,Int_t */*trackID*/)
{
// Does nothing if do_mc undefined
return;
// @(#) $Id$
-#ifndef AliL3_Modeller
-#define AliL3_Modeller
+#ifndef AliHLT_Modeller
+#define AliHLT_Modeller
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3TrackArray;
-class AliL3MemHandler;
-class AliL3DigitRowData;
-class AliL3ModelTrack;
+class AliHLTTrackArray;
+class AliHLTMemHandler;
+class AliHLTDigitRowData;
+class AliHLTModelTrack;
struct Cluster {
UInt_t fCharge; // Charge
Int_t fMaxtime; // Max time
};
-class AliL3Modeller {
+class AliHLTModeller {
public:
- AliL3Modeller();
- virtual ~AliL3Modeller();
+ AliHLTModeller();
+ virtual ~AliHLTModeller();
virtual void FindClusters();
void Init(Int_t slice,Int_t patch,Char_t *trackdata,Char_t *path,Bool_t houghtracks,Bool_t binary=kTRUE);
void RemoveBadTracks();
void WriteRemaining();
- void SetInputData(AliL3DigitRowData *digits) {fRowData = digits;}
+ void SetInputData(AliHLTDigitRowData *digits) {fRowData = digits;}
void SetTrackThreshold(Int_t i=0) {fTrackThreshold=i;}
void SetOverlap(Int_t p=6,Int_t t=8) {fPadOverlap=p;fTimeOverlap=t;}
void SetSearchRange(Int_t p=1,Int_t t=2) {fPadSearch=p;fTimeSearch=t;}
void SetOuterSearchRange(Int_t p,Int_t t) {fOuterPadSearch=p; fOuterTimeSearch=t;}
void SetMaxClusterRange(Int_t p,Int_t t) {fMaxPads=p; fMaxTimebins=t;}
void Debug() {fDebug=kTRUE;}
- virtual Bool_t SetFitRange(AliL3ModelTrack */*track*/,Int_t */*p*/,Int_t */*t*/) {return kFALSE;}
+ virtual Bool_t SetFitRange(AliHLTModelTrack */*track*/,Int_t */*p*/,Int_t */*t*/) {return kFALSE;}
virtual void SetNmaxOverlaps(Int_t /*i*/) {return;}
virtual void SetChiSqMax(Float_t /*f*/,Int_t /*p*/) {return;}
- AliL3TrackArray *GetTracks() {return fTracks;}
+ AliHLTTrackArray *GetTracks() {return fTracks;}
protected:
- AliL3TrackArray *fTracks; //! Array of tracks
- AliL3DigitRowData *fRowData;//! Row data
+ AliHLTTrackArray *fTracks; //! Array of tracks
+ AliHLTDigitRowData *fRowData;//! Row data
Digit *fRow; //! Current row
Char_t fPath[1024]; // Path to the files
Int_t fSlice; // Slice
Int_t fPatch; // Patch
- void FillCluster(AliL3ModelTrack *track,Cluster *cluster,Int_t row,Int_t npads);
- void FillZeros(AliL3DigitRowData *digPt,Bool_t reversesign=kFALSE);
- void LocateCluster(AliL3ModelTrack *track,ClusterRegion *region,Int_t &padmin,Int_t &padmax);
+ void FillCluster(AliHLTModelTrack *track,Cluster *cluster,Int_t row,Int_t npads);
+ void FillZeros(AliHLTDigitRowData *digPt,Bool_t reversesign=kFALSE);
+ void LocateCluster(AliHLTModelTrack *track,ClusterRegion *region,Int_t &padmin,Int_t &padmax);
void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
private:
Float_t fPadOverlap; // Pad overlap (?)
Float_t fTimeOverlap; // Time overlap (?)
Int_t fTrackThreshold; //minimum weigth track need in order to be included.(=Nhits/weight)
- AliL3MemHandler *fMemHandler; //! Pointer to the memory handler
+ AliHLTMemHandler *fMemHandler; //! Pointer to the memory handler
void CalcClusterWidth(Cluster *cl,Float_t &sigmaY2,Float_t &sigmaZ2);
- ClassDef(AliL3Modeller,1) //Modeller class
+ ClassDef(AliHLTModeller,1) //Modeller class
};
+typedef AliHLTModeller AliL3Modeller; // for backward compatibility
+
#endif
// @(#) $Id$
-#ifndef AliL3Models_H
-#define AliL3Models_H
+#ifndef AliHLTModels_H
+#define AliHLTModels_H
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
const Int_t MaxNClusters = 32;
-struct AliL3ClusterModel {
+struct AliHLTClusterModel {
Byte_t fPresent;
Float_t fDTime;
Float_t fDPad;
Int_t fTrackID[3];
#endif
};
-typedef struct AliL3ClusterModel AliL3ClusterModel;
+typedef struct AliHLTClusterModel AliHLTClusterModel;
+typedef AliHLTClusterModel AliL3ClusterModel;
-struct AliL3RemainingCluster {
+struct AliHLTRemainingCluster {
Float_t fPad;
Float_t fTime;
Float_t fSigmaY2;
Float_t fSigmaZ2;
UShort_t fCharge;
};
-typedef struct AliL3RemainingCluster AliL3RemainingCluster;
+typedef struct AliHLTRemainingCluster AliHLTRemainingCluster;
+typedef AliHLTRemainingCluster AliL3RemainingCluster;
-struct AliL3RemainingRow {
+struct AliHLTRemainingRow {
Byte_t fPadRow; //1 byte
UShort_t fNClusters; //2 bytes
#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
- AliL3RemainingCluster fClusters[1];
+ AliHLTRemainingCluster fClusters[1];
#else
- AliL3RemainingCluster fClusters[0];
+ AliHLTRemainingCluster fClusters[0];
#endif
};
-typedef struct AliL3RemainingRow AliL3RemainingRow;
+typedef struct AliHLTRemainingRow AliHLTRemainingRow;
+typedef AliHLTRemainingRow AliL3RemainingRow;
-struct AliL3TrackModel {//5 independent parameters is needed to encode the helix:
+struct AliHLTTrackModel {//5 independent parameters is needed to encode the helix:
Float_t fKappa; //Curvature
Float_t fPhi; //Azimuthal angle of DCAO (distance of closest approach to origo)
Float_t fD; //radius of DCA0
Float_t fZ0; //z-coordinate of DCA0
Float_t fTgl; //tan of dipangle
};
-typedef struct AliL3TrackModel AliL3TrackModel;
+typedef struct AliHLTTrackModel AliHLTTrackModel;
+typedef AliHLTTrackModel AliL3TrackModel;
#endif
//_____________________________________________________________
//
-// AliL3OfflineDataCompression
+// AliHLTOfflineDataCompression
//
// Class to compress data with offline tracks
// as seeds.
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#include <AliTPCParamSR.h>
#include <AliTPCClustersArray.h>
#include <TSystem.h>
#include <TH1F.h>
-#include "AliL3Transform.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3Compress.h"
-#include "AliL3TrackArray.h"
+#include "AliHLTTransform.h"
+#include "AliHLTModelTrack.h"
+#include "AliHLTCompress.h"
+#include "AliHLTTrackArray.h"
#include "bitio.h"
-#include "AliL3OfflineDataCompressor.h"
+#include "AliHLTOfflineDataCompressor.h"
#if __GNUC__ == 3
using namespace std;
#endif
-ClassImp(AliL3OfflineDataCompressor)
+ClassImp(AliHLTOfflineDataCompressor)
-AliL3OfflineDataCompressor::AliL3OfflineDataCompressor()
+AliHLTOfflineDataCompressor::AliHLTOfflineDataCompressor()
{ //constructor
fMarian = kFALSE;
fTracker=0;
}
-AliL3OfflineDataCompressor::AliL3OfflineDataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape,Bool_t MI)
- : AliL3DataCompressor(path,keep,writeshape)
+AliHLTOfflineDataCompressor::AliHLTOfflineDataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape,Bool_t MI)
+ : AliHLTDataCompressor(path,keep,writeshape)
{ //constructor
fMarian = MI;
fTracker=0;
}
-AliL3OfflineDataCompressor::~AliL3OfflineDataCompressor()
+AliHLTOfflineDataCompressor::~AliHLTOfflineDataCompressor()
{ //deconstructor
if(fTracker)
{
}
-void AliL3OfflineDataCompressor::LoadData(Int_t event,Bool_t sp)
+void AliHLTOfflineDataCompressor::LoadData(Int_t event,Bool_t sp)
{
//Take offline reconstructed tracks as an input.
//In this case, no remaining clusters are written.
fEvent = event;
char filename[1024];
- //AliKalmanTrack::SetConvConst(1000/0.299792458/AliL3Transform::GetSolenoidField());
+ //AliKalmanTrack::SetConvConst(1000/0.299792458/AliHLTTransform::GetSolenoidField());
if(fMarian==kFALSE)
sprintf(filename,"%s/offline/AliTPCclusters.root",fPath);
else
bool compressed=0;
if(compressed)
{
- cout<<"AliL3OfflineDataCompressor::LoadData : Taking compressed offline files!!"<<endl;
+ cout<<"AliHLTOfflineDataCompressor::LoadData : Taking compressed offline files!!"<<endl;
sprintf(filename,"%s/comp/offline/AliTPCclusters.root",fPath);
}
TFile *in = TFile::Open(filename);
delete tracktree;
tf->Close();
- AliL3TrackArray *comptracks = new AliL3TrackArray("AliL3ModelTrack");
+ AliHLTTrackArray *comptracks = new AliHLTTrackArray("AliHLTModelTrack");
cout<<"Loaded "<<nentr<<" offline tracks"<<endl;
Int_t slice,padrow;
Int_t totcounter=0;
if(sec >= 18)
sec += 18;
- AliL3Transform::Sector2Slice(slice,padrow,sec,row);
- Double_t par[5],xk=AliL3Transform::Row2X(padrow);
+ AliHLTTransform::Sector2Slice(slice,padrow,sec,row);
+ Double_t par[5],xk=AliHLTTransform::Row2X(padrow);
track->PropagateTo(xk);
track->GetExternalParameters(xk,par);
Double_t psi = TMath::ASin(par[2]) + track->GetAlpha();
first[1] = par[0];
first[2] = par[1];
- AliL3Transform::Local2Global(first,slice);
+ AliHLTTransform::Local2Global(first,slice);
- AliL3ModelTrack *outtrack = (AliL3ModelTrack*)comptracks->NextTrack();
+ AliHLTModelTrack *outtrack = (AliHLTModelTrack*)comptracks->NextTrack();
outtrack->SetNHits(nhits);
outtrack->SetFirstPoint(first[0],first[1],first[2]);
outtrack->SetPt(1./pt1);
}
//cout<<"sector "<<sec<<" row "<<row<<endl;
- if(!AliL3Transform::Sector2Slice(slice,padrow,sec,row))
+ if(!AliHLTTransform::Sector2Slice(slice,padrow,sec,row))
exit(5);
- xyz[0] = AliL3Transform::Row2X(padrow);
+ xyz[0] = AliHLTTransform::Row2X(padrow);
//cout<<"Hit in slice "<<slice<<" padrow "<<padrow<<" index "<<index<<" y "<<cluster->GetY()<<" z "<<cluster->GetZ()<<endl;
- AliL3Transform::Local2Raw(xyz,sec,row);
+ AliHLTTransform::Local2Raw(xyz,sec,row);
//cout<<"slice "<<slice<<" padrow "<<padrow<<" pad "<<xyz[1]<<" time "<<xyz[2]<<endl;
- if(xyz[1] < -1 || xyz[1] > AliL3Transform::GetNPads(padrow) ||
- xyz[2] < -1 || xyz[2] > AliL3Transform::GetNTimeBins())
+ if(xyz[1] < -1 || xyz[1] > AliHLTTransform::GetNPads(padrow) ||
+ xyz[2] < -1 || xyz[2] > AliHLTTransform::GetNTimeBins())
{
- cerr<<"AliL3DataCompressor::FillOfflineData : Wrong time "<<xyz[2]<<" in slice "
+ cerr<<"AliHLTDataCompressor::FillOfflineData : Wrong time "<<xyz[2]<<" in slice "
<<slice<<" padrow "<<padrow<<endl;
cout<<"sector "<<sec<<" row "<<row<<endl;
//cout<<"Hit in slice "<<slice<<" padrow "<<padrow<<" y "<<cluster->GetY()<<" z "<<cluster->GetZ()<<endl;
}
Float_t angle = 0;
- AliL3Transform::Local2GlobalAngle(&angle,slice);
- if(!outtrack->CalculateReferencePoint(angle,AliL3Transform::Row2X(padrow)))
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
+ if(!outtrack->CalculateReferencePoint(angle,AliHLTTransform::Row2X(padrow)))
{
- cerr<<"AliL3DataCompressor::FillOfflineData : Error in crossing point calc on slice "
+ cerr<<"AliHLTDataCompressor::FillOfflineData : Error in crossing point calc on slice "
<<slice<<" row "<<padrow<<endl;
exit(5);
}
Float_t xyzcross[3] = {outtrack->GetPointX(),outtrack->GetPointY(),outtrack->GetPointZ()};
- AliL3Transform::Global2Raw(xyzcross,sec,row);
+ AliHLTTransform::Global2Raw(xyzcross,sec,row);
/*
if(fabs(xyzcross[1] - xyz[1]) > 10 ||
fabs(xyzcross[2] - xyz[2]) > 10)
{
- cout<<"AliL3DataCompressor::FillOfflineData : Wrong crossing slice "<<slice<<" padrow "
+ cout<<"AliHLTDataCompressor::FillOfflineData : Wrong crossing slice "<<slice<<" padrow "
<<padrow<<" pad "<<xyz[1]<<" padhit "<<xyzcross[1]<<" time "<<xyz[2]<<" timehit "<<xyzcross[2]<<endl;
outtrack->Print();
exit(5);
Float_t angle = outtrack->GetCrossingAngle(padrow,slice);
outtrack->SetCrossingAngleLUT(padrow,angle);
outtrack->CalculateClusterWidths(padrow,kTRUE);
- Int_t patch = AliL3Transform::GetPatch(padrow);
- Float_t sigmaY2 = cluster->GetSigmaY2() / pow(AliL3Transform::GetPadPitchWidth(patch),2);
- Float_t sigmaZ2 = cluster->GetSigmaZ2() / pow(AliL3Transform::GetZWidth(),2);
+ Int_t patch = AliHLTTransform::GetPatch(padrow);
+ Float_t sigmaY2 = cluster->GetSigmaY2() / pow(AliHLTTransform::GetPadPitchWidth(patch),2);
+ Float_t sigmaZ2 = cluster->GetSigmaZ2() / pow(AliHLTTransform::GetZWidth(),2);
outtrack->SetCluster(padrow,xyz[1],xyz[2],clustercharge,sigmaY2,sigmaZ2,3);
}
else
}
}
- cout<<"AliL3DataCompressor::FillOfflineData : Wrote "<<totcounter<<" clusters"<<endl;
+ cout<<"AliHLTDataCompressor::FillOfflineData : Wrote "<<totcounter<<" clusters"<<endl;
//Write tracks to file
- AliL3Compress *comp = new AliL3Compress(-1,-1,fPath,fWriteClusterShape,fEvent);
+ AliHLTCompress *comp = new AliHLTCompress(-1,-1,fPath,fWriteClusterShape,fEvent);
comp->WriteFile(comptracks);
delete comp;
delete comptracks;
}
-void AliL3OfflineDataCompressor::WriteRemaining(Bool_t select)
+void AliHLTOfflineDataCompressor::WriteRemaining(Bool_t select)
{
//Write remaining clusters (not assigned to any tracks) to file
if(!fSinglePatch)
{
- cerr<<"AliL3OfflineDataCompressor::WriteRemaining : You have to modify this function when not running singlepatch"<<endl;
+ cerr<<"AliHLTOfflineDataCompressor::WriteRemaining : You have to modify this function when not running singlepatch"<<endl;
return;
}
}
cout<<"Writing remaining clusters "<<endl;
- Int_t nrows = AliL3Transform::GetNRows(),sector,row,sec;
+ Int_t nrows = AliHLTTransform::GetNRows(),sector,row,sec;
#ifdef asvversion
AliTPCtracker *tracker = (AliTPCtracker*)fTracker;
#endif
BIT_FILE *output = OpenOutputBitFile(filename);
if(!output)
{
- cerr<<"AliL3OfflineDataCompressor::WriteRemaining : Cannot open file "<<filename<<endl;
+ cerr<<"AliHLTOfflineDataCompressor::WriteRemaining : Cannot open file "<<filename<<endl;
exit(5);
}
for(Int_t padrow=0; padrow < nrows; padrow++)
{
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
sec=sector;
if(fMarian == kFALSE)
if(fWriteIdsToFile)
idfile << cluster->GetLabel(0)<<' ';
- Float_t xyz[3] = {AliL3Transform::Row2X(padrow),cluster->GetY(),cluster->GetZ()};
- AliL3Transform::Local2Raw(xyz,sector,row);
+ Float_t xyz[3] = {AliHLTTransform::Row2X(padrow),cluster->GetY(),cluster->GetZ()};
+ AliHLTTransform::Local2Raw(xyz,sector,row);
- Int_t patch = AliL3Transform::GetPatch(padrow);
- Float_t padw = cluster->GetSigmaY2()/pow(AliL3Transform::GetPadPitchWidth(patch),2);
- Float_t timew = cluster->GetSigmaZ2()/pow(AliL3Transform::GetZWidth(),2);
+ Int_t patch = AliHLTTransform::GetPatch(padrow);
+ Float_t padw = cluster->GetSigmaY2()/pow(AliHLTTransform::GetPadPitchWidth(patch),2);
+ Float_t timew = cluster->GetSigmaZ2()/pow(AliHLTTransform::GetZWidth(),2);
Int_t buff;
//Write pad
buff = (Int_t)rint(xyz[1]*10);
if(buff<0)
{
- cerr<<"AliL3OfflineDataCompressor:WriteRemaining : Wrong pad value "<<buff<<endl;
+ cerr<<"AliHLTOfflineDataCompressor:WriteRemaining : Wrong pad value "<<buff<<endl;
exit(5);
}
OutputBits(output,buff,11);
buff = (Int_t)rint(xyz[2]*10);
if(buff<0)
{
- cerr<<"AliL3OfflineDataCompressor:WriteRemaining : Wrong time value "<<buff<<endl;
+ cerr<<"AliHLTOfflineDataCompressor:WriteRemaining : Wrong time value "<<buff<<endl;
exit(5);
}
OutputBits(output,buff,13);
}
}
-void AliL3OfflineDataCompressor::SelectRemainingClusters()
+void AliHLTOfflineDataCompressor::SelectRemainingClusters()
{
//select the remaining clusters
//which were not compressed
cout<<"Cleaning up clusters"<<endl;
- Int_t nrows = AliL3Transform::GetNRows();
+ Int_t nrows = AliHLTTransform::GetNRows();
Int_t gap=(Int_t)(0.125*nrows), shift=(Int_t)(0.5*gap);
Int_t sector,row,sec;
for(Int_t padrow=0; padrow < nrows; padrow++)
{
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
sec=sector;
if(fMarian == kFALSE)
continue;
//Check the widths (errors) of the cluster, and remove big bastards:
- Float_t xyw = cluster->GetSigmaY2() / pow(AliL3Transform::GetPadPitchWidth(AliL3Transform::GetPatch(padrow)),2);
- Float_t zw = cluster->GetSigmaZ2() / pow(AliL3Transform::GetZWidth(),2);
+ Float_t xyw = cluster->GetSigmaY2() / pow(AliHLTTransform::GetPadPitchWidth(AliHLTTransform::GetPatch(padrow)),2);
+ Float_t zw = cluster->GetSigmaZ2() / pow(AliHLTTransform::GetZWidth(),2);
if(xyw >= 2.55 || zw >= 2.55)//Because we use 1 byte to store
{
cluster->Use();
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3OFFLINEDATACOMPRESSOR_H
+#define ALIL3OFFLINEDATACOMPRESSOR_H
+
+#include "AliHLTRootTypes.h"
+#include "AliHLTDataCompressor.h"
+
+class AliTracker;
+
+class AliHLTOfflineDataCompressor : public AliHLTDataCompressor {
+
+ public:
+ AliHLTOfflineDataCompressor();
+ AliHLTOfflineDataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape,Bool_t MI=kFALSE);
+ virtual ~AliHLTOfflineDataCompressor();
+
+ void LoadData(Int_t event,Bool_t sp=kTRUE);
+ void FillData(Int_t /*minhits*/,Bool_t /*expand*/) {return;};
+ void WriteRemaining(Bool_t select);
+
+ private:
+ AliHLTOfflineDataCompressor(const AliHLTOfflineDataCompressor& /*ac*/) : AliHLTDataCompressor() {;}
+ AliHLTOfflineDataCompressor& operator=(const AliHLTOfflineDataCompressor& /*ac*/){return *this;}
+
+ Bool_t fMarian; // is Marian TPC tracking used
+ AliTracker *fTracker; //!
+
+ void SelectRemainingClusters();
+
+ ClassDef(AliHLTOfflineDataCompressor,1)
+
+};
+
+typedef AliHLTOfflineDataCompressor AliL3OfflineDataCompressor; // for backward compatibility
+
+#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#pragma link C++ class AliL3Modeller;
-#ifndef macosx
-#pragma link C++ class AliL3ModelTrack;
-#endif
-#pragma link C++ class AliL3Compress;
-#pragma link C++ class AliL3CompressAC;
-#pragma link C++ class AliL3ClusterFitter;
-#pragma link C++ class AliL3DataCompressor;
-#pragma link C++ class AliL3ClusterModel;
-#ifndef macosx
-#pragma link C++ class AliL3DataCompressorHelper;
-#endif
-#ifdef use_aliroot
-#pragma link C++ class AliL3OfflineDataCompressor;
-#endif
-
-#endif
-
+++ /dev/null
-// @(#) $Id$
-
-#ifndef AliL3_Compress
-#define AliL3_Compress
-
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
-#include "AliL3DataCompressor.h"
-
-class AliL3Compress {
-
- public:
- AliL3Compress();
- AliL3Compress(Int_t slice,Int_t patch,Char_t *path="./",Bool_t writeshape=kFALSE,Int_t event=-1);
- virtual ~AliL3Compress();
-
- Bool_t WriteFile(AliL3TrackArray *tracks,Char_t *filename=0);
- Bool_t ReadFile(Char_t which,Char_t *filename=0);
- virtual Bool_t CompressFile();
- virtual Bool_t ExpandFile();
- void CompressRemaining(AliL3SpacePointData *points[36][6],UInt_t npoints[36][6]);
- void ExpandRemaining(TempCluster **clusters,Int_t *ncl,Int_t maxclusters);
- virtual void PrintCompRatio(STDOF *outfile=0);
- Int_t GetEntropy(Float_t &padEntropy,Float_t &timeEntropy,Float_t &chargeEntropy);
-
- AliL3TrackArray *GetTracks() {return fTracks;}
-
- protected:
- AliL3TrackArray *fTracks; //! Array of tracks
- Int_t fSlice; // Slice
- Int_t fPatch; // Patch
- Char_t fPath[100]; // Path to the files
- Bool_t fWriteShape; // Flag to write the shape
- Int_t fEvent; // Current event
-
-
- ClassDef(AliL3Compress,1)
-
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
-//*-- Copyright © ALICE HLT Group
-
-#include "AliL3StandardIncludes.h"
-
-#include "AliL3RootTypes.h"
-#include "AliL3Transform.h"
-
-#include "AliL3DataCompressorHelper.h"
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-//_____________________________________________________________
-//
-// AliL3DataCompression
-//
-// Interface class; binary <-> AliROOT handling of TPC data compression classes.
-//
-
-
-ClassImp(AliL3DataCompressorHelper)
-
-
-Int_t AliL3DataCompressorHelper::fgNumTimeBits = 12;
-Int_t AliL3DataCompressorHelper::fgNumPadBits = 12;
-Int_t AliL3DataCompressorHelper::fgNumChargeBits = 14;
-Int_t AliL3DataCompressorHelper::fgNumShapeBits = 14;
-Float_t AliL3DataCompressorHelper::fgXYResidualStep1 = 0.03;
-Float_t AliL3DataCompressorHelper::fgXYResidualStep2 = 0.03;
-Float_t AliL3DataCompressorHelper::fgXYResidualStep3 = 0.03;
-Float_t AliL3DataCompressorHelper::fgZResidualStep1 = 0.05;
-Float_t AliL3DataCompressorHelper::fgZResidualStep2 = 0.05;
-Float_t AliL3DataCompressorHelper::fgZResidualStep3 = 0.05;
-Float_t AliL3DataCompressorHelper::fgXYWidthStep = 0.005;
-Float_t AliL3DataCompressorHelper::fgZWidthStep = 0.005;
-Int_t AliL3DataCompressorHelper::fgClusterCharge = 100;
-Int_t AliL3DataCompressorHelper::fgNumPadBitsRemaining = 18;
-Int_t AliL3DataCompressorHelper::fgNumTimeBitsRemaining = 19;
-Int_t AliL3DataCompressorHelper::fgNumShapeBitsRemaining = 11;
-
-void AliL3DataCompressorHelper::SetBitNumbers(Int_t pad,Int_t time,Int_t charge,Int_t shape)
-{
- // sets the numbers of bits
- fgNumPadBits = pad;
- fgNumTimeBits = time;
- fgNumChargeBits = charge;
- fgNumShapeBits = shape;
-}
-
-void AliL3DataCompressorHelper::SetTransverseResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width)
-{
- // sets the transverse resolution
- fgXYResidualStep1 = res1;
- fgXYResidualStep2 = res2;
- fgXYResidualStep3 = res3;
- fgXYWidthStep = width;
-}
-
-void AliL3DataCompressorHelper::SetLongitudinalResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width)
-{
- // sets the longitudinal resolution
- fgZResidualStep1 = res1;
- fgZResidualStep2 = res2;
- fgZResidualStep3 = res3;
- fgZWidthStep = width;
-}
-
-void AliL3DataCompressorHelper::SetRemainingBitNumbers(Int_t pad,Int_t time,Int_t shape)
-{
- // sets the numbers of remaining bits
- fgNumPadBitsRemaining = pad;
- fgNumTimeBitsRemaining = time;
- fgNumShapeBitsRemaining = shape;
-}
-
-Float_t AliL3DataCompressorHelper::GetXYResidualStep(Int_t row)
-{
- // gets the XY residual step
- if(row < AliL3Transform::GetNRowLow())
- return fgXYResidualStep1;
- else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1())
- return fgXYResidualStep2;
- else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1() + AliL3Transform::GetNRowUp2())
- return fgXYResidualStep3;
- else
- {
- cerr<<"AliL3DataCompressorHelper::GetXYResidualStep : Wrong row number "<<row<<endl;
- return -1;
- }
-}
-
-Float_t AliL3DataCompressorHelper::GetZResidualStep(Int_t row)
-{
- // gets the Z residual step
- if(row < AliL3Transform::GetNRowLow())
- return fgZResidualStep1;
- else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1())
- return fgZResidualStep2;
- else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1() + AliL3Transform::GetNRowUp2())
- return fgZResidualStep3;
- else
- {
- cerr<<"AliL3DataCompressorHelper::GetXYResidualStep : Wrong row number "<<row<<endl;
- return -1;
- }
-}
-
-Float_t AliL3DataCompressorHelper::GetPadPrecisionFactor()
-{
- // gets pad precision factor
- Int_t nbits = fgNumPadBitsRemaining;
- if(nbits >=21)
- return 10000;
- if(nbits >= 18)
- return 1000;
- if(nbits >= 14)
- return 100;
- if(nbits >= 11)
- return 10;
- if(nbits >= 8)
- return 1;
- else
- {
- cerr<<"AliL3DataCompressorHelper::GetRemainingPadFactor : Too few bits for the pad direction: "<<nbits<<endl;
- return 1;
- }
-}
-
-Float_t AliL3DataCompressorHelper::GetTimePrecisionFactor()
-{
- // gest time precision factor
- Int_t nbits = fgNumTimeBitsRemaining;
- if(nbits >=23)
- return 10000;
- if(nbits >= 19)
- return 1000;
- if(nbits >= 16)
- return 100;
- if(nbits >= 13)
- return 10;
- if(nbits >= 9)
- return 1;
- else
- {
- cerr<<"AliL3DataCompressorHelper::GetRemainingPadFactor : Too few bits for the pad direction: "<<nbits<<endl;
- return 1;
- }
-}
-
-
-Int_t AliL3DataCompressorHelper::Nint(Double_t x)
-{
- // Round to nearest integer. Rounds half integers
- // to the nearest even integer.
-
- Int_t i=0;
- if (x >= 0) {
- i = Int_t(x + 0.5);
- if (x + 0.5 == Double_t(i) && i & 1) i--;
- } else {
- i = Int_t(x - 0.5);
- if (x - 0.5 == Double_t(i) && i & 1) i++;
-
- }
- return i;
-}
+++ /dev/null
-// @(#) $Id$
-
-// Author: Anders Vestbo <mailto:vestbo$fi.uib.no>
-//*-- Copyright © ALICE HLT Group
-//_____________________________________________________________
-// AliL3ModelTrack
-//
-//
-
-
-#include "AliL3StandardIncludes.h"
-
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3Vertex.h"
-#include "AliL3DataCompressorHelper.h"
-
-#include "AliL3ModelTrack.h"
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-ClassImp(AliL3ModelTrack)
-
-AliL3ModelTrack::AliL3ModelTrack()
-{
- // default constructor
- fNClusters = 0;
- fClusters = 0;
- fOverlap = 0;
- fPad=0;
- fTime=0;
- fNoverlaps=0;
- fClusterCharge=0;
- fTrackModel=0;
- fCrossingAngle=0;
- fParSigmaY2=0;
- fParSigmaZ2=0;
- fArraysCreated=kFALSE;
-}
-
-
-AliL3ModelTrack::~AliL3ModelTrack()
-{
- // destructor
- DeleteArrays();
-}
-
-void AliL3ModelTrack::DeleteArrays()
-{
- // deletes all arrays
- if(fClusters)
- delete [] fClusters;
- if(fPad)
- delete [] fPad;
- if(fTime)
- delete [] fTime;
- if(fCrossingAngle)
- delete [] fCrossingAngle;
- if(fParSigmaY2)
- delete [] fParSigmaY2;
- if(fParSigmaZ2)
- delete [] fParSigmaZ2;
- if(fTrackModel)
- delete fTrackModel;
- if(fNoverlaps)
- delete [] fNoverlaps;
- if(fOverlap)
- {
- for(Int_t i=0; i<AliL3Transform::GetNRows(fPatch); i++)
- delete [] fOverlap[i];
- delete [] fOverlap;
- }
- fArraysCreated=kFALSE;
-}
-
-void AliL3ModelTrack::Init(Int_t /*slice*/,Int_t patch)
-{
- // Initialization
- if(fArraysCreated)
- {
- DeleteArrays();
- }
- fNClusters=AliL3Transform::GetNRows(patch);
- fPatch=patch;
- Int_t nrows = AliL3Transform::GetNRows(fPatch);
- fClusters = new AliL3ClusterModel[nrows];
- fPad = new Float_t[nrows];
- fTime = new Float_t[nrows];
- fCrossingAngle = new Float_t[nrows];
- fParSigmaY2 = new Float_t[nrows];
- fParSigmaZ2 = new Float_t[nrows];
- fTrackModel = new AliL3TrackModel;
-
- fOverlap = new Int_t*[nrows];
- fNoverlaps = new Int_t[nrows];
- fMaxOverlaps = 5;
-
- memset(fNoverlaps,0,nrows*sizeof(Int_t));
- memset(fClusters,0,nrows*sizeof(AliL3ClusterModel));
- memset(fPad,0,nrows*sizeof(Float_t));
- memset(fTime,0,nrows*sizeof(Float_t));
- memset(fCrossingAngle,0,nrows*sizeof(Float_t));
- memset(fParSigmaY2,0,nrows*sizeof(Float_t));
- memset(fParSigmaZ2,0,nrows*sizeof(Float_t));
- memset(fTrackModel,0,sizeof(AliL3TrackModel));
- for(Int_t i=0; i<nrows; i++)
- {
- fOverlap[i] = new Int_t[fMaxOverlaps];
- for(Int_t j=0; j<fMaxOverlaps; j++)
- fOverlap[i][j]=-1;
- fClusters[i].fSlice = -1;
- }
- fArraysCreated=kTRUE;
-}
-
-
-
-void AliL3ModelTrack::CalculateClusterWidths(Int_t row,Bool_t parametrize)
-{
- //Cluster widths
-
- Float_t xyz[3];
- Int_t sr,lr;
- Int_t index = row - AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::CalculcateClusterWidths : Wrond index "<<index<<" row "<<row<<endl;
- return;
- }
- Int_t patch = AliL3Transform::GetPatch(row);
- AliL3Transform::Slice2Sector(0,row,sr,lr);
- AliL3Transform::Raw2Local(xyz,sr,lr,GetPadHit(row),GetTimeHit(row));
- fParSigmaY2[index] = AliL3Transform::GetParSigmaY2(row,xyz[2],GetCrossingAngleLUT(row));
- fParSigmaZ2[index] = AliL3Transform::GetParSigmaZ2(row,xyz[2],GetTgl());
-
- if(parametrize)
- {
- fParSigmaY2[index] = (fParSigmaY2[index] + (1./12)*pow(AliL3Transform::GetPadPitchWidth(patch),2) );
- fParSigmaY2[index] *= 0.108;
- if(patch<2)
- fParSigmaY2[index] *= 2.07;
-
- fParSigmaZ2[index] = (fParSigmaZ2[index] + (1./12)*pow(AliL3Transform::GetZWidth(),2) );
- fParSigmaZ2[index] *= 0.169;
- if(patch<2)
- fParSigmaZ2[index] *= 1.77;
- }
-
- //convert to raw coordinates:
- fParSigmaY2[index] /= pow(AliL3Transform::GetPadPitchWidth(patch),2);
- fParSigmaZ2[index] /= pow(AliL3Transform::GetZWidth(),2);
-}
-
-void AliL3ModelTrack::SetCluster(Int_t row,Float_t fpad,Float_t ftime,Float_t charge,
- Float_t sigmaY2,Float_t sigmaZ2,Int_t npads)
-{
- AliL3ClusterModel *cl = GetClusterModel(row);
-
- //First bit: Cluster is present or not
- //Second bit: Cluster was set, meaning an fit attempt was done (if true)
-
- cl->fPresent |= 0x2; //set second bit to true, because a fit attempt has been made
-
- Int_t patch = AliL3Transform::GetPatch(row);
- if(!charge || npads == 1)
- {
- cl->fPresent &= ~0x1; //set first bit to false
- }
- else
- {
- cl->fPresent|=0x1;//set first bit to true
- cl->fDPad = (fpad - GetPadHit(row))/(AliL3DataCompressorHelper::GetXYResidualStep(row)/AliL3Transform::GetPadPitchWidth(patch));
- cl->fDTime = (ftime - GetTimeHit(row))/(AliL3DataCompressorHelper::GetZResidualStep(row)/AliL3Transform::GetZWidth());
- cl->fDCharge = charge;
- if(sigmaY2==0 && sigmaZ2==0)
- {
- cl->fDSigmaY=0;//if width is zero, shape is not supposed to be written
- cl->fDSigmaZ=0;
- }
- else
- {
- //cl->fDSigmaY2 = (sigmaY2 - GetParSigmaY2(row))/(pow(AliL3DataCompressorHelper::GetXYWidthStep(),2)/pow(AliL3Transform::GetPadPitchWidth(patch),2));
- //cl->fDSigmaZ2 = (sigmaZ2 - GetParSigmaZ2(row))/(pow(AliL3DataCompressorHelper::GetZWidthStep(),2)/pow(AliL3Transform::GetZWidth(),2));
- cl->fDSigmaY = (sqrt(sigmaY2) - sqrt(GetParSigmaY2(row)))/(AliL3DataCompressorHelper::GetXYWidthStep()/AliL3Transform::GetPadPitchWidth(patch));
- cl->fDSigmaZ = (sqrt(sigmaZ2) - sqrt(GetParSigmaZ2(row)))/(AliL3DataCompressorHelper::GetZWidthStep()/AliL3Transform::GetZWidth());
- }
- cl->fNPads = npads;
- }
-}
-
-
-void AliL3ModelTrack::Set(AliL3Track *tpt)
-{
- // Sets track and does initialization
- AliL3ModelTrack *tr = (AliL3ModelTrack*)tpt;
- SetRowRange(tr->GetFirstRow(),tr->GetLastRow());
- SetPhi0(tr->GetPhi0());
- SetKappa(tr->GetKappa());
- SetFirstPoint(tr->GetFirstPointX(),tr->GetFirstPointY(),tr->GetFirstPointZ());
- SetLastPoint(tr->GetLastPointX(),tr->GetLastPointY(),tr->GetLastPointZ());
- SetPt(tr->GetPt());
- SetPsi(tr->GetPsi());
- SetTgl(tr->GetTgl());
- SetCharge(tr->GetCharge());
-
- if(fClusters)
- {
- cerr<<"AliL3ModelTrack::Set : Init has already been called for this object!"<<endl;
- return;
- }
-
- //Init(tr->fSlice,tr->fPatch);
- Init(0,tr->fPatch);
- memcpy(fClusters,tr->fClusters,AliL3Transform::GetNRows(fPatch)*sizeof(AliL3ClusterModel));
- memcpy(fPad,tr->fPad,AliL3Transform::GetNRows(fPatch)*sizeof(Float_t));
- memcpy(fTime,tr->fTime,AliL3Transform::GetNRows(fPatch)*sizeof(Float_t));
- memcpy(fParSigmaY2,tr->fParSigmaY2,AliL3Transform::GetNRows(fPatch)*sizeof(Float_t));
- memcpy(fParSigmaZ2,tr->fParSigmaZ2,AliL3Transform::GetNRows(fPatch)*sizeof(Float_t));
- memcpy(fCrossingAngle,tr->fCrossingAngle,AliL3Transform::GetNRows(fPatch)*sizeof(Float_t));
- memcpy(fTrackModel,tr->fTrackModel,sizeof(AliL3TrackModel));
-
-}
-
-Int_t AliL3ModelTrack::GetNPresentClusters()
-{
- //Return the number of assigned clusters to the track.
- //Differs from fNClusters, which should be equal to the
- //number of padrows in the present patch.
-
- Int_t count=0;
-
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
- if(IsPresent(i))
- count++;
-
- return count;
-}
-
-void AliL3ModelTrack::FillModel()
-{
- //Fill the track structure
-
- if(fNClusters != AliL3Transform::GetNRows(fPatch))
- {
- cout<<"AliL3ModelTrack::FillModel : fNClusters != nrows; beware, this could be caused by a bug!!!"<<endl;
- fNClusters = AliL3Transform::GetNRows(fPatch);
- }
-
- if(!fTrackModel)
- {
- cerr<<"AliL3ModelTrack::FillModel() : No trackmodel "<<endl;
- return;
- }
- Double_t impact[3];
- AliL3Vertex vertex;
- CalculateHelix();
- GetClosestPoint(&vertex,impact[0],impact[1],impact[2]);
- fTrackModel->fKappa = GetKappa();
- fTrackModel->fPhi = atan2(impact[1],impact[0]);
- fTrackModel->fD = sqrt(impact[0]*impact[0] + impact[1]*impact[1]);
- fTrackModel->fZ0 = impact[2];
- fTrackModel->fTgl = GetTgl();
-
- //We have to check on which of the vertex the track fit is lying
- //This we need to encode the azimuthal angle coordinate of the center of curvature.
- if(GetRadius() < sqrt(GetCenterX()*GetCenterX()+GetCenterY()*GetCenterY()))
- fTrackModel->fD *=-1;
-
-}
-
-void AliL3ModelTrack::FillTrack()
-{
- //Fill the track parameters from the structure.
-
- if(!fTrackModel)
- {
- cerr<<"AliL3ModelTrack::FillTrack() : No data!!"<<endl;
- return;
- }
- SetKappa(fTrackModel->fKappa);
- Double_t impact[3],psi;
- Float_t trackPhi0 = fTrackModel->fPhi;
- if(fTrackModel->fD < 0)
- trackPhi0 += AliL3Transform::Pi();
- Int_t charge = -1*(Int_t)copysign(1.,GetKappa());
- impact[0] = fabs(fTrackModel->fD)*cos(fTrackModel->fPhi);
- impact[1] = fabs(fTrackModel->fD)*sin(fTrackModel->fPhi);
- impact[2] = fTrackModel->fZ0;
-
- psi = trackPhi0 - charge*0.5*AliL3Transform::Pi();
- if(psi < 0)
- psi += 2*AliL3Transform::Pi();
-
- SetCharge(charge);
- SetFirstPoint(impact[0],impact[1],impact[2]);
- SetPsi(psi);
- SetTgl(fTrackModel->fTgl);
- SetPt((AliL3Transform::GetBFact()*AliL3Transform::GetBField())/fabs(GetKappa()));
- fNClusters = AliL3Transform::GetNRows(fPatch);
- CalculateHelix();
-
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
- {
- AliL3ClusterModel *cl = GetClusterModel(i);
- if(!cl) continue;
-
- if(cl->fSlice == -1)
- {
- SetPadHit(i,-1);
- SetTimeHit(i,-1);
- continue;
- }
- if(cl->fSlice < 0 || cl->fSlice > 35)
- {
- cerr<<"AliL3ModelTrack::FillTrack : Slice out of range "<<cl->fSlice<<" on row "<<i<<endl;
- exit(5);
- }
-
- Float_t angle = 0;
-
- AliL3Transform::Local2GlobalAngle(&angle,cl->fSlice);
- if(!CalculateReferencePoint(angle,AliL3Transform::Row2X(i)))
- {
- if(IsPresent(i))
- {
- cerr<<"AliL3ModelTrack::FillTrack : Track does not cross slice "<<cl->fSlice<<" row "<<i<<" Points "
- <<GetPointX()<<" "<<GetPointY()<<" "<<GetPointZ()<<endl;
- Print();
- exit(5);
- }
- SetPadHit(i,-1);
- SetTimeHit(i,-1);
- continue;
- }
- Float_t hit[3] = {GetPointX(),GetPointY(),GetPointZ()};
- Int_t sector,row;
- AliL3Transform::Slice2Sector(cl->fSlice,i,sector,row);
- AliL3Transform::Global2Raw(hit,sector,row);
-
- SetPadHit(i,hit[1]);
- SetTimeHit(i,hit[2]);
-
- Float_t crossingangle = GetCrossingAngle(i,cl->fSlice);
-
- SetCrossingAngleLUT(i,crossingangle);
- CalculateClusterWidths(i,kTRUE);
-
- }
-}
-
-void AliL3ModelTrack::SetPadHit(Int_t row,Float_t pad)
-{
- // sets pad hit
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::SetPadHit() : Wrong index: "<<index<<endl;
- return;
- }
- fPad[index]=pad;
-}
-
-void AliL3ModelTrack::SetTimeHit(Int_t row,Float_t time)
-{
- // sets time hit
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::SetTimeHit() : Wrong index: "<<index<<endl;
- return;
- }
- fTime[index]=time;
-}
-
-void AliL3ModelTrack::SetCrossingAngleLUT(Int_t row,Float_t angle)
-{
- // sets LUT for crossing angle
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::SetCrossingAngle() : Wrong index: "<<index<<endl;
- return;
- }
- fCrossingAngle[index]=angle;
-}
-
-void AliL3ModelTrack::SetOverlap(Int_t row,Int_t id)
-{
- // sets overlap
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::SetOverlap() : Wrong index: "<<index<<endl;
- return;
- }
- if(fNoverlaps[index] >= fMaxOverlaps) return;
- fOverlap[index][fNoverlaps[index]++] = id;
-}
-
-Bool_t AliL3ModelTrack::IsPresent(Int_t row)
-{
- AliL3ClusterModel *cl = GetClusterModel(row);
- return (Bool_t)(cl->fPresent & 0x1);
-}
-
-Bool_t AliL3ModelTrack::IsSet(Int_t row)
-{
- // checks if row was set
- AliL3ClusterModel *cl = GetClusterModel(row);
- return (Bool_t)(cl->fPresent & 0x2);
-}
-
-Int_t AliL3ModelTrack::GetNPads(Int_t row)
-{
- // gets number of pads
- AliL3ClusterModel *cl = GetClusterModel(row);
- return cl->fNPads;
-}
-
-Bool_t AliL3ModelTrack::GetPad(Int_t row,Float_t &pad)
-{
- // gets pad
- //(fpad - GetPadHit(row))/(AliL3DataCompressorHelper::GetXYResidualStep(row)/AliL3Transform::GetPadPitchWidth(patch));
- AliL3ClusterModel *cl = GetClusterModel(row);
- Int_t patch = AliL3Transform::GetPatch(row);
- pad = cl->fDPad*(AliL3DataCompressorHelper::GetXYResidualStep(row)/AliL3Transform::GetPadPitchWidth(patch)) + GetPadHit(row);
- return IsPresent(row);
-}
-
-Bool_t AliL3ModelTrack::GetTime(Int_t row,Float_t &time)
-{
- // gets time
- AliL3ClusterModel *cl = GetClusterModel(row);
- time = cl->fDTime*(AliL3DataCompressorHelper::GetZResidualStep(row)/AliL3Transform::GetZWidth()) + GetTimeHit(row);
- return IsPresent(row);
-}
-
-Bool_t AliL3ModelTrack::GetClusterCharge(Int_t row,Int_t &charge)
-{
- // gets cluster's charge
- AliL3ClusterModel *cl = GetClusterModel(row);
- charge = (Int_t)cl->fDCharge;// + AliL3DataCompressorHelperHelper::GetClusterCharge();
- return IsPresent(row);
-}
-
-Bool_t AliL3ModelTrack::GetSigmaY2(Int_t row,Float_t &sigma2)
-{
- // gets SigmaY2
- //cl->fDSigmaY = (sqrt(sigmaY2) - sqrt(GetParSigmaY2(row)))/(AliL3DataCompressorHelper::GetXYWidthStep()/AliL3Transform::GetPadPitchWidth(patch));
- AliL3ClusterModel *cl = GetClusterModel(row);
- Int_t patch = AliL3Transform::GetPatch(row);
- Float_t sigma = cl->fDSigmaY*(AliL3DataCompressorHelper::GetXYWidthStep()/AliL3Transform::GetPadPitchWidth(patch)) + sqrt(GetParSigmaY2(row));
- sigma2 = sigma*sigma;
- return IsPresent(row);
-}
-
-Bool_t AliL3ModelTrack::GetSigmaZ2(Int_t row,Float_t &sigma2)
-{
- // gets SigmaZ2
- //cl->fDSigmaZ = (sqrt(sigmaZ2) - sqrt(GetParSigmaZ2(row)))/(AliL3DataCompressorHelper::GetZWidthStep()/AliL3Transform::GetZWidth());
- AliL3ClusterModel *cl = GetClusterModel(row);
- Float_t sigma = cl->fDSigmaZ*(AliL3DataCompressorHelper::GetZWidthStep()/AliL3Transform::GetZWidth()) + sqrt(GetParSigmaZ2(row));
- sigma2 = sigma*sigma;
- return IsPresent(row);
-}
-
-Bool_t AliL3ModelTrack::GetPadResidual(Int_t row,Float_t &res)
-{
- // gets pad residual
- AliL3ClusterModel *cl = GetClusterModel(row);
- Int_t patch = AliL3Transform::GetPatch(row);
- res = cl->fDPad*(AliL3DataCompressorHelper::GetXYResidualStep(row)/AliL3Transform::GetPadPitchWidth(patch));
- return IsPresent(row);
-}
-
-Bool_t AliL3ModelTrack::GetTimeResidual(Int_t row,Float_t &res)
-{
- // gets time residual
- AliL3ClusterModel *cl = GetClusterModel(row);
- res = cl->fDTime*(AliL3DataCompressorHelper::GetZResidualStep(row)/AliL3Transform::GetZWidth());
- return IsPresent(row);
-}
-
-Bool_t AliL3ModelTrack::GetSigmaYResidual(Int_t row,Float_t &res)
-{
- // gets SigmaY residual (?)
- AliL3ClusterModel *cl = GetClusterModel(row);
- Int_t patch = AliL3Transform::GetPatch(row);
- res = cl->fDSigmaY*(AliL3DataCompressorHelper::GetXYWidthStep()/AliL3Transform::GetPadPitchWidth(patch));
- return IsPresent(row);
-}
-
-Bool_t AliL3ModelTrack::GetSigmaZResidual(Int_t row,Float_t &res)
-{
- // gets SigmaZ resigual (?)
- AliL3ClusterModel *cl = GetClusterModel(row);
- res = cl->fDSigmaZ*(AliL3DataCompressorHelper::GetZWidthStep()/AliL3Transform::GetZWidth());
- return IsPresent(row);
-}
-
-Int_t AliL3ModelTrack::GetSlice(Int_t row)
-{
- // Gets slice
- AliL3ClusterModel *cl = GetClusterModel(row);
- return cl->fSlice;
-}
-
-Float_t AliL3ModelTrack::GetPadHit(Int_t row)
-{
- // Gets pad hit
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::GetPadHit() : Wrong index: "<<index<<" row "<<row<<endl;
- return 0;
- }
- return fPad[index];
-}
-
-Float_t AliL3ModelTrack::GetTimeHit(Int_t row)
-{
- // Gets time hit
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::GetTimeHit() : Wrong index: "<<index<<" row "<<row<<endl;
- return 0;
- }
- return fTime[index];
-}
-
-Float_t AliL3ModelTrack::GetCrossingAngleLUT(Int_t row)
-{
- // gets LUT for crossing angle
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::GetCrossingAngleLUT() : Wrong index: "<<index<<" row "<<row<<endl;
- return 0;
- }
- return fCrossingAngle[index];
-}
-
-Float_t AliL3ModelTrack::GetParSigmaY2(Int_t row)
-{
- // gets par SigmaY2 (?)
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::GetParSigmaY2() : Wrong index: "<<index<<" row "<<row<<endl;
- return 0;
- }
- return fParSigmaY2[index];
-}
-
-Float_t AliL3ModelTrack::GetParSigmaZ2(Int_t row)
-{
- // gets par SigmaZ2 (?)
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::GetParSigmaZ2() : Wrong index: "<<index<<" row "<<row<<endl;
- return 0;
- }
- return fParSigmaZ2[index];
-}
-
-Int_t AliL3ModelTrack::GetNOverlaps(Int_t row)
-{
- // gets number of overlaps
- Int_t index = row - AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::GetOverlap() : Wrong index: "<<index<<endl;
- return 0;
- }
- return fNoverlaps[index];
-}
-
-Int_t *AliL3ModelTrack::GetOverlaps(Int_t row)
-{
- // gets overlaps
- Int_t index = row - AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::GetOverlap() : Wrong index: "<<index<<endl;
- return 0;
- }
- return fOverlap[index];
-}
-
-AliL3ClusterModel *AliL3ModelTrack::GetClusterModel(Int_t row)
-{
- // gets cluster model
- if(!fClusters) return 0;
- Int_t index = row-AliL3Transform::GetFirstRow(fPatch);
- if(index < 0 || index > AliL3Transform::GetNRows(fPatch))
- {
- cerr<<"AliL3ModelTrack::GetClusterModel() : Wrong index: "<<index<<endl;
- return 0;
- }
- return &fClusters[index];
-}
-
-void AliL3ModelTrack::Print(Bool_t everything)
-{
- //Print info
-
- cout<<"First point "<<GetFirstPointX()<<" "<<GetFirstPointY()<<" "<<GetFirstPointZ()<<endl;
- cout<<"Last point "<<GetLastPointX()<<" "<<GetLastPointY()<<" "<<GetLastPointZ()<<endl;
- cout<<"Pt "<<GetPt()<<" kappa "<<GetKappa()<<" tgl "<<GetTgl()<<" psi "<<GetPsi()<<" charge "<<GetCharge()<<endl;
- cout<<"Center "<<GetCenterX()<<" "<<GetCenterY()<<endl<<endl;
- if(!everything)
- return;
- cout<<"NHits "<<GetNClusters()<<endl;
-
- cout<<"Clusters:"<<endl;
- Int_t origslice=-1,counter=0;
- Float_t fpad,ftime,sigmaY2,sigmaZ2;
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
- {
- AliL3ClusterModel *cl = GetClusterModel(i);
-
- if(!IsPresent(i))
- {
- cout<<i<<" Empty"<<" Slice "<<cl->fSlice<<" Padcrossing "<<GetPadHit(i)<<" Timecrossing "<<GetTimeHit(i)<<" ";
- //AliL3Transform::RawHLT2Global(xyz,cl->fSlice,i,GetPadHit(i),GetTimeHit(i));
- //cout<<i<<" slice "<<cl->fSlice<<" x "<<xyz[0]<<" y "<<xyz[1]<<" z "<<xyz[2];
- }
- else
- {
- GetPad(i,fpad);
- GetTime(i,ftime);
- GetSigmaY2(i,sigmaY2);
- GetSigmaZ2(i,sigmaZ2);
- if(counter==0)
- origslice=cl->fSlice;
- else if(cl->fSlice != origslice)
- cout<<"Change in slice "<<cl->fSlice<<" "<<origslice<<endl;
- cout<<i<<" Slice "<<cl->fSlice<<" Dpad "<<cl->fDPad<<" Dtime "<<cl->fDTime<<" Dcharge "<<cl->fDCharge;
- cout<<" sigmaY2 "<<sigmaY2<<" sigmaZ2 "<<sigmaZ2;
- cout<<" parsigmaY2 "<<GetParSigmaY2(i)<<" parsigmaZ2 "<<GetParSigmaZ2(i);
- cout<<" Pad "<<fpad<<" padhit "<<GetPadHit(i)<<" Time "<<ftime<<" timehit "<<GetTimeHit(i)<<" ";
- counter++;
- }
- cout<<endl;
- }
-}
-
-#ifdef do_mc
-void AliL3ModelTrack::SetClusterLabel(Int_t row,Int_t *trackID)
-{
- // sets cluster label
- AliL3ClusterModel *cl = GetClusterModel(row);
- cl->fTrackID[0] = trackID[0];
- cl->fTrackID[1] = trackID[1];
- cl->fTrackID[2] = trackID[2];
-#else
- void AliL3ModelTrack::SetClusterLabel(Int_t /*row*/,Int_t */*trackID*/)
-{
- // Does nothing if do_mc undefined
- return;
-#endif
-}
-
-#ifdef do_mc
-void AliL3ModelTrack::GetClusterLabel(Int_t row,Int_t *trackID)
-{
- // gets cluster label
- AliL3ClusterModel *cl = GetClusterModel(row);
- trackID[0] = cl->fTrackID[0];
- trackID[1] = cl->fTrackID[1];
- trackID[2] = cl->fTrackID[2];
-#else
- void AliL3ModelTrack::GetClusterLabel(Int_t /*row*/,Int_t */*trackID*/)
-{
- // Does nothing if do_mc undefined
- return;
-#endif
-}
-
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3OFFLINEDATACOMPRESSOR_H
-#define ALIL3OFFLINEDATACOMPRESSOR_H
-
-#include "AliL3RootTypes.h"
-#include "AliL3DataCompressor.h"
-
-class AliTracker;
-
-class AliL3OfflineDataCompressor : public AliL3DataCompressor {
-
- public:
- AliL3OfflineDataCompressor();
- AliL3OfflineDataCompressor(Char_t *path,Bool_t keep,Bool_t writeshape,Bool_t MI=kFALSE);
- virtual ~AliL3OfflineDataCompressor();
-
- void LoadData(Int_t event,Bool_t sp=kTRUE);
- void FillData(Int_t /*minhits*/,Bool_t /*expand*/) {return;};
- void WriteRemaining(Bool_t select);
-
- private:
- AliL3OfflineDataCompressor(const AliL3OfflineDataCompressor& /*ac*/) : AliL3DataCompressor() {;}
- AliL3OfflineDataCompressor& operator=(const AliL3OfflineDataCompressor& /*ac*/){return *this;}
-
- Bool_t fMarian; // is Marian TPC tracking used
- AliTracker *fTracker; //!
-
- void SelectRemainingClusters();
-
- ClassDef(AliL3OfflineDataCompressor,1)
-
-};
-
-#endif
# Constantin Loizides #
################################
-MODNAME = AliL3Comp
+MODNAME = AliHLTComp
ifndef ALIHLT_TOPDIR
ALIHLT_TOPDIR = $(shell pwd)/..
include $(ALIHLT_TOPDIR)/Makefile.conf
-SRCS = AliL3Modeller.cxx AliL3ClusterFitter.cxx \
- AliL3Compress.cxx AliL3DataCompressor.cxx AliL3CompressAC.cxx
+SRCS = AliHLTModeller.cxx AliHLTClusterFitter.cxx \
+ AliHLTCompress.cxx AliHLTDataCompressor.cxx AliHLTCompressAC.cxx
ifneq ($(ARCH),macosx)
## for macosx put into src as symbolic link
-SRCS += AliL3DataCompressorHelper.cxx AliL3ModelTrack.cxx
+SRCS += AliHLTDataCompressorHelper.cxx AliHLTModelTrack.cxx
endif
-ADD_C_OBJS = $(OBJDIR)/bitio.o $(OBJDIR)/errhand.o $(OBJDIR)/AliL3FitUtilities.o
+ADD_C_OBJS = $(OBJDIR)/bitio.o $(OBJDIR)/errhand.o $(OBJDIR)/AliHLTFitUtilities.o
ifeq ($(ALIHLT_USEPACKAGE),ROOT)
HDRS = $(SRCS:.cxx=.h) $(MODNAME)LinkDef.h
endif
ifeq ($(ALIHLT_USEPACKAGE),ALIROOT)
-SRCS += AliL3OfflineDataCompressor.cxx
+SRCS += AliHLTOfflineDataCompressor.cxx
HDRS = $(SRCS:.cxx=.h) $(MODNAME)LinkDef.h
OBJS = $(patsubst %.cxx,$(OBJDIR)/%.o,$(SRCS)) $(ADD_C_OBJS) $(DICTO)
endif
$(OBJDIR)/errhand.o: errhand.c
$(CXX) $(CXXFLAGS) -c -o $(OBJDIR)/errhand.o errhand.c
-$(OBJDIR)/AliL3FitUtilities.o: AliL3FitUtilities.c
- $(CXX) $(CXXFLAGS) -c -o $(OBJDIR)/AliL3FitUtilities.o AliL3FitUtilities.c
+$(OBJDIR)/AliHLTFitUtilities.o: AliHLTFitUtilities.c
+ $(CXX) $(CXXFLAGS) -c -o $(OBJDIR)/AliHLTFitUtilities.o AliHLTFitUtilities.c
$(OBJDIR)/bitio.sto: bitio.c
$(CXX) $(PROFILEFLAGS) $(CXXFLAGS) -c -o $(OBJDIR)/bitio.sto bitio.c
$(OBJDIR)/errhand.sto: errhand.c
$(CXX) $(PROFILEFLAGS) $(CXXFLAGS) -c -o $(OBJDIR)/errhand.sto errhand.c
-$(OBJDIR)/AliL3FitUtilities.sto: AliL3FitUtilities.c
- $(CXX) $(PROFILEFLAGS) $(CXXFLAGS) -c -o $(OBJDIR)/AliL3FitUtilities.sto AliL3FitUtilities.c
+$(OBJDIR)/AliHLTFitUtilities.sto: AliHLTFitUtilities.c
+ $(CXX) $(PROFILEFLAGS) $(CXXFLAGS) -c -o $(OBJDIR)/AliHLTFitUtilities.sto AliHLTFitUtilities.c
if(1)
{
gSystem->Load("$(LEVEL3)/kip/MLUC/lib/linux-i386/libMLUC.so");
- gSystem->Load("$(LEVEL3)/lib_$(USERNAME)/libAliL3");
- gSystem->Load("$(LEVEL3)/lib_$(USERNAME)/libAliL3Hough");
- gSystem->Load("$(LEVEL3)/lib_$(USERNAME)/libAliL3Comp");
+ gSystem->Load("$(LEVEL3)/lib_$(USERNAME)/libAliHLT");
+ gSystem->Load("$(LEVEL3)/lib_$(USERNAME)/libAliHLTHough");
+ gSystem->Load("$(LEVEL3)/lib_$(USERNAME)/libAliHLTComp");
cout<<"HLT libraries loaded"<<endl;
}
gROOT->LoadMacro("$(HOME)/alirootcode/XFunct.C");
exa ............ sample macros showing how to use the code
kalman ......... (not usable at the moment)
Makefile.conf .. checks environment for ALIHLT_* variables
-misc ........... lib AliL3Misc (different helper classes)
+misc ........... lib AliHLTMisc (different helper classes)
sim ............ (not usable at the moment)
trigger ........ (not usable at the moment)
-comp ........... lib AliL3Comp (compression and deconvolution)
+comp ........... lib AliHLTComp (compression and deconvolution)
doc ............ hopefully contains information
-hough .......... lib AliL3Hough (different hough transforms)
+hough .......... lib AliHLTHough (different hough transforms)
Makefile ....... main makefile (use make libs to compile all libs)
Makefile.rules . most of the rules for all libs
programs ....... sample programs showing how to use the code
-src ............ main lib AliL3Src (transformer, tracker and clusterer)
+src ............ main lib AliHLTSrc (transformer, tracker and clusterer)
The compilation is controlled by the following variables:
2003-07-29 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/bin/sethlt_cern.csh, /alice/cvs/hltcvs/level3code/bin/sethlt_cern.sh, /alice/cvs/hltcvs/level3code/bin/sethlt.csh, /alice/cvs/hltcvs/level3code/bin/sethlt.sh, /alice/cvs/hltcvs/level3code/bin/usehlt.csh, /alice/cvs/hltcvs/level3code/bin/usehlt.sh:
- Removed ASV version, as the new AliL3FileHandler does not need (but still would be faster using the patched AliTPC class).
+ Removed ASV version, as the new AliHLTFileHandler does not need (but still would be faster using the patched AliTPC class).
2003-07-27 Constantin Loizides <loizides@hansa00>
2004-05-12 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.c:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.c:
Removed further warnings (gcc-2).
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.c, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.c, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.h:
Removed warnings.
2004-05-11 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3CompressAC.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3CompressAC.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompressAC.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompressAC.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx:
Changes to compile standalone.
2004-05-10 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.h:
Removed every dependency to TMath, so that code compiles for STANDALONE version.
2004-04-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliL3CompressAC.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3CompressAC.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
- Included new class AliL3CompressAC in the library. This class is invoked
- by default in the AliL3DataCompressor, and can be toggled by the argument
- in AliL3DataCompressor::CompressAndExpand(bool).
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompressAC.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompressAC.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
+ Included new class AliHLTCompressAC in the library. This class is invoked
+ by default in the AliHLTDataCompressor, and can be toggled by the argument
+ in AliHLTDataCompressor::CompressAndExpand(bool).
2004-04-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3CompressAC.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3CompressAC.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompressAC.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompressAC.h:
New class implementing aritmetic coding of the quantized residual
information in the data compression scheme. The class derives from
- AliL3Compress, and is hence interfaced in the same way.
+ AliHLTCompress, and is hence interfaced in the same way.
2004-03-20 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx:
Removed GCCVERSION string from code. Replaced by compiler internal
macro __GNUC__ which is 3 for gcc version >3.
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h:
Added zvertex.
2004-02-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h:
Added some additional printout features in PrintCompRatio.
2004-02-25 Constantin Loizides <loizides@hansa00>
2004-02-17 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
Added a flag in Init function to test whether this function has been
called by the same object before. If that is the case, all internal
arrays needs to be cleared before filling them again. Such a check is
- necessary e.g. when using AliL3TrackArray::RemoveLast in which the
+ necessary e.g. when using AliHLTTrackArray::RemoveLast in which the
object is _not_ deleted, but merely reused.
2004-02-07 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx:
- Two function calls changed to reflect latest changes in AliL3Transform.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx:
+ Two function calls changed to reflect latest changes in AliHLTTransform.
2004-02-05 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
Cosmetic change.
- * /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h:
Included previously removed code in the WriteRemaining and ReadRemaining
functions, which keeps the possibility of _not_ compressing the remaining
clusters but storing them as is, meaning with a full floating point
to run the chain without compressing any of the data. Also for debugging
purposes only.
- * /alice/cvs/hltcvs/level3code/comp/AliL3Models.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h:
Reflecting the latest changes in compressing remaining clusters.
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.h:
Added possibility to externallly specify which precision to store
- the remaining clusters in the AliL3Compress::CompressRemaining function.
+ the remaining clusters in the AliHLTCompress::CompressRemaining function.
This is done by setting the number of bits in
- AliL3DataCompressorHelper::SetRemainingBitNumbers.
+ AliHLTDataCompressorHelper::SetRemainingBitNumbers.
2004-01-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
- Changing the names of data members AliL3ClusterModel::fDSigmaY2 and fDSigmaZ2
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
+ Changing the names of data members AliHLTClusterModel::fDSigmaY2 and fDSigmaZ2
to fDSigmaY and fDSigmaZ, in order to reflect the fact that their are really
the sigmas and not sigma squared.
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx: Bugfix.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx: Bugfix.
2004-01-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx: Bugfix.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx: Bugfix.
2004-01-24 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx:
Bugfix
- * /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h:
Added function to make a pass over the data and calculate how many bits
is required to encode the residuals (assuming no further compression).
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h:
Added function to calculate entropy of the quantized residuals.
2004-01-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
- Changed back to the old method for quantizing the residuals, since
there appeared some strange behaviour when running the code in multi-event
mode. It still remains a mystery, so this problem has been postponed and will
be solved sometime in the future.
- Removed some obsolute code as a result of moving the handling of remaining
- clusters from AliL3DataCompressor to AliL3Compress.
+ clusters from AliHLTDataCompressor to AliHLTCompress.
2004-01-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressorHelper.h, /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.h:
- Introduced new class AliL3DataCompressorHandler, which is static
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressorHelper.h, /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.h:
+ Introduced new class AliHLTDataCompressorHandler, which is static
and capsulates all static calls from the former Compressor
class in order to remove some very nasty dependencies.
The other classes had to be adapter to call the
right static function.
- * /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
Changes to compile for MACOSX at core Makefiles. Check for
$(ARCH) and -D$(ARCH). In order to solve cyclic dependencies
for libs (which is _very_ bad, but the Linux linker is friendly)
we dont do at the moment. SO: Linux users should see _NO_
difference!!!
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx:
Paranoic change :-)
2004-01-09 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
New functions for quantization of pad and time.
2004-01-03 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx:
- Writing remaining clusters to file is now moved to AliL3Compress class.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx:
+ Writing remaining clusters to file is now moved to AliHLTCompress class.
The clusters are now written using the bitio functions, as the data sizes
used has been minimized.
2004-01-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx:
- Modified how the remaining clusters are written (this will probably change
again soon).
- Added seperate fields for storing the pad and time shape -> can specify
2003-12-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx:
Changed the track parameters in the compression scheme. There are now 5
floats (instead of 6) used to encode the properties of the helix. These
- are defined (as before) in AliL3Models.h.
+ are defined (as before) in AliHLTModels.h.
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.c:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.c:
- Removed obsolute code
- - Bugfix in the fitting routing in AliL3FitUtilities.
+ - Bugfix in the fitting routing in AliHLTFitUtilities.
- Small change in how the fit range in the padrow plane is estimated.
2003-11-18 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx:
This class has to be reworked in order to compile with newer AliRoot versions after june 2003. In order to keep it in the repository I added a define asvversion, which has to MANUALLY be set, if one wants to use that class. The changes are in principle ease, one has to check the interface to the tracker classes and the positions are indicated by the defines.
2003-11-13 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx:
Added additional data written to file
- * /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h:
Added some additional data members and storage
2003-11-12 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h:
Main changes:
- New function LocalLocalSegments, for local (patch-like) tracks segments.
- Some changes in search ranges and fit ranges.
2003-09-18 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx:
Commented compile breaking due to aliroot changes.
2003-08-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx:
- - Removed field fNClusters from AliL3TrackModel. The reason is the new scheme
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx:
+ - Removed field fNClusters from AliHLTTrackModel. The reason is the new scheme
were the number of clusters is _not_ written for every track. Instead, we assume
a potential number of clusters which is equal to the number of padrows in the
patch/slice (this number then needs not to written). Then we denote whether a
cluster is present or not by writing 1 bit for every padrow.
- - The residual quantization (stored in AliL3DataCompressor) is now specified
+ - The residual quantization (stored in AliHLTDataCompressor) is now specified
for the three different pad sizes.
- * /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3OfflineDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTOfflineDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
Splitted handling of offline-data compression and HLT-data compression.
- For offline-data input the new class AliL3OfflineDataCompressor is used.
- This class is a child of AliL3DataCompressor, and has the exact same interface.
+ For offline-data input the new class AliHLTOfflineDataCompressor is used.
+ This class is a child of AliHLTDataCompressor, and has the exact same interface.
2003-07-26 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx:
Changes to compile standalone.
* /alice/cvs/hltcvs/level3code/comp/Makefile:
2003-07-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx:
Added html tags
2003-07-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h, /alice/cvs/hltcvs/level3code/comp/bitio.h, /alice/cvs/hltcvs/level3code/comp/errhand.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h, /alice/cvs/hltcvs/level3code/comp/bitio.h, /alice/cvs/hltcvs/level3code/comp/errhand.h:
Added html tags for documentation.
2003-07-21 Constantin Loizides <loizides@hansa00>
2003-07-09 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.h, /alice/cvs/hltcvs/level3code/comp/bitio.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.h, /alice/cvs/hltcvs/level3code/comp/bitio.h:
Added extern "C" decleration of the C functions which are used in C++ classes.
This was obviously not strictly necessary in some compilers later than 2.95,
but when compiling with 2.95 I was not able to link anymore. And it also
2003-07-02 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx:
Added gccversion check.
2003-07-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h:
- Changed pointer to input data from AliL3MemHandler to AliL3SpacePointData.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h:
+ Changed pointer to input data from AliHLTMemHandler to AliHLTSpacePointData.
In addition a array of int holding the number of clusters in each
- subsector is provided. Same thing as being done in e.g. AliL3Fitter.
+ subsector is provided. Same thing as being done in e.g. AliHLTFitter.
Added option to process on patch-level for various reason. This option
is controlled by the flag fSinglePatch set in LoadData, and should only
be used with care, since there are some functions which expects whole
slices; these have to be changed when running fSinglePatch=0.
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h:
Forgot this one last time
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx:
Cosmetic changes only
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx:
Changed the return of most functions ot boolean, in order to perform
external checks when things are not working.
Also changed the comparison of original data to those of 8 bit data, and
2003-06-04 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.c:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.c:
Stop writing error messages all the time
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx:
- Fixed a memory leakage problem in FitClusters.
- In LoadSeeds, enable the possibility of track extending over 3
sectors.
2003-05-14 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx:
Minor updates connected to last checkin.
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
Stable version again. Taking offline tracks as input for cluster fitting seem
to work now. However, when finding and fitting clusters this way, and using
these clusters as input for compression, the final offline tracking
2003-05-08 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h:
Bugfix. In CheckCluster one has to check whether a fit attempt
has been done by track->IsSet(row). This was earlier done in FitClusters,
but this produced some memory leakage.
2003-04-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx:
Bugfix in CalculateClusterWidths
2003-04-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
Changes:
- - AliL3ClusterFitter/AliL3ModelTrack :
- One bit in AliL3ClusterModel::fPresent is reserved for fit attempt
- - Enable multiple event handling in AliL3DataCompressor
+ - AliHLTClusterFitter/AliHLTModelTrack :
+ One bit in AliHLTClusterModel::fPresent is reserved for fit attempt
+ - Enable multiple event handling in AliHLTDataCompressor
- * /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h:
Added function LoadOfflineData, which allows to use offline
reconstruced tracks as input for the compression.
2003-04-18 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
- Mostly cleaning up and making nicer code. Some changes in AliL3ClusterFitter:
- -WriteClusters has been moved from AliL3Modeller.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
+ Mostly cleaning up and making nicer code. Some changes in AliHLTClusterFitter:
+ -WriteClusters has been moved from AliHLTModeller.
-Implementation of seeds coming from tracking in outer padrows.
2003-04-14 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
New version of compression classes. The main changes are:
- - AliL3DataCompressor has been completely rewritten. Instead of
+ - AliHLTDataCompressor has been completely rewritten. Instead of
storing remaining digits, the remaining clusters are stored. Also,
the remaining clusters which are stored can be cleaned,
meaning that one only stores clusters which are on certain padrows.
In particular one stores everything which is on
padrows used for seeding in offline.
- - New data structures for remaining clusters in AliL3Models.h
- - Some bugfixes in AliL3ModelTrack. In CalculateClusterWidths,
+ - New data structures for remaining clusters in AliHLTModels.h
+ - Some bugfixes in AliHLTModelTrack. In CalculateClusterWidths,
one can specify a flag to parametrize cluster errors from
the cluster widths.
2003-03-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx:
- Removed cluster charge field from the AliL3TrackModel, since it is
- not used anyhow. Some fixes in AliL3ModelTrack, most important one
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx:
+ Removed cluster charge field from the AliHLTTrackModel, since it is
+ not used anyhow. Some fixes in AliHLTModelTrack, most important one
a bug in destructor where not everything was deleted.
2003-02-24 Constantin Loizides <loizides@hansa00>
2003-02-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.c, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.c, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
Checking in all changes which gas been done the latest month.
Basically a lot of rewrites, specially in the cluster fitter class.
All code was tagged before this checkin.
2002-11-12 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.c, /alice/cvs/hltcvs/level3code/comp/AliL3FitUtilities.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTClusterFitter.h, /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.c, /alice/cvs/hltcvs/level3code/comp/AliHLTFitUtilities.h:
Checking in the seeds of new cluster fitting code.
2002-10-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx:
More or less working version now. Everything is handled in the
- AliL3DataCompressor class. Remaining digits are written to rootfile
- and processed by the offline cluster finder. In AliL3Modeller::CheckCluster
+ AliHLTDataCompressor class. Remaining digits are written to rootfile
+ and processed by the offline cluster finder. In AliHLTModeller::CheckCluster
it is also checked how big/small the cluster is in order not to save
overlapping/noise clusters.
2002-10-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3DataCompressor.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTDataCompressor.h, /alice/cvs/hltcvs/level3code/comp/Makefile:
New interface class for the compression classes.
Contains all the functions needed to do the different
steps; modelling - compressing - uncompressing - running offline etc.
2002-10-17 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h:
Changed parameters of WriteRootFile
2002-10-14 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h:
- Added new function AliL3Modeller::CheckCluster. Function checks if the
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h:
+ Added new function AliHLTModeller::CheckCluster. Function checks if the
cluster corresponding to a certain track crossing point is a good cluster;
if it is isolated and only 1 peak. If not, cluster is saved as remaining
digits.
2002-10-11 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
- Can print compression ratio to file in AliL3Compress::PrintCompRatio.
- Minor changes to AliL3Modeller; differ between fTimeOverlap (pad)
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
+ Can print compression ratio to file in AliHLTCompress::PrintCompRatio.
+ Minor changes to AliHLTModeller; differ between fTimeOverlap (pad)
and fTimeSearch (newly added boolean). The latter is used when searhcing
for a cluster around the track crossing point, while the first is only
used when checking for overlaps.
2002-10-04 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
Some changes resulting from last week work. The mc stuff has been removed.
Added possibility to not save the width when compressing file; this is one
- by setting the flag AliL3Compress::fWriteShape.
+ by setting the flag AliHLTCompress::fWriteShape.
The status of the code is that it seems to be more or less working. The
efficiency drops a little bit when running it through offline, but this
is mainly because overlapping clusters are not deconvoluted, and 2 clusters
found by the offline cluster finder will be 1 cluster after compressing/
decompressing. The only way to get rid of this, is to include some
- deconvolution in the AliL3Modeller::FindClusters.
+ deconvolution in the AliHLTModeller::FindClusters.
2002-08-25 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/Makefile:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/Makefile:
Little changes to make g++ version 3.2 compile the comp library.
2002-07-11 Constantin Loizides <loizides@hansa00>
2002-07-05 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
Added possibility to compile and run with mc information. This was done
- by adding a new data member to AliL3ClusterModel (in AliL3Models.h), and
- a function AliL3Modeller::GetTrackID.
+ by adding a new data member to AliHLTClusterModel (in AliHLTModels.h), and
+ a function AliHLTModeller::GetTrackID.
2002-07-02 Constantin Loizides <loizides@hansa00>
2002-05-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h:
Forgot this one last time...
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx: Latest version
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx: Latest version
2002-05-30 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/bitio.c, /alice/cvs/hltcvs/level3code/comp/bitio.h, /alice/cvs/hltcvs/level3code/comp/errhand.c, /alice/cvs/hltcvs/level3code/comp/errhand.h:
- Changes to make AliL3Compress work with new AliL3MemHandler::Init.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/bitio.c, /alice/cvs/hltcvs/level3code/comp/bitio.h, /alice/cvs/hltcvs/level3code/comp/errhand.c, /alice/cvs/hltcvs/level3code/comp/errhand.h:
+ Changes to make AliHLTCompress work with new AliHLTMemHandler::Init.
2002-05-22 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/comp/run.C: Macro that should lie in exa
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3Models.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h, /alice/cvs/hltcvs/level3code/comp/bitio.c:
- Moving to static AliL3Transform.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h, /alice/cvs/hltcvs/level3code/comp/bitio.c:
+ Moving to static AliHLTTransform.
Some changes has been made since last checkin;
some smaller bugfixes everywhere. The number of pads in a cluster is stored,
because there are some cluster containing only 1 pad which create problems
* /alice/cvs/hltcvs/level3code/comp/Makefile:
Can compile with or without aliroot.
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
- A bugfix in AliL3Modeller::FindClusters. Changed parameter list in AliL3ModelTrack::GetParSigma**. Added function AliL3Compress::PrintCompRatio.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
+ A bugfix in AliHLTModeller::FindClusters. Changed parameter list in AliHLTModelTrack::GetParSigma**. Added function AliHLTCompress::PrintCompRatio.
2002-03-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h:
- Major bugfix in AliL3Compress::WriteRestoredData(). Also added naming conventions on the various data files.
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h:
+ Major bugfix in AliHLTCompress::WriteRestoredData(). Also added naming conventions on the various data files.
2002-03-15 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h:
Checking in for the weekend. Compressing/uncompressing works. Restoring data - building clusters seem to work, at least for one track.
2002-02-05 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/comp/Makefile: Minor updates
- * /alice/cvs/hltcvs/level3code/comp/AliL3Models.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModels.h:
Data structures for track and clusters
* /alice/cvs/hltcvs/level3code/comp/run.C: Example how to run script
- * /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h:
Checking in for the weekend
2002-01-31 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/comp/bitio.h, /alice/cvs/hltcvs/level3code/comp/errhand.c, /alice/cvs/hltcvs/level3code/comp/errhand.h, /alice/cvs/hltcvs/level3code/comp/bitio.c:
Functions for bitio. Taken as is from The Data Compression Book
- * /alice/cvs/hltcvs/level3code/comp/AliL3Compress.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Compress.h:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTCompress.h:
Class for doing model compression
2002-01-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/comp/AliL3CompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.h, /alice/cvs/hltcvs/level3code/comp/Makefile, /alice/cvs/hltcvs/level3code/comp/rootlogon.C, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.h, /alice/cvs/hltcvs/level3code/comp/AliL3ModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliL3Modeller.cxx:
+ * /alice/cvs/hltcvs/level3code/comp/AliHLTCompLinkDef.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.h, /alice/cvs/hltcvs/level3code/comp/Makefile, /alice/cvs/hltcvs/level3code/comp/rootlogon.C, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.h, /alice/cvs/hltcvs/level3code/comp/AliHLTModelTrack.cxx, /alice/cvs/hltcvs/level3code/comp/AliHLTModeller.cxx:
Started classes for modeling and compression
2003-07-29 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/doc/README:
- Removed ASV version, as the new AliL3FileHandler does not need (but still would be faster using the patched AliTPC class).
+ Removed ASV version, as the new AliHLTFileHandler does not need (but still would be faster using the patched AliTPC class).
2003-07-27 Constantin Loizides <loizides@hansa00>
2003-10-10 Thomas Vik <tvik@hansa00>
* /alice/cvs/hltcvs/level3code/exa/runkalman.C:
- Added call to function AliL3Transform::Init.
+ Added call to function AliHLTTransform::Init.
2003-10-02 Anders Strand Vestbo <vestbo@hansa00>
Added check for pileup event to have more than 5 tracks.
* /alice/cvs/hltcvs/level3code/exa/rootlogon.C:
- Default is AliL3Logger now
+ Default is AliHLTLogger now
2003-04-14 Constantin Loizides <loizides@hansa00>
2003-03-05 Thomas Vik <tvik@hansa00>
* /alice/cvs/hltcvs/level3code/exa/trigger_pp.C:
- Added AliL3Evaluate::AssignIDs function.
+ Added AliHLTEvaluate::AssignIDs function.
2003-03-05 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/exa/trigger_pp.C:
- Added eval_pp function as a quick reference how to use the AliL3Eval class.
+ Added eval_pp function as a quick reference how to use the AliHLTEval class.
2003-03-03 Constantin Loizides <loizides@hansa00>
Copy of Anders rootlogin.
* /alice/cvs/hltcvs/level3code/exa/make_init.C:
- Not needed -> see AliL3Transform::MakeInit().
+ Not needed -> see AliHLTTransform::MakeInit().
2003-02-21 Thomas Vik <tvik@hansa00>
Moved Binary.C to binary.C.
* /alice/cvs/hltcvs/level3code/exa/Display.C:
- Deleted as functionality is now in dislplay.C and AliL3Display class.
+ Deleted as functionality is now in dislplay.C and AliHLTDisplay class.
* /alice/cvs/hltcvs/level3code/exa/make_init.C, /alice/cvs/hltcvs/level3code/exa/Make_Init.C:
Moved Make_Init.C to make_init.c.
2002-09-02 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/exa/Make_Init.C:
- Moved this functionaly to a functio in AliL3Transform::MakeInitFile.
- This macro can now be used to create default values for AliL3Transform.cxx.
+ Moved this functionaly to a functio in AliHLTTransform::MakeInitFile.
+ This macro can now be used to create default values for AliHLTTransform.cxx.
2002-08-29 Constantin Loizides <loizides@hansa00>
2002-06-10 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/exa/Binary.C:
- Make singlepatch work with new AliL3Transform.
+ Make singlepatch work with new AliHLTTransform.
2002-05-29 Anders Strand Vestbo <vestbo@hansa00>
Renamed houghtest.C to runhough.C
* /alice/cvs/hltcvs/level3code/exa/houghtest.C:
- Some minor changes in AliL3Hough
+ Some minor changes in AliHLTHough
2002-05-24 Constantin Loizides <loizides@hansa00>
2002-04-26 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/exa/Binary.C, /alice/cvs/hltcvs/level3code/exa/Make_Init.C:
- Changes as a result of making AliL3Transform static.
+ Changes as a result of making AliHLTTransform static.
2002-04-23 Anders Strand Vestbo <vestbo@hansa00>
2001-05-03 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/exa/Eval.C:
- Example how to use AliL3Evaluate class
+ Example how to use AliHLTEvaluate class
2001-05-01 Uli Frankenfeld <franken@hansa00>
2001-04-06 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/exa/eval.C: Exampel to use AliL3Evaluate
+ * /alice/cvs/hltcvs/level3code/exa/eval.C: Exampel to use AliHLTEvaluate
2001-03-26 Uli Frankenfeld <franken@hansa00>
2004-05-12 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerRow.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerRow.cxx:
Added define for AliHLTReconstructor.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Added ifdefs for new_io runloader handling.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
changed abs to fabs.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerRow.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerRow.cxx:
Removed further compiler warnings.
2004-05-11 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx:
Removed compiler warnings.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
Needed to compile standalone.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerRow.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerRow.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerRow.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerRow.h:
Newer, much faster and very efficient HT on rows (Cvetan).
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.h:
Added binsizes and proper setting of most parameters.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h:
Added Cvetans Peakfinder.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx:
Added support for runloader, and Cvetans Hough Transform and PeakFinder (version 4).
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Added support for runloader.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Take bin values at borders.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
Removed gcc warning.
2004-05-07 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Needed to compile in aliroot.
2004-04-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerRow.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerRow.cxx:
Make code compilable without specifying the ROWHOUGH compiling option
2004-03-28 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h:
Added old type for label.
2004-03-20 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerNew.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerRow.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerNew.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerRow.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx:
Removed GCCVERSION string from code. Replaced by compiler internal
macro __GNUC__ which is 3 for gcc version >3.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h:
Added zvertex.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Added new row transformer (using special peakfinder method)
Added in addition support for reading data directly from
DATE, so that this version of hough transform can run directly
on the GDCs or during some data challenges for testing.
(changed methods init and constructor)
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Added GetPreciseBinCenter functions.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx:
Cosmetics.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h:
Added FindAdaptedRowPeaks function for row transformer.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
Added ROWHOUGH def for mc label.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h:
Added zvertex information.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
Added new row transformer and removed old gap transformer.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGap.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGap.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerRow.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerRow.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGap.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGap.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerRow.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerRow.h:
Added Cvetans new version of fast Hough Transform called "Counting
Gaps and Rows." The idea is to count the number of consecutive rows
over gaps per entry of the Hough space. (The old version called
- AliL3HoughTransformGap is removed.)
+ AliHLTHoughTransformGap is removed.)
2004-02-12 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGap.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGap.cxx:
Forgot to implement to virtual functions.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGap.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGap.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGap.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGap.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
Added new transformer which is counting gaps in rows. not really tested yet.
2004-02-10 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Bugfix in multievent handling reading from aliroot-files:
- Before reading a new event, AliL3FileHandler::FreeDigitsTree() has
+ Before reading a new event, AliHLTFileHandler::FreeDigitsTree() has
to be called, otherwise the same event is read again.
2004-02-04 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
- Removed occurencence of static and non const values like pi and BFACT. Use instead const functions given by AliL3Transform.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
+ Removed occurencence of static and non const values like pi and BFACT. Use instead const functions given by AliHLTTransform.
2004-02-03 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h:
Faster histo access.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Bugfix for gcc-3.2; and fast filling methods, added switch to omit boundary checks, should be checked.
2004-02-02 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerNew.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerNew.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
Reworked the LUT version of the Hough Transform. This should be the default transformer now, it is 3 times faster than the normal transformer. It produces almost the same peaks, in a central event, a few differ. The reason seems to be due to rounding. The efficiency of the deconvoluter is verified to be the same, too.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Added ostream& <<operator for debugging purposes, because of that changed most get member function to const.
2004-01-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
Changes to compile for MACOSX at core Makefiles. Check for
$(ARCH) and -D$(ARCH). In order to solve cyclic dependencies
for libs (which is _very_ bad, but the Linux linker is friendly)
2003-11-18 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h:
- Added an extra argument to function AliL3HoughMaxFinder::FindAdaptedPeaks.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h:
+ Added an extra argument to function AliHLTHoughMaxFinder::FindAdaptedPeaks.
2003-11-18 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Added support for different file types such as root, binary and DDL files.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
Commented to get rid of a compiler warning here.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
Changed argument in CreateHistograms from Double to Float.
2003-11-13 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx:
Minor changes.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.h:
Smaller bugfixes, nothing important
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
Bugfix in FindAdaptedPeaks
2003-11-12 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
Checking in latest changes. The code is at the moment quite messy, but so is my head.
Main changes:
- - The AliL3Hough class has some new functions.
+ - The AliHLTHough class has some new functions.
-SetTransformerParams, which basically sets the parameters of the histograms.
-SetPeakThreshold()
-AddTracks which adds the tracks to a global array (called for each slice)
- - Default peak finder algorithm is now AliL3HoughMaxFinder::FindAdaptedPeaks().
+ - Default peak finder algorithm is now AliHLTHoughMaxFinder::FindAdaptedPeaks().
2003-10-03 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx:
Bugfix in the calculation of bin size in kappa.
The bin size should be 2*delta_pt, since the size of one bin
is +-1/2*delta_pt.
2003-08-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
- Bugfix from last changes of AliL3HistogramAdaptive. Also some minor
- changes in AliL3Histogram class.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
+ Bugfix from last changes of AliHLTHistogramAdaptive. Also some minor
+ changes in AliHLTHistogram class.
2003-08-17 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.h:
Added a LUT in order to speed up retrieval of bin numbers.
2003-08-12 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx:
- Follow change in base class AliL3Merger.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx:
+ Follow change in base class AliHLTMerger.
2003-07-28 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx:
Added std for gcc-3
2003-07-26 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/Makefile.standalone:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/Makefile.standalone:
Removed, use ALIHLT_USEPACKAGE=STANDALONE instead.
2003-07-25 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/hough/Makefile:
Changes to reflect the new makefile strategy.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.cxx:
g++ 3.3.1 requires explicit cast.
2003-07-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerNew.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerNew.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerNew.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerNew.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/Makefile:
Added html tags for documentation. Some of the classes has also undergone
smaller modifications, - hopefully not too critical.
2003-07-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.h, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerNew.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerNew.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
Added html tags for documentation.
2003-07-21 Constantin Loizides <loizides@hansa00>
2003-07-14 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.h:
Bugfix and some changes. Changes in the code which caclculates border line
where to do the transform.
2003-07-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx:
Changed Draw function, because it didn't work.
2003-07-02 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx:
Changes for gcc-3.3; solved some virtual overload function ambiguosities.
2003-05-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerGlobal.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerGlobal.h:
Transform global regions
2003-05-13 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx:
Little bug fix.
2003-04-25 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
Bugfix in Max Finder borders thanks to Sondre.
2003-02-26 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h:
Optimize for speed.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Added adding of a one but commented it out again.
2003-02-24 Constantin Loizides <loizides@hansa00>
2003-02-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
Checking in all the changes for the last couple of months.
All files were tagged prior to this checkin.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerNew.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerNew.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerNew.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerNew.h:
3D transform
2003-02-05 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Set fDoMC to kFALSE in ctor. Also fill the charge in the transform.
2003-01-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h:
Commented class which is defined in Makefile
2003-01-17 Anders Strand Vestbo <vestbo@hansa00>
2003-01-16 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx:
Minor bugfix
2002-12-17 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.h:
Generate data now in 3 dimensions. This means that the clusters
are really 2d for every padrow. Timedirection is gauss smeared
according to the drift distance.
2002-12-16 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.h:
Several bugfixes
2002-12-10 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTest.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTest.h:
Checking in code which until now only existed as macros in my
home directory. The class contains functions to generate data,
which should resemble tpc rawdata without any geant stuff in of
2002-12-09 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.h:
Seems to be working properly now.
2002-11-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx:
Fill charge as default
2002-11-15 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx:
Added Kappa information.
2002-11-13 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx:
Changes to show that do_mc is not yet working. Everything else is and was working now.
2002-10-01 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
- Added new function AliL3Hough::MergeEtaSlices which merges tracks which
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
+ Added new function AliHLTHough::MergeEtaSlices which merges tracks which
appear in 2 neighbouring eta slices. The tracks are matching if they have
identical kappa and psi; they appear in the same bin. The one with the
lower threshold are removed from the track array.
- There is also a bugfix in AliL3HoughTransformer::GetEta, the sign should
+ There is also a bugfix in AliHLTHoughTransformer::GetEta, the sign should
not be swicthed on the other half of TPC, because the sign is already included
in the (GetEtaMax() - GetEtaMin()).
- Also the DoMC flag in the AliL3HoughTransformer ctor.
+ Also the DoMC flag in the AliHLTHoughTransformer ctor.
2002-09-05 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
Changes done for new aliroot version. Faster calculation through saving LUT for kappa.
2002-09-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx:
- Read from rootfile called digitfile.root in AliL3Hough.cxx.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx:
+ Read from rootfile called digitfile.root in AliHLTHough.cxx.
Bugfix in the rest.
2002-08-29 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx: Cosmetic.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx: Cosmetic.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx:
Added default values to default constructor.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
New VHDL transformer code. Implemented iterative approach. Old code moved locally to *.old.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h:
Small bugfix concerning calculation of eta.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Added LUT transformer and new function to set parameter for VHDL transformer.
2002-08-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
- Include AliL3StandardIncludes.h in AliL3HistogramAdaptive as well, and not in AliL3Histogram.h
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
+ Include AliHLTStandardIncludes.h in AliHLTHistogramAdaptive as well, and not in AliHLTHistogram.h
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h:
Made Constantins last checkin compile ;-)
2002-08-25 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx:
Little changes to make g++ version 3.2 compile the hough library.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
- Merged version. Bug still remains. New implementation started with AliL3HoughTransformerLUT.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
+ Merged version. Bug still remains. New implementation started with AliHLTHoughTransformerLUT.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerLUT.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerLUT.h:
Fast Hough transformer using extensivle LUT for geometry and cos/sin functions.
2002-08-24 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Some new changes in the adaptive histogram. Binsize in kappa are determined
- from a given Pt resolution. Changes in AliL3Histogram class in order to make
+ from a given Pt resolution. Changes in AliHLTHistogram class in order to make
the corresponding functions virtual, and the data members protected.
2002-08-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Another bugfix connected to fTrackID histograms
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
Added private data member Bool_t fDoMC, in order to control the mc
information storage. Default is switched off, because it currently
uses _a lot_ of memory.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Bugfix from the last checkin
2002-08-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx:
- Cosmetic changes, and a new function AliL3Hough::ProcessPatchIter.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx:
+ Cosmetic changes, and a new function AliHLTHough::ProcessPatchIter.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
Cosmetic changes.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
Added mc functionality. If compiled with do_mc flag, the transformer will
fill arrays which are similar to the histograms with the particle id's
of the digits. The corresponding id of a given bin in a histogram, can
- be obtained by the function AliL3HoughTransformer::GetTrackID. The id
+ be obtained by the function AliHLTHoughTransformer::GetTrackID. The id
returned is the id with the most hits in the corresponding bin.
2002-08-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HistogramAdaptive.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogramAdaptive.h:
New histogram class in order to have a nonlinear binsize.
2002-08-09 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughClusterTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughClusterTransformer.h:
New toy class which works on clusters found by the fast cluster finder.
Not included in Makefiles yet.
2002-08-08 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx:
Also add the number of entries when adding 2 histograms.
2002-08-07 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Changed the content array (fContent) of the histogram to integers
instead of double. In principle only integer is needed, and I really
don't remember now why I set it to be double.
2002-08-01 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
Slice information is needed by the transformer in
- AliL3HoughTransformer::GetEta, because the the sign
+ AliHLTHoughTransformer::GetEta, because the the sign
of the eta changes on the other half of the TPC.
- Minor change in AliL3HoughMaxFinder; adjusted the
+ Minor change in AliHLTHoughMaxFinder; adjusted the
interface of FindPeak1 in order to be consistent.
2002-07-31 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
- Get the BField from AliL3Transform. This was hardcoded up to now.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
+ Get the BField from AliHLTTransform. This was hardcoded up to now.
2002-07-11 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h:
New code which is much closer to the possible VHDL implementation. Should also be considerably faster (40 percent) than the normal transformer, but unfortunately has some bugs.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Little changes to make it work with GetEta function of HoughTransformer. Also litte changes to make it work and debug with the VHDL Hough Transformer.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
Little changes to make it work with new base class.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h:
Added virtual function Init for setting the slice, patch and n_eta_seg information. Also have GetEta function which calculates eta according to slice info (minus sign) and Print function for debugging to get the parameters used by the VHDL Transformer.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h:
Changes for independant library of standalone l3 code.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h:
Removed Clusterfinder class from link list.
* /alice/cvs/hltcvs/level3code/hough/Makefile:
2002-07-08 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
New function, CreateRootHisto(). Just to seperate it from Draw
2002-07-05 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Merging my version with Constantins last checkin.
New function added EvaluatePatch(), which only looks
in 1 patch, instead of globally looking at the slice.
- Small bugfix in AliL3HoughEval.
+ Small bugfix in AliHLTHoughEval.
2002-07-05 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Added function SetTransformerParams for setting Histogram Parameters of Transformer. And some litte code cleanups, see Init function.
2002-07-02 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
Gradient check reverted, but also commented out.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.h:
Have definable geometry file.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Add version support for vhdl hough.
* /alice/cvs/hltcvs/level3code/hough/Makefile:
2002-05-31 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
- Some changes in AliL3Hough::Evaluate. Comments have been added in the code.
- Added some timing outputs in AliL3Hough.
- In AliL3HoughEval::LookInsideRoad; removed the check whether the tracks is
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
+ Some changes in AliHLTHough::Evaluate. Comments have been added in the code.
+ Added some timing outputs in AliHLTHough.
+ In AliHLTHoughEval::LookInsideRoad; removed the check whether the tracks is
leaving the slice; because this fails when the tracks is bending _in_ to the
slice. In the argument, one can also access the number of padrows which where
good; meaning padrows along the road which had signal.
- In AliL3HoughMaxFinder; currently the check for the gradient is commented out.
+ In AliHLTHoughMaxFinder; currently the check for the gradient is commented out.
2002-05-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/Makefile:
- Bugfix in AliL3Hough::FindTrackCandidates; when track->SetEta, one has to
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ Bugfix in AliHLTHough::FindTrackCandidates; when track->SetEta, one has to
check the current slice, in order to get minus sign on other half of TPC.
- Included an upper threshold in AliL3HoughBaseTransformer; all digits with
+ Included an upper threshold in AliHLTHoughBaseTransformer; all digits with
high values than this are not transformed.
2002-05-29 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
Made display class work. Also added it to makefile.
2002-05-29 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformerVhdl.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformerVhdl.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
Changes done to include new ALiL3HoughTransformerVhdl.
2002-05-29 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
Made it possible to read different and several events from rootfile.
Also included a ntuppel, for storing different characteristics of the
- peaks in AliL3HoughMaxFinder.
+ peaks in AliHLTHoughMaxFinder.
2002-05-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx:
Bugfix in line 314; paranthes missing
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.cxx, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.cxx, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
Moved GetGoodParticles to alimacros
2002-05-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/Makefile:
Can now use 8 bit data as input, by setting the apropriate
- flag in AliL3Hough::Init.
+ flag in AliHLTHough::Init.
2002-05-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
- Cleaning up. Made some changes in AliL3HoughMaxFinder. Peaks are now
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
+ Cleaning up. Made some changes in AliHLTHoughMaxFinder. Peaks are now
stored in private arrays, and does not have to be passed as arguments
for every function. Instead, they should be reached with getters.
- Some minor cleaning was also done in AliL3Hough and AliL3HoughEval.
+ Some minor cleaning was also done in AliHLTHough and AliHLTHoughEval.
2002-05-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Forgot to remove #include in previous checkin
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
- Get the Bfield from AliL3Transform
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
+ Get the Bfield from AliHLTTransform
2002-04-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.cxx:
- Changes as a result of making AliL3Transform static.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.cxx:
+ Changes as a result of making AliHLTTransform static.
2002-04-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
- Some additional changes related to the previous changes. AliL3Transform
- object has now to be passed to the AliL3HoughBaseTransformer in order to
- avoid giving the path where the config file is to the AliL3HoughBaseTransformer
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ Some additional changes related to the previous changes. AliHLTTransform
+ object has now to be passed to the AliHLTHoughBaseTransformer in order to
+ avoid giving the path where the config file is to the AliHLTHoughBaseTransformer
object.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
- Made a new abstract base class; AliL3HoughBaseTransformer for different implementations
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughBaseTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
+ Made a new abstract base class; AliHLTHoughBaseTransformer for different implementations
of the circle Hough transform. All the member functions which were previously in
- AliL3HoughTransformer are virtual in this class, and should be appropriately overloaded
+ AliHLTHoughTransformer are virtual in this class, and should be appropriately overloaded
in the underlying implementations.
2002-04-23 Anders Strand Vestbo <vestbo@hansa00>
2002-04-20 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
More comments for documentation.
2002-04-18 Constantin Loizides <loizides@hansa00>
2002-04-16 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.h:
MergeEtaSlices and MergeTracks are currently empty.
* /alice/cvs/hltcvs/level3code/hough/Makefile:
2002-04-08 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
- Added function AliL3HoughTransformer::GetEtaIndex. Modified AliL3Hough::WriteTracks.
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ Added function AliHLTHoughTransformer::GetEtaIndex. Modified AliHLTHough::WriteTracks.
2002-02-05 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/hough/Makefile: Minor updates
- * /alice/cvs/hltcvs/level3code/hough/Makefile.standalone, /alice/cvs/hltcvs/level3code/hough/rootlogon.C, /alice/cvs/hltcvs/level3code/hough/test.C, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/Makefile.standalone, /alice/cvs/hltcvs/level3code/hough/rootlogon.C, /alice/cvs/hltcvs/level3code/hough/test.C, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx:
Checking in for the weekend
2002-01-23 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/hough/Makefile:
New makefile. Written by me, hence better
- * /alice/cvs/hltcvs/level3code/hough/AliL3Defs.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTDefs.h:
Should only have one of these files
2002-01-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
SetNHits, in order to make the IO work in memhandler class.
2002-01-18 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/hough/Makefile.standalone:
Makefile for standalone program
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx:
Minor changes
* /alice/cvs/hltcvs/level3code/hough/test.C: More functions
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
Added SetTgl in Set()
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx:
Added test if the track is leaving the sector, in that case this should be taken account for when evaluating the number of rows it should cross.
2001-12-10 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.h, /alice/cvs/hltcvs/level3code/hough/test.C, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Defs.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.h, /alice/cvs/hltcvs/level3code/hough/test.C, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx:
Checking in latest changes.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughGlobalMerger.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughIntMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughGlobalMerger.cxx:
Merging classes
2001-11-27 Anders Strand Vestbo <vestbo@hansa00>
2001-11-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughDisplay.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughDisplay.h:
New display class
2001-11-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
Bugfix in SetTrackParameters, wrong charge...
2001-11-16 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
- Moved AliL3HoughTrack to hough
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ Moved AliHLTHoughTrack to hough
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTrack.cxx:
Moved classes from src
2001-11-13 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/hough/rootlogon.C:
New path to Timms shared library
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Possible to compile without ROOT
* /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.cxx, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.h:
Possible to specify a number of slices, instead of only one
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h:
Added some histos in CompareMC, and new function FindEta()
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
UpdateRowPointer is now static function in memhandler.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerge.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerge.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerge.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerge.h:
Changed name of merger
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerger.h:
- Changed name of merger to AliL3HoughMerger
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerger.h:
+ Changed name of merger to AliHLTHoughMerger
2001-11-07 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram1D.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram1D.h:
Added 1D histograms.
2001-10-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
Latest update, bugfix i think
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h:
Added function CompareMC
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx:
Bugfix in destructor etc.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Added Reset function
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/Makefile:
Added function GetGoodParticles
* /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.h, /alice/cvs/hltcvs/level3code/hough/GetGoodParticles.cxx:
* /alice/cvs/hltcvs/level3code/hough/rootlogon.C, /alice/cvs/hltcvs/level3code/hough/test.C:
results of cleanup
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
Rewriting and cleaning up
- * /alice/cvs/hltcvs/level3code/hough/AliL3Defs.h: blabla
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTDefs.h: blabla
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Added threshold
2001-09-18 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/hough/test.C: Adding example macro
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx:
Added function Add
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h: Bugfix
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h: Bugfix
- * /alice/cvs/hltcvs/level3code/hough/AliL3Defs.h: 6 patches
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTDefs.h: 6 patches
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Cleaning up a lot
2001-07-30 Anders Strand Vestbo <vestbo@hansa00>
2001-07-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Updating
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h:
Added histoclass
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Some changes
- * /alice/cvs/hltcvs/level3code/hough/AliL3Defs.h: Added to constants
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTDefs.h: Added to constants
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h:
Just testing
2001-06-29 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
Major changes
2001-06-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx:
Wrote a new class
2001-04-06 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/testPF.C, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/hough_mergehistos.C:
+ * /alice/cvs/hltcvs/level3code/hough/testPF.C, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/hough_mergehistos.C:
Updating before easter
2001-03-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Transform.h, /alice/cvs/hltcvs/level3code/hough/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/hough/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx:
Removed obsolete code, and removed a typo
- * /alice/cvs/hltcvs/level3code/hough/AliL3Hough.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Hough.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHough.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHough.h:
Added new base class
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughPixel.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughPixel.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughPixel.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughPixel.cxx:
Removed obsolete code
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/hough_merge.C, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/testPF.C, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerge.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Defs.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h, /alice/cvs/hltcvs/level3code/hough/hough_merge.C, /alice/cvs/hltcvs/level3code/hough/Makefile, /alice/cvs/hltcvs/level3code/hough/testPF.C, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerge.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx:
Updating changes before the weekend
2001-03-26 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/hough/testPF.C: Added a macro
- * /alice/cvs/hltcvs/level3code/hough/hough_merge.C, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h, /alice/cvs/hltcvs/level3code/hough/hough.C:
+ * /alice/cvs/hltcvs/level3code/hough/hough_merge.C, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h, /alice/cvs/hltcvs/level3code/hough/hough.C:
General updates
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx:
Debugging update
2001-03-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/hough.C, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/hough.C, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h:
Added new peakfinder
2001-03-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/hough_mergehistos.C, /alice/cvs/hltcvs/level3code/hough/rootlogon.C:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/hough_mergehistos.C, /alice/cvs/hltcvs/level3code/hough/rootlogon.C:
Imported Hough code
- * /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Histogram.h, /alice/cvs/hltcvs/level3code/hough/hough_mergehistos.C, /alice/cvs/hltcvs/level3code/hough/rootlogon.C:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHistogram.h, /alice/cvs/hltcvs/level3code/hough/hough_mergehistos.C, /alice/cvs/hltcvs/level3code/hough/rootlogon.C:
New file.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Transform.h, /alice/cvs/hltcvs/level3code/hough/hough.C, /alice/cvs/hltcvs/level3code/hough/hough_line.C, /alice/cvs/hltcvs/level3code/hough/hough_line_merge.C, /alice/cvs/hltcvs/level3code/hough/hough_merge.C, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/hough/hough.C, /alice/cvs/hltcvs/level3code/hough/hough_line.C, /alice/cvs/hltcvs/level3code/hough/hough_line_merge.C, /alice/cvs/hltcvs/level3code/hough/hough_merge.C, /alice/cvs/hltcvs/level3code/hough/Makefile:
Imported Hough code
- * /alice/cvs/hltcvs/level3code/hough/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3Transform.h, /alice/cvs/hltcvs/level3code/hough/hough.C, /alice/cvs/hltcvs/level3code/hough/hough_line.C, /alice/cvs/hltcvs/level3code/hough/hough_line_merge.C, /alice/cvs/hltcvs/level3code/hough/hough_merge.C, /alice/cvs/hltcvs/level3code/hough/Makefile:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/hough/hough.C, /alice/cvs/hltcvs/level3code/hough/hough_line.C, /alice/cvs/hltcvs/level3code/hough/hough_line_merge.C, /alice/cvs/hltcvs/level3code/hough/hough_merge.C, /alice/cvs/hltcvs/level3code/hough/Makefile:
New file.
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerge.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerge.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughPixel.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughPixel.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerge.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerge.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughPixel.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughPixel.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
Imported Hough code
- * /alice/cvs/hltcvs/level3code/hough/AliL3HoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerge.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughMerge.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughPixel.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughPixel.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughTransformer.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTHoughLinkDef.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMaxFinder.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerge.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughMerge.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughPixel.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughPixel.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughTransformer.h:
New file.
- * /alice/cvs/hltcvs/level3code/hough/AliL3Defs.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h:
Imported Hough code
- * /alice/cvs/hltcvs/level3code/hough/AliL3Defs.h, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliL3HoughEval.h:
+ * /alice/cvs/hltcvs/level3code/hough/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.cxx, /alice/cvs/hltcvs/level3code/hough/AliHLTHoughEval.h:
New file.
2004-05-03 Thomas Vik <tvik@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.h, /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.cxx, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.cxx, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.cxx:
Added MakeSeed function.
2004-03-18 Thomas Vik <tvik@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.cxx:
- Change in calling AliL3Transfrom::Global2Local command.
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.cxx:
+ Change in calling AliHLTTransfrom::Global2Local command.
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.cxx, /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.h, /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.cxx, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.cxx:
Changed global coordinates of padrows to local. Removed obsolete MakeSeed function.
2004-02-02 Thomas Vik <tvik@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.cxx:
Added track label to rootfile with the kalman cariables.
2003-10-13 Thomas Vik <tvik@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.cxx:
Added function to calculate Chi2 increment.
2003-09-26 Thomas Vik <tvik@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.h, /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.cxx:
- Changes to reflect changes in AliL3KalmanTrack::Init.
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.cxx:
+ Changes to reflect changes in AliHLTKalmanTrack::Init.
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.cxx:
Changes in the Init-function.
2003-09-22 Thomas Vik <tvik@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.cxx, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.h:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.cxx, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.h:
Changed Init to do filtering without seed making.
- * /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.h, /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.cxx:
Changes in make seeds.
* /alice/cvs/hltcvs/level3code/kalman/Makefile:
2003-09-02 Thomas Vik <tvik@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanLinkDef.h:
Removed link to obsolete class.
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.cxx, /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.h, /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.cxx, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.cxx:
Lots of changes and cleaned up.
2003-08-05 Thomas Vik <tvik@hansa00>
* /alice/cvs/hltcvs/level3code/kalman/Makefile: Added makefile.
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanLinkDef.h:
*** empty log message ***
2003-07-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.h, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.h:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.h:
Added html tags for documentation.
2003-07-10 Thomas Vik <tvik@hansa00>
- * /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliL3KalmanTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalmanTrack.cxx:
Kalman track class.
- * /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.h, /alice/cvs/hltcvs/level3code/kalman/AliL3Kalman.cxx:
+ * /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.h, /alice/cvs/hltcvs/level3code/kalman/AliHLTKalman.cxx:
Base class.
2004-05-12 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.h, /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.h, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReaderFile.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx:
Removed compiler warnings.
2004-03-20 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3Stopwatch.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3TransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReaderFile.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTStopwatch.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx:
Removed GCCVERSION string from code. Replaced by compiler internal
macro __GNUC__ which is 3 for gcc version >3.
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReaderFile.cxx:
Added namespace for gcc-3.x
2004-02-03 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReaderFile.cxx:
Bugfix for gcc-3.2
2004-01-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
Changes to compile for MACOSX at core Makefiles. Check for
$(ARCH) and -D$(ARCH). In order to solve cyclic dependencies
for libs (which is _very_ bad, but the Linux linker is friendly)
we dont do at the moment. SO: Linux users should see _NO_
difference!!!
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.h, /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReader.h, /alice/cvs/hltcvs/level3code/misc/AliL3DDLTPCRawStream.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReaderFile.h, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReader.h, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLTPCRawStream.h:
Update to ALIROOT head version.
2003-11-25 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.cxx:
Added support for Daq datachallenge.
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.h:
Added missing header file to compile with head.
2003-11-18 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.h, /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.h, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReaderFile.cxx:
Added changes to reflect latest developments in the head version. Again, misleadingly I used the newio flag to distiguish from older versions. In principle we should switch to aliroot versions later than 10 2003.
2003-09-25 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.h:
Added Thomas Kuhr changes for upcoming data challenge and aliroot v4-01-00 tag.
2003-08-04 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.h, /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReader.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.h, /alice/cvs/hltcvs/level3code/misc/AliL3DDLRawReader.h, /alice/cvs/hltcvs/level3code/misc/AliL3DDLTPCRawStream.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DDLTPCRawStream.h, /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLDataFileHandler.h, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReader.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReaderFile.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReaderFile.h, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLRawReader.h, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLTPCRawStream.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDDLTPCRawStream.h, /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
Added classes for tpc ddl to hlt binary conversion.
- * /alice/cvs/hltcvs/level3code/misc/AliL3TransBit.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTTransBit.cxx:
Added aliroot copyright.
2003-07-26 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.h, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.h, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.h:
Changes to compile standalone.
2003-07-25 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/misc/Makefile:
Changes to reflect the new makefile strategy.
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h: Cosmetics.
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h: Cosmetics.
2003-07-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx:
So it works as in the old version but produces warnings.
- * /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx:
Test if this works for the html generation.
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.h, /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.h, /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.h, /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliL3Stopwatch.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3Stopwatch.h, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.h, /alice/cvs/hltcvs/level3code/misc/AliL3TransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3TransBit.h, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.h, /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.h, /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.h, /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliHLTStopwatch.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTStopwatch.h, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.h, /alice/cvs/hltcvs/level3code/misc/AliHLTTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTTransBit.h, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.h:
Added html tags for documentation and updated version/copyright info.
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
- Added the *Real* functions from AliL3Transform.
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ Added the *Real* functions from AliHLTTransform.
2003-07-21 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/misc/Makefile:
- Include updates, take out AliL3TPCMapping and print rootcint.
+ Include updates, take out AliHLTTPCMapping and print rootcint.
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.h:
- Marked AliL3TPCMapping as old and unfinished code.
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.h:
+ Marked AliHLTTPCMapping as old and unfinished code.
- * /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.h:
Changes to make work with cint and gcc-3.3.1; changed DEBUG to VHDLDEBUG
2003-05-14 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.h:
Moved Debug switch to .cxx
2003-04-10 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping.h, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping-iroc.generated, /alice/cvs/hltcvs/level3code/misc/AliL3TPCMapping-oroc.generated, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping.h, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping-iroc.generated, /alice/cvs/hltcvs/level3code/misc/AliHLTTPCMapping-oroc.generated, /alice/cvs/hltcvs/level3code/misc/Makefile:
Added new class for TPC mapping.
2003-02-24 Constantin Loizides <loizides@hansa00>
2003-01-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h:
Check whether USEFFLOAT variable is set, because if not
rootcint returns error message.
2002-11-14 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.h:
Added deconvolution.
2002-09-16 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx:
Little bug when reporting row merge error.
2002-09-04 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h:
- Added AliL3Transbit entry.
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h:
+ Added AliHLTTransbit entry.
- * /alice/cvs/hltcvs/level3code/misc/AliL3TransBit.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTTransBit.cxx:
Little bugfix vor gcc 3.2.
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.h:
Cosmetics.
- * /alice/cvs/hltcvs/level3code/misc/Makefile: Change for AliL3Transbit.
+ * /alice/cvs/hltcvs/level3code/misc/Makefile: Change for AliHLTTransbit.
- * /alice/cvs/hltcvs/level3code/misc/AliL3TransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3TransBit.h, /alice/cvs/hltcvs/level3code/misc/AliTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliTransBit.h:
- Moved from AliTransbit to AliL3Transbit.
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTTransBit.h, /alice/cvs/hltcvs/level3code/misc/AliTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliTransBit.h:
+ Moved from AliTransbit to AliHLTTransbit.
2002-08-29 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.h: Cosmetics.
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.h: Cosmetics.
2002-08-27 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx:
Merged problems solved.
2002-08-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx:
Fixing a serious bug
2002-08-25 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.h, /alice/cvs/hltcvs/level3code/misc/AliL3Stopwatch.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.h, /alice/cvs/hltcvs/level3code/misc/AliHLTStopwatch.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/Makefile:
Little changes to make g++ version 3.2 compile the misc library.
2002-07-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx:
Added some comments
2002-07-11 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/Makefile: Added AliL3Stopwatch.
+ * /alice/cvs/hltcvs/level3code/misc/Makefile: Added AliHLTStopwatch.
- * /alice/cvs/hltcvs/level3code/misc/AliL3Stopwatch.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3Stopwatch.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTStopwatch.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTStopwatch.h:
Class for timing measurements, taken from ROOT and made changes to compile it without ROOT/ALIROOT.
2002-07-07 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
More exact rounding function, but also much slower.
2002-07-04 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
Changes for fixed point class.
- * /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3FFloat.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTFFloat.h:
Class for fixed point operations.
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx:
Comment changes for htlm docu.
2002-07-02 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.h:
Minor changes at comments.
- * /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx:
Solved bug which gave a difference to the VHLD code.
* /alice/cvs/hltcvs/level3code/misc/Makefile:
2002-06-14 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTVHDLClusterFinder.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
Created cluster finder class that simulates the VHDL cluster finder on Altro data.
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.h:
Added read support for Altro like data.
2002-06-11 Constantin Loizides <loizides@hansa00>
2002-05-29 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.h:
Added capability to handle backlinked list properly.
2002-05-24 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx:
Bugfix; Need Init(slice,patch)
2002-05-01 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx:
Bugfix in GetMemorySize.
- * /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3DataHandler.h, /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliTransBit.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
- New class AliL3DataHandler, for handling 8 bit data. Similiar and closely related to its mother AliL3MemHandler.
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTDataHandler.h, /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliTransBit.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ New class AliHLTDataHandler, for handling 8 bit data. Similiar and closely related to its mother AliHLTMemHandler.
2002-04-23 Anders Strand Vestbo <vestbo@hansa00>
2002-04-18 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.h:
Added class description comments.
* /alice/cvs/hltcvs/level3code/misc/Makefile:
2002-04-17 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliL3AltroMemHandler.h:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.cxx, /alice/cvs/hltcvs/level3code/misc/AliHLTAltroMemHandler.h:
Converts Digits in Memory to Altro like back linked list and stores them
in Hexadezimal 16 Bit numbers. Ascii or Binary files are supported.
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
- Added AliL3AltroMemHandler.
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ Added AliHLTAltroMemHandler.
2002-04-16 Constantin Loizides <loizides@hansa00>
2002-04-16 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliTransBit.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
+ * /alice/cvs/hltcvs/level3code/misc/AliHLTMiscLinkDef.h, /alice/cvs/hltcvs/level3code/misc/AliTransBit.cxx, /alice/cvs/hltcvs/level3code/misc/AliTransBit.h, /alice/cvs/hltcvs/level3code/misc/Makefile:
Conversion table class for 10-8bit compression.
2002-07-05 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/programs/Makefile, /alice/cvs/hltcvs/level3code/programs/read.cxx, /alice/cvs/hltcvs/level3code/programs/runit.cxx, /alice/cvs/hltcvs/level3code/programs/runvhdlcf.cxx:
- Changes to use AliL3Logger correctly in standalone programs.
+ Changes to use AliHLTLogger correctly in standalone programs.
2002-07-02 Constantin Loizides <loizides@hansa00>
2002-06-10 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/programs/read.cxx, /alice/cvs/hltcvs/level3code/programs/runit.cxx:
- Solved bug forgetting to use AliL3MemHandler->Init(slice,patch).
+ Solved bug forgetting to use AliHLTMemHandler->Init(slice,patch).
* /alice/cvs/hltcvs/level3code/programs/read.cxx:
Check consecutive rows.
2002-06-06 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/programs/runit.cxx:
- Minor changes to use new AliL3ClusterFinder class.
+ Minor changes to use new AliHLTClusterFinder class.
2002-05-29 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/programs/read.cxx:
- Changes done to make read work with new AliL3AltroMemHandler.
+ Changes done to make read work with new AliHLTAltroMemHandler.
2002-05-18 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/programs/Makefile: Addes gettransform.
* /alice/cvs/hltcvs/level3code/programs/gettransform.cxx:
- First checkin of program to extract parameters from AliL3Transform to be used for the VHDL implementation of the Hough transform.
+ First checkin of program to extract parameters from AliHLTTransform to be used for the VHDL implementation of the Hough transform.
* /alice/cvs/hltcvs/level3code/programs/read.cxx: Use new Transformer.
2002-04-26 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/programs/runit.cxx:
- Changes as a result of making AliL3Transform static.
+ Changes as a result of making AliHLTTransform static.
2002-04-18 Constantin Loizides <loizides@hansa00>
2004-05-12 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliHLTReconstructor.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTReconstructor.h, /alice/cvs/hltcvs/level3code/src/AliL3SrcLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTReconstructor.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTReconstructor.h, /alice/cvs/hltcvs/level3code/src/AliHLTSrcLinkDef.h:
Added define for AliHLTReconstructor.
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Bugfix for oldio.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx: Minor bugfix.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx: Minor bugfix.
- * /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Further compiler warning removed and flags for Sun/HP.
2004-05-11 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx:
Removed compiler warnings.
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackSegmentData.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackSegmentData.h:
Added extended information if using -dROWHOUGHPARAMS
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h:
Added pid information and label (even though
label can be found with evaluate and not
necessarily has to be stored in the track,
it was necessary as we dont store clusters
during the data challenge.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Added -DROWHOUGHPARAMS and removed compiler warnings.
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Removed compiler warnings and runloader added.
- * /alice/cvs/hltcvs/level3code/src/AliL3DigitData.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDigitData.h:
Workaround for Sun.
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx:
Added params for row hough transform and physics data
challenge reconstruction.
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Added support for RunLoader input (newio).
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Added PID, even though it is not the most natural thing to
do it in the evaluation as this class is for MC.
The reason we put it here is, that we want to avoid opening
the cluster files another time, somewhere else in the
code during the pdc.
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
Added userunloader to avoid deletion of deleted runloader object (newio) and solved bug for empty rows (thanks to Cvetan).
- * /alice/cvs/hltcvs/level3code/src/AliHLTReconstructor.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTReconstructor.h, /alice/cvs/hltcvs/level3code/src/AliL3SrcLinkDef.h, /alice/cvs/hltcvs/level3code/src/Makefile:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTReconstructor.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTReconstructor.h, /alice/cvs/hltcvs/level3code/src/AliHLTSrcLinkDef.h, /alice/cvs/hltcvs/level3code/src/Makefile:
Nice reconstruction class to use with PDC (only for AliRoot).
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3StandardIncludes.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTStandardIncludes.h:
Changes to compile standalone.
2004-05-10 Kenneth Aamodt <kenneth@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
(Partially) Inverted accidental last checkin done by Constantin and Kenneth in rush together with lots of beer.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Changed pointer into const pointer.
2004-05-10 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.h:
Added reading from pointer.
- * /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.h:
Added fCharges.
2004-05-07 Constantin Loizides <loizides@hansa00>
2004-04-01 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Bug fixed in GetZFast.
2004-03-20 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Update version information.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.h, /alice/cvs/hltcvs/level3code/src/AliL3Logging.h, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/AliL3StandardIncludes.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/AliHLTStandardIncludes.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Removed GCCVERSION string from code. Replaced by compiler internal
macro __GNUC__ which is 3 for gcc version >3.
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackSegmentData.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackSegmentData.h:
Added ROWHOUGH flag to store weight and track id
in the track segment data structure. This is used
for the new row transformer and probably only
a temporary solution, as the proper way would be
- to have a new AliL3HoughTrackRow class.
+ to have a new AliHLTHoughTrackRow class.
By default the flag $ALIHLT_ROWHOUGH points to false,
so there is no change to earlier versions.
2004-03-15 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Bugfix related to track fit parameters <-> global track merging.
It turned out that there was a slight problem with the global track
merging in the case a vertex constraint was imposed in the circle fit.
The problem is quite involved, and is due to inconsistency when storing
- the socalled first point on the track in AliL3Track::*fFirstPoint. This
+ the socalled first point on the track in AliHLTTrack::*fFirstPoint. This
point is set to the first point lying on the fit, but in the case of vertex
constraint this point is correspondingly set to the point of closest
approach to the vertex. HOWEVER, the global merger always assumes that
2004-02-12 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added new function GetZFast, please dont use yet... its not finalized as the vertex has to be substracted.
2004-02-04 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx:
- Removed occurencence of static and non const values like pi and BFACT. Use instead const functions given by AliL3Transform.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx:
+ Removed occurencence of static and non const values like pi and BFACT. Use instead const functions given by AliHLTTransform.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added transform functions which dont need to convert to sector, sector row level, if you specify slice and slice row. Also added const functions, so that compiler can optimize.
2004-02-02 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Added static index support for aliroot files.
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
Added static index support. This means, that if you are working with several filehandlers on one rootfile, only once the index will be created. Be careful, only one such static index exists per session, so if you want to use two input digit root files, it would not why (but why would you need two?). Also you can load/store the index to a file (see the exa example) which decreases debugging time.
2004-01-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Changes related to how the track parameters are calculated and stored.
There should be no changes for normal use, i.e. the function calls are
still the same. The changes are the following:
- Most importantly, the first point on a track (accessible via
- AliL3Track::GetFirstPoint()) is now calculated as the point lying on the helix
+ AliHLTTrack::GetFirstPoint()) is now calculated as the point lying on the helix
fit. Earlier, this point was just the coordinates of the innermost assigned
cluster of the track. This is in principle ok if you just want the quick
"global" coordinates of the track; momentum etc. However, for precisce local
- A new static boolean has been introduced in AliLevel3::fDoVertexFit, which
tells the track fitter to include the vertex in the fit or not.
- - A (minor) bugfix was also done in AliL3TrackArray.
+ - A (minor) bugfix was also done in AliHLTTrackArray.
2004-01-23 Constantin Loizides <loizides@hansa00>
2004-01-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3SrcLinkDef.h, /alice/cvs/hltcvs/level3code/src/Makefile:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTSrcLinkDef.h, /alice/cvs/hltcvs/level3code/src/Makefile:
Changes to compile for MACOSX at core Makefiles. Check for
$(ARCH) and -D$(ARCH). In order to solve cyclic dependencies
for libs (which is _very_ bad, but the Linux linker is friendly)
we dont do at the moment. SO: Linux users should see _NO_
difference!!!
- * /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.h:
Changed to compile with gcc-3.4
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Changed to avoid warning of gcc-3.4.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Changed order to avoid warning of gcc-3.4.
2003-11-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Added possibility to define where to set the track parameters:
A new boolean static data member AliLevel3::fSetTracks2FirstPoint has been added.
If this is true (default) the tracks are propagated to the first point
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Added support for Daq datachallenge.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Check if row numbering is wrong, print warning and continue.
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Hopefully solved bug for empty rows. We use empty rows, and set fDigits=0.
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Added comment that we use AddRandomData even though the name is strange, but I think we could also use AddData instead.
2003-11-18 Anders Strand Vestbo <vestbo@hansa00>
2003-11-18 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx:
Added total in output.
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Added support for newer aliroot version than ali-head from june 2003, misleadingly I am using the newio flag to distiguish although it has nothing to with newio, but only with interface changes to galice.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Offline claims, they need that line, I (Constantin) dont see a reason for it.
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Added one virtual function needed for newio.
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
Added newio handling, using the use_newio define switch.
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
2003-10-24 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Added rootfile ptr check and corrected wrong function names in logging.
2003-10-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
- Can specify maximum pt range in ctor.
- Minor cleaning up.
2003-09-25 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Added Thomas Kuhr changes for upcoming data challenge and aliroot v4-01-00 tag.
2003-08-20 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
- Added function AliL3Fitter::UpdateTrack. This function should be called
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ Added function AliHLTFitter::UpdateTrack. This function should be called
after a global track fit has been done (as is done in
AliLevel3::FitGlobalTracks), in order to update the track parameters
to the first point of the track.
2003-08-12 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
When doing nonvertex tracking, check whether the parameters has been set
properly. If they are not set explicitely (by doing a designated
AliLevel3::SetTrackerParam with vertexconstraint=kFALSE), no secondaries
2003-08-06 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Some structural changes with respect to the merging classes and how they
are used in AliLevel3 class. The main reason for doing this was to enable
to set parameters for the global track merging externally by introducing
being called default parameters will be used, so for the moment nothing
has changed for the normal user of the AliLevel3 class.
- * /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx:
Multiple bugfix (only the important ones reported here):
- There biggest was a problem of merging tracks between slice
17 and 0 and 35 and 18 in the former version. The problem was actually
- Also in CheckTracks (called from SlowMerge) did not check if the two tracks
had different signs. Some tracks was therefore merged wrongly.
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h:
Changed the default path to the file containing the geometry of the
TPC. It now looks in $ALIHLT_BASEDIR/geo for the file alice.geom.
2003-08-04 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
- Added virtual functions for the daughter classes AliL3RawDataFileHandler und AliL3DDLDataFileHandler.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
+ Added virtual functions for the daughter classes AliHLTRawDataFileHandler und AliHLTDDLDataFileHandler.
- * /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.h:
Added RawData2CompBinary function.
- * /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h:
Changed comment from L3 to HLT; although that will be a long way to go...
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Added printout when config file was successfully read.
2003-07-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx:
Bugfix in Merge(). When a track is merged with a track in a
neighbouring sector, the current track loop has to finish.
If not, a track might get merged with two different tracks.
This bug was brought to you by Dr.Frankenfeld, and solved by
me 2 years later...
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
The cluster charge was only written in case of fRawSP. Should of course
ALWAYS be written.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Set bfield in MakeInitFile
2003-07-29 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
What a bug... , so every rotation to slice 0 was infact a rotation to slice 35 and Andi did not realize :-)
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Added comment.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
- Removed ASV version, as the new AliL3FileHandler does not need (but still would be faster using the patched AliTPC class).
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ Removed ASV version, as the new AliHLTFileHandler does not need (but still would be faster using the patched AliTPC class).
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
Added fIndex to generate slice and row index for faster access of the digittree. no more need ffor ASVVERSION. Complete rewrite of the reading (ali2digit) functions.
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Uncommented debug output.
2003-07-28 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Started looking/changing and added creation of standard tpc param object if it was not found in the aliroot file.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
Commented out debug code.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Config file is created now in tmp/$user/l3config-date. param object is created if not found in aliroot file, a warning is produced.
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx: Cosmetical changes.
2003-07-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Set fVersion back to default when reading from a rootfile,
in order to avoid a warning in Init function.
2003-07-28 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx:
Added static flag for not doing the conformal mapping.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Dont store -1 patch number in spacepoints but use zero instead.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h:
Added some debug output.
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Added some prints to log and changed threshold behaviour for straigth cosmics tracks
- * /alice/cvs/hltcvs/level3code/src/AliL3Logger.h, /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLogger.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx:
Changed to our type definition.
- * /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx:
Solved bug closing wrong mapping pointer.
2003-07-27 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Changes to compile without changes to ALIROOT version v3-09-Releases.
2003-07-26 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3SrcLinkDef.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTSrcLinkDef.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Changes to compile also with ROOT or STANDALONE.
2003-07-25 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/src/Makefile:
Changes to reflect the new makefile strategy.
- * /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h, /alice/cvs/hltcvs/level3code/src/AliL3SrcLinkDef.h:
- Renamed AliL3LinkDef.h into AliL3SrcLinkDef.h to reflect module name changes in the Makefile.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h, /alice/cvs/hltcvs/level3code/src/AliHLTSrcLinkDef.h:
+ Renamed AliHLTLinkDef.h into AliHLTSrcLinkDef.h to reflect module name changes in the Makefile.
2003-07-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Cleaning up albis bad solutions
2003-07-24 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.h:
Class for reading cosmics data into HLT data structures, providing pedestral substraction and storing raw cosmics data.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h:
Solved overflow problem for cosmics data using ULong64_t for the error in time direction.
- * /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h:
Added Long64_t and ULong64_t types.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliL3SpacePointData.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliHLTSpacePointData.h:
Added comments.
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
- Added virtual functions for AliL3RawDataHandler.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
+ Added virtual functions for AliHLTRawDataHandler.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h:
Added flag fRawSP, if it is on, then the cf will leave spacepoints in raw co-system, default is off.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added fSectorLow variable and more setters.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Added fSectorLow variable.
2003-07-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3DigitData.h, /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h, /alice/cvs/hltcvs/level3code/src/AliL3Logging.h, /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/AliL3SpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliL3StandardIncludes.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackSegmentData.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexData.h, /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.h, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.h, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.h, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.h, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTDigitData.h, /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h, /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/AliHLTSpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliHLTStandardIncludes.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackSegmentData.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexData.h, /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.h, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.h, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Added html tags for documentation.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.h:
Removed.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.h:
Little changes before file goes to attic.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
- Moved the *Real* functions to misc/AliL3TPCMapping
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
+ Moved the *Real* functions to misc/AliHLTTPCMapping
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Changed handling of initfile: there is now a method for reading and
saving the file seperately. That means one can change settings of the
transformer and save that settings to a given file.
* /alice/cvs/hltcvs/level3code/src/Makefile:
Include recursive and print rootcint command.
- * /alice/cvs/hltcvs/level3code/src/AliL3Logger.h, /alice/cvs/hltcvs/level3code/src/AliL3Logging.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLogger.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h:
Changes to generate stub file with g++-3.3.1 and rootcint and new MLUC 0.3.37.
2003-07-19 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
- Bugfix of last checking, AliL3Transformer produces now the same results as the old version.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
+ Bugfix of last checking, AliHLTTransformer produces now the same results as the old version.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Big Changes:
a) Added VersionType enum: There are now 2 different versions
for aliroot and for cosmics, the old version is deprecated and needs to
sin and cos lookups, for patches and row settings
c) Added a lot of setters and getters
d) Added GetRealX, GetRealY and GetRealNPad functions implementing the
- GSI mapping. This functions are not used inside AliL3Transform, so
+ GSI mapping. This functions are not used inside AliHLTTransform, so
calling them, does not change the members of the class.
e) Added a few more boundary checks
f) __old__ sections mark former code and will vanish if everything is
2003-07-04 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Version field is being loaded in config file.
2003-07-03 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.h, /alice/cvs/hltcvs/level3code/src/Makefile:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRawDataFileHandler.h, /alice/cvs/hltcvs/level3code/src/Makefile:
Added RawData FileHandler class for the cosmics data test.
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
Changed char to Char_t
- * /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx:
stupid warning solved due commenting.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added setters (and some more getters), changed some members to const plus little cosmetics.
2003-07-02 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3StandardIncludes.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTStandardIncludes.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Changes to make the code work for gcc-3.3
2003-05-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Added option to write "altro" digits in AliDigits2Binary.
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
from aliroot file you dont have to delete the AliLevel3 object for every
event.
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx:
Dont draw benchmark graph by default
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
In SetPointers, check for sufficient number of clusters to build a
track. If there are no clusters in a certain sector (as may happen in naked
pp event), return without initializing the memory, because that takes cputime.
2003-04-24 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added getter GetSolenoidField
2003-04-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h:
Going back to the old previous GetCrossingPoint function. The idea
was to use CalculateReferencePoint for all calculations of the
crossing points between track and padrow, but this function only
2003-04-17 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Changed some comments
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Included TError.h
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h:
Removed obsolute code in GetCrossingPoint. This function did the same
thing as CalculateReferencePoint, only the latter one takes global
track parameters as input.
2003-04-14 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Dont show error message when searching for the alirunfile.root, only show it if it could not be found.
2003-04-14 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h:
In Rotate, set the r0 and phi0, because they might be used in UpdateToFirstPoint.
In CalculateCrossingAngle, one can specify slice, and the calculation is done
in global coordinates. In this way, one does not have to rotate the track to
local coordinates in order to calculate this angle.
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Mods in CalculateResiduals
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Default disregard single pad clusters
2003-04-11 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Bugfix in AliPoints2Memory. In case fPatch==-1, 0 has to be
written to the pointid.
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Added getter GetFilePointer
2003-04-09 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Another bugfix in GetPadRow.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Bugfix in GetPadRow
2003-04-03 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added function GetPadRow(float x), which returns the nearest
padrow for a given x value (in local coordinates).
2003-03-10 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Fixing a quite serious bug in the global merging procedures:
- In AliL3ConfMapTrack::FillTrack, the first point on the track should
+ In AliHLTConfMapTrack::FillTrack, the first point on the track should
not be set for z, since this later refers to the impact parameter
from the track fit. The first point is set only temporary here for x and y,
but in UpdateToFirstPoint this point is overwritten by the track swim point.
fLastPoint however, still refers to the cluster position of the outermost point.
- In AliL3Fitter there was also a bug in FitLine which produced completely
+ In AliHLTFitter there was also a bug in FitLine which produced completely
wrong values for tanl, and further for all fit values operating in the
(s,z)-plane.
2003-03-08 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Bugifx from last checkin.
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Check if clusters has mcid -1, because if it does it is noise.
Important for pileup studies where you assign -1 to clusters
coming from the piled up events.
2003-03-07 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Bugfix from last checkin
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
- Moved UpdateToFirstPoint from AliL3ConfMapTrack to AliL3Track. Also,
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ Moved UpdateToFirstPoint from AliHLTConfMapTrack to AliHLTTrack. Also,
the SetFirstPoint and SetLastPoint are done after both track fitting on
sector level and global fitting after sector merging.
2003-03-05 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Forgot root version string in PrintCompileOptions().
2003-03-05 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx: Cosmetic
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx: Cosmetic
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Bugfix in GetMCTrackLabel
2003-03-05 Constantin Loizides <loizides@hansa00>
2003-03-03 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Added trailing \ for directories, it does not harm if you also supply one, but if you forgot, it will still work.
2003-02-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Commented out two lines which produce crash in some pp events.
2003-02-26 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Clear lastindex when freeing the tree and check if valid tree exists before reading digits in Ali2 functions.
2003-02-26 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Small change with fBenchmark
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Increasing the maximum number of clusters in order to cope with
dn/dy=8000 events.
2003-02-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Making compilable with gcc-32
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
2003-02-24 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Added quick and dirty hack to circumvent negativ numbers for trackids while merging events.
* /alice/cvs/hltcvs/level3code/src/Makefile:
Added defs string to rootcint
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Check for valid trackfile.
2003-02-24 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h: Added GetTracks()
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h: Added GetTracks()
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
10 bits for event number in trackID
* /alice/cvs/hltcvs/level3code/src/Makefile:
2003-02-24 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Bug in Binary2Memory where zero digits on a row breaked in the read loop.
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
2003-02-24 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
In GetMCTrackLabel also check if at least half of the innermost 10%
clusters are assigned correctly. This is done by offline, and should
therefore also be done by HLT.
2003-02-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/Makefile:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/Makefile:
Fixed Constantins bugs
2003-02-21 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/Makefile:
- Added version information of compile time options to AliL3Transformer::PrintCompileOptions().
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/Makefile:
+ Added version information of compile time options to AliHLTTransformer::PrintCompileOptions().
2003-02-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
BField information interface with AliROOT changed again. It turned out
that the previous change I commited does not apply correctly to all
events. Now it should be correct.
2003-02-20 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Bugfix
- * /alice/cvs/hltcvs/level3code/src/AliL3Fitter.h, /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx:
- Added AliL3Fitter to compile in Makefile. This class is also used
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFitter.h, /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx:
+ Added AliHLTFitter to compile in Makefile. This class is also used
to do a global fit of the tracks _after_ track merging across
sector boundaries.
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Changes for making and tracking pileup events. In
- AliL3FileHandler::AliAltroDigits2Memory you can set a flag
+ AliHLTFileHandler::AliAltroDigits2Memory you can set a flag
which saves the event number in the 7 upper bits of the fTrackID
field in the digits. This flag is set from exa/MakePileup.C.
In AliLevel3 you can specify that you want to track a pileup event
Also some other smaller changes, like default switching global mergin
between sector boundaries on.
- * /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx: Small cleanup
+ * /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx: Small cleanup
- * /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx:
Renamed cluster errors
- * /alice/cvs/hltcvs/level3code/src/AliL3SpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTSpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Renamed the cluster errors to fSigmaY2/fSigmaZ2, in order not to confuse
cluster widths with space point errors.
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Possible to evaluate more events at the same time.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
Calculating angle of tracklet.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h:
- AliL3ConfMapper.cxx
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h:
+ AliHLTConfMapper.cxx
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx:
Calculated cluster widths are multiplied with a constant in order to
make them similar to the space point errors.
2003-02-13 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added functions GetParSigmaY2 and GetParSigmaZ2
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h:
Can read slice files
2003-02-12 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Bugfix: Calculated cluster widths (RMS) were not transformed to local
coordinates! This caused 1 whole day of confusion.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added data member fOmegaTau
2003-02-09 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Can specify eventnr.
2003-02-06 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added a needed setter and getter
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Save MCid in AliPoints2Memory
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Read offline clusters from multiple events
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
If cluster width calculation is switched on, check if the calculated
sigma² is negative.
2003-02-05 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Bugfix. Default ctor sets fFirstPoint and fLastPoint to zero. This fix
removed some occasional floating point exception in
- AliL3TrackArray::WriteTracks.
+ AliHLTTrackArray::WriteTracks.
2003-02-04 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Bugfix. Check the diff to the previous version to see which.
Actually i don't understand why this has not been discovered before.
It is quite obvious that the loop can easily go out of range.
2003-01-31 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
How the extract the BField in AliROOT has changed, it is not extracted
via the function gAlice->Field()->Map(), which returns a value 0-2.
0: 0.2 T
2003-01-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Bugfix from last checkin
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Insignificant bugfixes
2003-01-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added function GetPatch
2003-01-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Bugfix after last checkin
2003-01-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Updated function EvaluatePoints.
- * /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h:
Removed obsolute lines
2003-01-17 Anders Strand Vestbo <vestbo@hansa00>
2003-01-16 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added function Deg2Raw
2002-11-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Smaller changes. A few lines in order to make filling an ntuppel
work with the current version of ROOT (bug in ROOT).
Changes so that one can read slice by slice also from
binary files format.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
Small bugfix in InitSector
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Default match should be 2
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Small bugfix in CalculateEgdePoint
- * /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.h:
Updates to make it work
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx:
Also write errors to textfile
2002-11-15 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Bugfix in GetEta(raw coordinates); needs slice.
2002-11-13 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx: Cosmetics.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx: Cosmetics.
2002-11-12 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
New function AliAltroDigits2Memory. This function removes single timebins, single
as in both time and pad.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Can specify patch=-1, this means all numbers will be relative to a whole
slice. E.g. GetNRows(-1) return the number 159 (all rows in a slice).
2002-11-08 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Severe bugfix in Memory2CompMemory. Actually this bug was introduced by
myself some weeks ago, but for some strange reason did not cause any
crashes until now. The problem was checking for ADC saturation, which uses
- AliL3Transform::GetADCSat(), but this is sometimes set to 1024 and this
+ AliHLTTransform::GetADCSat(), but this is sometimes set to 1024 and this
of course is a problem since we are only reserving 10 bits per ADC when
writing to binary files. I actually spend 2 hours figuring out this
FUCKING bug.
2002-10-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Removed a lot of code, and some changes. Basically removed all of
the alirootcode in order to speed up the evaluation process.
2002-10-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Bugfix in AliPoints2Memory
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Minor changes in AliDigits2RootFile
2002-10-17 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Check for ADC saturation in AliDigits2Memory.
Bugfix in AliDigits2RootFile; now correct writing of
track id's to the digits.
2002-10-16 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx: Bugfix in Init.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx: Bugfix in Init.
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
- Added ADC saturation in AliL3Transform.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
+ Added ADC saturation in AliHLTTransform.
2002-10-14 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Bugfix in AliPoints2Memory
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
2002-10-03 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Added a few more explaining lines in class description.
2002-10-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Perform check on cos(crossing_angle_with_padrow) in GetCrossingAngle().
Every once in a while this number is equal to one, which results in
return value being NaN.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Serious bugfix in Local2Raw function. This function failed to transform
corretly on the z<0 side of the tpc, because of a "wrongly" check. I have
no idea why I did not see this bug before, but probably because the
When using the AliLevel3 tracking class and reading from a rootfile
with the patched AliTPC (ASV) version, one can only read 1 whole slice
at once (npatches=1). This because in AliLevel3 class only 1 instance
- of the AliL3FileHandler is taking care of reading the data from all
- patches, and therefore the AliL3FileHandler::fLastIndex method fails when
- reading patch by patch. This problem did not show up in the AliL3Hough,
- because there you have one AliL3FileHandler per patch.
+ of the AliHLTFileHandler is taking care of reading the data from all
+ patches, and therefore the AliHLTFileHandler::fLastIndex method fails when
+ reading patch by patch. This problem did not show up in the AliHLTHough,
+ because there you have one AliHLTFileHandler per patch.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Check if the provided path is a rootfile or a directory by using the
IsZombie() function; the file pointer is not zero if the provided
string is a directory.
2002-09-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx: Cosmetic
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx: Cosmetic
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Changed the row numbering in the patches to match the latest technical
layout as much as possible. The numbers are taken from mapping tables
provided by GSI (Dr.Frankenfeld). The implementation is still not identical
2002-09-04 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added boolean return values to Init, Make_Init_File and Read_Init function. Check for given root file.
- * /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Added ASVVERSION define.
2002-09-03 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Changing hardcoded values.
2002-09-03 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
- Changed from hardcoded param to a version which gets the param string from AliL3Transform::GetParamName().
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
+ Changed from hardcoded param to a version which gets the param string from AliHLTTransform::GetParamName().
2002-09-03 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
More changes as a consequence of changing the pad geomtry in the new
AliROOT. Some hardcoded values which were set to 176 has now been changed
- to AliL3Transform::GetNRows() etc. Also the remaining hardcoded AliTPCParam
- and digits tree object names has been changed in AliL3FileHandler.
- There were and still are a bug in the AliL3Merger class in FillNTuppel,
+ to AliHLTTransform::GetNRows() etc. Also the remaining hardcoded AliTPCParam
+ and digits tree object names has been changed in AliHLTFileHandler.
+ There were and still are a bug in the AliHLTMerger class in FillNTuppel,
which I was not able to figure out, so I switched off. This only affects
the SlowMerging methods in the track mergers, and should be looked at more
if needed in the future.
2002-09-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
- Bugfix in AliL3Transform. Changed the strings of the AliTPCParam and
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
+ Bugfix in AliHLTTransform. Changed the strings of the AliTPCParam and
Digitstree objects corresponding to the new AliROOT.
2002-08-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx: Small bugfix
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx: Small bugfix
2002-08-25 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.h, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.h, /alice/cvs/hltcvs/level3code/src/AliL3Logging.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackSegmentData.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.h, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackSegmentData.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Little changes to make g++ version 3.2 compile the src library. Problems remaining for ALIROOT lib.
- * /alice/cvs/hltcvs/level3code/src/AliL3StandardIncludes.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTStandardIncludes.h:
Standard include file to include different files for different compiler versions.
* /alice/cvs/hltcvs/level3code/src/Makefile:
2002-07-11 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
- Changes for independant library of standalone l3 code. Most of them are by having #ifdef no_root preprocessor switches, but also added AliL3Stopwatch in AliL3Benchmark class.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ Changes for independant library of standalone l3 code. Most of them are by having #ifdef no_root preprocessor switches, but also added AliHLTStopwatch in AliHLTBenchmark class.
* /alice/cvs/hltcvs/level3code/src/Makefile:
Changes for independant library of standalone l3 code.
* /alice/cvs/hltcvs/level3code/src/Makefile:
Added -Duse_root to USEPACKAGE=ALIROOT section.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added fBFACT=0.0029... value. GetBFieldValue() returns now fBField*fBFACT.
2002-07-03 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx:
Solved little pointer bug that prevented logger classes to be used in standalone programs.
2002-07-02 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Minor changes and cosmetics according to Anders.
2002-07-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Cosmetic changes on top, to make hltm documentation in root to work
2002-07-02 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Minor changes, mostly cosmetic or comments
* /alice/cvs/hltcvs/level3code/src/Makefile:
2002-06-14 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h:
Solved bug to not merge clusters on the same pad.
2002-06-07 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx:
Changes done to make the Cluser Finder calculate the errors in Pad and Time direction. Also minor changes to other classes, mainly cosmetic.
2002-06-06 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h:
Have some new set functions. Remove deconv=true setting from init.
2002-05-31 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added getter GetNRows()
* /alice/cvs/hltcvs/level3code/src/Makefile: Added a flag
2002-05-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
- Bugfix in AliL3FileHandler::GetDigitsTree.
- Added a new function AliL3FileHandler::FreeDigitsTree(), in order
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
+ Bugfix in AliHLTFileHandler::GetDigitsTree.
+ Added a new function AliHLTFileHandler::FreeDigitsTree(), in order
to be able to clear the digits tree from memory, without deleting
the object. Useful feature if you want to loop over several events
in a single rootfile.
2002-05-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
- Moved some getters to AliL3MemHandler
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
+ Moved some getters to AliHLTMemHandler
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx: Smaller changes
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx: Smaller changes
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
- Made all AliL3FileHandler specific functions virtual in AliL3MemHandler.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
+ Made all AliHLTFileHandler specific functions virtual in AliHLTMemHandler.
2002-05-26 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Solved merge problem of last checkin.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/Makefile:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/Makefile:
Minor changes to make tracking work with new Aliroot version v3.07.03
2002-05-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/Makefile:
- Added AliL3Evaluate in case compiling with AliROOT
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/Makefile:
+ Added AliHLTEvaluate in case compiling with AliROOT
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Switched on slow merging.
2002-05-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Bugfix from previos ci
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Do not give *row to Init
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Fix in AliDigits2Memory. Do not remove single timebins on one pad, because
they can be a part of a bigger cluster...
2002-05-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
BField is now also read from configuration.
2002-05-09 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Bugfix in GetPadPitchWidth(patch). return inner width if patch < 2, not patch<=2.
2002-05-07 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Small change in GetCrossingAngle.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added some more datamembers, related to gas and electronics.
Corresponding getters has been added, and they have also been
added to the Init function, and exa/Make_Init.C.
2002-05-05 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Commented out cout in WriteClusters
2002-05-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Forgot to remove #include in previous checkin
- * /alice/cvs/hltcvs/level3code/src/AliL3Defs.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
- Moved all the constants from AliL3Defs.h to static AliL3Transform. No
- longer need for AliL3Defs.h, and it has therefore been removed.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
+ Moved all the constants from AliHLTDefs.h to static AliHLTTransform. No
+ longer need for AliHLTDefs.h, and it has therefore been removed.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Defs.h, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
- Added the magnetic field as a static member of the AliL3Transform class,
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
+ Added the magnetic field as a static member of the AliHLTTransform class,
together with setter and getter. This makes it possible to change the
- field without recompiling. Earlier this had to be set in AliL3Defs.h as
+ field without recompiling. Earlier this had to be set in AliHLTDefs.h as
a constant global variable.
2002-05-01 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
- Forgot to check in this the last time. Some changes in AliL3MemHandler as
- a consequence of writing child class AliL3DataHandler. fInBinary and fOutBinary
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
+ Forgot to check in this the last time. Some changes in AliHLTMemHandler as
+ a consequence of writing child class AliHLTDataHandler. fInBinary and fOutBinary
has been made protected, and CompBinary2Memory and Memory2CompBinary has been
made virtual.
2002-04-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
- Major changes in the AliL3Transform class. The class has been made completely
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ Major changes in the AliHLTTransform class. The class has been made completely
static, which means that no objects needs to be created anymore. This has also
made impact all classes which use this class (this is more or less all of them),
- so that no private AliL3Transform* is needed anymore etc. I think I have managed
+ so that no private AliHLTTransform* is needed anymore etc. I think I have managed
to implement the changes everywhere, at least it compiles successfully and exa/test.C
runs smoothly. The only rather important thing one has to remember is to initialize
- the correct detector parameters by calling AliL3Transform::Init(path). If not,
+ the correct detector parameters by calling AliHLTTransform::Init(path). If not,
default parameters will be used (currently corresponding to AliROOT version 3.06).
2002-04-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Defs.h: Cleaning up.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h: Cleaning up.
2002-04-24 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Some more comments.
2002-04-20 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added several GET-Functions, fixed bug in old config.
2002-04-19 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Added fZLength and fZOffset, fixed a few bugs in the new init method.
2002-04-19 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Inserted image on top.
2002-04-18 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/src/Makefile:
Root objects are compiled in lib_ROOT from now on.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added fVersion field to differentiate the old and new config version.
2002-04-18 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
- Cleaned up some more in AliL3MemHandler, by removing the AliL3Transform in
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ Cleaned up some more in AliHLTMemHandler, by removing the AliHLTTransform in
arguments of member functions. This also required some changes in AliLevel3,
which make use of these functions.
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Changed AliLevel3::Init to public, and this should then be called after
the ctor. Here one should provide the path where the data are located,
and also the parameter file. Else, some cleaning where done, -> fOutputFile
2002-04-18 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
- Removed private member AliL3FileHandler::fTransformer, and moved AliL3MemHandler::fTransformer
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
+ Removed private member AliHLTFileHandler::fTransformer, and moved AliHLTMemHandler::fTransformer
to protected. This means that both the filehandler and memhandler always has to get
- the transformer from AliL3MemHandler::Init(AliL3Transform *).
+ the transformer from AliHLTMemHandler::Init(AliHLTTransform *).
2002-04-18 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h:
Added new Init(char *pathname) function to read a l3transform.config file. Old init kept for backward compatibility.
2002-04-18 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Last cosmetic changes
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx: More cosmetic
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx: More cosmetic
2002-04-18 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Cosmetic changes for the integration of doxygen
2002-04-17 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Changed documentation for doxygen.
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Comments updated and merge problems solved.
2002-04-17 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Comments formatted the way THtml likes it.
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Added more comments.
2002-04-16 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/src/doit, /alice/cvs/hltcvs/level3code/src/speedtest.cxx, /alice/cvs/hltcvs/level3code/src/speedtest.h:
moving into programs
- * /alice/cvs/hltcvs/level3code/src/AliL3Logging.h, /alice/cvs/hltcvs/level3code/src/Makefile:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h, /alice/cvs/hltcvs/level3code/src/Makefile:
More improved Makefile, setting logging paths, TOPDIR and LIBDIR.
2002-04-15 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/Makefile:
- Changed Makefile and AliL3RootTypes.h in order to define usepackage (ROOT, ALIROOT
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/Makefile:
+ Changed Makefile and AliHLTRootTypes.h in order to define usepackage (ROOT, ALIROOT
do_mc) in Makefile only.
2002-04-09 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Added capability of searching neighboring digits for particle id in function AliDigits2RootFile.
2002-03-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
- Changed test in AliDigits2RootFile to check for charge below threshold, not charge==0. This function can then be used together with AliL3Compress::WriteRootFile.
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
+ Changed test in AliDigits2RootFile to check for charge below threshold, not charge==0. This function can then be used together with AliHLTCompress::WriteRootFile.
2002-03-06 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Added new function, fTracker->InitVolumes()
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Bugfix in CalculateHelix(). Kappa is given proper sign, earlier it was always positive.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h:
Remaining from previous co
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Changes and optimization for pp-running
2002-02-18 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h:
The default should be not to save mcid
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/AliL3SpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliL3DigitData.h, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
- Added the possibility to save the particle id's through the chain, if detailed efficiency studies are needed. This work only in the case where you are reading digits from a alirootfile-> AliL3FileHandler::AliL3Digits2Memory. The id is saved in the digit structure and then in the space point structure. The option is switched on in do_mc in AliL3RootTypes.h
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/AliHLTSpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliHLTDigitData.h, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
+ Added the possibility to save the particle id's through the chain, if detailed efficiency studies are needed. This work only in the case where you are reading digits from a alirootfile-> AliHLTFileHandler::AliHLTDigits2Memory. The id is saved in the digit structure and then in the space point structure. The option is switched on in do_mc in AliHLTRootTypes.h
2002-02-05 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/src/Makefile: Minor updates
- * /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/Makefile.AliROOT, /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/AliL3SpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Defs.h, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/Makefile.AliROOT, /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/AliHLTSpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Checking in for the weekend
2002-01-23 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/src/Makefile.AliROOT:
Makefile from aliroot. The one that was used before.
- * /alice/cvs/hltcvs/level3code/src/AliL3Defs.h: Only 1 file
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h: Only 1 file
2002-01-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Load digitstree only once
2002-01-18 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h:
Smaller changes
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
2002-01-07 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Defs.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h:
Changed to normal bfield
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx:
Added debugs
2001-12-10 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Smaller changes
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h:
Possible to switch onoff deconv
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx: Smaller changes
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx: Smaller changes
- * /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h:
- Adding AliL3Fitter
+ * /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h:
+ Adding AliHLTFitter
- * /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx:
Check if track crosses more than one slice boundary, and if so merge them all. This will only be necessary if the magnetic field is higher than normally.
- * /alice/cvs/hltcvs/level3code/src/AliL3Fitter.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Fitter.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFitter.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFitter.h:
Refitting tracks after tracking
2001-12-06 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx:
Multimerge: When doing global merging, take the parameters of the track which has the most hits
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h:
Made it possible to use different cuts for nonvertex tracking
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Some changes to make is possible to run several events, and also some settings for possible nonvertex tracking options
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
Added new function; GetClosest which calculates the point of closest approach to the vertex.
- * /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.h:
Bugfix. Use local method CheckTracks instead of derived method TrackDiff in SlowMerge. This is because the tracks are in GLOBAL coordinates, not local as TrackDiff assumes.
- * /alice/cvs/hltcvs/level3code/src/AliL3Defs.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx:
- Getting bfield from common file; AliL3Defs.h
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx:
+ Getting bfield from common file; AliHLTDefs.h
2001-12-03 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
Possible to read several events from same rootfile
2001-11-29 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
Added debug logging in SetPointers
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Don't specify fEta to tracker
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Same bugfix in raw2local
2001-11-28 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Bugfix in raw2local
2001-11-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Bugfix in DisplayTracks()
* /alice/cvs/hltcvs/level3code/src/Makefile: Moved classes
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.h:
Addded possibilily to rotate track in AddTracks
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h:
Bugfix in SetZ0, which is actually the first point
- * /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.h, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.cxx:
Addons for html documentation
2001-11-16 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx:
Bugfix in AddTracks
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h:
Made CalculateHelix virtual
- * /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Merger.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.h:
Added possibility for Hough use
- * /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h, /alice/cvs/hltcvs/level3code/src/Makefile:
- Moved AliL3HoughTrack to hough
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h, /alice/cvs/hltcvs/level3code/src/Makefile:
+ Moved AliHLTHoughTrack to hough
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx:
Moving classes to /hough
2001-11-13 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Extended Global2Local to include slice as input
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Made UpdateRowPointer static
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Made some changes in DefineGoodparticles; Allowing to read good tracks from file
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Updates to aliroot V3.06
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx:
- Made Compare() and Set virtual in AliL3Track and derived classes
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx:
+ Made Compare() and Set virtual in AliHLTTrack and derived classes
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Some changes in AliDigits2RootFile
2001-11-01 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx:
Modified AddTracks. Should be backward compatible
2001-10-25 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Logging.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h:
Changed path to timm code
2001-10-23 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Bugfix in GetEta(padrow,pad,time)
- * /alice/cvs/hltcvs/level3code/src/AliL3Logging.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h:
Timms code compatible again
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
Bugfix in AliDigits2RootFile, and AliDigits2Memory
2001-10-12 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h:
Added function AliDigits2RootFile
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Added function UpdateRowPointer
2001-09-21 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Changed to 6 patches
2001-09-18 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Added new funtion GetEta
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.h:
Added a static function GetCpuTime
2001-08-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Updates in EvaluatePoints
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx: Optimization
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx: Optimization
2001-08-21 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Changed to new clusterfinder
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx: Bugfix
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx: Bugfix
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx: bugfix
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx: bugfix
- * /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h:
+ * /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h:
Added new clusterfinder
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h:
Added deconvolution
2001-08-20 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Fixing rounding error in digitMC info
2001-08-17 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Updates for AliROOT V3.05
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinderNew.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinderNew.h:
A new improved cluster finder
2001-08-17 Uli Frankenfeld <franken@hansa00>
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
proteced against non existing inputfile
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx: use memset
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx: use memset
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
Initialize Memory in Function Write and Allocate
2001-08-15 Uli Frankenfeld <franken@hansa00>
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
changed to 6 patches
- * /alice/cvs/hltcvs/level3code/src/AliL3Logging.h: changed printout
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h: changed printout
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.h:
changed to n patches
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.cxx:
remove printout
2001-08-07 Anders Strand Vestbo <vestbo@hansa00>
2001-08-07 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
New AliRoot Coordinate System
2001-07-31 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Changed path of geofile
2001-07-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3Defs.h, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
several bugfixes
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
2001-07-30 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
V3.04 -> V3.05: Init and npadrow changed
2001-07-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h:
Bugfixes
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx:
Bugfix
2001-07-30 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Logging.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx:
Run with dummy Logging class
2001-07-30 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Update bugfixes
* /alice/cvs/hltcvs/level3code/src/Makefile:
2001-07-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx:
Updating
2001-07-26 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx:
- changed (AliL3RandomDigitData **)new Int_t[] to new AliL3RandomDigitData *[]
+ * /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx:
+ changed (AliHLTRandomDigitData **)new Int_t[] to new AliHLTRandomDigitData *[]
2001-07-20 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.cxx:
Updating bugfixes and default values
2001-07-02 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx: Bugfix
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx: Bugfix
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.h:
- Added function AddLast(AliL3Track *track)
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.h:
+ Added function AddLast(AliHLTTrack *track)
2001-05-03 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx: Minor changes
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx: Minor changes
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.h:
Removing obsolete code
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx:
Some updates
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
Changed max number if hits
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Added some functions
2001-05-01 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.cxx:
improved calculation of RMS
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx:
bugfix in CalcEdgePoint
2001-04-27 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.h:
Cleaning up some more
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.h:
Cleaning up after last changes
2001-04-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Changed number of timebins to 446
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h:
Added some functions
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
Added residual calc. and ntuppels
2001-04-06 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx:
Simplification for Fast Simulator
* /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx: cleanup
* /alice/cvs/hltcvs/level3code/src/Makefile, /alice/cvs/hltcvs/level3code/src/Makefile_Root:
add mrproper and wipe
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h:
minor changes, bugfix for FastSim
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
Changed max_num_of_hits to 120000
2001-04-04 Uli Frankenfeld <franken@hansa00>
* /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
Bugfix using Aliroot Inputfiles, changes in Init selectiong rows
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx:
Bugfix in SetSize
- * /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h:
make use_aliroot default, comment if using Makefile_Root
- * /alice/cvs/hltcvs/level3code/src/Makefile_Root, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
+ * /alice/cvs/hltcvs/level3code/src/Makefile_Root, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.h, /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx:
removed class AliLevel3_Root, use AliLevel3 instead
2001-03-22 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx:
cleanup in Read
2001-03-22 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx: Removed junk
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx: Removed junk
- * /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx:
Modified AddTracks
2001-03-22 Uli Frankenfeld <franken@hansa00>
- * /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx:
change in file including
2001-03-22 Anders Strand Vestbo <vestbo@hansa00>
* /alice/cvs/hltcvs/level3code/src/.nfs002b88e300000129: Removed junk
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.h, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.h, /alice/cvs/hltcvs/level3code/src/speedtest.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.h, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.h, /alice/cvs/hltcvs/level3code/src/speedtest.h:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.h, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.h, /alice/cvs/hltcvs/level3code/src/speedtest.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.h, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.h, /alice/cvs/hltcvs/level3code/src/speedtest.h:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.cxx, /alice/cvs/hltcvs/level3code/src/Makefile_Root, /alice/cvs/hltcvs/level3code/src/speedtest.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.cxx, /alice/cvs/hltcvs/level3code/src/Makefile_Root, /alice/cvs/hltcvs/level3code/src/speedtest.cxx:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.cxx, /alice/cvs/hltcvs/level3code/src/Makefile_Root, /alice/cvs/hltcvs/level3code/src/speedtest.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3.cxx, /alice/cvs/hltcvs/level3code/src/AliLevel3_Root.cxx, /alice/cvs/hltcvs/level3code/src/Makefile_Root, /alice/cvs/hltcvs/level3code/src/speedtest.cxx:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/.nfs002b88e300000129:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/.nfs002b88e300000129:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3Display.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Display.h, /alice/cvs/hltcvs/level3code/src/AliL3Track.h, /alice/cvs/hltcvs/level3code/src/.nfs002b88e300000129:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTDisplay.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.h, /alice/cvs/hltcvs/level3code/src/.nfs002b88e300000129:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Logging.h, /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.cxx, /alice/cvs/hltcvs/level3code/src/Makefile:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h, /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.cxx, /alice/cvs/hltcvs/level3code/src/Makefile:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.h, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3FileHandler.h, /alice/cvs/hltcvs/level3code/src/AliL3Logging.h, /alice/cvs/hltcvs/level3code/src/AliL3RootTypes.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.cxx, /alice/cvs/hltcvs/level3code/src/Makefile:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.h, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTFileHandler.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogging.h, /alice/cvs/hltcvs/level3code/src/AliHLTRootTypes.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.cxx, /alice/cvs/hltcvs/level3code/src/Makefile:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Track.cxx, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.cxx:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3Evaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTEvaluate.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTMemHandler.h:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliL3HoughTrack.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTHoughTrack.cxx:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.h, /alice/cvs/hltcvs/level3code/src/doit:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.h, /alice/cvs/hltcvs/level3code/src/doit:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3Benchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliL3Logger.h, /alice/cvs/hltcvs/level3code/src/doit:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTBenchmark.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.cxx, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.h, /alice/cvs/hltcvs/level3code/src/doit:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3Defs.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.h, /alice/cvs/hltcvs/level3code/src/AliL3SpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackSegmentData.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexData.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.h, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTSpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackSegmentData.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexData.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3Defs.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.h, /alice/cvs/hltcvs/level3code/src/AliL3SpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackArray.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3TrackSegmentData.h, /alice/cvs/hltcvs/level3code/src/AliL3Transform.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexArray.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexData.h, /alice/cvs/hltcvs/level3code/src/AliL3VertexFinder.h, /alice/cvs/hltcvs/level3code/src/AliL3Vertex.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTDefs.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTSpacePointData.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTTrackSegmentData.h, /alice/cvs/hltcvs/level3code/src/AliHLTTransform.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexArray.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexData.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertexFinder.h, /alice/cvs/hltcvs/level3code/src/AliHLTVertex.h, /alice/cvs/hltcvs/level3code/src/AliLevel3.h:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3DigitData.h, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTDigitData.h, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3ConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapTrack.h, /alice/cvs/hltcvs/level3code/src/AliL3DigitData.h, /alice/cvs/hltcvs/level3code/src/AliL3GlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3InterMerger.h, /alice/cvs/hltcvs/level3code/src/AliL3LinkDef.h, /alice/cvs/hltcvs/level3code/src/AliL3Merger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTConfMapper.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapPoint.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapTrack.h, /alice/cvs/hltcvs/level3code/src/AliHLTDigitData.h, /alice/cvs/hltcvs/level3code/src/AliHLTGlobalMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTInterMerger.h, /alice/cvs/hltcvs/level3code/src/AliHLTLinkDef.h, /alice/cvs/hltcvs/level3code/src/AliHLTMerger.cxx:
New file.
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx:
Imported the source files
- * /alice/cvs/hltcvs/level3code/src/AliL3ClustFinder.h, /alice/cvs/hltcvs/level3code/src/AliL3ConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliL3Logger.cxx:
+ * /alice/cvs/hltcvs/level3code/src/AliHLTClustFinder.h, /alice/cvs/hltcvs/level3code/src/AliHLTConfMapFit.h, /alice/cvs/hltcvs/level3code/src/AliHLTLogger.cxx:
New file.
in the track segment data structure. This is used
for the new row transformer and probably only
a temporary solution, as the proper way would be
- to have a new AliL3HoughTrackRow class.
+ to have a new AliHLTHoughTrackRow class.
By default the flag $ALIHLT_ROWHOUGH points to false,
so there is no change to earlier versions.
2003-07-29 Constantin Loizides <loizides@hansa00>
* /alice/cvs/hltcvs/level3code/Makefile.conf, /alice/cvs/hltcvs/level3code/Makefile.rules:
- Removed ASV version, as the new AliL3FileHandler does not need (but still would be faster using the patched AliTPC class).
+ Removed ASV version, as the new AliHLTFileHandler does not need (but still would be faster using the patched AliTPC class).
2003-07-28 Constantin Loizides <loizides@hansa00>
2004-05-11 Gaute Ovrebekk <ovrebekk@hansa00>
- * /alice/cvs/hltcvs/level3code/trigger/AliBarrelRec_TPCparam.C, /alice/cvs/hltcvs/level3code/trigger/AliD0Trigger.C, /alice/cvs/hltcvs/level3code/trigger/AliD0Trigger.cxx, /alice/cvs/hltcvs/level3code/trigger/AliD0Trigger.h, /alice/cvs/hltcvs/level3code/trigger/AliD0vtxFinderBkg_pp_VTX.C, /alice/cvs/hltcvs/level3code/trigger/AliD0vtxFinderSgn_pp_VTX.C, /alice/cvs/hltcvs/level3code/trigger/AliITSFindClustersV2.C, /alice/cvs/hltcvs/level3code/trigger/AliL3TriggerLinkDef.h, /alice/cvs/hltcvs/level3code/trigger/Makefile, /alice/cvs/hltcvs/level3code/trigger/RunD0offline.C:
+ * /alice/cvs/hltcvs/level3code/trigger/AliBarrelRec_TPCparam.C, /alice/cvs/hltcvs/level3code/trigger/AliD0Trigger.C, /alice/cvs/hltcvs/level3code/trigger/AliD0Trigger.cxx, /alice/cvs/hltcvs/level3code/trigger/AliD0Trigger.h, /alice/cvs/hltcvs/level3code/trigger/AliD0vtxFinderBkg_pp_VTX.C, /alice/cvs/hltcvs/level3code/trigger/AliD0vtxFinderSgn_pp_VTX.C, /alice/cvs/hltcvs/level3code/trigger/AliITSFindClustersV2.C, /alice/cvs/hltcvs/level3code/trigger/AliHLTTriggerLinkDef.h, /alice/cvs/hltcvs/level3code/trigger/Makefile, /alice/cvs/hltcvs/level3code/trigger/RunD0offline.C:
removeing macros
2004-05-04 Gaute Ovrebekk <ovrebekk@hansa00>
2003-07-22 Constantin Loizides <loizides@hansa00>
- * /alice/cvs/hltcvs/level3code/trigger/AliD0toKpi.h, /alice/cvs/hltcvs/level3code/trigger/AliL3Trigger.h, /alice/cvs/hltcvs/level3code/trigger/AliL3TriggerLinkDef.h:
+ * /alice/cvs/hltcvs/level3code/trigger/AliD0toKpi.h, /alice/cvs/hltcvs/level3code/trigger/AliHLTTrigger.h, /alice/cvs/hltcvs/level3code/trigger/AliHLTTriggerLinkDef.h:
Added html tags for documentation.
* /alice/cvs/hltcvs/level3code/trigger/Makefile:
2003-05-30 Gaute Ovrebekk <ovrebekk@hansa00>
- * /alice/cvs/hltcvs/level3code/trigger/AliD0toKpi.cxx, /alice/cvs/hltcvs/level3code/trigger/AliD0toKpi.h, /alice/cvs/hltcvs/level3code/trigger/AliD0vtxFinderBkg_pp_VTX.C, /alice/cvs/hltcvs/level3code/trigger/AliD0vtxFinderSgn_pp_VTX.C, /alice/cvs/hltcvs/level3code/trigger/AliL3TriggerLinkDef.h, /alice/cvs/hltcvs/level3code/trigger/Makefile:
+ * /alice/cvs/hltcvs/level3code/trigger/AliD0toKpi.cxx, /alice/cvs/hltcvs/level3code/trigger/AliD0toKpi.h, /alice/cvs/hltcvs/level3code/trigger/AliD0vtxFinderBkg_pp_VTX.C, /alice/cvs/hltcvs/level3code/trigger/AliD0vtxFinderSgn_pp_VTX.C, /alice/cvs/hltcvs/level3code/trigger/AliHLTTriggerLinkDef.h, /alice/cvs/hltcvs/level3code/trigger/Makefile:
Added first verison of D0 TriggerCode
2002-04-26 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/trigger/AliL3Trigger.cxx, /alice/cvs/hltcvs/level3code/trigger/AliL3Trigger.h:
- Changes as a result of making AliL3Transform static.
+ * /alice/cvs/hltcvs/level3code/trigger/AliHLTTrigger.cxx, /alice/cvs/hltcvs/level3code/trigger/AliHLTTrigger.h:
+ Changes as a result of making AliHLTTransform static.
2002-03-06 Anders Strand Vestbo <vestbo@hansa00>
- * /alice/cvs/hltcvs/level3code/trigger/AliL3Trigger.h, /alice/cvs/hltcvs/level3code/trigger/AliL3Trigger.cxx:
+ * /alice/cvs/hltcvs/level3code/trigger/AliHLTTrigger.h, /alice/cvs/hltcvs/level3code/trigger/AliHLTTrigger.cxx:
Added trigger code. For the moment only preliminary code for pileup removal
-void AliL3Transform::Init(){
+void AliHLTTransform::Init(){
fVersion = 10;
fBFieldFactor = 1.000;
fSolenoidBField = 4.000;
-void AliL3Transform::Init(){
+void AliHLTTransform::Init(){
fVersion = 100;
fBFieldFactor = 0.000;
fSolenoidBField = 2.000;
*/
#ifndef __CINT__
-#include "AliL3Logger.h"
-#include "AliL3FileHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
+#include "AliHLTLogger.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
#include <TNtuple.h>
#include <TRandom.h>
#include <TSystem.h>
Int_t patch = -1; //All of slice.
Int_t NEvents = npiles; //for compatibility with old version
- AliL3FileHandler **hand=new AliL3FileHandler*[NEvents];
- AliL3DigitRowData **data=new AliL3DigitRowData*[NEvents];
- AliL3DigitData **rowData=new AliL3DigitData*[NEvents];
- AliL3DigitData *test;
+ AliHLTFileHandler **hand=new AliHLTFileHandler*[NEvents];
+ AliHLTDigitRowData **data=new AliHLTDigitRowData*[NEvents];
+ AliHLTDigitData **rowData=new AliHLTDigitData*[NEvents];
+ AliHLTDigitData *test;
Char_t Carry[1024];
Int_t DigitsTot = 0;
Int_t tot_dig=0;
Byte_t *NData;
const Int_t maxdigits=50000;
- AliL3DigitData *temp[maxdigits];
- AliL3DigitData *temp2[maxdigits];
+ AliHLTDigitData *temp[maxdigits];
+ AliHLTDigitData *temp2[maxdigits];
//Create 1 filehander per event:
sprintf(Carry,"%s/digitfile.root",path);
for(Int_t event=0; event<NEvents; event++)
{
- hand[event] = new AliL3FileHandler();
+ hand[event] = new AliHLTFileHandler();
if(!hand[event]->SetAliInput(Carry))
cerr<<" Error opening file :"<<Carry<<endl;
}
//Find out how many digits to allocate per patch
DigitsTot=0;
Int_t sign = slice < 18 ? -1 : 1;
- for(Int_t row = 0 ; row < AliL3Transform::GetNRows(patch) ; row++){
+ for(Int_t row = 0 ; row < AliHLTTransform::GetNRows(patch) ; row++){
for(Int_t event = 0; event < NEvents ; event++){
- rowData[event] = (AliL3DigitData *)data[event]->fDigitData;
+ rowData[event] = (AliHLTDigitData *)data[event]->fDigitData;
for(UInt_t dig=0; dig<data[event]->fNDigit; dig++)
{
Int_t time = rowData[event][dig].fTime + sign*Offset[event];
- if(time < AliL3Transform::GetNTimeBins() && time >= 0)
+ if(time < AliHLTTransform::GetNTimeBins() && time >= 0)
DigitsTot++;
}
}
//cout << "Try to allocate : " << DigitsTot << endl;
- Int_t AllDigitsSize = sizeof(AliL3DigitData) * DigitsTot + sizeof(AliL3DigitRowData) * AliL3Transform::GetNRows(patch);
+ Int_t AllDigitsSize = sizeof(AliHLTDigitData) * DigitsTot + sizeof(AliHLTDigitRowData) * AliHLTTransform::GetNRows(patch);
NData = new Byte_t[AllDigitsSize];
memset(NData,0,AllDigitsSize);
- AliL3DigitRowData *AllRowData = (AliL3DigitRowData*)NData;
+ AliHLTDigitRowData *AllRowData = (AliHLTDigitRowData*)NData;
//cout << "Allocated " << endl;
//Reset the data pointers, because they changed when doing UpdateRowPointer.
for(Int_t event=0; event<NEvents; event++)
- data[event] = (AliL3DigitRowData*)hand[event]->GetDataPointer(size);
+ data[event] = (AliHLTDigitRowData*)hand[event]->GetDataPointer(size);
//Pileup the event
tot_dig=0;
- for(Int_t row = 0 ; row < AliL3Transform::GetNRows(patch) ; row++){
+ for(Int_t row = 0 ; row < AliHLTTransform::GetNRows(patch) ; row++){
DigitsPerRow = 0;
for(Int_t event = 0; event < NEvents ; event++){
- rowData[event] = (AliL3DigitData *)data[event]->fDigitData;
+ rowData[event] = (AliHLTDigitData *)data[event]->fDigitData;
for(UInt_t dig=0; dig<data[event]->fNDigit; dig++)
{
Int_t time = rowData[event][dig].fTime + sign*Offset[event];
- if(time < AliL3Transform::GetNTimeBins() && time >= 0)
+ if(time < AliHLTTransform::GetNTimeBins() && time >= 0)
DigitsPerRow++;
}
}
//because we have to sort them before storing them :
MeVDigit = 0;
for(Int_t event = 0; event < NEvents ; event++){
- rowData[event] = (AliL3DigitData *)data[event]->fDigitData;
+ rowData[event] = (AliHLTDigitData *)data[event]->fDigitData;
for(UInt_t digit = 0; digit < data[event]->fNDigit ; digit++){
Int_t time = rowData[event][digit].fTime + sign*Offset[event];
- if(time >= AliL3Transform::GetNTimeBins() || time < 0)
+ if(time >= AliHLTTransform::GetNTimeBins() || time < 0)
continue;
temp[MeVDigit] = &rowData[event][digit];
tot_dig+=final_count;
AllRowData->fRow = row;
AllRowData->fNDigit = final_count;
- test = (AliL3DigitData *) AllRowData->fDigitData;
+ test = (AliHLTDigitData *) AllRowData->fDigitData;
//and copy them to the new event:
for(Int_t c=0; c<final_count; c++)
cerr<<"Error; final_count "<<final_count<<" MeVDigit "<<MeVDigit<<endl;
Byte_t *tmp = (Byte_t *)AllRowData;
- Int_t UpdateSize = sizeof(AliL3DigitRowData) + sizeof(AliL3DigitData)*final_count;
+ Int_t UpdateSize = sizeof(AliHLTDigitRowData) + sizeof(AliHLTDigitData)*final_count;
tmp += UpdateSize;
- AllRowData = (AliL3DigitRowData *) tmp;
+ AllRowData = (AliHLTDigitRowData *) tmp;
}//end looping over row
if(tot_dig>DigitsTot)
hand[event]->FreeDigitsTree();
}
- AliL3FileHandler *Out = new AliL3FileHandler();
- AllRowData = (AliL3DigitRowData*)NData;
+ AliHLTFileHandler *Out = new AliHLTFileHandler();
+ AllRowData = (AliHLTDigitRowData*)NData;
if(slice==0){
if(pileupdir[0]=='/')
sprintf(Carry,"mkdir -p %s/",pileupdir);
return;
}
cout << "Writing to file: " << Carry <<endl;
- Out->Memory2Binary(AliL3Transform::GetNRows(patch),AllRowData);
+ Out->Memory2Binary(AliHLTTransform::GetNRows(patch),AllRowData);
Out->CloseBinaryOutput();
delete Out;
delete [] NData;
void QSort(void **dPt,Int_t first,Int_t last)
{
//General sorting routine. only sorting the pointers.
- AliL3DigitData **a = (AliL3DigitData**)dPt;
+ AliHLTDigitData **a = (AliHLTDigitData**)dPt;
- AliL3DigitData *tmp;
+ AliHLTDigitData *tmp;
int i;
int j;
Int_t CompareDigits(void *dPt1,void *dPt2)
{
- AliL3DigitData *a = (AliL3DigitData*)dPt1;
- AliL3DigitData *b = (AliL3DigitData*)dPt2;
+ AliHLTDigitData *a = (AliHLTDigitData*)dPt1;
+ AliHLTDigitData *b = (AliHLTDigitData*)dPt2;
if(a->fPad==b->fPad && a->fTime == b->fTime) return 0;
if(a->fPad<b->fPad) return -1;
//$Id$
-void SetFitParameters(AliL3ClusterFitter *fitter)
+void SetFitParameters(AliHLTClusterFitter *fitter)
{
fitter->SetInnerWidthFactor(1,1);
fitter->SetOuterWidthFactor(1,1);
//$Id$
-void SetHoughParameters(AliL3Hough *hough,Char_t *path,Int_t tversion=1)
+void SetHoughParameters(AliHLTHough *hough,Char_t *path,Int_t tversion=1)
{
bool binary = kTRUE; //binary files input
int n_eta_segments=100;
rowscopetracklet = 2;
rowscopetrack = 4;
min_pt_fit = 0;
- maxangle = 0.1745; //AliL3Transform::Deg2Rad(10);
+ maxangle = 0.1745; //AliHLTTransform::Deg2Rad(10);
goodDist = 5;
maxphi = 0.1;
maxeta = 0.1;
rowscopetracklet = 2;
rowscopetrack = 5;
min_pt_fit = 0;
- maxangle = 0.1745; //AliL3Transform::Deg2Rad(10);
+ maxangle = 0.1745; //AliHLTTransform::Deg2Rad(10);
goodDist = 5;
maxphi = 0.1;
maxeta = 0.1;
rowscopetracklet = 2;
rowscopetrack = 10;
min_pt_fit = 0;
- maxangle = 0.1745; //AliL3Transform::Deg2Rad(10);
+ maxangle = 0.1745; //AliHLTTransform::Deg2Rad(10);
goodDist = 5;
maxphi = 0.1;
maxeta = 0.1;
rowscopetracklet = 2;
rowscopetrack = 10;
min_pt_fit = 0;
- maxangle = 0.1745; //AliL3Transform::Deg2Rad(10);
+ maxangle = 0.1745; //AliHLTTransform::Deg2Rad(10);
goodDist = 5;
maxphi = 0.1;
maxeta = 0.1;
rowscopetracklet = 3;
rowscopetrack = 15;
min_pt_fit = 0;
- maxangle = 0.1745; //AliL3Transform::Deg2Rad(10);
+ maxangle = 0.1745; //AliHLTTransform::Deg2Rad(10);
goodDist = 5;
maxphi = 0.1;
maxeta = 0.1;
rowscopetracklet = 2;
rowscopetrack = 15;
min_pt_fit = 0;
- maxangle = 0.1745; //AliL3Transform::Deg2Rad(10);
+ maxangle = 0.1745; //AliHLTTransform::Deg2Rad(10);
goodDist = 5;
maxphi = 0.1;
maxeta = 0.1;
rowscopetracklet = 2;
rowscopetrack = 2;
min_pt_fit = 0;
- maxangle = 0.1745; //AliL3Transform::Deg2Rad(10);
+ maxangle = 0.1745; //AliHLTTransform::Deg2Rad(10);
goodDist = 5;
maxphi = 0.1;
maxeta = 0.1;
binary(Char_t* inpath,Char_t *outpath,Int_t first,Int_t last,Int_t event,Bool_t sp=kFALSE,Bool_t altro=kTRUE){
- AliL3Transform::Init(inpath,kTRUE);
+ AliHLTTransform::Init(inpath,kTRUE);
if(sp) {
singlepatch(inpath,outpath,first,last,event,altro);
const Int_t npatch = 6;
sprintf(name,"%s/digitfile.root",inpath);
- AliL3FileHandler *fFileHandler = new AliL3FileHandler();
+ AliHLTFileHandler *fFileHandler = new AliHLTFileHandler();
fFileHandler->SetAliInput(name);
for(Int_t slice=first; slice<=last; slice++){
{
Char_t name[256];
- AliL3FileHandler *fFileHandler = new AliL3FileHandler();
+ AliHLTFileHandler *fFileHandler = new AliHLTFileHandler();
sprintf(name,"%s/digitfile.root",inpath);
fFileHandler->SetAliInput(name);
{
//Write new rootfile, using data from the binary files.
- AliL3Transform::Init(path);
+ AliHLTTransform::Init(path);
char filename[1024];
sprintf(filename,"%s/digitfile.root",path);
file = TFile::Open(filename,"READ");
{
for(Int_t patch=0; patch<=5; patch++)
{
- c = new AliL3Compress(slice,patch,path);
+ c = new AliHLTCompress(slice,patch,path);
c->WriteRootFile(filename,in);
delete c;
}
}
void make_init_file(Char_t *f,Char_t *path="./"){
- AliL3Transform::MakeInitFile(f,path);
+ AliHLTTransform::MakeInitFile(f,path);
}
void convert(Int_t sl=0,Int_t sh=35,Char_t *path1="./", Char_t *path2="./")
{
char fname[250];
- AliL3Logger l;
- //l.UnSet(AliL3Logger::kDebug);
- //l.UnSet(AliL3Logger::kAll);
- //l.Set(AliL3Logger::kInformational);
+ AliHLTLogger l;
+ //l.UnSet(AliHLTLogger::kDebug);
+ //l.UnSet(AliHLTLogger::kAll);
+ //l.Set(AliHLTLogger::kInformational);
l.UseStdout();
//l.UseStream();
{
for(int patch=0; patch<6; patch++)
{
- file = new AliL3DataHandler();
+ file = new AliHLTDataHandler();
file->Init(slice,patch);
sprintf(fname,"%s/digits_%d_%d.raw",path1,slice,patch);
file->SetBinaryInput(fname);
#if 0
void read()
{
- AliL3MemHandler *file = new AliL3DataHandler();
+ AliHLTMemHandler *file = new AliHLTDataHandler();
file->SetBinaryInput("/prog/alice/data/new/fixed-slice0/rawdata_8bit/1part/digits_c8_0_5.raw");
//file->SetBinaryInput("test.raw");
UInt_t ndigits;
- AliL3DigitRowData *data = (AliL3DigitRowData*)file->CompBinary2Memory(ndigits);
+ AliHLTDigitRowData *data = (AliHLTDigitRowData*)file->CompBinary2Memory(ndigits);
cout<<"Number of rows: "<<ndigits<<endl;
- AliL3DigitData *digPt=0;
+ AliHLTDigitData *digPt=0;
for(int i=0; i<32; i++)
{
//cout<<(int)data->fRow<<endl;
ddl2binary(Char_t* inpath,Char_t *outpath,Int_t first=0,Int_t last=35,Bool_t sp=kTRUE,Int_t event=-1){
- AliL3Transform::Init(inpath); //expect l3transform.config in "inpath"
+ AliHLTTransform::Init(inpath); //expect l3transform.config in "inpath"
Int_t patchfrom = 0;
Int_t patchend = 6;
sprintf(name,"%s/Ev0TPCslice",inpath);
//create the file handler
- AliL3DDLDataFileHandler *fFileHandler = new AliL3DDLDataFileHandler();
+ AliHLTDDLDataFileHandler *fFileHandler = new AliHLTDDLDataFileHandler();
fFileHandler->SetReaderInput(name);
for(Int_t slice=first; slice<=last; slice++){
//$Id$
-/* Example of how to use the AliL3ClusterFitter to fit clusters
- to the track candidates given as a AliL3TrackArray.
+/* Example of how to use the AliHLTClusterFitter to fit clusters
+ to the track candidates given as a AliHLTTrackArray.
The path "path" should contain the link to the digitsfile,
and the directories called fitter (for the results) and hough
*/
#ifndef __CINT__
-#include "AliL3Logger.h"
-#include "AliL3FileHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Track.h"
-#include "AliL3Transform.h"
-#include "AliL3Hough.h"
-#include "AliL3Fitter.h"
-#include "AliL3ClusterFitter.h"
-#include "AliL3Vertex.h"
-#include "AliL3TrackArray.h"
+#include "AliHLTLogger.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHough.h"
+#include "AliHLTFitter.h"
+#include "AliHLTClusterFitter.h"
+#include "AliHLTVertex.h"
+#include "AliHLTTrackArray.h"
#include <TNtuple.h>
#include <TRandom.h>
#include <TSystem.h>
void deconvclusters(Char_t *path,Int_t minslice=0,Int_t maxslice=35,Int_t nevent=1)
{
- AliL3Transform::Init(path,kTRUE);
+ AliHLTTransform::Init(path,kTRUE);
Char_t filename[1024];
- AliL3FileHandler *file = new AliL3FileHandler(kTRUE); //static index
+ AliHLTFileHandler *file = new AliHLTFileHandler(kTRUE); //static index
UInt_t ndigits=0;
sprintf(filename,"%s/digitfile.root",path);
file->SetAliInput(filename);
- AliL3ClusterFitter *fitter = new AliL3ClusterFitter(path);
+ AliHLTClusterFitter *fitter = new AliHLTClusterFitter(path);
#ifdef __CINT__
Char_t macroname[1024];
TStopwatch trefitter;trefitter.Stop();
Int_t patch=-1;
- Int_t rowrange[2] = {0,AliL3Transform::GetNRows()-1};
+ Int_t rowrange[2] = {0,AliHLTTransform::GetNRows()-1};
for(Int_t ev=0; ev<nevent; ev++)
{
- AliL3FileHandler::LoadStaticIndex(0,ev);
+ AliHLTFileHandler::LoadStaticIndex(0,ev);
fitter->LoadSeeds(rowrange,kFALSE,ev); //Takes input from global hough tracks
for(Int_t slice=minslice; slice<=maxslice; slice++)
tloader.Start(0);
file->Init(slice,-1);
cout<<"Processing event "<<ev<<" slice "<<slice<<" patch "<<patch<<endl;
- AliL3DigitRowData *digits = (AliL3DigitRowData*)file->AliAltroDigits2Memory(ndigits,ev);
+ AliHLTDigitRowData *digits = (AliHLTDigitRowData*)file->AliAltroDigits2Memory(ndigits,ev);
fitter->Init(slice,patch);
fitter->SetInputData(digits);
tloader.Stop();
//If you want a refit of the clusters;-------------------------
tloader.Start(0);
- AliL3Vertex vertex;
- AliL3TrackArray *tracks = fitter->GetSeeds(); //The seeds are the
+ AliHLTVertex vertex;
+ AliHLTTrackArray *tracks = fitter->GetSeeds(); //The seeds are the
//input tracks from circle HT
- AliL3Fitter *ft = new AliL3Fitter(&vertex,1);
+ AliHLTFitter *ft = new AliHLTFitter(&vertex,1);
sprintf(filename,"%s/fitter/",path);
ft->LoadClusters(filename,0,kTRUE);
tloader.Stop();
trefitter.Start(0);
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3Track *track = tracks->GetCheckedTrack(i);
+ AliHLTTrack *track = tracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetNHits() < 40) continue;
ft->SortTrackClusters(track);
void deconvlocally(Char_t *path,Int_t minslice=0,Int_t maxslice=17)
{
- AliL3Transform::Init(path,kTRUE);
+ AliHLTTransform::Init(path,kTRUE);
Char_t filename[1024];
- AliL3FileHandler *file = new AliL3FileHandler(kTRUE);
+ AliHLTFileHandler *file = new AliHLTFileHandler(kTRUE);
UInt_t ndigits=0;
sprintf(filename,"%s/digitfile.root",path);
file->SetAliInput(filename);
- AliL3ClusterFitter *fitter = new AliL3ClusterFitter(path);
+ AliHLTClusterFitter *fitter = new AliHLTClusterFitter(path);
#ifdef __CINT__
Char_t macroname[1024];
{
file->Init(slice,patch);
cout<<"Processing slice "<<slice<<" patch "<<patch<<endl;
- AliL3DigitRowData *digits = (AliL3DigitRowData*)file->AliAltroDigits2Memory(ndigits);
+ AliHLTDigitRowData *digits = (AliHLTDigitRowData*)file->AliAltroDigits2Memory(ndigits);
fitter->Init(slice,patch);
fitter->LoadLocalSegments();
/**
Macro for displaying L3 cluster/track or raw data.
- Uses the AliL3Display class.
+ Uses the AliHLTDisplay class.
*/
void display(Int_t minslice,Int_t maxslice,Char_t *file="tracks.raw",Char_t *path="./",Char_t *gfile="$(ALIGEOPATH)/alice.geom")
gStyle->SetOptStat(0);
Int_t slice[2] = {minslice,maxslice};
- AliL3Display *a = new AliL3Display(slice,gfile);
+ AliHLTDisplay *a = new AliHLTDisplay(slice,gfile);
//a->Setup(file,path);
a->Setup(file,path,0,kTRUE);
Char_t file[1024];
sprintf(file,"%s/tracks_%d.raw",path,ev);
- a = new AliL3Display(slice,gfile);
+ a = new AliHLTDisplay(slice,gfile);
//a->Setup(file,path);
a->Setup(file,path,ev,kTRUE);
Char_t fname[1024];
sprintf(fname,"%s/tracks_%d.raw",path,ievent);
- AliL3FileHandler *tfile = new AliL3FileHandler();
+ AliHLTFileHandler *tfile = new AliHLTFileHandler();
if(!tfile->SetBinaryInput(fname)){
- LOG(AliL3Log::kError,"AliL3Evaluation::Setup","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluation::Setup","File Open")
<<"Inputfile "<<fname<<" does not exist"<<ENDLOG;
return;
}
- AliL3TrackArray *fTracks = new AliL3TrackArray("AliL3HoughTrack");
+ AliHLTTrackArray *fTracks = new AliHLTTrackArray("AliHLTHoughTrack");
tfile->Binary2TrackArray(fTracks);
//fTracks->QSort();
tfile->CloseBinaryInput();
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3HoughTrack *track = fTracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *track = fTracks->GetCheckedTrack(i);
if(!track) continue;
track->SetEta(fTracks->GetCheckedTrack(i)->GetPseudoRapidity());
ifstream in(filename);
if(!in)
{
- cerr<<"AliL3Evaluate::GetGoodParticles : Problems opening file :"<<filename<<endl;
+ cerr<<"AliHLTEvaluate::GetGoodParticles : Problems opening file :"<<filename<<endl;
return;
}
fGoodGen++;
if (fGoodGen==MaxTracks)
{
- cerr<<"AliL3Evaluate::GetGoodParticles : Too many good tracks !\n";
+ cerr<<"AliHLTEvaluate::GetGoodParticles : Too many good tracks !\n";
break;
}
}
if(!fGoodTracks)
{
- cerr<<"AliL3Evaluate::FillEffHistos : No good tracks"<<endl;
+ cerr<<"AliHLTEvaluate::FillEffHistos : No good tracks"<<endl;
return;
}
cout<<"Comparing "<<fGoodGen<<" good tracks ..."<<endl;
Int_t org_slice;
for(Int_t k=0; k<fTracks->GetNTracks(); k++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack *)fTracks->GetCheckedTrack(k);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack *)fTracks->GetCheckedTrack(k);
if(!track) continue;
// Int_t nHits = track->GetNumberOfPoints();
// if(nHits < fMinPointsOnTrack) break;
offlinepath : path to where the files containing lists of the simulated particles are located.
This are files generated by the AliTPCComparison macro (good_tracks_tpc)
- All efficiencies and ptresoutions are filled in histograms (see AliL3Evaluate::CreateHistograms)
+ All efficiencies and ptresoutions are filled in histograms (see AliHLTEvaluate::CreateHistograms)
and written to file.
*/
#ifndef __CINT__
-#include "AliL3Logger.h"
-#include "AliL3Evaluate.h"
-#include "AliL3FileHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
+#include "AliHLTLogger.h"
+#include "AliHLTEvaluate.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
#include "AliLevel3.h"
#include <TROOT.h>
#include <TNtuple.h>
void evaltracker(Char_t *path="./",Char_t *trackpath="./tracker/",char *offlinepath="./",int nevent=1)
{
//Make sure you got the correct parameters:
- AliL3Transform::Init(path,kTRUE);
+ AliHLTTransform::Init(path,kTRUE);
//Define which slices to include:
Int_t slicerange[2]={0,35};
//Define which padrows to include (should normally be all)
- //Int_t rowrange[2]={AliL3Transform::GetFirstRow(-1),AliL3Transform::GetLastRow(-1)};
+ //Int_t rowrange[2]={AliHLTTransform::GetFirstRow(-1),AliHLTTransform::GetLastRow(-1)};
//Define the minimum number of clusters on a simulated track to be found:
- Int_t good = (Int_t)(0.4*AliL3Transform::GetNRows());
+ Int_t good = (Int_t)(0.4*AliHLTTransform::GetNRows());
//Define the minumum number of clusters on a found track to be found (should normally be the same as above)
- Int_t nclusters = (Int_t)(0.4*AliL3Transform::GetNRows());
+ Int_t nclusters = (Int_t)(0.4*AliHLTTransform::GetNRows());
//Define which pt range to include
Float_t ptmin = 0.1;
//Define the maximum ratio of false clusters which are allowed on a found track (default=0.1 -> 10%)
Float_t maxfalseratio = 0.1;
- AliL3Evaluate *a = new AliL3Evaluate(trackpath,nclusters,good,ptmin,ptmax,slicerange);
+ AliHLTEvaluate *a = new AliHLTEvaluate(trackpath,nclusters,good,ptmin,ptmax,slicerange);
a->CreateHistos(20,0.1,4.1);//(nbins in pt,minpt,maxpt) -> the same as used by standard offline
a->SetMaxFalseClusters(maxfalseratio);
//a->SetStandardComparison(kFALSE); //use AliTPCComparison_HLT
void fill_pp(Int_t ev=0,Char_t *path="./",Char_t *rfile="pptracks.root",Int_t saveev=-1)
{
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStdout();
//l.UseStream();
if(getenv("TRANSFORMCONFIGPATH")){
- AliL3Transform::Init(getenv("TRANSFORMCONFIGPATH"));
- } else AliL3Transform::Init(path);
+ AliHLTTransform::Init(getenv("TRANSFORMCONFIGPATH"));
+ } else AliHLTTransform::Init(path);
TNtuple *ntuppel = new TNtuple("ntuppel","pptracks","pt:phi:eta:xvert:yvert:zvert:imp:nhits:px:py:pz:event:mc");
Float_t meas[13];
TFile file(rfile,"UPDATE");
Char_t name[1024];
- AliL3Evaluate *eval=new AliL3Evaluate(path,63,63);
+ AliHLTEvaluate *eval=new AliHLTEvaluate(path,63,63);
eval->LoadData(ev,-1);
eval->AssignIDs();
- AliL3TrackArray *a=eval->GetTracks();
+ AliHLTTrackArray *a=eval->GetTracks();
a->Compress();
- AliL3Track t;
+ AliHLTTrack t;
Float_t phi,pt,eta;
Int_t id;
Int_t nhits;
- AliL3Vertex vertex;
+ AliHLTVertex vertex;
Double_t xc,yc,zc,impact;
Int_t ntracks=a.GetNTracks();
void eval_pp(Int_t ev=0,Char_t *path="./")
{
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStdout();
//l.UseStream();
- AliL3Evaluate *eval=new AliL3Evaluate(path,63,63);
+ AliHLTEvaluate *eval=new AliHLTEvaluate(path,63,63);
eval->LoadData(ev,-1);
eval->AssignIDs();
- AliL3TrackArray *a=eval->GetTracks();
+ AliHLTTrackArray *a=eval->GetTracks();
- AliL3Track t;
+ AliHLTTrack t;
Float_t phi,pt,tgl,eta;
Int_t id;
Int_t nhits;
Int_t abspos=0,pos=0,absneg=0,neg=0;
//assume vertex around zero
- AliL3Vertex vertex;
+ AliHLTVertex vertex;
Double_t xc,yc,zc,impact;
Int_t nents=0;
Store certain amount of track
arrays in a root file for later
access - okay needs to many changes
- in AliL3TrackArray and AliL3Track
+ in AliHLTTrackArray and AliHLTTrack
classes so stopped working on it
(see fill_pp instead).
*/
void store_pp(Int_t evs=0,Int_t eve=100,Char_t *path="./",Char_t *rfile="tracks.root")
{
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStdout();
//l.UseStream();
if(getenv("TRANSFORMCONFIGPATH")){
- AliL3Transform::Init(getenv("TRANSFORMCONFIGPATH"));
+ AliHLTTransform::Init(getenv("TRANSFORMCONFIGPATH"));
}
TFile file(rfile,"UPDATE");
Char_t name[1024];
for(Int_t i=evs;i<eve;i++){
- AliL3Evaluate *eval=new AliL3Evaluate(path,63,63);
+ AliHLTEvaluate *eval=new AliHLTEvaluate(path,63,63);
eval->LoadData(i,-1);
eval->AssignIDs();
- AliL3TrackArray *a=eval->GetTracks();
+ AliHLTTrackArray *a=eval->GetTracks();
sprintf(name,"tracks-%d",i);
a->Compress();
a->Write(name);
void load_pp(Int_t evs=0,Int_t eve=100,Char_t *path="./")
{
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStdout();
//l.UseStream();
if(getenv("TRANSFORMCONFIGPATH")){
- AliL3Transform::Init(getenv("TRANSFORMCONFIGPATH"));
+ AliHLTTransform::Init(getenv("TRANSFORMCONFIGPATH"));
} else {
- AliL3Transform::Init(path);
+ AliHLTTransform::Init(path);
}
for(Int_t j=evs;j<eve;j++){
- AliL3Evaluate *eval=new AliL3Evaluate(path,63,63);
+ AliHLTEvaluate *eval=new AliHLTEvaluate(path,63,63);
eval->LoadData(j,-1); //load whole patch
eval->AssignIDs();
- AliL3TrackArray *a=eval->GetTracks();
+ AliHLTTrackArray *a=eval->GetTracks();
- AliL3Track t;
+ AliHLTTrack t;
Float_t phi,pt,tgl,eta;
Int_t id;
Int_t nhits;
- AliL3Vertex vertex;
+ AliHLTVertex vertex;
Double_t xc,yc,zc,impact;
Int_t nents=0;
#ifndef __CINT__
-#include "AliL3FileHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
-#include "AliL3Logger.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTLogger.h"
#include <stdio.h>
#include <iostream.h>
#endif
void read(Char_t *path="./",Int_t min=0,Int_t max=35)
{
- AliL3Transform::Init(path);
+ AliHLTTransform::Init(path);
for(Int_t slice=0; slice<35; slice++)
{
Char_t fname[256];
sprintf(fname,"%s/digits_%d_0.raw",path,slice);
- AliL3FileHandler *file = new AliL3FileHandler();
+ AliHLTFileHandler *file = new AliHLTFileHandler();
if(!file->SetBinaryInput(fname))
{
cerr<<"Error opening file "<<fname<<endl;
file->Init(slice,0,row);
UInt_t size;
- AliL3DigitRowData *data = file->CompBinary2Memory(size);
+ AliHLTDigitRowData *data = file->CompBinary2Memory(size);
for(Int_t r=0; r<175; r++)
{
UInt_t padrow=data->fRow;
- AliL3DigitData *dPt = (AliL3DigitData*)data->fDigitData;
+ AliHLTDigitData *dPt = (AliHLTDigitData*)data->fDigitData;
cout<<"padrow "<<padrow<<" ndigits "<<data->fNDigit<<endl;
for(Int_t d=0; d<(Int_t)data->fNDigit; d++)
void read_ali(Char_t *fname, Int_t sl=0, Int_t sh=35)
{
//need galice file or alirunfile.root link
- if(AliL3Transform::Init(fname,kTRUE))
+ if(AliHLTTransform::Init(fname,kTRUE))
{
cout << "created temp init file!" << endl;
}
- AliL3FileHandler *fileHandler = new AliL3FileHandler();
+ AliHLTFileHandler *fileHandler = new AliHLTFileHandler();
if(!fileHandler->SetAliInput(fname))
{
UInt_t nrow=0;
for(Int_t slice=sl; slice<=sl; slice++){
- for(Int_t patch=0;patch<AliL3Transform::GetNPatches();patch++){
+ for(Int_t patch=0;patch<AliHLTTransform::GetNPatches();patch++){
cerr<<"reading slice: "<<slice<<" patch: "<<patch<<endl;
fileHandler->Free();
fileHandler->Init(slice,patch);
- AliL3DigitRowData *data=fileHandler->AliDigits2Memory(nrow,event);
+ AliHLTDigitRowData *data=fileHandler->AliDigits2Memory(nrow,event);
if(!data) cerr << "Obscure error while reading data." << endl;
cerr<<" found "<< nrow << " rows" <<endl;
}
void read_pp(Char_t *path="./",Int_t min=0,Int_t max=35,Int_t ev=0)
{
- AliL3Transform::Init(path);
+ AliHLTTransform::Init(path);
for(Int_t slice=min; slice<max; slice++)
{
Char_t fname[256];
sprintf(fname,"%s/digits_%d_%d_-1.raw",path,ev,slice);
- AliL3FileHandler *file = new AliL3FileHandler();
+ AliHLTFileHandler *file = new AliHLTFileHandler();
if(!file->SetBinaryInput(fname))
{
cerr<<"Error opening file "<<fname<<endl;
file->Init(slice,-1);
UInt_t size;
- AliL3DigitRowData *data;
- data=(AliL3DigitRowData*)file->Allocate(); //size from binary input
+ AliHLTDigitRowData *data;
+ data=(AliHLTDigitRowData*)file->Allocate(); //size from binary input
file->Binary2Memory(size,data);
- for(Int_t r=AliL3Transform::GetFirstRow(-1); r<AliL3Transform::GetLastRow(-1); r++)
+ for(Int_t r=AliHLTTransform::GetFirstRow(-1); r<AliHLTTransform::GetLastRow(-1); r++)
{
UInt_t padrow=data->fRow;
- AliL3DigitData *dPt = (AliL3DigitData*)data->fDigitData;
+ AliHLTDigitData *dPt = (AliHLTDigitData*)data->fDigitData;
cout<<r<<" "<<"padrow "<<padrow<<" ndigits "<<data->fNDigit<<endl;
for(Int_t d=0; d<(Int_t)data->fNDigit; d++)
void read_event_tree(Char_t *rootfile,Int_t startev=0)
{
- AliL3FileHandler *handler = new AliL3FileHandler();
+ AliHLTFileHandler *handler = new AliHLTFileHandler();
if(!handler->SetAliInput(rootfile)){
cerr<<" Error opening file: "<<rootfile<<endl;
return;
{
if(getenv("ALIHLT_MLUCDIR")) {
if(strcmp("false",getenv("ALIHLT_NOLOGGING"))==0) gSystem->Load("$(ALIHLT_MLUCDIR/lib/libMLUC");
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliL3Src");
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliL3Misc");
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliL3Hough");
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliL3Comp");
+ gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTSrc");
+ gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTMisc");
+ gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTHough");
+ gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTComp");
} else {
if(strcmp("false",getenv("ALIHLT_NOLOGGING"))==0) gSystem->Load("$(ALIHLT_BASEDIR)/kip/MLUC/lib/linux-i386/libMLUC.so");
- gSystem->Load("$(ALIHLT_BASEDIR)/lib_$(USER)/libAliL3Src");
- gSystem->Load("$(ALIHLT_BASEDIR)/lib_$(USER)/libAliL3Misc");
- gSystem->Load("$(ALIHLT_BASEDIR)/lib_$(USER)/libAliL3Hough");
- gSystem->Load("$(ALIHLT_BASEDIR)/lib_$(USER)/libAliL3Comp");
+ gSystem->Load("$(ALIHLT_BASEDIR)/lib_$(USER)/libAliHLTSrc");
+ gSystem->Load("$(ALIHLT_BASEDIR)/lib_$(USER)/libAliHLTMisc");
+ gSystem->Load("$(ALIHLT_BASEDIR)/lib_$(USER)/libAliHLTHough");
+ gSystem->Load("$(ALIHLT_BASEDIR)/lib_$(USER)/libAliHLTComp");
}
cout<<"HLT libraries loaded"<<endl;
if(strcmp("false",getenv("ALIHLT_NOLOGGING"))==0){
- AliL3Logger gLogger;
+ AliHLTLogger gLogger;
gLogger.UseStream();
}
if(getenv("ALIHLT_TRANSFORMFILE")){
cout << "Loading config \"" << getenv("ALIHLT_TRANSFORMFILE") << "\": " << flush;
- if(AliL3Transform::Init(getenv("ALIHLT_TRANSFORMFILE")))
+ if(AliHLTTransform::Init(getenv("ALIHLT_TRANSFORMFILE")))
cout << "Ok!" << endl;
else cout << "Failed!" << endl;
}
if(1)
{
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliL3Src");
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliL3Misc");
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliL3Hough");
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliL3Comp");
+ gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTSrc");
+ gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTMisc");
+ gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTHough");
+ gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTComp");
cout<<"HLT libraries loaded"<<endl;
}
void runcf(Char_t *path)
{
- AliL3Transform::Init(path,kTRUE);
+ AliHLTTransform::Init(path,kTRUE);
Char_t fname[1024];
Char_t digitfile[1024];
sprintf(digitfile,"%s/digitfile.root",path);
- AliL3MemHandler *memory = new AliL3MemHandler();
- AliL3MemHandler *out = new AliL3MemHandler();
+ AliHLTMemHandler *memory = new AliHLTMemHandler();
+ AliHLTMemHandler *out = new AliHLTMemHandler();
for(Int_t event=0; event<1; event++)
{
- AliL3FileHandler *file = new AliL3FileHandler();
+ AliHLTFileHandler *file = new AliHLTFileHandler();
file->SetAliInput(digitfile);
for(Int_t slice=0; slice<=35; slice++)
{
file->Init(slice,patch);
UInt_t ndigits=0;
UInt_t maxclusters=100000;
- UInt_t pointsize = maxclusters*sizeof(AliL3SpacePointData);
+ UInt_t pointsize = maxclusters*sizeof(AliHLTSpacePointData);
- AliL3SpacePointData *points = (AliL3SpacePointData*)memory->Allocate(pointsize);
- AliL3DigitRowData *digits = (AliL3DigitRowData*)file->AliAltroDigits2Memory(ndigits,event);
- AliL3ClustFinderNew *cf = new AliL3ClustFinderNew();
+ AliHLTSpacePointData *points = (AliHLTSpacePointData*)memory->Allocate(pointsize);
+ AliHLTDigitRowData *digits = (AliHLTDigitRowData*)file->AliAltroDigits2Memory(ndigits,event);
+ AliHLTClustFinderNew *cf = new AliHLTClustFinderNew();
//cf->SetMatchWidth(2);
- cf->InitSlice(slice,patch,AliL3Transform::GetFirstRow(patch),AliL3Transform::GetLastRow(patch),maxclusters);
+ cf->InitSlice(slice,patch,AliHLTTransform::GetFirstRow(patch),AliHLTTransform::GetLastRow(patch),maxclusters);
cf->SetSTDOutput(kTRUE);
cf->SetThreshold(5);
cf->SetDeconv(kTRUE);
/**
Run this macro for Hough track candidate finder
- (see steering class AliL3Hough).
+ (see steering class AliHLTHough).
In argument path, you have to provide the path to
the directory where the data files should be located.
In case of reading from a rootfile, you have to
*/
#ifndef __CINT__
-#include "AliL3Logger.h"
-#include "AliL3FileHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
-#include "AliL3Hough.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Track.h"
-#include "AliL3HoughTrack.h"
+#include "AliHLTLogger.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHough.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTrack.h"
+#include "AliHLTHoughTrack.h"
#include <TNtuple.h>
#include <TRandom.h>
#include <TSystem.h>
void runhough(Char_t *path,Char_t *outpath,Int_t s1=0,Int_t s2=35,Int_t nevent=1)
{
- Bool_t isinit=AliL3Transform::Init(path,kTRUE);
+ Bool_t isinit=AliHLTTransform::Init(path,kTRUE);
if(!isinit){
cerr << "Could not create transform settings, please check log for error messages!" << endl;
return;
Int_t tversion=1; //0 = normal transformer
//1 = LUT transformer
- AliL3Hough *hough = new AliL3Hough();
+ AliHLTHough *hough = new AliHLTHough();
#ifdef __CINT__
Char_t macroname[1024];
sprintf(macroname,"SetHoughParameters.C");
for(Int_t ev=0; ev<nevent; ev++)
{
- AliL3FileHandler::LoadStaticIndex(0,ev);
+ AliHLTFileHandler::LoadStaticIndex(0,ev);
for(Int_t slice=s1; slice<=s2; slice++)
{
cout<<"Processing slice "<<slice<<endl;
hough->AddTracks();
tfinder.Stop();
#if 0 /*print track list */
- AliL3TrackArray *tracks = (AliL3TrackArray*)hough->GetTracks(0);
+ AliHLTTrackArray *tracks = (AliHLTTrackArray*)hough->GetTracks(0);
tracks->QSort();
for(int i=0; i<tracks->GetNTracks(); i++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
cout<<"pt "<<track->GetPt()<<" psi "<<track->GetPsi()<<" eta "<<track->GetEta()<<" etaindex "<<track->GetEtaIndex()<<" weight "<<track->GetWeight()<<endl;
}
#endif
}
hough->WriteTracks(outpath);
- AliL3FileHandler::SaveStaticIndex(0,ev);
+ AliHLTFileHandler::SaveStaticIndex(0,ev);
}
cout << " --- Timing values --- " << endl;
//with mult. and BField
//for aliroot the path should point to a file
//containing the tpc geometry called alirunfile.root
- Bool_t isinit=AliL3Transform::Init("./",!binary);
+ Bool_t isinit=AliHLTTransform::Init("./",!binary);
- AliL3Kalman *k = new AliL3Kalman(path,0,0);
+ AliHLTKalman *k = new AliHLTKalman(path,0,0);
k->Init();
//k->DoMakeSeed();
k->LoadTracks(0,kTRUE);
// $Id$
#ifndef __CINT__
-#include "AliL3Logger.h"
-#include "AliL3FileHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
-#include "AliL3Hough.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Track.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3Fitter.h"
-#include "AliL3ClusterFitter.h"
-#include "AliL3Vertex.h"
-#include "AliL3Benchmark.h"
+#include "AliHLTLogger.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHough.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTrack.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTFitter.h"
+#include "AliHLTClusterFitter.h"
+#include "AliHLTVertex.h"
+#include "AliHLTBenchmark.h"
#include <AliRunLoader.h>
#include <AliStack.h>
#include <TParticle.h>
Int_t runrowhough(Char_t *path="./",Char_t *outpath="./fitter",int s1=0,int s2=35,int nevent=1,Bool_t skip=kTRUE)
{
- Bool_t isinit=AliL3Transform::Init(path,kTRUE);
+ Bool_t isinit=AliHLTTransform::Init(path,kTRUE);
if(!isinit){
cerr << "Could not create transform settings, please check log for error messages!" << endl;
return 1;
}
- Float_t ptmin = 0.1*AliL3Transform::GetSolenoidField();
+ Float_t ptmin = 0.1*AliHLTTransform::GetSolenoidField();
Float_t zvertex;
{
cout<<" Hough Tranform will run with ptmin="<<ptmin<<" and zvertex="<<zvertex<<endl;
- AliL3Benchmark *fBenchmark = new AliL3Benchmark();
- AliL3Hough *hough = new AliL3Hough();
+ AliHLTBenchmark *fBenchmark = new AliHLTBenchmark();
+ AliHLTHough *hough = new AliHLTHough();
hough->SetThreshold(4);
hough->SetTransformerParams(140,76,ptmin,-1);
hough->SetPeakThreshold(50,-1);
if(!skip) {
// Run cluster fitter
- AliL3ClusterFitter *fitter = new AliL3ClusterFitter(path);
+ AliHLTClusterFitter *fitter = new AliHLTClusterFitter(path);
// Set debug flag for the cluster fitter
// fitter->Debug();
// fitter->SetChiSqMax(5,kFALSE); //isolated clusters
fitter->SetChiSqMax(5,kTRUE); //overlapping clusters
- Int_t rowrange[2] = {0,AliL3Transform::GetNRows()-1};
+ Int_t rowrange[2] = {0,AliHLTTransform::GetNRows()-1};
// Takes input from global hough tracks produced by HT
fitter->LoadSeeds(rowrange,kFALSE,ev,zvertex);
for(int slice=s1; slice<=s2; slice++)
{
- for(Int_t ipatch = 0; ipatch < AliL3Transform::GetNPatches(); ipatch++)
+ for(Int_t ipatch = 0; ipatch < AliHLTTransform::GetNPatches(); ipatch++)
{
// Read digits
hough->GetMemHandler(ipatch)->Free();
hough->GetMemHandler(ipatch)->Init(slice,ipatch);
- AliL3DigitRowData *digits = (AliL3DigitRowData *)hough->GetMemHandler(ipatch)->AliAltroDigits2Memory(ndigits,ev);
+ AliHLTDigitRowData *digits = (AliHLTDigitRowData *)hough->GetMemHandler(ipatch)->AliAltroDigits2Memory(ndigits,ev);
fBenchmark->Start("Fitter Init");
fitter->Init(slice,ipatch);
}
// Refit of the clusters
- AliL3Vertex vertex;
+ AliHLTVertex vertex;
//The seeds are the input tracks from circle HT
- AliL3TrackArray *tracks = fitter->GetSeeds();
- AliL3Fitter *ft = new AliL3Fitter(&vertex,1);
+ AliHLTTrackArray *tracks = fitter->GetSeeds();
+ AliHLTFitter *ft = new AliHLTFitter(&vertex,1);
ft->LoadClusters("./fitter/",ev,kFALSE);
fBenchmark->Start("Track fitter");
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3Track *track = tracks->GetCheckedTrack(i);
+ AliHLTTrack *track = tracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetNHits() < 20) continue;
ft->SortTrackClusters(track);
*/
#ifndef __CINT__
-#include "AliL3Logger.h"
-#include "AliL3FileHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
+#include "AliHLTLogger.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
#include "AliLevel3.h"
#include <TNtuple.h>
#include <TRandom.h>
//for aliroot the path should point to a file
//containing the tpc geometry called alirunfile.root
- Bool_t isinit=AliL3Transform::Init(path,(filetype!=AliLevel3::kBinary));
+ Bool_t isinit=AliHLTTransform::Init(path,(filetype!=AliLevel3::kBinary));
if(!isinit){
cerr << "Could not create transform settings, please check log for error messages!" << endl;
return;
rowscopetracklet = 2; //search range of rows for a tracklet
rowscopetrack = 10; //search range of rows for a track
min_pt_fit = 0;
- maxangle = 0.1745; //AliL3Transform::Deg2Rad(10);
+ maxangle = 0.1745; //AliHLTTransform::Deg2Rad(10);
//maximum angle for the three point look ahead
goodDist = 5; //threshold distance between two hits when building tracklets
maxphi=0.1; //maximum phi difference for neighboring hits
void runtracker_pp(Int_t trigev,Char_t* path=0,Char_t *rootfile=0,Char_t *wpath="./")
{
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStdout();
//l.UseStream();
} else strcpy(path_to_use,path);
if(getenv("TRANSFORMCONFIGPATH")){
- AliL3Transform::Init(getenv("TRANSFORMCONFIGPATH"));
- } else AliL3Transform::Init(path_to_use);
+ AliHLTTransform::Init(getenv("TRANSFORMCONFIGPATH"));
+ } else AliHLTTransform::Init(path_to_use);
Int_t phi_segments,eta_segments,trackletlength,tracklength;
Int_t rowscopetracklet,rowscopetrack;
//sprintf(fname,"aliruntfile.root");
//Get the tracks:
- /*AliL3TrackArray *tracks = new AliL3TrackArray();
- AliL3FileHandler *file = new AliL3FileHandler();
+ /*AliHLTTrackArray *tracks = new AliHLTTrackArray();
+ AliHLTFileHandler *file = new AliHLTFileHandler();
file->SetBinaryInput(fname);
file->Binary2TrackArray(tracks);
file->CloseBinaryInput();
sprintf(fname,"/data1/AliRoot/pp/pileup/");
- AliL3Evaluate *eval=new AliL3Evaluate(fname,63,63);
+ AliHLTEvaluate *eval=new AliHLTEvaluate(fname,63,63);
eval->LoadData(event,-1);
eval->AssignIDs();
- AliL3TrackArray *tracks=eval->GetTracks();
+ AliHLTTrackArray *tracks=eval->GetTracks();
sprintf(fname,"/data1/AliRoot/pp/pileup/");
//sprintf(fname,"/prog/alice/data/Rawdata/1_patch/pp/recon_%d/",event);
Int_t ntracks=0;
Double_t xc,yc,zc;
Double_t impact;
- AliL3Vertex vertex;
+ AliHLTVertex vertex;
Int_t mcid = 0;
- AliL3TrackArray *ftracks = new AliL3TrackArray();
+ AliHLTTrackArray *ftracks = new AliHLTTrackArray();
for(int i=0; i<tracks->GetNTracks(); i++)
{
- track = (AliL3Track*)tracks->GetCheckedTrack(i);
+ track = (AliHLTTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
//Assign MCid
delete ntuppel;
}
-void display(AliL3TrackArray *tracks,char *path)
+void display(AliHLTTrackArray *tracks,char *path)
{
int slice[2]={0,35};
- d = new AliL3Display(slice);
+ d = new AliHLTDisplay(slice);
d->Setup("tracks_0.raw",path);
d->SetTracks(tracks);
//d->DisplayClusters();
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Histogram.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHistogram.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3Histogram
+/** \class AliHLTHistogram
<pre>
//_____________________________________________________________
-// AliL3Histogram
+// AliHLTHistogram
//
// 2D histogram class
//
//uncomment if you want overflow checks
//#define _IFON_
-ClassImp(AliL3Histogram)
+ClassImp(AliHLTHistogram)
-AliL3Histogram::AliL3Histogram()
+AliHLTHistogram::AliHLTHistogram()
{
// Default constructor
fNxbins = 0;
#endif
}
-AliL3Histogram::AliL3Histogram(Char_t *name,Char_t */*id*/,
+AliHLTHistogram::AliHLTHistogram(Char_t *name,Char_t */*id*/,
Int_t nxbin,Double_t xmin,Double_t xmax,
Int_t nybin,Double_t ymin,Double_t ymax)
{
Reset();
}
-AliL3Histogram::~AliL3Histogram()
+AliHLTHistogram::~AliHLTHistogram()
{
//Destructor
if(fContent)
#endif
}
-void AliL3Histogram::Reset()
+void AliHLTHistogram::Reset()
{
// Reset histogram contents
if(fContent)
fEntries=0;
}
-void AliL3Histogram::Fill(Double_t x,Double_t y,Int_t weight)
+void AliHLTHistogram::Fill(Double_t x,Double_t y,Int_t weight)
{
// Fill the weight into a bin which correspond to x and y
Int_t bin = FindBin(x,y);
AddBinContent(bin,weight);
}
-void AliL3Histogram::Fill(Double_t x,Int_t ybin,Int_t weight)
+void AliHLTHistogram::Fill(Double_t x,Int_t ybin,Int_t weight)
{
// Fill the weight into a bin which correspond to x and ybin
Int_t xbin = FindXbin(x);
AddBinContent(bin,weight);
}
-void AliL3Histogram::Fill(Int_t xbin,Double_t y,Int_t weight)
+void AliHLTHistogram::Fill(Int_t xbin,Double_t y,Int_t weight)
{
// Fill the weight into a bin which correspond to xbin and y
Int_t ybin = FindYbin(y);
AddBinContent(bin,weight);
}
-void AliL3Histogram::Fill(Int_t xbin,Int_t ybin,Int_t weight)
+void AliHLTHistogram::Fill(Int_t xbin,Int_t ybin,Int_t weight)
{
// Fill the weight into a bin which correspond to xbin and ybin
Int_t bin = GetBin(xbin,ybin);
AddBinContent(bin,weight);
}
-Int_t AliL3Histogram::FindBin(Double_t x,Double_t y) const
+Int_t AliHLTHistogram::FindBin(Double_t x,Double_t y) const
{
// Finds the bin which correspond to x and y
Int_t xbin = FindXbin(x);
return GetBin(xbin,ybin);
}
-Int_t AliL3Histogram::FindLabelBin(Double_t x,Double_t y) const
+Int_t AliHLTHistogram::FindLabelBin(Double_t x,Double_t y) const
{
// Returns the corresponding bin with the mc labels
Int_t xbin = FindXbin(x);
return GetLabelBin(xbin,ybin);
}
-Int_t AliL3Histogram::FindXbin(Double_t x) const
+Int_t AliHLTHistogram::FindXbin(Double_t x) const
{
// Finds the bin which correspond to x
if(x < fXmin || x > fXmax)
return 1 + (Int_t)(fNxbins*(x-fXmin)/(fXmax-fXmin));
}
-Int_t AliL3Histogram::FindYbin(Double_t y) const
+Int_t AliHLTHistogram::FindYbin(Double_t y) const
{
// Finds the bin which correspond to y
if(y < fYmin || y > fYmax)
return 1 + (Int_t)(fNybins*(y-fYmin)/(fYmax-fYmin));
}
-Int_t AliL3Histogram::GetBin(Int_t xbin,Int_t ybin) const
+Int_t AliHLTHistogram::GetBin(Int_t xbin,Int_t ybin) const
{
// Returns the bin which correspond to xbin and ybin
if(xbin < fFirstXbin || xbin > fLastXbin)
return xbin + ybin*(fNxbins+2);
}
-Int_t AliL3Histogram::GetLabelBin(Int_t xbin,Int_t ybin) const
+Int_t AliHLTHistogram::GetLabelBin(Int_t xbin,Int_t ybin) const
{
// Returns the corresponding bin with the mc labels
if(xbin < fFirstXbin || xbin > fLastXbin)
return (Int_t)(xbin/2) + ((Int_t)(ybin/2))*((Int_t)((fNxbins+3)/2));
}
-Int_t AliL3Histogram::GetBinContent(Int_t bin) const
+Int_t AliHLTHistogram::GetBinContent(Int_t bin) const
{
// Return the bin content
if(bin >= fNcells)
{
- LOG(AliL3Log::kError,"AliL3Histogram::GetBinContent","array")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::GetBinContent","array")<<AliHLTLog::kDec<<
"bin out of range "<<bin<<ENDLOG;
return 0;
}
return fContent[bin];
}
-void AliL3Histogram::SetBinContent(Int_t xbin,Int_t ybin,Int_t value)
+void AliHLTHistogram::SetBinContent(Int_t xbin,Int_t ybin,Int_t value)
{
// Set bin content
Int_t bin = GetBin(xbin,ybin);
SetBinContent(bin,value);
}
-void AliL3Histogram::SetBinContent(Int_t bin,Int_t value)
+void AliHLTHistogram::SetBinContent(Int_t bin,Int_t value)
{
// Set bin content
if(bin >= fNcells)
{
- LOG(AliL3Log::kError,"AliL3Histogram::SetBinContent","array")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::SetBinContent","array")<<AliHLTLog::kDec<<
"bin out of range "<<bin<<ENDLOG;
return;
}
fContent[bin]=value;
}
-void AliL3Histogram::AddBinContent(Int_t xbin,Int_t ybin,Int_t weight)
+void AliHLTHistogram::AddBinContent(Int_t xbin,Int_t ybin,Int_t weight)
{
// Adds weight to bin content
Int_t bin = GetBin(xbin,ybin);
AddBinContent(bin,weight);
}
-void AliL3Histogram::AddBinContent(Int_t bin,Int_t weight)
+void AliHLTHistogram::AddBinContent(Int_t bin,Int_t weight)
{
// Adds weight to bin content
if(bin < 0 || bin > fNcells)
{
- LOG(AliL3Log::kError,"AliL3Histogram::AddBinContent","array")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::AddBinContent","array")<<AliHLTLog::kDec<<
"bin-value out of range "<<bin<<ENDLOG;
return;
}
fContent[bin] += weight;
}
-void AliL3Histogram::Add(AliL3Histogram *h1,Double_t /*weight*/)
+void AliHLTHistogram::Add(AliHLTHistogram *h1,Double_t /*weight*/)
{
//Adding two histograms. Should be identical.
if(!h1)
{
- LOG(AliL3Log::kError,"AliL3Histogram::Add","Pointer")<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::Add","Pointer")<<
"Attempting to add a non-existing histogram"<<ENDLOG;
return;
}
if(h1->GetNbinsX()!=fNxbins || h1->GetNbinsY()!=fNybins)
{
- LOG(AliL3Log::kError,"AliL3Histogram::Add","array")<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::Add","array")<<
"Mismatch in the number of bins "<<ENDLOG;
return;
}
if(h1->GetFirstXbin()!=fFirstXbin || h1->GetLastXbin()!=fLastXbin ||
h1->GetFirstYbin()!=fFirstYbin || h1->GetLastYbin()!=fLastYbin)
{
- LOG(AliL3Log::kError,"AliL3Histogram::Add","array")<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::Add","array")<<
"Mismatch in the bin numbering "<<ENDLOG;
return;
}
fEntries += h1->GetNEntries();
}
-Double_t AliL3Histogram::GetBinCenterX(Int_t xbin) const
+Double_t AliHLTHistogram::GetBinCenterX(Int_t xbin) const
{
// Returns the position of the center of a bin
if(xbin < fFirstXbin || xbin > fLastXbin)
{
- LOG(AliL3Log::kError,"AliL3Histogram::GetBinCenterX","xbin")
+ LOG(AliHLTLog::kError,"AliHLTHistogram::GetBinCenterX","xbin")
<<"Bin-value out of range "<<xbin<<ENDLOG;
return -1;
}
return fXmin + (xbin-0.5) * fBinwidthX;
}
-Double_t AliL3Histogram::GetBinCenterY(Int_t ybin) const
+Double_t AliHLTHistogram::GetBinCenterY(Int_t ybin) const
{
// Returns the position of the center of a bin
if(ybin < fFirstYbin || ybin > fLastYbin)
{
- LOG(AliL3Log::kError,"AliL3Histogram::GetBinCenterY","ybin")
+ LOG(AliHLTLog::kError,"AliHLTHistogram::GetBinCenterY","ybin")
<<"Bin-value out of range "<<ybin<<ENDLOG;
return -1;
}
return fYmin + (ybin-0.5) * fBinwidthY;
}
-Double_t AliL3Histogram::GetPreciseBinCenterX(Float_t xbin) const
+Double_t AliHLTHistogram::GetPreciseBinCenterX(Float_t xbin) const
{
// Returns the position of the center of a bin using precise values inside the bin
if(xbin < (fFirstXbin-1.5) || xbin > (fLastXbin+1.5))
{
- LOG(AliL3Log::kError,"AliL3Histogram::GetBinCenterX","xbin")
+ LOG(AliHLTLog::kError,"AliHLTHistogram::GetBinCenterX","xbin")
<<"Bin-value out of range "<<xbin<<ENDLOG;
return -1;
}
return fXmin + (xbin-0.5) * fBinwidthX;
}
-Double_t AliL3Histogram::GetPreciseBinCenterY(Float_t ybin) const
+Double_t AliHLTHistogram::GetPreciseBinCenterY(Float_t ybin) const
{
// Returns the position of the center of a bin using precise values inside the bin
if(ybin < (fFirstYbin-1.5) || ybin > (fLastYbin+1.5))
{
- LOG(AliL3Log::kError,"AliL3Histogram::GetBinCenterY","ybin")
+ LOG(AliHLTLog::kError,"AliHLTHistogram::GetBinCenterY","ybin")
<<"Bin-value out of range "<<ybin<<ENDLOG;
return -1;
}
return fYmin + (ybin-0.5) * fBinwidthY;
}
-void AliL3Histogram::Draw(Char_t *option)
+void AliHLTHistogram::Draw(Char_t *option)
{
// Fill the contents of the corresponding ROOT histogram and draws it
#ifdef use_root
fRootHisto->Draw(option);
return;
#else
- cerr<<"AliL3Histogram::Draw : You need to compile with ROOT in order to draw histogram"<<endl;
+ cerr<<"AliHLTHistogram::Draw : You need to compile with ROOT in order to draw histogram"<<endl;
#endif
}
-void AliL3Histogram::CreateRootHisto()
+void AliHLTHistogram::CreateRootHisto()
{
- // Create ROOT histogram out of AliL3Histogram
+ // Create ROOT histogram out of AliHLTHistogram
#ifdef use_root
fRootHisto = new TH2F(fName,"",fNxbins,fXmin,fXmax,fNybins,fYmin,fYmax);
return;
#else
- cerr<<"AliL3Histogram::CreateRootHisto : You need to compile with ROOT in order to create ROOT histogram"<<endl;
+ cerr<<"AliHLTHistogram::CreateRootHisto : You need to compile with ROOT in order to create ROOT histogram"<<endl;
#endif
}
-ofstream& operator<<(ofstream &o, const AliL3Histogram &h)
+ofstream& operator<<(ofstream &o, const AliHLTHistogram &h)
{
for(Int_t xbin=h.GetFirstXbin(); xbin<=h.GetLastXbin(); xbin++)
{
#ifndef ALIL3HISTOGRAM_H
#define ALIL3HISTOGRAM_H
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
#ifdef use_root
#include <TH2.h>
#endif
-class AliL3Histogram {
+class AliHLTHistogram {
public:
- AliL3Histogram();
- AliL3Histogram(Char_t *name,Char_t *id,Int_t nxbin,Double_t xmin,Double_t xmax,Int_t nybin,Double_t ymin,Double_t ymax);
- virtual ~AliL3Histogram();
+ AliHLTHistogram();
+ AliHLTHistogram(Char_t *name,Char_t *id,Int_t nxbin,Double_t xmin,Double_t xmax,Int_t nybin,Double_t ymin,Double_t ymax);
+ virtual ~AliHLTHistogram();
void Reset();
virtual void Fill(Double_t x,Double_t y,Int_t weight=1);
void SetBinContent(Int_t bin,Int_t value);
void AddBinContent(Int_t xbin,Int_t ybin,Int_t weight);
void AddBinContent(Int_t bin,Int_t weight);
- void Add(AliL3Histogram *h1,Double_t weight=1);
+ void Add(AliHLTHistogram *h1,Double_t weight=1);
void SetThreshold(Int_t i) {fThreshold = i;}
void CreateRootHisto();
virtual void Draw(Char_t *option="hist");
virtual void Print() const {};
- friend ofstream& operator<< (ofstream &o, const AliL3Histogram &h);
+ friend ofstream& operator<< (ofstream &o, const AliHLTHistogram &h);
#ifdef use_root
TH2F *GetRootHisto();
Double_t fBinwidthX; // Bin width of the Hough space
Double_t fBinwidthY; // Bin width of the Hough space
- ClassDef(AliL3Histogram,1) //2D histogram class
+ ClassDef(AliHLTHistogram,1) //2D histogram class
};
+typedef AliHLTHistogram AliL3Histogram; // for backward comaptibility
+
#ifdef use_root
-inline TH2F *AliL3Histogram::GetRootHisto()
+inline TH2F *AliHLTHistogram::GetRootHisto()
{
if(!fRootHisto)
{
- STDCERR<<"AliL3Histogram::GetRootHisto() : You must first Draw histogram before accessing it"<<STDENDL;
+ STDCERR<<"AliHLTHistogram::GetRootHisto() : You must first Draw histogram before accessing it"<<STDENDL;
return 0;
}
else
return fRootHisto;
}
#else
-inline void *AliL3Histogram::GetRootHisto()
+inline void *AliHLTHistogram::GetRootHisto()
{
- STDCERR<<"AliL3Histogram::GetRootHisto() : You must compile with ROOT in order to interface the ROOT histogram"<<STDENDL;
+ STDCERR<<"AliHLTHistogram::GetRootHisto() : You must compile with ROOT in order to interface the ROOT histogram"<<STDENDL;
return 0;
}
#endif
//*-- Copyright © ALICE HLT Group
#include <strings.h>
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Histogram1D.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHistogram1D.h"
#ifdef use_root
#include <TH1.h>
#endif
//_____________________________________________________________
-// AliL3Histogram1D
+// AliHLTHistogram1D
//
// 1D histogram class.
-ClassImp(AliL3Histogram1D)
+ClassImp(AliHLTHistogram1D)
-AliL3Histogram1D::AliL3Histogram1D()
+AliHLTHistogram1D::AliHLTHistogram1D()
{
//default ctor
fNbins = 0;
}
-AliL3Histogram1D::AliL3Histogram1D(Char_t *name,Char_t */*id*/,Int_t nxbin,Double_t xmin,Double_t xmax)
+AliHLTHistogram1D::AliHLTHistogram1D(Char_t *name,Char_t */*id*/,Int_t nxbin,Double_t xmin,Double_t xmax)
{
//normal ctor
Reset();
}
-AliL3Histogram1D::~AliL3Histogram1D()
+AliHLTHistogram1D::~AliHLTHistogram1D()
{
//Destructor
if(fContent)
}
-void AliL3Histogram1D::Reset()
+void AliHLTHistogram1D::Reset()
{
//Reset histogram contents
#if defined(__DECCXX)
fEntries=0;
}
-void AliL3Histogram1D::Fill(Double_t x,Int_t weight)
+void AliHLTHistogram1D::Fill(Double_t x,Int_t weight)
{
//Fill a given bin with weight
Int_t bin = FindBin(x);
}
-Int_t AliL3Histogram1D::FindBin(Double_t x) const
+Int_t AliHLTHistogram1D::FindBin(Double_t x) const
{
//Find a given bin
if(x < fXmin || x > fXmax)
}
-Int_t AliL3Histogram1D::GetMaximumBin() const
+Int_t AliHLTHistogram1D::GetMaximumBin() const
{
//Find the bin with the largest content
Double_t maxvalue=0;
return maxbin;
}
-Double_t AliL3Histogram1D::GetBinContent(Int_t bin) const
+Double_t AliHLTHistogram1D::GetBinContent(Int_t bin) const
{
//Get bin content
if(bin >= fNcells)
{
- LOG(AliL3Log::kError,"AliL3Histogram::GetBinContent","array")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::GetBinContent","array")<<AliHLTLog::kDec<<
"bin out of range "<<bin<<ENDLOG;
return 0;
}
}
-void AliL3Histogram1D::SetBinContent(Int_t bin,Int_t value)
+void AliHLTHistogram1D::SetBinContent(Int_t bin,Int_t value)
{
//Set bin content
if(bin >= fNcells)
{
- LOG(AliL3Log::kError,"AliL3Histogram::SetBinContent","array")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::SetBinContent","array")<<AliHLTLog::kDec<<
"bin out of range "<<bin<<ENDLOG;
return;
}
}
-void AliL3Histogram1D::AddBinContent(Int_t bin,Int_t weight)
+void AliHLTHistogram1D::AddBinContent(Int_t bin,Int_t weight)
{
//Add weight to bin content
if(bin < 0 || bin > fNcells)
{
- LOG(AliL3Log::kError,"AliL3Histogram::AddBinContent","array")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTHistogram::AddBinContent","array")<<AliHLTLog::kDec<<
"bin-value out of range "<<bin<<ENDLOG;
return;
}
fContent[bin] += weight;
}
-Double_t AliL3Histogram1D::GetBinCenter(Int_t bin) const
+Double_t AliHLTHistogram1D::GetBinCenter(Int_t bin) const
{
//Get bin center
Double_t binwidth = (fXmax - fXmin) / fNbins;
}
#ifdef use_root
-void AliL3Histogram1D::Draw(Char_t *option)
+void AliHLTHistogram1D::Draw(Char_t *option)
{
//Draw the histogram
fRootHisto = new TH1F(fName,"",fNbins,fXmin,fXmax);
#ifndef ALIL3HISTOGRAM1D_H
#define ALIL3HISTOGRAM1D_H
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
#ifdef use_root
class TH1F;
#endif
-class AliL3Histogram1D {
+class AliHLTHistogram1D {
public:
- AliL3Histogram1D();
- AliL3Histogram1D(Char_t *name,Char_t *id,Int_t nxbin,Double_t xmin,Double_t xmax);
- virtual ~AliL3Histogram1D();
+ AliHLTHistogram1D();
+ AliHLTHistogram1D(Char_t *name,Char_t *id,Int_t nxbin,Double_t xmin,Double_t xmax);
+ virtual ~AliHLTHistogram1D();
void Reset();
void Fill(Double_t x,Int_t weight=1);
TH1F *fRootHisto;//The corresponding ROOT histogram
#endif
- ClassDef(AliL3Histogram1D,1) //1D histogram class
+ ClassDef(AliHLTHistogram1D,1) //1D histogram class
};
+typedef AliHLTHistogram1D AliL3Histogram1D; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3HistogramAdaptive.h"
-#include "AliL3Transform.h"
-#include "AliL3Track.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHistogramAdaptive.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrack.h"
#if __GNUC__ >= 3
using namespace std;
#endif
//_____________________________________________________________
-// AliL3HistogramAdaptive
+// AliHLTHistogramAdaptive
//
// 2D histogram class adapted for kappa and psi as used in the Circle Hough Transform.
// The bins in kappa is not linear, but has a width which is specified by argument
// ptres in the constructor. This gives the relative pt resolution which should
// be kept throughout the kappa range.
-ClassImp(AliL3HistogramAdaptive)
+ClassImp(AliHLTHistogramAdaptive)
-AliL3HistogramAdaptive::AliL3HistogramAdaptive() : AliL3Histogram()
+AliHLTHistogramAdaptive::AliHLTHistogramAdaptive() : AliHLTHistogram()
{
//default ctor
fKappaBins=0;
}
-AliL3HistogramAdaptive::AliL3HistogramAdaptive(Char_t *name,Double_t minpt,Double_t maxpt,Double_t ptres,
+AliHLTHistogramAdaptive::AliHLTHistogramAdaptive(Char_t *name,Double_t minpt,Double_t maxpt,Double_t ptres,
Int_t nybins,Double_t ymin,Double_t ymax)
{
//normal ctor
strcpy(fName,name);
fPtres = ptres;
- fXmin = -1*AliL3Transform::GetBFact()*AliL3Transform::GetBField()/minpt;
- fXmax = AliL3Transform::GetBFact()*AliL3Transform::GetBField()/minpt;
+ fXmin = -1*AliHLTTransform::GetBFact()*AliHLTTransform::GetBField()/minpt;
+ fXmax = AliHLTTransform::GetBFact()*AliHLTTransform::GetBField()/minpt;
fMinPt = minpt;
fMaxPt = maxpt;
Reset();
}
-AliL3HistogramAdaptive::~AliL3HistogramAdaptive()
+AliHLTHistogramAdaptive::~AliHLTHistogramAdaptive()
{
//dtor
if(fKappaBins)
delete [] fKappaBins;
}
-Int_t AliL3HistogramAdaptive::InitKappaBins()
+Int_t AliHLTHistogramAdaptive::InitKappaBins()
{
//Here a LUT for the kappa values created. This has to be done since
//the binwidth in kappa is not constant, but change according to the
fKappaBins = new Double_t[bin+1];
pt=fMinPt;
bin=0;
- fKappaBins[bin] = AliL3Transform::GetBFact()*AliL3Transform::GetBField()/fMinPt;
+ fKappaBins[bin] = AliHLTTransform::GetBFact()*AliHLTTransform::GetBField()/fMinPt;
while(pt < fMaxPt)
{
localpt = pt;
deltapt = fPtres*localpt*localpt;
pt += 2*deltapt; //*2 because pt +- 1/2*deltapt is one bin
bin++;
- fKappaBins[bin] = AliL3Transform::GetBFact()*AliL3Transform::GetBField()/pt;
+ fKappaBins[bin] = AliHLTTransform::GetBFact()*AliHLTTransform::GetBField()/pt;
}
return (bin+1)*2; //Both negative and positive kappa.
}
-void AliL3HistogramAdaptive::Fill(Double_t x,Double_t y,Int_t weight)
+void AliHLTHistogramAdaptive::Fill(Double_t x,Double_t y,Int_t weight)
{
//Fill a given bin in the histogram
Int_t bin = FindBin(x,y);
}
-Int_t AliL3HistogramAdaptive::FindBin(Double_t x,Double_t y) const
+Int_t AliHLTHistogramAdaptive::FindBin(Double_t x,Double_t y) const
{
//Find a bin in the histogram
Int_t xbin = FindXbin(x);
return GetBin(xbin,ybin);
}
-Int_t AliL3HistogramAdaptive::FindXbin(Double_t x) const
+Int_t AliHLTHistogramAdaptive::FindXbin(Double_t x) const
{
//Find X bin in the histogram
if(x < fXmin || x > fXmax || fabs(x) < fKappaBins[(fNxbins/2-1)])
}
-Int_t AliL3HistogramAdaptive::FindYbin(Double_t y) const
+Int_t AliHLTHistogramAdaptive::FindYbin(Double_t y) const
{
//Find Y bin in the histogram
if(y < fYmin || y > fYmax)
return 1 + (Int_t)(fNybins*(y-fYmin)/(fYmax-fYmin));
}
-Double_t AliL3HistogramAdaptive::GetBinCenterX(Int_t xbin) const
+Double_t AliHLTHistogramAdaptive::GetBinCenterX(Int_t xbin) const
{
//Returns bin center in X
if(xbin < fFirstXbin || xbin > fLastXbin)
{
- LOG(AliL3Log::kWarning,"AliL3HistogramAdaptive::GetBinCenterX","Bin-value")
+ LOG(AliHLTLog::kWarning,"AliHLTHistogramAdaptive::GetBinCenterX","Bin-value")
<<"XBinvalue out of range "<<xbin<<ENDLOG;
return 0;
}
}
-Double_t AliL3HistogramAdaptive::GetBinCenterY(Int_t ybin) const
+Double_t AliHLTHistogramAdaptive::GetBinCenterY(Int_t ybin) const
{
//Returns bin center in Y
if(ybin < fFirstYbin || ybin > fLastYbin)
{
- LOG(AliL3Log::kError,"AliL3HistogramAdaptive::GetBinCenterY","ybin")
+ LOG(AliHLTLog::kError,"AliHLTHistogramAdaptive::GetBinCenterY","ybin")
<<"Bin-value out of range "<<ybin<<ENDLOG;
return -1;
}
}
-void AliL3HistogramAdaptive::Draw(Char_t *option)
+void AliHLTHistogramAdaptive::Draw(Char_t *option)
{
//Draw the histogram
#ifdef use_root
fRootHisto->Draw(option);
return;
#else
- cerr<<"AliL3HistogramAdaptive::Draw : You need to compile with ROOT in order to draw histogram"<<endl;
+ cerr<<"AliHLTHistogramAdaptive::Draw : You need to compile with ROOT in order to draw histogram"<<endl;
#endif
}
-void AliL3HistogramAdaptive::Print() const
+void AliHLTHistogramAdaptive::Print() const
{
//Print the contents of the histogram
cout<<"Printing content of histogram "<<fName<<endl;
#ifndef ALIL3HISTOGRAMADAPTIVE_H
#define ALIL3HISTOGRAMADAPTIVE_H
-#include "AliL3RootTypes.h"
-#include "AliL3Histogram.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTHistogram.h"
-class AliL3HistogramAdaptive : public AliL3Histogram {
+class AliHLTHistogramAdaptive : public AliHLTHistogram {
public:
- AliL3HistogramAdaptive();
- AliL3HistogramAdaptive(Char_t *name,Double_t minpt,Double_t maxpt,Double_t ptres,
+ AliHLTHistogramAdaptive();
+ AliHLTHistogramAdaptive(Char_t *name,Double_t minpt,Double_t maxpt,Double_t ptres,
Int_t nybins,Double_t ymin,Double_t ymax);
- ~AliL3HistogramAdaptive();
+ ~AliHLTHistogramAdaptive();
void Fill(Double_t x,Double_t y,Int_t weight=1);
void Fill(Double_t x,Int_t ybin,Int_t weight=1) {
- AliL3Histogram::Fill(x,ybin,weight);
+ AliHLTHistogram::Fill(x,ybin,weight);
}
void Fill(Int_t xbin,Double_t y,Int_t weight=1) {
- AliL3Histogram::Fill(xbin,y,weight);
+ AliHLTHistogram::Fill(xbin,y,weight);
}
void Fill(Int_t xbin,Int_t ybin,Int_t weight=1) {
- AliL3Histogram::Fill(xbin,ybin,weight);
+ AliHLTHistogram::Fill(xbin,ybin,weight);
}
Int_t FindBin(Double_t x,Double_t y) const;
Int_t FindXbin(Double_t x) const;
Int_t InitKappaBins();
- ClassDef(AliL3HistogramAdaptive,1) //2D histogram class
+ ClassDef(AliHLTHistogramAdaptive,1) //2D histogram class
};
+typedef AliHLTHistogramAdaptive AliL3HistogramAdaptive; // for backward comaatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#include <sys/time.h>
-#include "AliL3Logging.h"
-#include "AliL3HoughMerger.h"
-#include "AliL3HoughIntMerger.h"
-#include "AliL3HoughGlobalMerger.h"
-#include "AliL3Histogram.h"
-#include "AliL3Hough.h"
-#include "AliL3HoughTransformer.h"
-#include "AliL3HoughClusterTransformer.h"
-#include "AliL3HoughTransformerLUT.h"
-#include "AliL3HoughTransformerVhdl.h"
-#include "AliL3HoughTransformerRow.h"
-#include "AliL3HoughMaxFinder.h"
-#include "AliL3Benchmark.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHoughMerger.h"
+#include "AliHLTHoughIntMerger.h"
+#include "AliHLTHoughGlobalMerger.h"
+#include "AliHLTHistogram.h"
+#include "AliHLTHough.h"
+#include "AliHLTHoughTransformer.h"
+#include "AliHLTHoughClusterTransformer.h"
+#include "AliHLTHoughTransformerLUT.h"
+#include "AliHLTHoughTransformerVhdl.h"
+#include "AliHLTHoughTransformerRow.h"
+#include "AliHLTHoughMaxFinder.h"
+#include "AliHLTBenchmark.h"
#ifdef use_aliroot
-#include "AliL3FileHandler.h"
+#include "AliHLTFileHandler.h"
#else
-#include "AliL3MemHandler.h"
+#include "AliHLTMemHandler.h"
#endif
-#include "AliL3DataHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3HoughEval.h"
-#include "AliL3Transform.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3DDLDataFileHandler.h"
-#include "AliL3HoughKalmanTrack.h"
+#include "AliHLTDataHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTHoughEval.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTDDLDataFileHandler.h"
+#include "AliHLTHoughKalmanTrack.h"
#include "TThread.h"
using namespace std;
#endif
-/** /class AliL3Hough
+/** /class AliHLTHough
//<pre>
//_____________________________________________________________
-// AliL3Hough
+// AliHLTHough
//
// Interface class for the Hough transform
//
// Example how to use:
//
-// AliL3Hough *hough = new AliL3Hough(path,kTRUE,NumberOfEtaSegments);
+// AliHLTHough *hough = new AliHLTHough(path,kTRUE,NumberOfEtaSegments);
// hough->ReadData(slice);
// hough->Transform();
// hough->FindTrackCandidates();
//
-// AliL3TrackArray *tracks = hough->GetTracks(patch);
+// AliHLTTrackArray *tracks = hough->GetTracks(patch);
//
//</pre>
*/
-ClassImp(AliL3Hough)
+ClassImp(AliHLTHough)
-AliL3Hough::AliL3Hough()
+AliHLTHough::AliHLTHough()
{
//Constructor
SetPeakThreshold();
#ifdef use_aliroot
//just be sure that index is empty for new event
- AliL3FileHandler::CleanStaticIndex();
+ AliHLTFileHandler::CleanStaticIndex();
#ifdef use_newio
fRunLoader = 0;
#endif
fThread = 0;
}
-AliL3Hough::AliL3Hough(Char_t *path,Bool_t binary,Int_t netasegments,Bool_t bit8,Int_t tv,Char_t *infile,Char_t *ptr)
+AliHLTHough::AliHLTHough(Char_t *path,Bool_t binary,Int_t netasegments,Bool_t bit8,Int_t tv,Char_t *infile,Char_t *ptr)
{
//Normal constructor
fBinary = binary;
}
#ifdef use_aliroot
//just be sure that index is empty for new event
- AliL3FileHandler::CleanStaticIndex();
+ AliHLTFileHandler::CleanStaticIndex();
#ifdef use_newio
fRunLoader = 0;
#endif
fThread = 0;
}
-AliL3Hough::~AliL3Hough()
+AliHLTHough::~AliHLTHough()
{
//dtor
}
}
-void AliL3Hough::CleanUp()
+void AliHLTHough::CleanUp()
{
//Cleanup memory
//cout << "Cleaned class mem " << endl;
}
-void AliL3Hough::Init(Int_t netasegments,Int_t tv,AliRawEvent *rawevent,Float_t zvertex)
+void AliHLTHough::Init(Int_t netasegments,Int_t tv,AliRawEvent *rawevent,Float_t zvertex)
{
//Normal constructor
fNEtaSegments = netasegments;
Init();
}
-void AliL3Hough::Init(Char_t *path,Bool_t binary,Int_t netasegments,Bool_t bit8,Int_t tv,Char_t *infile,Char_t *ptr,Float_t zvertex)
+void AliHLTHough::Init(Char_t *path,Bool_t binary,Int_t netasegments,Bool_t bit8,Int_t tv,Char_t *infile,Char_t *ptr,Float_t zvertex)
{
- //Normal init of the AliL3Hough
+ //Normal init of the AliHLTHough
fBinary = binary;
strcpy(fPath,path);
fNEtaSegments = netasegments;
Init(); //do the rest
}
-void AliL3Hough::Init(Bool_t doit, Bool_t addhists)
+void AliHLTHough::Init(Bool_t doit, Bool_t addhists)
{
// Init
fDoIterative = doit;
fAddHistograms = addhists;
- fNPatches = AliL3Transform::GetNPatches();
- fHoughTransformer = new AliL3HoughBaseTransformer*[fNPatches];
- fMemHandler = new AliL3MemHandler*[fNPatches];
+ fNPatches = AliHLTTransform::GetNPatches();
+ fHoughTransformer = new AliHLTHoughBaseTransformer*[fNPatches];
+ fMemHandler = new AliHLTMemHandler*[fNPatches];
- fTracks = new AliL3TrackArray*[fNPatches];
- fEval = new AliL3HoughEval*[fNPatches];
+ fTracks = new AliHLTTrackArray*[fNPatches];
+ fEval = new AliHLTHoughEval*[fNPatches];
- fGlobalTracks = new AliL3TrackArray("AliL3HoughTrack");
+ fGlobalTracks = new AliHLTTrackArray("AliHLTHoughTrack");
- AliL3HoughBaseTransformer *lasttransformer = 0;
+ AliHLTHoughBaseTransformer *lasttransformer = 0;
for(Int_t i=0; i<fNPatches; i++)
{
switch (fVersion){ //choose Transformer
case 1:
- fHoughTransformer[i] = new AliL3HoughTransformerLUT(0,i,fNEtaSegments);
+ fHoughTransformer[i] = new AliHLTHoughTransformerLUT(0,i,fNEtaSegments);
break;
case 2:
- fHoughTransformer[i] = new AliL3HoughClusterTransformer(0,i,fNEtaSegments);
+ fHoughTransformer[i] = new AliHLTHoughClusterTransformer(0,i,fNEtaSegments);
break;
case 3:
- fHoughTransformer[i] = new AliL3HoughTransformerVhdl(0,i,fNEtaSegments,fNSaveIterations);
+ fHoughTransformer[i] = new AliHLTHoughTransformerVhdl(0,i,fNEtaSegments,fNSaveIterations);
break;
case 4:
- fHoughTransformer[i] = new AliL3HoughTransformerRow(0,i,fNEtaSegments,kFALSE,fZVertex);
+ fHoughTransformer[i] = new AliHLTHoughTransformerRow(0,i,fNEtaSegments,kFALSE,fZVertex);
break;
default:
- fHoughTransformer[i] = new AliL3HoughTransformer(0,i,fNEtaSegments,kFALSE,kFALSE);
+ fHoughTransformer[i] = new AliHLTHoughTransformer(0,i,fNEtaSegments,kFALSE,kFALSE);
}
fHoughTransformer[i]->SetLastTransformer(lasttransformer);
fHoughTransformer[i]->SetLowerThreshold(fThreshold[i]);
fHoughTransformer[i]->SetUpperThreshold(100);
- LOG(AliL3Log::kInformational,"AliL3Hough::Init","Version")
+ LOG(AliHLTLog::kInformational,"AliHLTHough::Init","Version")
<<"Initializing Hough transformer version "<<fVersion<<ENDLOG;
- fEval[i] = new AliL3HoughEval();
- fTracks[i] = new AliL3TrackArray("AliL3HoughTrack");
+ fEval[i] = new AliHLTHoughEval();
+ fTracks[i] = new AliHLTTrackArray("AliHLTHoughTrack");
if(fUse8bits)
- fMemHandler[i] = new AliL3DataHandler();
+ fMemHandler[i] = new AliHLTDataHandler();
else
#ifdef use_aliroot
{
if(!fInputFile) {
if(!fInputPtr) {
/* In case of reading digits file */
- fMemHandler[i] = new AliL3FileHandler(kTRUE); //use static index
+ fMemHandler[i] = new AliHLTFileHandler(kTRUE); //use static index
if(!fBinary) {
#if use_newio
if(!fRunLoader) {
}
else {
/* In case of reading from DATE */
- fMemHandler[i] = new AliL3DDLDataFileHandler();
+ fMemHandler[i] = new AliHLTDDLDataFileHandler();
fMemHandler[i]->SetReaderInput(fInputPtr,-1);
}
}
else {
/* In case of reading rawdata from ROOT file */
- fMemHandler[i] = new AliL3DDLDataFileHandler();
+ fMemHandler[i] = new AliHLTDDLDataFileHandler();
fMemHandler[i]->SetReaderInput(fInputFile);
}
}
else {
/* In case of reading rawdata using AliRawEvent */
- fMemHandler[i] = new AliL3DDLDataFileHandler();
+ fMemHandler[i] = new AliHLTDDLDataFileHandler();
fMemHandler[i]->SetReaderInput(fRawEvent);
}
}
#else
- fMemHandler[i] = new AliL3MemHandler();
+ fMemHandler[i] = new AliHLTMemHandler();
#endif
}
- fPeakFinder = new AliL3HoughMaxFinder("KappaPhi",50000);
+ fPeakFinder = new AliHLTHoughMaxFinder("KappaPhi",50000);
if(fVersion!=4) {
- fMerger = new AliL3HoughMerger(fNPatches);
- fInterMerger = new AliL3HoughIntMerger();
+ fMerger = new AliHLTHoughMerger(fNPatches);
+ fInterMerger = new AliHLTHoughIntMerger();
}
else {
fMerger = 0;
fInterMerger = 0;
}
fGlobalMerger = 0;
- fBenchmark = new AliL3Benchmark();
+ fBenchmark = new AliHLTBenchmark();
}
-void AliL3Hough::SetTransformerParams(Float_t ptres,Float_t ptmin,Float_t ptmax,Int_t ny,Int_t patch)
+void AliHLTHough::SetTransformerParams(Float_t ptres,Float_t ptmin,Float_t ptmax,Int_t ny,Int_t patch)
{
// Setup the parameters for the Hough Transformer
// This includes the bin size and limits for
if(patch==-1)
mrow = 80;
else
- mrow = AliL3Transform::GetLastRow(patch);
+ mrow = AliHLTTransform::GetLastRow(patch);
if(ptmin)
{
- Double_t lineradius = sqrt(pow(AliL3Transform::Row2X(mrow),2) + pow(AliL3Transform::GetMaxY(mrow),2));
- Double_t kappa = -1*AliL3Transform::GetBField()*AliL3Transform::GetBFact()/ptmin;
- psi = AliL3Transform::Deg2Rad(10) - asin(lineradius*kappa/2);
+ Double_t lineradius = sqrt(pow(AliHLTTransform::Row2X(mrow),2) + pow(AliHLTTransform::GetMaxY(mrow),2));
+ Double_t kappa = -1*AliHLTTransform::GetBField()*AliHLTTransform::GetBFact()/ptmin;
+ psi = AliHLTTransform::Deg2Rad(10) - asin(lineradius*kappa/2);
cout<<"Calculated psi range "<<psi<<" in patch "<<patch<<endl;
}
fPhi[patch] = psi;
}
/*
-void AliL3Hough::SetTransformerParams(Int_t nx,Int_t ny,Float_t ptmin,Int_t patch)
+void AliHLTHough::SetTransformerParams(Int_t nx,Int_t ny,Float_t ptmin,Int_t patch)
{
// Setup the parameters for the Hough Transformer
Int_t mrow=80;
- Double_t lineradius = sqrt(pow(AliL3Transform::Row2X(mrow),2) + pow(AliL3Transform::GetMaxY(mrow),2));
- Double_t kappa = -1*AliL3Transform::GetBField()*AliL3Transform::GetBFact()/ptmin;
- Double_t psi = AliL3Transform::Deg2Rad(10) - asin(lineradius*kappa/2);
+ Double_t lineradius = sqrt(pow(AliHLTTransform::Row2X(mrow),2) + pow(AliHLTTransform::GetMaxY(mrow),2));
+ Double_t kappa = -1*AliHLTTransform::GetBField()*AliHLTTransform::GetBFact()/ptmin;
+ Double_t psi = AliHLTTransform::Deg2Rad(10) - asin(lineradius*kappa/2);
cout<<"Calculated psi range "<<psi<<" in patch "<<patch<<endl;
Int_t i=0;
}
}
*/
-void AliL3Hough::SetTransformerParams(Int_t nx,Int_t ny,Float_t ptmin,Int_t /*patch*/)
+void AliHLTHough::SetTransformerParams(Int_t nx,Int_t ny,Float_t ptmin,Int_t /*patch*/)
{
// Setup the parameters for the Hough Transformer
- Double_t lineradius = 1.0/(AliL3HoughTransformerRow::GetBeta1()*sqrt(1.0+tan(AliL3Transform::Pi()*10/180)*tan(AliL3Transform::Pi()*10/180)));
- Double_t alpha1 = AliL3HoughTransformerRow::GetBeta1()*tan(AliL3Transform::Pi()*10/180);
- Double_t kappa = 1*AliL3Transform::GetBField()*AliL3Transform::GetBFact()/(ptmin*0.9);
- Double_t psi = AliL3Transform::Deg2Rad(10) - asin(lineradius*kappa/2);
+ Double_t lineradius = 1.0/(AliHLTHoughTransformerRow::GetBeta1()*sqrt(1.0+tan(AliHLTTransform::Pi()*10/180)*tan(AliHLTTransform::Pi()*10/180)));
+ Double_t alpha1 = AliHLTHoughTransformerRow::GetBeta1()*tan(AliHLTTransform::Pi()*10/180);
+ Double_t kappa = 1*AliHLTTransform::GetBField()*AliHLTTransform::GetBFact()/(ptmin*0.9);
+ Double_t psi = AliHLTTransform::Deg2Rad(10) - asin(lineradius*kappa/2);
// cout<<"Calculated psi range "<<psi<<" in patch "<<patch<<endl;
- Double_t alpha2 = alpha1 - (AliL3HoughTransformerRow::GetBeta1()-AliL3HoughTransformerRow::GetBeta2())*tan(psi);
+ Double_t alpha2 = alpha1 - (AliHLTHoughTransformerRow::GetBeta1()-AliHLTHoughTransformerRow::GetBeta2())*tan(psi);
// cout<<"Calculated alphas range "<<alpha1<<" "<<alpha2<<" in patch "<<patch<<endl;
Int_t i=0;
}
}
-void AliL3Hough::CalcTransformerParams(Float_t ptmin)
+void AliHLTHough::CalcTransformerParams(Float_t ptmin)
{
// Setup the parameters for the Row Hough Transformer
// Automatically adjusts the number of bins in X and Y in a way
// that the size of the hough bin is 2x (in X) and 2.5 (in Y) the
// size of the tpc pads
- Double_t lineradius = 1.0/(AliL3HoughTransformerRow::GetBeta1()*sqrt(1.0+tan(AliL3Transform::Pi()*10/180)*tan(AliL3Transform::Pi()*10/180)));
- Double_t alpha1 = AliL3HoughTransformerRow::GetBeta1()*tan(AliL3Transform::Pi()*10/180);
- Double_t kappa = 1*AliL3Transform::GetBField()*AliL3Transform::GetBFact()/(ptmin*0.9);
- Double_t psi = AliL3Transform::Deg2Rad(10) - asin(lineradius*kappa/2);
+ Double_t lineradius = 1.0/(AliHLTHoughTransformerRow::GetBeta1()*sqrt(1.0+tan(AliHLTTransform::Pi()*10/180)*tan(AliHLTTransform::Pi()*10/180)));
+ Double_t alpha1 = AliHLTHoughTransformerRow::GetBeta1()*tan(AliHLTTransform::Pi()*10/180);
+ Double_t kappa = 1*AliHLTTransform::GetBField()*AliHLTTransform::GetBFact()/(ptmin*0.9);
+ Double_t psi = AliHLTTransform::Deg2Rad(10) - asin(lineradius*kappa/2);
// cout<<"Calculated psi range "<<psi<<endl;
- Double_t alpha2 = alpha1 - (AliL3HoughTransformerRow::GetBeta1()-AliL3HoughTransformerRow::GetBeta2())*tan(psi);
+ Double_t alpha2 = alpha1 - (AliHLTHoughTransformerRow::GetBeta1()-AliHLTHoughTransformerRow::GetBeta2())*tan(psi);
alpha1 *= 1.1;
// cout<<"Calculated alphas range "<<alpha1<<" "<<alpha2<<endl;
- Double_t sizex = 2.0*AliL3Transform::GetPadPitchWidthLow()*AliL3HoughTransformerRow::GetBeta1()*AliL3HoughTransformerRow::GetBeta1();
- Double_t sizey = 2.5*AliL3Transform::GetPadPitchWidthUp()*AliL3HoughTransformerRow::GetBeta2()*AliL3HoughTransformerRow::GetBeta2();
+ Double_t sizex = 2.0*AliHLTTransform::GetPadPitchWidthLow()*AliHLTHoughTransformerRow::GetBeta1()*AliHLTHoughTransformerRow::GetBeta1();
+ Double_t sizey = 2.5*AliHLTTransform::GetPadPitchWidthUp()*AliHLTHoughTransformerRow::GetBeta2()*AliHLTHoughTransformerRow::GetBeta2();
Int_t nx = 2*(Int_t)(alpha1/sizex)+1;
Int_t ny = 2*(Int_t)(alpha2/sizey)+1;
}
}
-void AliL3Hough::SetTransformerParams(Int_t nx,Int_t ny,Float_t lpt,Float_t phi)
+void AliHLTHough::SetTransformerParams(Int_t nx,Int_t ny,Float_t lpt,Float_t phi)
{
Int_t i=0;
while(i < 6)
}
}
-void AliL3Hough::SetThreshold(Int_t t3,Int_t patch)
+void AliHLTHough::SetThreshold(Int_t t3,Int_t patch)
{
// Set digits threshold
if(patch==-1)
fThreshold[patch]=t3;
}
-void AliL3Hough::SetPeakThreshold(Int_t threshold,Int_t patch)
+void AliHLTHough::SetPeakThreshold(Int_t threshold,Int_t patch)
{
// Set Peak Finder threshold
if(patch==-1)
fPeakThreshold[patch]=threshold;
}
-void AliL3Hough::DoBench(Char_t *name)
+void AliHLTHough::DoBench(Char_t *name)
{
fBenchmark->Analyze(name);
}
-void AliL3Hough::Process(Int_t minslice,Int_t maxslice)
+void AliHLTHough::Process(Int_t minslice,Int_t maxslice)
{
//Process all slices [minslice,maxslice].
- fGlobalMerger = new AliL3HoughGlobalMerger(minslice,maxslice);
+ fGlobalMerger = new AliHLTHoughGlobalMerger(minslice,maxslice);
for(Int_t i=minslice; i<=maxslice; i++)
{
}
}
-void AliL3Hough::ReadData(Int_t slice,Int_t eventnr)
+void AliHLTHough::ReadData(Int_t slice,Int_t eventnr)
{
//Read data from files, binary or root.
#ifdef use_aliroot
if(fEvent!=eventnr) //just be sure that index is empty for new event
- AliL3FileHandler::CleanStaticIndex();
+ AliHLTFileHandler::CleanStaticIndex();
#endif
fCurrentSlice = slice;
{
fMemHandler[i]->Free();
UInt_t ndigits=0;
- AliL3DigitRowData *digits =0;
+ AliHLTDigitRowData *digits =0;
Char_t name[256];
fMemHandler[i]->Init(slice,i);
if(fBinary)//take input data from binary files
sprintf(name,"%s/binaries/digits_%d_%d_%d.raw",fPath,eventnr,slice,i);
fMemHandler[i]->SetBinaryInput(name);
- digits = (AliL3DigitRowData *)fMemHandler[i]->CompBinary2Memory(ndigits);
+ digits = (AliHLTDigitRowData *)fMemHandler[i]->CompBinary2Memory(ndigits);
fMemHandler[i]->CloseBinaryInput();
}
else //read data from root file
#ifdef use_aliroot
if(fEvent!=eventnr)
fMemHandler[i]->FreeDigitsTree();//or else the new event is not loaded
- digits=(AliL3DigitRowData *)fMemHandler[i]->AliAltroDigits2Memory(ndigits,eventnr);
+ digits=(AliHLTDigitRowData *)fMemHandler[i]->AliAltroDigits2Memory(ndigits,eventnr);
#else
cerr<<"You cannot read from rootfile now"<<endl;
#endif
fEvent=eventnr;
}
-void AliL3Hough::Transform(Int_t *rowrange)
+void AliHLTHough::Transform(Int_t *rowrange)
{
//Transform all data given to the transformer within the given slice
//(after ReadData(slice))
fLastPatch=patchorder[i];
}
cpuTime = GetCpuTime() - initTime;
- LOG(AliL3Log::kInformational,"AliL3Hough::Transform()","Timing")
+ LOG(AliHLTLog::kInformational,"AliHLTHough::Transform()","Timing")
<<"Transform done in average per patch of "<<cpuTime*1000/fNPatches<<" ms"<<ENDLOG;
}
-void AliL3Hough::MergePatches()
+void AliHLTHough::MergePatches()
{
// Merge patches if they are not summed
if(fAddHistograms) //Nothing to merge here
fMerger->MergePatches(kTRUE);
}
-void AliL3Hough::MergeInternally()
+void AliHLTHough::MergeInternally()
{
// Merge patches internally
if(fAddHistograms)
fInterMerger->MMerge();
}
-void AliL3Hough::ProcessSliceIter()
+void AliHLTHough::ProcessSliceIter()
{
//Process current slice (after ReadData(slice)) iteratively.
Transform();
AddAllHistograms();
InitEvaluate();
- AliL3HoughBaseTransformer *tr = fHoughTransformer[0];
+ AliHLTHoughBaseTransformer *tr = fHoughTransformer[0];
for(Int_t j=0; j<fNEtaSegments; j++)
{
- AliL3Histogram *hist = tr->GetHistogram(j);
+ AliHLTHistogram *hist = tr->GetHistogram(j);
if(hist->GetNEntries()==0) continue;
fPeakFinder->Reset();
fPeakFinder->SetHistogram(hist);
fPeakFinder->FindAbsMaxima();
- AliL3HoughTrack *track = (AliL3HoughTrack*)fTracks[0]->NextTrack();
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)fTracks[0]->NextTrack();
track->SetTrackParameters(fPeakFinder->GetXPeak(0),fPeakFinder->GetYPeak(0),fPeakFinder->GetWeight(0));
track->SetEtaIndex(j);
track->SetEta(tr->GetEta(j,fCurrentSlice));
}
}
-void AliL3Hough::ProcessPatchIter(Int_t patch)
+void AliHLTHough::ProcessPatchIter(Int_t patch)
{
//Process patch in a iterative way.
//transform + peakfinding + evaluation + transform +...
Int_t numoftries = 5;
- AliL3HoughBaseTransformer *tr = fHoughTransformer[patch];
- AliL3TrackArray *tracks = fTracks[patch];
+ AliHLTHoughBaseTransformer *tr = fHoughTransformer[patch];
+ AliHLTTrackArray *tracks = fTracks[patch];
tracks->Reset();
- AliL3HoughEval *ev = fEval[patch];
+ AliHLTHoughEval *ev = fEval[patch];
ev->InitTransformer(tr);
//ev->RemoveFoundTracks();
ev->SetNumOfRowsToMiss(3);
ev->SetNumOfPadsToLook(2);
- AliL3Histogram *hist;
+ AliHLTHistogram *hist;
for(Int_t t=0; t<numoftries; t++)
{
tr->Reset();
fPeakFinder->SetHistogram(hist);
fPeakFinder->FindAbsMaxima();
//fPeakFinder->FindPeak1();
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->NextTrack();
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->NextTrack();
track->SetTrackParameters(fPeakFinder->GetXPeak(0),fPeakFinder->GetYPeak(0),fPeakFinder->GetWeight(0));
track->SetEtaIndex(i);
track->SetEta(tr->GetEta(i,fCurrentSlice));
}
}
fTracks[0]->QSort();
- LOG(AliL3Log::kInformational,"AliL3Hough::ProcessPatch","NTracks")
- <<AliL3Log::kDec<<"Found "<<tracks->GetNTracks()<<" tracks in patch "<<patch<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTHough::ProcessPatch","NTracks")
+ <<AliHLTLog::kDec<<"Found "<<tracks->GetNTracks()<<" tracks in patch "<<patch<<ENDLOG;
}
-void AliL3Hough::AddAllHistograms()
+void AliHLTHough::AddAllHistograms()
{
//Add the histograms within one etaslice.
//Resulting histogram are in patch=0.
fBenchmark->Start("Add Histograms");
for(Int_t i=0; i<fNEtaSegments; i++)
{
- AliL3Histogram *hist0 = fHoughTransformer[0]->GetHistogram(i);
+ AliHLTHistogram *hist0 = fHoughTransformer[0]->GetHistogram(i);
for(Int_t j=1; j<fNPatches; j++)
{
- AliL3Histogram *hist = fHoughTransformer[j]->GetHistogram(i);
+ AliHLTHistogram *hist = fHoughTransformer[j]->GetHistogram(i);
hist0->Add(hist);
}
}
fBenchmark->Stop("Add Histograms");
fAddHistograms = kTRUE;
cpuTime = GetCpuTime() - initTime;
- LOG(AliL3Log::kInformational,"AliL3Hough::AddAllHistograms()","Timing")
+ LOG(AliHLTLog::kInformational,"AliHLTHough::AddAllHistograms()","Timing")
<<"Adding histograms in "<<cpuTime*1000<<" ms"<<ENDLOG;
}
-void AliL3Hough::AddAllHistogramsRows()
+void AliHLTHough::AddAllHistogramsRows()
{
//Add the histograms within one etaslice.
//Resulting histogram are in patch=0.
initTime = GetCpuTime();
fBenchmark->Start("Add HistogramsRows");
- UChar_t lastpatchlastrow = AliL3Transform::GetLastRowOnDDL(fLastPatch)+1;
+ UChar_t lastpatchlastrow = AliHLTTransform::GetLastRowOnDDL(fLastPatch)+1;
- UChar_t *tracklastrow = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetTrackLastRow();
+ UChar_t *tracklastrow = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetTrackLastRow();
for(Int_t i=0; i<fNEtaSegments; i++)
{
- UChar_t *gapcount = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetGapCount(i);
- UChar_t *currentrowcount = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetCurrentRowCount(i);
+ UChar_t *gapcount = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetGapCount(i);
+ UChar_t *currentrowcount = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetCurrentRowCount(i);
- AliL3Histogram *hist = fHoughTransformer[0]->GetHistogram(i);
+ AliHLTHistogram *hist = fHoughTransformer[0]->GetHistogram(i);
Int_t xmin = hist->GetFirstXbin();
Int_t xmax = hist->GetLastXbin();
Int_t ymin = hist->GetFirstYbin();
fBenchmark->Stop("Add HistogramsRows");
fAddHistograms = kTRUE;
cpuTime = GetCpuTime() - initTime;
- LOG(AliL3Log::kInformational,"AliL3Hough::AddAllHistogramsRows()","Timing")
+ LOG(AliHLTLog::kInformational,"AliHLTHough::AddAllHistogramsRows()","Timing")
<<"Adding histograms in "<<cpuTime*1000<<" ms"<<ENDLOG;
}
-void AliL3Hough::PrepareForNextPatch(Int_t nextpatch)
+void AliHLTHough::PrepareForNextPatch(Int_t nextpatch)
{
// Prepare the parameter space for the processing of
// the next read patch. According to the already
if(fLastPatch == -1)
lastpatchlastrow = 0;
else
- lastpatchlastrow = AliL3Transform::GetLastRowOnDDL(fLastPatch)+1;
+ lastpatchlastrow = AliHLTTransform::GetLastRowOnDDL(fLastPatch)+1;
UChar_t nextpatchfirstrow;
if(nextpatch==0)
nextpatchfirstrow = 0;
else
- nextpatchfirstrow = AliL3Transform::GetFirstRowOnDDL(nextpatch)-1;
+ nextpatchfirstrow = AliHLTTransform::GetFirstRowOnDDL(nextpatch)-1;
- UChar_t *trackfirstrow = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetTrackFirstRow();
- UChar_t *tracklastrow = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetTrackLastRow();
+ UChar_t *trackfirstrow = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetTrackFirstRow();
+ UChar_t *tracklastrow = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetTrackLastRow();
for(Int_t i=0; i<fNEtaSegments; i++)
{
- UChar_t *gapcount = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetGapCount(i);
- UChar_t *currentrowcount = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetCurrentRowCount(i);
- UChar_t *prevbin = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetPrevBin(i);
- UChar_t *nextbin = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetNextBin(i);
- UChar_t *nextrow = ((AliL3HoughTransformerRow *)fHoughTransformer[0])->GetNextRow(i);
+ UChar_t *gapcount = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetGapCount(i);
+ UChar_t *currentrowcount = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetCurrentRowCount(i);
+ UChar_t *prevbin = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetPrevBin(i);
+ UChar_t *nextbin = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetNextBin(i);
+ UChar_t *nextrow = ((AliHLTHoughTransformerRow *)fHoughTransformer[0])->GetNextRow(i);
- AliL3Histogram *hist = fHoughTransformer[0]->GetHistogram(i);
+ AliHLTHistogram *hist = fHoughTransformer[0]->GetHistogram(i);
Int_t xmin = hist->GetFirstXbin();
Int_t xmax = hist->GetLastXbin();
Int_t ymin = hist->GetFirstYbin();
fBenchmark->Stop(buf);
}
-void AliL3Hough::AddTracks()
+void AliHLTHough::AddTracks()
{
// Add current slice slice tracks to the global list of found tracks
if(!fTracks[0])
{
- cerr<<"AliL3Hough::AddTracks : No tracks"<<endl;
+ cerr<<"AliHLTHough::AddTracks : No tracks"<<endl;
return;
}
- AliL3TrackArray *tracks = fTracks[0];
+ AliHLTTrackArray *tracks = fTracks[0];
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3Track *track = tracks->GetCheckedTrack(i);
+ AliHLTTrack *track = tracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetNHits()!=1) cerr<<"NHITS "<<track->GetNHits()<<endl;
UInt_t *ids = track->GetHitNumbers();
fGlobalTracks->AddTracks(fTracks[0],0,fCurrentSlice);
}
-void AliL3Hough::FindTrackCandidatesRow()
+void AliHLTHough::FindTrackCandidatesRow()
{
- // Find AliL3HoughTransformerRow track candidates
+ // Find AliHLTHoughTransformerRow track candidates
if(fVersion != 4) {
- LOG(AliL3Log::kError,"AliL3Hough::FindTrackCandidatesRow()","")
+ LOG(AliHLTLog::kError,"AliHLTHough::FindTrackCandidatesRow()","")
<<"Incompatible Peak Finder version!"<<ENDLOG;
return;
}
fBenchmark->Start("Find Maxima");
for(Int_t i=0; i<npatches; i++)
{
- AliL3HoughBaseTransformer *tr = fHoughTransformer[i];
- AliL3Histogram *h = tr->GetHistogram(0);
- Float_t deltax = h->GetBinWidthX()*AliL3HoughTransformerRow::GetDAlpha();
- Float_t deltay = h->GetBinWidthY()*AliL3HoughTransformerRow::GetDAlpha();
- Float_t deltaeta = (tr->GetEtaMax()-tr->GetEtaMin())/tr->GetNEtaSegments()*AliL3HoughTransformerRow::GetDEta();
+ AliHLTHoughBaseTransformer *tr = fHoughTransformer[i];
+ AliHLTHistogram *h = tr->GetHistogram(0);
+ Float_t deltax = h->GetBinWidthX()*AliHLTHoughTransformerRow::GetDAlpha();
+ Float_t deltay = h->GetBinWidthY()*AliHLTHoughTransformerRow::GetDAlpha();
+ Float_t deltaeta = (tr->GetEtaMax()-tr->GetEtaMin())/tr->GetNEtaSegments()*AliHLTHoughTransformerRow::GetDEta();
Float_t zvertex = tr->GetZVertex();
fTracks[i]->Reset();
fPeakFinder->Reset();
for(Int_t j=0; j<fNEtaSegments; j++)
{
- AliL3Histogram *hist = tr->GetHistogram(j);
+ AliHLTHistogram *hist = tr->GetHistogram(j);
if(hist->GetNEntries()==0) continue;
fPeakFinder->SetHistogram(hist);
fPeakFinder->SetEtaSlice(j);
- fPeakFinder->SetTrackLUTs(((AliL3HoughTransformerRow *)tr)->GetTrackNRows(),((AliL3HoughTransformerRow *)tr)->GetTrackFirstRow(),((AliL3HoughTransformerRow *)tr)->GetTrackLastRow(),((AliL3HoughTransformerRow *)tr)->GetNextRow(j));
+ fPeakFinder->SetTrackLUTs(((AliHLTHoughTransformerRow *)tr)->GetTrackNRows(),((AliHLTHoughTransformerRow *)tr)->GetTrackFirstRow(),((AliHLTHoughTransformerRow *)tr)->GetTrackLastRow(),((AliHLTHoughTransformerRow *)tr)->GetNextRow(j));
#ifdef do_mc
- LOG(AliL3Log::kInformational,"AliL3Hough::FindTrackCandidates()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHough::FindTrackCandidates()","")
<<"Starting "<<j<<" etaslice"<<ENDLOG;
#endif
fPeakFinder->SetThreshold(fPeakThreshold[i]);
for(Int_t k=0; k<fPeakFinder->GetEntries(); k++)
{
// if(fPeakFinder->GetWeight(k) < 0) continue;
- AliL3HoughTrack *track = (AliL3HoughTrack*)fTracks[i]->NextTrack();
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)fTracks[i]->NextTrack();
Double_t starteta = tr->GetEta(fPeakFinder->GetStartEta(k),fCurrentSlice);
Double_t endeta = tr->GetEta(fPeakFinder->GetEndEta(k),fCurrentSlice);
Double_t eta = (starteta+endeta)/2.0;
Int_t etaindex = (fPeakFinder->GetStartEta(k)+fPeakFinder->GetEndEta(k))/2;
track->SetEtaIndex(etaindex);
Int_t rows[2];
- ((AliL3HoughTransformerRow *)tr)->GetTrackLength(fPeakFinder->GetXPeak(k),fPeakFinder->GetYPeak(k),rows);
+ ((AliHLTHoughTransformerRow *)tr)->GetTrackLength(fPeakFinder->GetXPeak(k),fPeakFinder->GetYPeak(k),rows);
track->SetRowRange(rows[0],rows[1]);
track->SetSector(fCurrentSlice);
track->SetSlice(fCurrentSlice);
track->SetMCid(label);
#endif
}
- LOG(AliL3Log::kInformational,"AliL3Hough::FindTrackCandidates()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHough::FindTrackCandidates()","")
<<"Found "<<fTracks[i]->GetNTracks()<<" tracks in slice "<<fCurrentSlice<<ENDLOG;
fTracks[i]->QSort();
}
fBenchmark->Stop("Find Maxima");
cpuTime = GetCpuTime() - initTime;
- LOG(AliL3Log::kInformational,"AliL3Hough::FindTrackCandidates()","Timing")
+ LOG(AliHLTLog::kInformational,"AliHLTHough::FindTrackCandidates()","Timing")
<<"Maxima finding done in "<<cpuTime*1000<<" ms"<<ENDLOG;
}
-void AliL3Hough::FindTrackCandidates()
+void AliHLTHough::FindTrackCandidates()
{
- // Find AliL3HoughTransformer track candidates
+ // Find AliHLTHoughTransformer track candidates
if(fVersion == 4) {
- LOG(AliL3Log::kError,"AliL3Hough::FindTrackCandidatesRow()","")
+ LOG(AliHLTLog::kError,"AliHLTHough::FindTrackCandidatesRow()","")
<<"Incompatible Peak Finder version!"<<ENDLOG;
return;
}
fBenchmark->Start("Find Maxima");
for(Int_t i=0; i<npatches; i++)
{
- AliL3HoughBaseTransformer *tr = fHoughTransformer[i];
+ AliHLTHoughBaseTransformer *tr = fHoughTransformer[i];
fTracks[i]->Reset();
for(Int_t j=0; j<fNEtaSegments; j++)
{
- AliL3Histogram *hist = tr->GetHistogram(j);
+ AliHLTHistogram *hist = tr->GetHistogram(j);
if(hist->GetNEntries()==0) continue;
fPeakFinder->Reset();
fPeakFinder->SetHistogram(hist);
for(Int_t k=0; k<fPeakFinder->GetEntries(); k++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack*)fTracks[i]->NextTrack();
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)fTracks[i]->NextTrack();
track->SetTrackParameters(fPeakFinder->GetXPeak(k),fPeakFinder->GetYPeak(k),fPeakFinder->GetWeight(k));
track->SetEtaIndex(j);
track->SetEta(tr->GetEta(j,fCurrentSlice));
- track->SetRowRange(AliL3Transform::GetFirstRow(0),AliL3Transform::GetLastRow(5));
+ track->SetRowRange(AliHLTTransform::GetFirstRow(0),AliHLTTransform::GetLastRow(5));
}
}
cout<<"Found "<<fTracks[i]->GetNTracks()<<" tracks in patch "<<i<<endl;
}
fBenchmark->Stop("Find Maxima");
cpuTime = GetCpuTime() - initTime;
- LOG(AliL3Log::kInformational,"AliL3Hough::FindTrackCandidates()","Timing")
+ LOG(AliHLTLog::kInformational,"AliHLTHough::FindTrackCandidates()","Timing")
<<"Maxima finding done in "<<cpuTime*1000<<" ms"<<ENDLOG;
}
-void AliL3Hough::InitEvaluate()
+void AliHLTHough::InitEvaluate()
{
- //Pass the transformer objects to the AliL3HoughEval objects:
+ //Pass the transformer objects to the AliHLTHoughEval objects:
//This will provide the evaluation objects with all the necessary
//data and parameters it needs.
fEval[i]->InitTransformer(fHoughTransformer[i]);
}
-Int_t AliL3Hough::Evaluate(Int_t roadwidth,Int_t nrowstomiss)
+Int_t AliHLTHough::Evaluate(Int_t roadwidth,Int_t nrowstomiss)
{
//Evaluate the tracks, by looking along the road in the raw data.
//If track does not cross all padrows - rows2miss, it is removed from the arrray.
if(!fTracks[0])
{
- LOG(AliL3Log::kError,"AliL3Hough::Evaluate","Track Array")
+ LOG(AliHLTLog::kError,"AliHLTHough::Evaluate","Track Array")
<<"No tracks to work with..."<<ENDLOG;
return 0;
}
Int_t removedtracks=0;
- AliL3TrackArray *tracks=0;
+ AliHLTTrackArray *tracks=0;
if(fAddHistograms)
{
tracks = fTracks[0];
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3Track *track = tracks->GetCheckedTrack(i);
+ AliHLTTrack *track = tracks->GetCheckedTrack(i);
if(!track) continue;
track->SetNHits(0);
}
{
for(Int_t j=0; j<tracks->GetNTracks(); j++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(j);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(j);
- if(track->GetNHits() < AliL3Transform::GetNRows() - nrowstomiss)
+ if(track->GetNHits() < AliHLTTransform::GetNRows() - nrowstomiss)
{
tracks->Remove(j);
removedtracks++;
return removedtracks;
}
-void AliL3Hough::EvaluatePatch(Int_t i,Int_t roadwidth,Int_t nrowstomiss)
+void AliHLTHough::EvaluatePatch(Int_t i,Int_t roadwidth,Int_t nrowstomiss)
{
//Evaluate patch i.
fEval[i]->SetNumOfRowsToMiss(nrowstomiss);
//fEval[i]->RemoveFoundTracks();
- AliL3TrackArray *tracks=0;
+ AliHLTTrackArray *tracks=0;
if(!fAddHistograms)
tracks = fTracks[i];
Int_t nrows=0;
for(Int_t j=0; j<tracks->GetNTracks(); j++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(j);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(j);
if(!track)
{
- LOG(AliL3Log::kWarning,"AliL3Hough::EvaluatePatch","Track array")
+ LOG(AliHLTLog::kWarning,"AliHLTHough::EvaluatePatch","Track array")
<<"Track object missing!"<<ENDLOG;
continue;
}
nrows=0;
- Int_t rowrange[2] = {AliL3Transform::GetFirstRow(i),AliL3Transform::GetLastRow(i)};
+ Int_t rowrange[2] = {AliHLTTransform::GetFirstRow(i),AliHLTTransform::GetLastRow(i)};
Bool_t result = fEval[i]->LookInsideRoad(track,nrows,rowrange);
if(fAddHistograms)
{
}
-void AliL3Hough::MergeEtaSlices()
+void AliHLTHough::MergeEtaSlices()
{
//Merge tracks found in neighbouring eta slices.
//Removes the track with the lower weight.
fBenchmark->Start("Merge Eta-slices");
- AliL3TrackArray *tracks = fTracks[0];
+ AliHLTTrackArray *tracks = fTracks[0];
if(!tracks)
{
- cerr<<"AliL3Hough::MergeEtaSlices : No tracks "<<endl;
+ cerr<<"AliHLTHough::MergeEtaSlices : No tracks "<<endl;
return;
}
for(Int_t j=0; j<tracks->GetNTracks(); j++)
{
- AliL3HoughTrack *track1 = (AliL3HoughTrack*)tracks->GetCheckedTrack(j);
+ AliHLTHoughTrack *track1 = (AliHLTHoughTrack*)tracks->GetCheckedTrack(j);
if(!track1) continue;
for(Int_t k=j+1; k<tracks->GetNTracks(); k++)
{
- AliL3HoughTrack *track2 = (AliL3HoughTrack*)tracks->GetCheckedTrack(k);
+ AliHLTHoughTrack *track2 = (AliHLTHoughTrack*)tracks->GetCheckedTrack(k);
if(!track2) continue;
if(abs(track1->GetEtaIndex() - track2->GetEtaIndex()) != 1) continue;
if(fabs(track1->GetKappa()-track2->GetKappa()) < 0.006 &&
tracks->Compress();
}
-void AliL3Hough::WriteTracks(Char_t *path)
+void AliHLTHough::WriteTracks(Char_t *path)
{
// Write found tracks into file
- //cout<<"AliL3Hough::WriteTracks : Sorting the tracsk"<<endl;
+ //cout<<"AliHLTHough::WriteTracks : Sorting the tracsk"<<endl;
//fGlobalTracks->QSort();
Char_t filename[1024];
sprintf(filename,"%s/tracks_%d.raw",path,fEvent);
- AliL3MemHandler mem;
+ AliHLTMemHandler mem;
mem.SetBinaryOutput(filename);
mem.TrackArray2Binary(fGlobalTracks);
mem.CloseBinaryOutput();
fGlobalTracks->Reset();
}
-void AliL3Hough::WriteTracks(Int_t slice,Char_t *path)
+void AliHLTHough::WriteTracks(Int_t slice,Char_t *path)
{
// Write found tracks slice by slice into file
- AliL3MemHandler mem;
+ AliHLTMemHandler mem;
Char_t fname[100];
if(fAddHistograms)
{
}
#ifdef use_aliroot
-Int_t AliL3Hough::FillESD(AliESD *esd)
+Int_t AliHLTHough::FillESD(AliESD *esd)
{
// Fill the found hough transform tracks
// into the ESD. The tracks are stored as
Int_t nglobaltracks = 0;
for(Int_t i=0; i<fGlobalTracks->GetNTracks(); i++)
{
- AliL3HoughTrack *tpt = (AliL3HoughTrack *)fGlobalTracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *tpt = (AliHLTHoughTrack *)fGlobalTracks->GetCheckedTrack(i);
if(!tpt) continue;
if(tpt->GetWeight()<0) continue;
- AliL3HoughKalmanTrack *tpctrack = new AliL3HoughKalmanTrack(*tpt);
+ AliHLTHoughKalmanTrack *tpctrack = new AliHLTHoughKalmanTrack(*tpt);
if(!tpctrack) continue;
AliESDtrack *esdtrack2 = new AliESDtrack() ;
esdtrack2->UpdateTrackParams(tpctrack,AliESDtrack::kTPCin);
}
#endif
-void AliL3Hough::WriteDigits(Char_t *outfile)
+void AliHLTHough::WriteDigits(Char_t *outfile)
{
//Write the current data to a new rootfile.
#ifdef use_aliroot
for(Int_t i=0; i<fNPatches; i++)
{
- AliL3DigitRowData *tempPt = (AliL3DigitRowData*)fHoughTransformer[i]->GetDataPointer();
+ AliHLTDigitRowData *tempPt = (AliHLTDigitRowData*)fHoughTransformer[i]->GetDataPointer();
fMemHandler[i]->AliDigits2RootFile(tempPt,outfile);
}
#else
- cerr<<"AliL3Hough::WriteDigits : You need to compile with AliROOT!"<<endl;
+ cerr<<"AliHLTHough::WriteDigits : You need to compile with AliROOT!"<<endl;
return;
#endif
}
-Double_t AliL3Hough::GetCpuTime()
+Double_t AliHLTHough::GetCpuTime()
{
//Return the Cputime in seconds.
struct timeval tv;
return tv.tv_sec+(((Double_t)tv.tv_usec)/1000000.);
}
-void *AliL3Hough::ProcessInThread(void *args)
+void *AliHLTHough::ProcessInThread(void *args)
{
// Called in case Hough transform tracking
// is executed in a thread
- AliL3Hough *instance = (AliL3Hough *)args;
+ AliHLTHough *instance = (AliHLTHough *)args;
Int_t minslice = instance->GetMinSlice();
Int_t maxslice = instance->GetMaxSlice();
for(Int_t i=minslice; i<=maxslice; i++)
return (void *)0;
}
-void AliL3Hough::StartProcessInThread(Int_t minslice,Int_t maxslice)
+void AliHLTHough::StartProcessInThread(Int_t minslice,Int_t maxslice)
{
// Starts the Hough transform tracking as a
// separate thread. Takes as parameters the
return;
}
-Int_t AliL3Hough::WaitForThreadFinish()
+Int_t AliHLTHough::WaitForThreadFinish()
{
// Routine is used in case we run the
// Hough transform tracking in several
#ifndef ALIL3HOUGH_H
#define ALIL3HOUGH_H
-#include "AliL3RootTypes.h"
-
-class AliL3HoughMaxFinder;
-class AliL3HoughBaseTransformer;
-class AliL3Histogram;
-class AliL3MemHandler;
-class AliL3FileHandler;
-class AliL3HoughEval;
-class AliL3TrackArray;
-class AliL3HoughMerger;
-class AliL3HoughIntMerger;
-class AliL3HoughGlobalMerger;
-class AliL3Benchmark;
+#include "AliHLTRootTypes.h"
+
+class AliHLTHoughMaxFinder;
+class AliHLTHoughBaseTransformer;
+class AliHLTHistogram;
+class AliHLTMemHandler;
+class AliHLTFileHandler;
+class AliHLTHoughEval;
+class AliHLTTrackArray;
+class AliHLTHoughMerger;
+class AliHLTHoughIntMerger;
+class AliHLTHoughGlobalMerger;
+class AliHLTBenchmark;
#include "TThread.h"
#ifdef use_newio
#include <AliESDHLTtrack.h>
#endif
-class AliL3Hough {
+class AliHLTHough {
public:
- AliL3Hough();
- AliL3Hough(Char_t *path,Bool_t binary,Int_t netasegments=100,Bool_t bit8=kFALSE,Int_t tv=0,Char_t *infile=0,Char_t *ptr=0);
- virtual ~AliL3Hough();
+ AliHLTHough();
+ AliHLTHough(Char_t *path,Bool_t binary,Int_t netasegments=100,Bool_t bit8=kFALSE,Int_t tv=0,Char_t *infile=0,Char_t *ptr=0);
+ virtual ~AliHLTHough();
#ifdef use_newio
void SetRunLoader(AliRunLoader *runloader) {fRunLoader = runloader;}
void SetPeakParameters(Int_t kspread,Float_t pratio) {fKappaSpread=kspread; fPeakRatio=pratio;}
//Getters
- AliL3HoughBaseTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
- AliL3TrackArray *GetTracks(Int_t i) {if(!fTracks[i]) return 0; return fTracks[i];}
- AliL3HoughEval *GetEval(Int_t i) {if(!fEval[i]) return 0; return fEval[i];}
- AliL3HoughMerger *GetMerger() {if(!fMerger) return 0; return fMerger;}
- AliL3HoughIntMerger *GetInterMerger() {if(!fInterMerger) return 0; return fInterMerger;}
- AliL3MemHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
- AliL3HoughMaxFinder *GetMaxFinder() {return fPeakFinder;}
+ AliHLTHoughBaseTransformer *GetTransformer(Int_t i) {if(!fHoughTransformer[i]) return 0; return fHoughTransformer[i];}
+ AliHLTTrackArray *GetTracks(Int_t i) {if(!fTracks[i]) return 0; return fTracks[i];}
+ AliHLTHoughEval *GetEval(Int_t i) {if(!fEval[i]) return 0; return fEval[i];}
+ AliHLTHoughMerger *GetMerger() {if(!fMerger) return 0; return fMerger;}
+ AliHLTHoughIntMerger *GetInterMerger() {if(!fInterMerger) return 0; return fInterMerger;}
+ AliHLTMemHandler *GetMemHandler(Int_t i) {if(!fMemHandler[i]) return 0; return fMemHandler[i];}
+ AliHLTHoughMaxFinder *GetMaxFinder() {return fPeakFinder;}
//Special methods for executing Hough Transform as a thread
static void *ProcessInThread(void *args);
Int_t fMinSlice; // First TPC slice (sector) to process while running in a thread
Int_t fMaxSlice; // Last TPC slice (sector) to process while running in a thread
- AliL3MemHandler **fMemHandler; //!
- AliL3HoughBaseTransformer **fHoughTransformer; //!
- AliL3HoughEval **fEval; //!
- AliL3HoughMaxFinder *fPeakFinder; //!
- AliL3TrackArray **fTracks; //!
- AliL3TrackArray *fGlobalTracks; //!
- AliL3HoughMerger *fMerger; //!
- AliL3HoughIntMerger *fInterMerger; //!
- AliL3HoughGlobalMerger *fGlobalMerger; //!
- AliL3Benchmark *fBenchmark; //!
+ AliHLTMemHandler **fMemHandler; //!
+ AliHLTHoughBaseTransformer **fHoughTransformer; //!
+ AliHLTHoughEval **fEval; //!
+ AliHLTHoughMaxFinder *fPeakFinder; //!
+ AliHLTTrackArray **fTracks; //!
+ AliHLTTrackArray *fGlobalTracks; //!
+ AliHLTHoughMerger *fMerger; //!
+ AliHLTHoughIntMerger *fInterMerger; //!
+ AliHLTHoughGlobalMerger *fGlobalMerger; //!
+ AliHLTBenchmark *fBenchmark; //!
#ifdef use_newio
AliRunLoader *fRunLoader; // Run Loader
TThread *fThread; // Pointer to the TThread object in case of running in a thread
- ClassDef(AliL3Hough,1) //Hough transform base class
+ ClassDef(AliHLTHough,1) //Hough transform base class
};
+typedef AliHLTHough AliL3Hough; // for backward comaptibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
//-------------------------------------------------------------------------
-// Implementation of the AliL3HoughBaseTransformer class
-// that is the base class for AliL3HoughTransformer,
-// AliL3HoughTransformerVhdl, AliL3HoughTransformerGlobal,
-// AliL3HoughTransformerRow
+// Implementation of the AliHLTHoughBaseTransformer class
+// that is the base class for AliHLTHoughTransformer,
+// AliHLTHoughTransformerVhdl, AliHLTHoughTransformerGlobal,
+// AliHLTHoughTransformerRow
//-------------------------------------------------------------------------
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3HoughBaseTransformer.h"
+#include "AliHLTHoughBaseTransformer.h"
-/** \class AliL3HoughBaseTransformer
+/** \class AliHLTHoughBaseTransformer
<pre>
//_____________________________________________________________
-// AliL3HoughBaseTransformer
+// AliHLTHoughBaseTransformer
//
// The base class for implementations of Hough Transform on ALICE TPC data.
//
</pre>
*/
-ClassImp(AliL3HoughBaseTransformer)
+ClassImp(AliHLTHoughBaseTransformer)
-AliL3HoughBaseTransformer::AliL3HoughBaseTransformer()
+AliHLTHoughBaseTransformer::AliHLTHoughBaseTransformer()
{
//Default constructor
fDigitRowData = 0;
fZVertex = 0.0;
}
-AliL3HoughBaseTransformer::AliL3HoughBaseTransformer(Int_t slice,Int_t patch,Int_t netasegments,Float_t zvertex)
+AliHLTHoughBaseTransformer::AliHLTHoughBaseTransformer(Int_t slice,Int_t patch,Int_t netasegments,Float_t zvertex)
{
//normal ctor
fDigitRowData = 0;
Init(slice,patch,netasegments);
}
-AliL3HoughBaseTransformer::~AliL3HoughBaseTransformer()
+AliHLTHoughBaseTransformer::~AliHLTHoughBaseTransformer()
{
//dtor
}
-void AliL3HoughBaseTransformer::Init(Int_t slice,Int_t patch,Int_t netasegments,Int_t /*n_seqs*/)
+void AliHLTHoughBaseTransformer::Init(Int_t slice,Int_t patch,Int_t netasegments,Int_t /*n_seqs*/)
{
//Transformer init
fSlice = slice;
#define ALIL3HOUGHBASETRANSFORMER_H
//-------------------------------------------------------------------------
-// Class AliL3HoughBaseTransformer
+// Class AliHLTHoughBaseTransformer
// This is the base class for all the Hough Transformer tracking
// algorithms for HLT.
//-------------------------------------------------------------------------
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
#ifdef do_mc
const UInt_t MaxTrack=120;
-struct AliL3TrackIndex {
+struct AliHLTTrackIndex {
Int_t fLabel[MaxTrack];//MC label
UChar_t fNHits[MaxTrack];//Number of different mc labels
UChar_t fCurrentRow[MaxTrack];//Index of the current row while filling Hough space
};
-typedef struct AliL3TrackIndex AliL3TrackIndex;
+typedef struct AliHLTTrackIndex AliHLTTrackIndex;
#endif
-class AliL3DigitRowData;
-class AliL3Histogram;
+class AliHLTDigitRowData;
+class AliHLTHistogram;
#include "AliTPCRawStream.h"
-class AliL3HoughBaseTransformer {
+class AliHLTHoughBaseTransformer {
public:
- AliL3HoughBaseTransformer();
- AliL3HoughBaseTransformer(Int_t slice,Int_t patch,Int_t netasegments,Float_t zvertex=0.0);
- virtual ~AliL3HoughBaseTransformer();
+ AliHLTHoughBaseTransformer();
+ AliHLTHoughBaseTransformer(Int_t slice,Int_t patch,Int_t netasegments,Float_t zvertex=0.0);
+ virtual ~AliHLTHoughBaseTransformer();
- void SetInputData(UInt_t /*ndigits*/,AliL3DigitRowData *ptr) {fDigitRowData = ptr;}
+ void SetInputData(UInt_t /*ndigits*/,AliHLTDigitRowData *ptr) {fDigitRowData = ptr;}
//this is for adaptave histograms
virtual void CreateHistograms(Float_t /*ptmin*/,Float_t /*ptmax*/,Float_t /*pres*/,Int_t /*nybin*/,Float_t /*psi*/)
Int_t GetSlice() const {return fSlice;}
Int_t GetPatch() const {return fPatch;}
Int_t GetLastPatch() const {return fLastPatch;}
- AliL3HoughBaseTransformer *GetLastTransfromer() const {return fLastTransformer;}
+ AliHLTHoughBaseTransformer *GetLastTransfromer() const {return fLastTransformer;}
Int_t GetNEtaSegments() const {return fNEtaSegments;}
Int_t GetLowerThreshold() const {return fLowerThreshold;}
Int_t GetUpperThreshold() const {return fUpperThreshold;}
Double_t GetEtaMax() const {return fEtaMax;}
Float_t GetZVertex() const {return fZVertex;}
- AliL3DigitRowData *GetDataPointer() {return fDigitRowData;}
+ AliHLTDigitRowData *GetDataPointer() {return fDigitRowData;}
virtual Int_t GetEtaIndex(Double_t eta) const = 0;
virtual void GetEtaIndexes(Double_t /*eta*/,Int_t */*indexes*/) const
{STDCERR<<"GetEtaIndexes not implemented for this Transformer class"<<STDENDL;}
- virtual AliL3Histogram *GetHistogram(Int_t etaindex) = 0;
+ virtual AliHLTHistogram *GetHistogram(Int_t etaindex) = 0;
virtual Double_t GetEta(Int_t etaindex,Int_t slice) const = 0;
virtual Int_t GetTrackID(Int_t /*etaindex*/,Double_t /*kappa*/,Double_t /*psi*/) const {
void SetLowerThreshold(Int_t i) {fLowerThreshold = i;}
void SetUpperThreshold(Int_t i) {fUpperThreshold = i;}
void SetLastPatch(Int_t i) {fLastPatch = i;}
- void SetLastTransformer(AliL3HoughBaseTransformer *transformer) {fLastTransformer = transformer;}
+ void SetLastTransformer(AliHLTHoughBaseTransformer *transformer) {fLastTransformer = transformer;}
virtual void SetTPCRawStream(AliTPCRawStream */*rawstream*/){};
protected:
- AliL3HoughBaseTransformer *fLastTransformer;//Pointer to the previous hough transformer
+ AliHLTHoughBaseTransformer *fLastTransformer;//Pointer to the previous hough transformer
private:
Int_t fLowerThreshold;//Lower threshold for digits amplitude
Int_t fUpperThreshold;//Upper threshold for digits amplitude
- AliL3DigitRowData *fDigitRowData; //!
+ AliHLTDigitRowData *fDigitRowData; //!
Float_t fZVertex;//Z position of the primary vertex
- ClassDef(AliL3HoughBaseTransformer,1) //Hough transformation base class
+ ClassDef(AliHLTHoughBaseTransformer,1) //Hough transformation base class
};
+typedef AliHLTHoughBaseTransformer AliL3HoughBaseTransformer; // for backward comapatibility
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3HoughClusterTransformer.h"
-#include "AliL3MemHandler.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3Transform.h"
-#include "AliL3DigitData.h"
-#include "AliL3Histogram.h"
-#include "AliL3ClustFinderNew.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHoughClusterTransformer.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTHistogram.h"
+#include "AliHLTClustFinderNew.h"
#if __GNUC__ >= 3
using namespace std;
#endif
//_____________________________________________________________
-// AliL3HoughClusterTransformer
+// AliHLTHoughClusterTransformer
//
// Hough transformation class.
//
// Therefore, it first finds the clusters using the HLT cluster finder, and
// then uses these as input for the transform.
-ClassImp(AliL3HoughClusterTransformer)
+ClassImp(AliHLTHoughClusterTransformer)
-AliL3HoughClusterTransformer::AliL3HoughClusterTransformer()
+AliHLTHoughClusterTransformer::AliHLTHoughClusterTransformer()
{
//Default constructor
fParamSpace = 0;
#endif
}
-AliL3HoughClusterTransformer::AliL3HoughClusterTransformer(Int_t slice,Int_t patch,Int_t netasegments) : AliL3HoughBaseTransformer(slice,patch,netasegments)
+AliHLTHoughClusterTransformer::AliHLTHoughClusterTransformer(Int_t slice,Int_t patch,Int_t netasegments) : AliHLTHoughBaseTransformer(slice,patch,netasegments)
{
//Normal constructor
fParamSpace = 0;
#endif
}
-AliL3HoughClusterTransformer::~AliL3HoughClusterTransformer()
+AliHLTHoughClusterTransformer::~AliHLTHoughClusterTransformer()
{
//dtor
DeleteHistograms();
#endif
}
-//void AliL3HoughClusterTransformer::Init(Int_t slice=0,Int_t patch=0,Int_t netasegments=100){}
+//void AliHLTHoughClusterTransformer::Init(Int_t slice=0,Int_t patch=0,Int_t netasegments=100){}
-void AliL3HoughClusterTransformer::DeleteHistograms()
+void AliHLTHoughClusterTransformer::DeleteHistograms()
{
//Delete hough space histograms
if(fParamSpace)
}
}
-void AliL3HoughClusterTransformer::CreateHistograms(Int_t nxbin,Float_t ptmin,
+void AliHLTHoughClusterTransformer::CreateHistograms(Int_t nxbin,Float_t ptmin,
Int_t nybin,Float_t phimin,Float_t phimax)
{
//Create the histograms (parameter space).
//phimin = mimimum phi0 (degrees)
//phimax = maximum phi0 (degrees)
- Double_t x = AliL3Transform::GetBFact()*AliL3Transform::GetBField()/ptmin;
- Double_t torad = AliL3Transform::Pi()/180;
+ Double_t x = AliHLTTransform::GetBFact()*AliHLTTransform::GetBField()/ptmin;
+ Double_t torad = AliHLTTransform::Pi()/180;
CreateHistograms(nxbin,-1.*x,x,nybin,phimin*torad,phimax*torad);
}
-void AliL3HoughClusterTransformer::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
+void AliHLTHoughClusterTransformer::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
Int_t nybin,Float_t ymin,Float_t ymax)
{
//Create histograms which contain hough space
Char_t histname[256];
- fParamSpace = new AliL3Histogram*[GetNEtaSegments()];
+ fParamSpace = new AliHLTHistogram*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
{
sprintf(histname,"paramspace_%d",i);
- fParamSpace[i] = new AliL3Histogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
+ fParamSpace[i] = new AliHLTHistogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
}
#ifdef do_mc
Int_t ncells = (nxbin+2)*(nybin+2);
- cout<<"Allocating "<<GetNEtaSegments()*ncells*sizeof(AliL3TrackIndex)<<" bytes to fTrackID"<<endl;
- fTrackID = new AliL3TrackIndex*[GetNEtaSegments()];
+ cout<<"Allocating "<<GetNEtaSegments()*ncells*sizeof(AliHLTTrackIndex)<<" bytes to fTrackID"<<endl;
+ fTrackID = new AliHLTTrackIndex*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
- fTrackID[i] = new AliL3TrackIndex[ncells];
+ fTrackID[i] = new AliHLTTrackIndex[ncells];
#endif
}
-void AliL3HoughClusterTransformer::Reset()
+void AliHLTHoughClusterTransformer::Reset()
{
//Reset all the histograms
if(!fParamSpace)
{
- LOG(AliL3Log::kWarning,"AliL3HoughClusterTransformer::Reset","Histograms")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughClusterTransformer::Reset","Histograms")
<<"No histograms to reset"<<ENDLOG;
return;
}
fNClusters=0;
fClusters=0;
#ifdef do_mc
- AliL3Histogram *hist = fParamSpace[0];
+ AliHLTHistogram *hist = fParamSpace[0];
Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
for(Int_t i=0; i<GetNEtaSegments(); i++)
- memset(fTrackID[i],0,ncells*sizeof(AliL3TrackIndex));
+ memset(fTrackID[i],0,ncells*sizeof(AliHLTTrackIndex));
#endif
}
-Int_t AliL3HoughClusterTransformer::GetEtaIndex(Double_t eta) const
+Int_t AliHLTHoughClusterTransformer::GetEtaIndex(Double_t eta) const
{
//Return the histogram index of the corresponding eta.
return (Int_t)index;
}
-inline AliL3Histogram *AliL3HoughClusterTransformer::GetHistogram(Int_t etaindex)
+inline AliHLTHistogram *AliHLTHoughClusterTransformer::GetHistogram(Int_t etaindex)
{
//Returns the histogram which correspond to a given eta slice
if(!fParamSpace || etaindex >= GetNEtaSegments() || etaindex < 0)
return fParamSpace[etaindex];
}
-Double_t AliL3HoughClusterTransformer::GetEta(Int_t etaindex,Int_t slice) const
+Double_t AliHLTHoughClusterTransformer::GetEta(Int_t etaindex,Int_t slice) const
{
//Returns eta associated with given eta slice
Double_t etaslice = (GetEtaMax()-GetEtaMin())/GetNEtaSegments();
return eta;
}
-void AliL3HoughClusterTransformer::FindClusters()
+void AliHLTHoughClusterTransformer::FindClusters()
{
//Find the clusters
if(!GetDataPointer())
{
- cerr<<"AliL3HoughClusterTransformer::FindClusters : Zero data pointer"<<endl;
+ cerr<<"AliHLTHoughClusterTransformer::FindClusters : Zero data pointer"<<endl;
return;
}
const Int_t kMaxpoints=100000;
- const Int_t kPointsize = kMaxpoints * sizeof(AliL3SpacePointData);
+ const Int_t kPointsize = kMaxpoints * sizeof(AliHLTSpacePointData);
- fMemHandler = new AliL3MemHandler();
- fClusters = (AliL3SpacePointData*)fMemHandler->Allocate(kPointsize);
- AliL3ClustFinderNew *cf = new AliL3ClustFinderNew();
- cf->InitSlice(0,GetPatch(),AliL3Transform::GetFirstRow(GetPatch()),AliL3Transform::GetLastRow(GetPatch()),kMaxpoints);
+ fMemHandler = new AliHLTMemHandler();
+ fClusters = (AliHLTSpacePointData*)fMemHandler->Allocate(kPointsize);
+ AliHLTClustFinderNew *cf = new AliHLTClustFinderNew();
+ cf->InitSlice(0,GetPatch(),AliHLTTransform::GetFirstRow(GetPatch()),AliHLTTransform::GetLastRow(GetPatch()),kMaxpoints);
cf->SetDeconv(kFALSE);
cf->SetOutputArray(fClusters);
cf->Read(1,GetDataPointer());
delete cf;
}
-void AliL3HoughClusterTransformer::TransformCircle()
+void AliHLTHoughClusterTransformer::TransformCircle()
{
//Transform the input data with a circle HT.
//The function loops over all the data, and transforms each cluster with the equations:
FindClusters();
if(!fClusters)
{
- LOG(AliL3Log::kError,"AliL3HoughClusterTransformer::TransformCircle","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughClusterTransformer::TransformCircle","Data")
<<"No input data "<<ENDLOG;
return;
}
xyz[0] = fClusters[i].fX;
xyz[1] = fClusters[i].fY;
xyz[2] = fClusters[i].fZ;
- Double_t eta = AliL3Transform::GetEta(xyz);
+ Double_t eta = AliHLTTransform::GetEta(xyz);
Int_t etaindex = GetEtaIndex(eta);
if(etaindex < 0 || etaindex >= GetNEtaSegments())
continue;
- AliL3Histogram *hist = fParamSpace[etaindex];
+ AliHLTHistogram *hist = fParamSpace[etaindex];
//Do the transformation:
Double_t r = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
- Double_t phi = AliL3Transform::GetPhi(xyz);
+ Double_t phi = AliHLTTransform::GetPhi(xyz);
//Fill the histogram along the phirange
for(Int_t b=hist->GetFirstYbin(); b<=hist->GetLastYbin(); b++)
for(c=0; c<MaxTrack; c++)
if(fTrackID[etaindex][bin].fLabel[c] == label || fTrackID[etaindex][bin].fNHits[c] == 0)
break;
- if(c == MaxTrack-1) cerr<<"AliL3HoughClusterTransformer::TransformCircle : Array reached maximum!! "<<c<<endl;
+ if(c == MaxTrack-1) cerr<<"AliHLTHoughClusterTransformer::TransformCircle : Array reached maximum!! "<<c<<endl;
fTrackID[etaindex][bin].fLabel[c] = label;
fTrackID[etaindex][bin].fNHits[c]++;
}
}
}
-void AliL3HoughClusterTransformer::TransformCircleC(Int_t */*row_range*/,Int_t /*every*/)
+void AliHLTHoughClusterTransformer::TransformCircleC(Int_t */*row_range*/,Int_t /*every*/)
{
//Circle transform, using combinations of every 2 points lying
//on different padrows and within the same etaslice.
FindClusters();
if(!fClusters)
- LOG(AliL3Log::kError,"AliL3HoughClusterTransformer::TransformCircleC","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughClusterTransformer::TransformCircleC","Data")
<<"No input data "<<ENDLOG;
Float_t xyz[3];
xyz[2] = fClusters[i].fZ;
r1 = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
phi1 = atan2(xyz[1],xyz[0]);
- eta = AliL3Transform::GetEta(xyz);
+ eta = AliHLTTransform::GetEta(xyz);
index1 = GetEtaIndex(eta);
if(index1 < 0 || index1 >= GetNEtaSegments()) continue;
xyz[0] = fClusters[j].fX;
xyz[1] = fClusters[j].fY;
xyz[2] = fClusters[j].fZ;
- eta = AliL3Transform::GetEta(xyz);
+ eta = AliHLTTransform::GetEta(xyz);
index2 = GetEtaIndex(eta);
if(index1 != index2) continue;
- AliL3Histogram *hist = fParamSpace[index1];
+ AliHLTHistogram *hist = fParamSpace[index1];
r2 = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
phi2 = atan2(xyz[1],xyz[0]);
for(c=0; c<MaxTrack; c++)
if(fTrackID[index1][bin].fLabel[c] == label || fTrackID[index1][bin].fNHits[c] == 0)
break;
- if(c == MaxTrack-1) cerr<<"AliL3HoughClusterTransformer::TransformCircleC : Array reached maximum!! "<<c<<endl;
+ if(c == MaxTrack-1) cerr<<"AliHLTHoughClusterTransformer::TransformCircleC : Array reached maximum!! "<<c<<endl;
fTrackID[index1][bin].fLabel[c] = label;
fTrackID[index1][bin].fNHits[c]++;
}
#ifdef do_mc
-Int_t AliL3HoughClusterTransformer::GetTrackID(Int_t etaindex,Double_t kappa,Double_t psi) const
+Int_t AliHLTHoughClusterTransformer::GetTrackID(Int_t etaindex,Double_t kappa,Double_t psi) const
{
//Returns the mc label for a given bin in the hough space
if(etaindex < 0 || etaindex > GetNEtaSegments())
{
- cerr<<"AliL3HoughClusterTransformer::GetTrackID : Wrong etaindex "<<etaindex<<endl;
+ cerr<<"AliHLTHoughClusterTransformer::GetTrackID : Wrong etaindex "<<etaindex<<endl;
return -1;
}
- AliL3Histogram *hist = fParamSpace[etaindex];
+ AliHLTHistogram *hist = fParamSpace[etaindex];
Int_t bin = hist->FindBin(kappa,psi);
Int_t label=-1;
Int_t max=0;
}
return label;
#else
- Int_t AliL3HoughClusterTransformer::GetTrackID(Int_t /*etaindex*/,Double_t /*kappa*/,Double_t /*psi*/) const
+ Int_t AliHLTHoughClusterTransformer::GetTrackID(Int_t /*etaindex*/,Double_t /*kappa*/,Double_t /*psi*/) const
{
// Does nothing if do_mc undefinde
- cout<<"AliL3HoughClusterTransformer::GetTrackID : Compile with do_mc flag!"<<endl;
+ cout<<"AliHLTHoughClusterTransformer::GetTrackID : Compile with do_mc flag!"<<endl;
return -1;
#endif
}
#ifndef ALIL3HOUGHCLUSTERTRANSFORMER_H
#define ALIL3HOUGHCLUSTERTRANSFORMER_H
-#include "AliL3RootTypes.h"
-#include "AliL3HoughBaseTransformer.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTHoughBaseTransformer.h"
-class AliL3Histogram;
-class AliL3SpacePointData;
-class AliL3MemHandler;
+class AliHLTHistogram;
+class AliHLTSpacePointData;
+class AliHLTMemHandler;
-class AliL3HoughClusterTransformer : public AliL3HoughBaseTransformer {
+class AliHLTHoughClusterTransformer : public AliHLTHoughBaseTransformer {
public:
- AliL3HoughClusterTransformer();
- AliL3HoughClusterTransformer(Int_t slice,Int_t patch,Int_t netasegments);
- virtual ~AliL3HoughClusterTransformer();
+ AliHLTHoughClusterTransformer();
+ AliHLTHoughClusterTransformer(Int_t slice,Int_t patch,Int_t netasegments);
+ virtual ~AliHLTHoughClusterTransformer();
void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t pres,Int_t nybin,Float_t psi) {
- AliL3HoughBaseTransformer::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
+ AliHLTHoughBaseTransformer::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
}
void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax);
void CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
void Reset();
void TransformCircle();
void TransformCircle(Int_t *row_range,Int_t every) {
- AliL3HoughBaseTransformer::TransformCircle(row_range,every);
+ AliHLTHoughBaseTransformer::TransformCircle(row_range,every);
}
void TransformCircleC(Int_t *rowrange,Int_t every);
void TransformLine(Int_t */*rowrange*/=0,Float_t */*phirange*/=0){};
Int_t GetEtaIndex(Double_t eta) const;
- AliL3Histogram *GetHistogram(Int_t etaindex);
+ AliHLTHistogram *GetHistogram(Int_t etaindex);
Double_t GetEta(Int_t etaindex,Int_t slice) const;
Int_t GetTrackID(Int_t etaindex,Double_t kappa,Double_t psi) const;
private:
- AliL3Histogram **fParamSpace; //!
- AliL3MemHandler *fMemHandler; //!
- AliL3SpacePointData *fClusters; //!
+ AliHLTHistogram **fParamSpace; //!
+ AliHLTMemHandler *fMemHandler; //!
+ AliHLTSpacePointData *fClusters; //!
Int_t fNClusters;//Number of clusters
#ifdef do_mc
- AliL3TrackIndex **fTrackID; //!
+ AliHLTTrackIndex **fTrackID; //!
#endif
void DeleteHistograms();
- ClassDef(AliL3HoughClusterTransformer,1) //Normal Hough transformation class
+ ClassDef(AliHLTHoughClusterTransformer,1) //Normal Hough transformation class
};
+typedef AliHLTHoughClusterTransformer AliL3HoughClusterTransformer; // for backward comapatibility
+
#endif
#include <TShape.h>
#include <TFile.h>
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3DigitData.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3TrackArray.h"
-#include "AliL3MemHandler.h"
-#include "AliL3HoughDisplay.h"
-#include "AliL3DigitData.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTHoughDisplay.h"
+#include "AliHLTDigitData.h"
#if __GNUC__ >= 3
using namespace std;
//_____________________________________________________________
// Display class for Hough transform code
-ClassImp(AliL3HoughDisplay)
+ClassImp(AliHLTHoughDisplay)
-AliL3HoughDisplay::AliL3HoughDisplay()
+AliHLTHoughDisplay::AliHLTHoughDisplay()
{
//default ctor
fTracks = 0;
fPatch = -1;
}
-AliL3HoughDisplay::~AliL3HoughDisplay()
+AliHLTHoughDisplay::~AliHLTHoughDisplay()
{
//dtor
if(fTracks)
delete fTracks;
}
-void AliL3HoughDisplay::Init(Char_t *trackfile, Char_t *gfile)
+void AliHLTHoughDisplay::Init(Char_t *trackfile, Char_t *gfile)
{
//Init hough display
TFile *file = TFile::Open(gfile);
if(!file->IsOpen())
- cerr<<"AliL3HoughDisplay::AliL3HoughDisplay : Geometry file " << gfile << " does not exist"<<endl;
+ cerr<<"AliHLTHoughDisplay::AliHLTHoughDisplay : Geometry file " << gfile << " does not exist"<<endl;
fGeom = (TGeometry*)file->Get("AliceGeom");
file->Close();
- fTracks = new AliL3TrackArray();
- AliL3MemHandler *tfile = new AliL3MemHandler();
+ fTracks = new AliHLTTrackArray();
+ AliHLTMemHandler *tfile = new AliHLTMemHandler();
tfile->SetBinaryInput(trackfile);
tfile->Binary2TrackArray(fTracks);
tfile->CloseBinaryInput();
delete tfile;
}
-void AliL3HoughDisplay::GenerateHits(AliL3Track *track,Float_t *x,Float_t *y,Float_t *z,Int_t &n)
+void AliHLTHoughDisplay::GenerateHits(AliHLTTrack *track,Float_t *x,Float_t *y,Float_t *z,Int_t &n)
{
//Generate hits according to the track parameters
n=0;
Float_t xyz[3];
- for(Int_t i=AliL3Transform::GetFirstRow(0); i<AliL3Transform::GetLastRow(5); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(0); i<AliHLTTransform::GetLastRow(5); i++)
{
if(track->GetCrossingPoint(i,xyz))
{
- AliL3Transform::Local2Global(xyz,0);
+ AliHLTTransform::Local2Global(xyz,0);
x[n] = xyz[0];
y[n] = xyz[1];
z[n] = xyz[2];
}
}
-TPolyMarker3D *AliL3HoughDisplay::LoadDigits()
+TPolyMarker3D *AliHLTHoughDisplay::LoadDigits()
{
//Load digits
- AliL3DigitRowData *tempPt = fDigitRowData;
+ AliHLTDigitRowData *tempPt = fDigitRowData;
if(!tempPt)
{
- cerr<<"AliL3HoughDisplay::LoadDigits : No data"<<endl;
+ cerr<<"AliHLTHoughDisplay::LoadDigits : No data"<<endl;
return 0;
}
- UInt_t nrows = AliL3Transform::GetNRows(fPatch);
+ UInt_t nrows = AliHLTTransform::GetNRows(fPatch);
Int_t count=0;
for(UInt_t i=0; i<nrows; i++)
{
count += tempPt->fNDigit;
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
tempPt = fDigitRowData;
TPolyMarker3D *pm = new TPolyMarker3D(count);
count=0;
for(UInt_t i=0; i<nrows; i++)
{
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
Int_t padrow = (Int_t)tempPt->fRow;
for(UInt_t j=0; j<tempPt->fNDigit; j++)
{
- AliL3Transform::Slice2Sector(fShowSlice,padrow,sector,row);
- AliL3Transform::Raw2Global(xyz,sector,row,(Int_t)digPt->fPad,(Int_t)digPt->fTime);
+ AliHLTTransform::Slice2Sector(fShowSlice,padrow,sector,row);
+ AliHLTTransform::Raw2Global(xyz,sector,row,(Int_t)digPt->fPad,(Int_t)digPt->fTime);
pm->SetPoint(count,xyz[0],xyz[1],xyz[2]);
count++;
}
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
cout<<"Displaying "<<count<<" digits"<<endl;
return pm;
}
-void AliL3HoughDisplay::DisplayEvent()
+void AliHLTHoughDisplay::DisplayEvent()
{
//Display the found tracks.
if(!fTracks)
{
- cerr<<"AliL3HoughDisplay::DisplayTracks() : No tracks"<<endl;
+ cerr<<"AliHLTHoughDisplay::DisplayTracks() : No tracks"<<endl;
return;
}
Float_t x[176],y[176],z[176];
for(Int_t j=0; j<ntracks; j++)
{
- AliL3Track *track = fTracks->GetCheckedTrack(j);
+ AliHLTTrack *track = fTracks->GetCheckedTrack(j);
if(!track) continue;
track->CalculateHelix();
GenerateHits(track,x,y,z,n);
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3HOUGHDISPLAY_H
+#define ALIL3HOUGHDISPLAY_H
+
+class TGeometry;
+class AliHLTTrackArray;
+class AliHLTDigitRowData;
+class TPolyMarker3D;
+class AliHLTTrack;
+
+class AliHLTHoughDisplay {
+
+ public:
+ AliHLTHoughDisplay();
+ virtual ~AliHLTHoughDisplay();
+
+ void Init(Char_t *trackfile, Char_t *gfile="$(LEVEL3)/GEO/alice.geom");
+ void DisplayEvent();
+ void ShowData(AliHLTDigitRowData *data,UInt_t size,Int_t slice,Int_t patch);
+
+ private:
+
+ TGeometry *fGeom; //!
+ AliHLTTrackArray *fTracks; //!
+ AliHLTDigitRowData *fDigitRowData; //!
+ UInt_t fNDigitRowData; //!
+ Int_t fShowSlice; //Which slice to show
+ Int_t fPatch;//Which patch to show
+
+ void GenerateHits(AliHLTTrack *track,Float_t *x,Float_t *y,Float_t *z,Int_t &n);
+
+ TPolyMarker3D *LoadDigits();
+
+ ClassDef(AliHLTHoughDisplay,1)
+};
+
+typedef AliHLTHoughDisplay AliL3HoughDisplay; // for backward comaptibility
+
+inline void AliHLTHoughDisplay::ShowData(AliHLTDigitRowData *data,UInt_t size,Int_t slice,Int_t patch)
+{
+ fShowSlice = slice;
+ fPatch = patch;
+ fDigitRowData = data;
+ fNDigitRowData = size;
+}
+
+#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#ifdef use_root
#include <TH1.h>
#include <TFile.h>
#endif
-#include "AliL3Logging.h"
-#include "AliL3HoughEval.h"
-#include "AliL3MemHandler.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughBaseTransformer.h"
-#include "AliL3DigitData.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3Transform.h"
-#include "AliL3Histogram.h"
-#include "AliL3Histogram1D.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHoughEval.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTHoughBaseTransformer.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHistogram.h"
+#include "AliHLTHistogram1D.h"
#if __GNUC__ == 3
using namespace std;
#endif
-/** /class AliL3HoughEval
+/** /class AliHLTHoughEval
//<pre>
//_____________________________________________________________
-// AliL3HoughEval
+// AliHLTHoughEval
//
// Evaluation class for tracklets produced by the Hough transform.
//
</pre>
*/
-ClassImp(AliL3HoughEval)
+ClassImp(AliHLTHoughEval)
-AliL3HoughEval::AliL3HoughEval()
+AliHLTHoughEval::AliHLTHoughEval()
{
//default ctor
fRemoveFoundTracks = kFALSE;
}
-AliL3HoughEval::~AliL3HoughEval()
+AliHLTHoughEval::~AliHLTHoughEval()
{
//dtor
fHoughTransformer = 0;
}
}
-void AliL3HoughEval::InitTransformer(AliL3HoughBaseTransformer *transformer)
+void AliHLTHoughEval::InitTransformer(AliHLTHoughBaseTransformer *transformer)
{
//Init hough transformer
fHoughTransformer = transformer;
fSlice = fHoughTransformer->GetSlice();
fPatch = fHoughTransformer->GetPatch();
- fNrows = AliL3Transform::GetLastRow(fPatch) - AliL3Transform::GetFirstRow(fPatch) + 1;
+ fNrows = AliHLTTransform::GetLastRow(fPatch) - AliHLTTransform::GetFirstRow(fPatch) + 1;
fNEtaSegments = fHoughTransformer->GetNEtaSegments();
fEtaMin = fHoughTransformer->GetEtaMin();
fEtaMax = fHoughTransformer->GetEtaMax();
GenerateLUT();
}
-void AliL3HoughEval::GenerateLUT()
+void AliHLTHoughEval::GenerateLUT()
{
//Generate a Look-up table, to limit the access to raw data
if(!fRowPointers)
- fRowPointers = new AliL3DigitRowData*[fNrows];
+ fRowPointers = new AliHLTDigitRowData*[fNrows];
- AliL3DigitRowData *tempPt = (AliL3DigitRowData*)fHoughTransformer->GetDataPointer();
+ AliHLTDigitRowData *tempPt = (AliHLTDigitRowData*)fHoughTransformer->GetDataPointer();
if(!tempPt)
- printf("\nAliL3HoughEval::GenerateLUT : Zero data pointer\n");
+ printf("\nAliHLTHoughEval::GenerateLUT : Zero data pointer\n");
- for(Int_t i=AliL3Transform::GetFirstRow(fPatch); i<=AliL3Transform::GetLastRow(fPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fPatch); i<=AliHLTTransform::GetLastRow(fPatch); i++)
{
- Int_t prow = i - AliL3Transform::GetFirstRow(fPatch);
+ Int_t prow = i - AliHLTTransform::GetFirstRow(fPatch);
fRowPointers[prow] = tempPt;
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
}
-Bool_t AliL3HoughEval::LookInsideRoad(AliL3HoughTrack *track,Int_t &nrowscrossed,Int_t *rowrange,Bool_t remove)
+Bool_t AliHLTHoughEval::LookInsideRoad(AliHLTHoughTrack *track,Int_t &nrowscrossed,Int_t *rowrange,Bool_t remove)
{
//Look at rawdata along the road specified by the track candidates.
//If track is good, return true, if not return false.
Int_t totalcharge=0;//total charge along the road
- //for(Int_t padrow = AliL3Transform::GetFirstRow(fPatch); padrow <= AliL3Transform::GetLastRow(fPatch); padrow++)
+ //for(Int_t padrow = AliHLTTransform::GetFirstRow(fPatch); padrow <= AliHLTTransform::GetLastRow(fPatch); padrow++)
for(Int_t padrow = rowrange[0]; padrow<=rowrange[1]; padrow++)
{
- Int_t prow = padrow - AliL3Transform::GetFirstRow(fPatch);
+ Int_t prow = padrow - AliHLTTransform::GetFirstRow(fPatch);
if(track->IsHelix())
{
if(!track->GetCrossingPoint(padrow,xyz))
else
{
track->GetLineCrossingPoint(padrow,xyz);
- xyz[0] += AliL3Transform::Row2X(track->GetFirstRow());
+ xyz[0] += AliHLTTransform::Row2X(track->GetFirstRow());
Float_t r = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
xyz[2] = r*track->GetTgl();
}
- AliL3Transform::Slice2Sector(fSlice,padrow,sector,row);
- AliL3Transform::Local2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,padrow,sector,row);
+ AliHLTTransform::Local2Raw(xyz,sector,row);
npixs=0;
//Get the timebins for this pad
- AliL3DigitRowData *tempPt = fRowPointers[prow];
+ AliHLTDigitRowData *tempPt = fRowPointers[prow];
if(!tempPt)
{
- printf("AliL3HoughEval::LookInsideRoad : Zero data pointer\n");
+ printf("AliHLTHoughEval::LookInsideRoad : Zero data pointer\n");
continue;
}
//Look at both sides of the pad:
for(Int_t p=(Int_t)rint(xyz[1])-fNumOfPadsToLook; p<=(Int_t)rint(xyz[1])+fNumOfPadsToLook; p++)
{
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
for(UInt_t j=0; j<tempPt->fNDigit; j++)
{
Int_t pad = digPt[j].fPad;
if(pad < p) continue;
if(pad > p) break;
UShort_t time = digPt[j].fTime;
- Double_t eta = AliL3Transform::GetEta(fSlice,padrow,pad,time);
+ Double_t eta = AliHLTTransform::GetEta(fSlice,padrow,pad,time);
Int_t pixelindex = fHoughTransformer->GetEtaIndex(eta);
if(pixelindex != track->GetEtaIndex()) continue;
totalcharge += digPt[j].fCharge;
return kFALSE;
}
-void AliL3HoughEval::FindEta(AliL3TrackArray *tracks)
+void AliHLTHoughEval::FindEta(AliHLTTrackArray *tracks)
{
//Find the corresponding eta slice hough space
Int_t sector,row;
Float_t xyz[3];
Int_t ntracks = tracks->GetNTracks();
- fEtaHistos = new AliL3Histogram1D*[ntracks];
+ fEtaHistos = new AliHLTHistogram1D*[ntracks];
Char_t hname[100];
for(Int_t i=0; i<ntracks; i++)
{
sprintf(hname,"etahist_%d",i);
- fEtaHistos[i] = new AliL3Histogram1D(hname,hname,100,0,1);
+ fEtaHistos[i] = new AliHLTHistogram1D(hname,hname,100,0,1);
}
Double_t etaslice = (fEtaMax - fEtaMin)/fNEtaSegments;
for(Int_t ntr=0; ntr<ntracks; ntr++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(ntr);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(ntr);
if(!track) continue;
- for(Int_t padrow = AliL3Transform::GetFirstRow(fPatch); padrow <= AliL3Transform::GetLastRow(fPatch); padrow++)
+ for(Int_t padrow = AliHLTTransform::GetFirstRow(fPatch); padrow <= AliHLTTransform::GetLastRow(fPatch); padrow++)
{
- Int_t prow = padrow - AliL3Transform::GetFirstRow(fPatch);
+ Int_t prow = padrow - AliHLTTransform::GetFirstRow(fPatch);
if(!track->GetCrossingPoint(padrow,xyz))
{
- printf("AliL3HoughEval::LookInsideRoad : Track does not cross line!!\n");
+ printf("AliHLTHoughEval::LookInsideRoad : Track does not cross line!!\n");
continue;
}
- AliL3Transform::Slice2Sector(fSlice,padrow,sector,row);
- AliL3Transform::Local2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,padrow,sector,row);
+ AliHLTTransform::Local2Raw(xyz,sector,row);
//Get the timebins for this pad
- AliL3DigitRowData *tempPt = fRowPointers[prow];
+ AliHLTDigitRowData *tempPt = fRowPointers[prow];
if(!tempPt)
{
- printf("AliL3HoughEval::LookInsideRoad : Zero data pointer\n");
+ printf("AliHLTHoughEval::LookInsideRoad : Zero data pointer\n");
continue;
}
//Look at both sides of the pad:
for(Int_t p=(Int_t)rint(xyz[1])-fNumOfPadsToLook; p<=(Int_t)rint(xyz[1])+fNumOfPadsToLook; p++)
{
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
for(UInt_t j=0; j<tempPt->fNDigit; j++)
{
UChar_t pad = digPt[j].fPad;
if(pad < p) continue;
if(pad > p) break;
UShort_t time = digPt[j].fTime;
- Double_t eta = AliL3Transform::GetEta(fSlice,padrow,pad,time);
+ Double_t eta = AliHLTTransform::GetEta(fSlice,padrow,pad,time);
Int_t pixelindex = (Int_t)(eta/etaslice);
if(pixelindex > track->GetEtaIndex()+1) continue;
if(pixelindex < track->GetEtaIndex()-1) break;
for(Int_t i=0; i<ntracks; i++)
{
- AliL3Histogram1D *hist = fEtaHistos[i];
+ AliHLTHistogram1D *hist = fEtaHistos[i];
Int_t maxbin = hist->GetMaximumBin();
Double_t maxvalue = hist->GetBinContent(maxbin);
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
if(hist->GetBinContent(maxbin-1)<maxvalue && hist->GetBinContent(maxbin+1)<maxvalue)
{
//delete []Â fEtaHistos;
}
-void AliL3HoughEval::DisplayEtaSlice(Int_t etaindex,AliL3Histogram *hist)
+void AliHLTHoughEval::DisplayEtaSlice(Int_t etaindex,AliHLTHistogram *hist)
{
//Display the current raw data inside the (slice,patch)
if(!hist)
{
- printf("AliL3HoughEval::DisplayEtaSlice : No input histogram!\n");
+ printf("AliHLTHoughEval::DisplayEtaSlice : No input histogram!\n");
return;
}
- for(Int_t padrow = AliL3Transform::GetFirstRow(fPatch); padrow <= AliL3Transform::GetLastRow(fPatch); padrow++)
+ for(Int_t padrow = AliHLTTransform::GetFirstRow(fPatch); padrow <= AliHLTTransform::GetLastRow(fPatch); padrow++)
{
- Int_t prow = padrow - AliL3Transform::GetFirstRow(fPatch);
+ Int_t prow = padrow - AliHLTTransform::GetFirstRow(fPatch);
- AliL3DigitRowData *tempPt = fRowPointers[prow];
+ AliHLTDigitRowData *tempPt = fRowPointers[prow];
if(!tempPt)
{
- printf("AliL3HoughEval::DisplayEtaSlice : Zero data pointer\n");
+ printf("AliHLTHoughEval::DisplayEtaSlice : Zero data pointer\n");
continue;
}
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
if((Int_t)tempPt->fRow != padrow)
{
- printf("\nAliL3HoughEval::DisplayEtaSlice : Mismatching padrows!!!\n");
+ printf("\nAliHLTHoughEval::DisplayEtaSlice : Mismatching padrows!!!\n");
return;
}
for(UInt_t j=0; j<tempPt->fNDigit; j++)
if((Int_t)charge <= fHoughTransformer->GetLowerThreshold() || (Int_t)charge >= fHoughTransformer->GetUpperThreshold()) continue;
Float_t xyz[3];
Int_t sector,row;
- AliL3Transform::Slice2Sector(fSlice,padrow,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Slice2Sector(fSlice,padrow,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
xyz[2] -= fZVertex;
- Double_t eta = AliL3Transform::GetEta(xyz);
+ Double_t eta = AliHLTTransform::GetEta(xyz);
Int_t pixelindex = fHoughTransformer->GetEtaIndex(eta);//(Int_t)(eta/etaslice);
if(pixelindex != etaindex) continue;
hist->Fill(xyz[0],xyz[1],charge);
}
#ifdef use_root
-void AliL3HoughEval::CompareMC(AliL3TrackArray */*tracks*/,Char_t */*trackfile*/,Int_t /*threshold*/)
+void AliHLTHoughEval::CompareMC(AliHLTTrackArray */*tracks*/,Char_t */*trackfile*/,Int_t /*threshold*/)
{
/*
struct GoodTrack goodtracks[15000];
}
if (!in.eof())
{
- LOG(AliL3Log::kError,"AliL3HoughEval::CompareMC","Input file")
+ LOG(AliHLTLog::kError,"AliHLTHoughEval::CompareMC","Input file")
<<"Error in file reading"<<ENDLOG;
return;
}
}
else
{
- LOG(AliL3Log::kError,"AliL3HoughEval::CompareMC","Input")
+ LOG(AliHLTLog::kError,"AliHLTHoughEval::CompareMC","Input")
<<"No input trackfile "<<trackfile<<ENDLOG;
}
Double_t etaslice = (fEtaMax - fEtaMin)/fNEtaSegments;
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3HoughTrack *tr = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *tr = (AliHLTHoughTrack*)tracks->GetCheckedTrack(i);
if(!tr) continue;
if(tr->GetWeight()<threshold) continue;
Int_t trackindex = tr->GetEtaIndex();
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3HOUGHEVAL_H
+#define ALIL3HOUGHEVAL_H
+
+#include "AliHLTRootTypes.h"
+
+class AliHLTTrackArray;
+class AliHLTHoughBaseTransformer;
+class AliHLTHoughTrack;
+class AliHLTDigitRowData;
+class AliHLTHistogram;
+class AliHLTHistogram1D;
+
+class AliHLTHoughEval {
+
+ public:
+ AliHLTHoughEval();
+ virtual ~AliHLTHoughEval();
+
+ void InitTransformer(AliHLTHoughBaseTransformer *transformer);
+ void GenerateLUT();
+ void DisplayEtaSlice(Int_t etaindex,AliHLTHistogram *hist);
+ Bool_t LookInsideRoad(AliHLTHoughTrack *track,Int_t &nrowscrossed,Int_t *rowrange,Bool_t remove=kFALSE);
+#ifdef use_root
+ void CompareMC(AliHLTTrackArray *tracks,Char_t *goodtracks="good_tracks",Int_t treshold=0);
+#endif
+ void FindEta(AliHLTTrackArray *tracks);
+
+ //Getters
+ AliHLTHistogram1D *GetEtaHisto(Int_t i) {if(!fEtaHistos) return 0; if(!fEtaHistos[i]) return 0; return fEtaHistos[i];}
+
+ //Setters:
+ void RemoveFoundTracks() {fRemoveFoundTracks = kTRUE;}
+ void SetNumOfRowsToMiss(Int_t i) {fNumOfRowsToMiss = i;}
+ void SetNumOfPadsToLook(Int_t i) {fNumOfPadsToLook = i;}
+ void SetSlice(Int_t i) {fSlice=i;}
+ void SetZVertex(Float_t zvertex) {fZVertex=zvertex;}
+
+ private:
+
+ Int_t fSlice;//Index of the slice being processed
+ Int_t fPatch;//Index of the patch being processed
+ Int_t fNrows;//Number of padrows inside the patch
+ Int_t fNEtaSegments;//Number of eta slices
+ Double_t fEtaMin;//Minimum allowed eta
+ Double_t fEtaMax;//Maximum allowed eta
+ Int_t fNumOfPadsToLook;//Padrow search window
+ Int_t fNumOfRowsToMiss;//Maximum numbers of padrow which could be missed
+ AliHLTHistogram1D **fEtaHistos; //!
+ Float_t fZVertex;//Z position of the primary vertex
+
+ //Flags
+ Bool_t fRemoveFoundTracks;//Remove the found tracks or not?
+
+ AliHLTHoughBaseTransformer *fHoughTransformer; //!
+ AliHLTDigitRowData **fRowPointers; //!
+
+ ClassDef(AliHLTHoughEval,1) //Hough transform verfication class
+
+};
+
+typedef AliHLTHoughEval AliL3HoughEval; // for backward comaptibility
+
+#endif
--- /dev/null
+// @(#) $Id$
+
+// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
+//*-- Copyright © ALICE HLT Group
+
+#include "AliHLTStandardIncludes.h"
+
+#include "AliHLTLogging.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTHoughGlobalMerger.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTransform.h"
+
+//_____________________________________________________________
+// Merging Hough tracks across slices
+
+ClassImp(AliHLTHoughGlobalMerger)
+
+AliHLTHoughGlobalMerger::AliHLTHoughGlobalMerger()
+{
+ fTracks = 0;
+}
+
+AliHLTHoughGlobalMerger::AliHLTHoughGlobalMerger(Int_t first,Int_t last)
+{
+ fNSlices = last-first+1;
+ fTracks = new AliHLTTrackArray*[fNSlices];
+ for(Int_t i=0; i<fNSlices; i++)
+ fTracks[i] = new AliHLTTrackArray("AliHLTHoughTrack");
+
+
+}
+AliHLTHoughGlobalMerger::~AliHLTHoughGlobalMerger()
+{
+ if(fTracks)
+ {
+ for(Int_t i=0; i<fNSlices; i++)
+ {
+ if(!fTracks[i])
+ continue;
+ delete fTracks;
+ }
+ delete [] fTracks;
+ }
+
+}
+
+void AliHLTHoughGlobalMerger::FillTracks(AliHLTTrackArray *tracks,Int_t slice)
+{
+
+ fTracks[slice]->AddTracks(tracks,kTRUE,slice);
+
+}
+
+void AliHLTHoughGlobalMerger::Merge()
+{
+ for(Int_t slice=0; slice<fNSlices; slice++)
+ {
+ if(slice+1 == fNSlices) continue;
+ AliHLTTrackArray *t1 = fTracks[slice];
+ //AliHLTTrackArray *t2 = fTracks[slice+1];
+ Float_t angle = AliHLTTransform::Pi()/18;
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
+
+ for(Int_t i=0; i<t1->GetNTracks(); i++)
+ {
+
+ }
+ }
+
+}
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3_HOUGHGLOBALMERGER_H
+#define ALIL3_HOUGHGLOBALMERGER_H
+
+#include "AliHLTMerger.h"
+
+class AliHLTTrackArray;
+class AliHLTTrack;
+
+class AliHLTHoughGlobalMerger {
+
+ private:
+ AliHLTTrackArray **fTracks; //!
+ Int_t fNSlices;
+
+ public:
+ AliHLTHoughGlobalMerger();
+ AliHLTHoughGlobalMerger(Int_t first,Int_t last);
+ virtual ~AliHLTHoughGlobalMerger();
+
+ void FillTracks(AliHLTTrackArray *tracks,Int_t i);
+ void Merge();
+
+ ClassDef(AliHLTHoughGlobalMerger,1)
+};
+
+typedef AliHLTHoughGlobalMerger AliL3HoughGlobalMerger; // for backward compatibility
+
+#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3HoughIntMerger.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3Transform.h"
-#include "AliL3TrackArray.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHoughIntMerger.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrackArray.h"
#if __GNUC__ >= 3
using namespace std;
// Hough Inter merger
// Merging of multiple reconstructed tracks
-ClassImp(AliL3HoughIntMerger)
+ClassImp(AliHLTHoughIntMerger)
-AliL3HoughIntMerger::AliL3HoughIntMerger()
+AliHLTHoughIntMerger::AliHLTHoughIntMerger()
{
//Default constructor
- InitMerger(1,"AliL3HoughTrack");
+ InitMerger(1,"AliHLTHoughTrack");
fRowMax = fRowMin = 0;
SetParameters(0.001,0.05,10);
Is2Global(kFALSE);
}
-AliL3HoughIntMerger::~AliL3HoughIntMerger()
+AliHLTHoughIntMerger::~AliHLTHoughIntMerger()
{
//Destructor
}
-void AliL3HoughIntMerger::SetParameters(Double_t maxkappa, Double_t maxphi0, Double_t maxtgl)
+void AliHLTHoughIntMerger::SetParameters(Double_t maxkappa, Double_t maxphi0, Double_t maxtgl)
{
//Set merger params
fMaxKappa = maxkappa;
fMaxTgl = maxtgl;
}
-void AliL3HoughIntMerger::FillTracks(AliL3TrackArray *tracks)
+void AliHLTHoughIntMerger::FillTracks(AliHLTTrackArray *tracks)
{
//Fills tracks into merger
if(tracks->GetNTracks()==0)
- LOG(AliL3Log::kWarning,"AliL3HoughIntMerger::FillTracks","Track Array")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughIntMerger::FillTracks","Track Array")
<<"Adding empty track array"<<ENDLOG;
GetInTracks(0)->AddTracks(tracks,kFALSE);//Copy tracks
printf("Filling %d tracks to intermerger\n",tracks->GetNTracks());
}
-Bool_t AliL3HoughIntMerger::IsTrack(AliL3Track *innertrack,AliL3Track *outertrack)
+Bool_t AliHLTHoughIntMerger::IsTrack(AliHLTTrack *innertrack,AliHLTTrack *outertrack)
{
//Check if the tracks can be merged, called by the track merger
- AliL3HoughTrack *tr1 = (AliL3HoughTrack*)innertrack;
- AliL3HoughTrack *tr2 = (AliL3HoughTrack*)outertrack;
+ AliHLTHoughTrack *tr1 = (AliHLTHoughTrack*)innertrack;
+ AliHLTHoughTrack *tr2 = (AliHLTHoughTrack*)outertrack;
if(abs(tr1->GetEtaIndex() - tr2->GetEtaIndex()) > 1) return kFALSE;
if(tr1->GetCharge()!=tr2->GetCharge()) return kFALSE;
return kTRUE;//Tracks could be merged
}
-AliL3Track *AliL3HoughIntMerger::MultiMerge(AliL3TrackArray *mergedtrack,AliL3Track **tracks, Int_t /*ntrack*/)
+AliHLTTrack *AliHLTHoughIntMerger::MultiMerge(AliHLTTrackArray *mergedtrack,AliHLTTrack **tracks, Int_t /*ntrack*/)
{
//Called by the track merger
- AliL3HoughTrack *newtrack = (AliL3HoughTrack*)mergedtrack->NextTrack();
- AliL3HoughTrack **trs = (AliL3HoughTrack**)tracks;
+ AliHLTHoughTrack *newtrack = (AliHLTHoughTrack*)mergedtrack->NextTrack();
+ AliHLTHoughTrack **trs = (AliHLTHoughTrack**)tracks;
- AliL3HoughTrack *tpt=trs[0];//this is the "best" track
- //AliL3HoughTrack *tpl=trs[ntrack-1];
+ AliHLTHoughTrack *tpt=trs[0];//this is the "best" track
+ //AliHLTHoughTrack *tpl=trs[ntrack-1];
newtrack->Set(tpt);
- return (AliL3Track*)newtrack;
+ return (AliHLTTrack*)newtrack;
}
-void AliL3HoughIntMerger::MMerge()
+void AliHLTHoughIntMerger::MMerge()
{
//Track merging??
GetInTracks(0)->QSort();
GetOutTracks()->AddTracks(GetInTracks(0));
}
-Int_t AliL3HoughIntMerger::Merge()
+Int_t AliHLTHoughIntMerger::Merge()
{
//Track merging??
- AliL3TrackArray * tracks = GetInTracks(0);
+ AliHLTTrackArray * tracks = GetInTracks(0);
const Int_t kNIn =tracks->GetNTracks();
- AliL3Track *tr[2];
+ AliHLTTrack *tr[2];
for(Int_t out=0;out<kNIn;out++)
{
- AliL3HoughTrack *outertrack=(AliL3HoughTrack*)tracks->GetCheckedTrack(out);
+ AliHLTHoughTrack *outertrack=(AliHLTHoughTrack*)tracks->GetCheckedTrack(out);
if(!outertrack) continue;
for(Int_t in=0;in<kNIn;in++)
{
if(in==out) continue;
- AliL3HoughTrack *innertrack=(AliL3HoughTrack*)tracks->GetCheckedTrack(in);
+ AliHLTHoughTrack *innertrack=(AliHLTHoughTrack*)tracks->GetCheckedTrack(in);
if(!innertrack) continue;
if(IsTrack(innertrack,outertrack))
{
}
}
Int_t nmerged = tracks->GetNTracks()-kNIn;
- LOG(AliL3Log::kInformational,"AliL3HoughIntMerger::Merge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTHoughIntMerger::Merge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
//add in tracks
//GetOutTracks()->AddTracks(GetInTracks(0));
return nmerged;
}
-void AliL3HoughIntMerger::Print(AliL3Track **tracks)
+void AliHLTHoughIntMerger::Print(AliHLTTrack **tracks)
{
//Prints merger results
- AliL3HoughTrack *tr1 = (AliL3HoughTrack*)tracks[0];
- AliL3HoughTrack *tr2 = (AliL3HoughTrack*)tracks[1];
+ AliHLTHoughTrack *tr1 = (AliHLTHoughTrack*)tracks[0];
+ AliHLTHoughTrack *tr2 = (AliHLTHoughTrack*)tracks[1];
Double_t kappadiff = fabs(tr1->GetKappa()-tr2->GetKappa());
Double_t phi0diff = fabs(tr1->GetPhi0()-tr2->GetPhi0());
cout << "---------Difference in intermerged tracks---------"<<endl;
}
-void AliL3HoughIntMerger::SortTracks(AliL3Track **trs, Int_t ntrack) const
+void AliHLTHoughIntMerger::SortTracks(AliHLTTrack **trs, Int_t ntrack) const
{
//Sort the tracks according to their weight
- AliL3HoughTrack **tracks = (AliL3HoughTrack**)trs;
- AliL3HoughTrack **tmp = new AliL3HoughTrack*[ntrack];
- for(Int_t i=0;i<ntrack;i++) tmp[i] = (AliL3HoughTrack*)tracks[i];
+ AliHLTHoughTrack **tracks = (AliHLTHoughTrack**)trs;
+ AliHLTHoughTrack **tmp = new AliHLTHoughTrack*[ntrack];
+ for(Int_t i=0;i<ntrack;i++) tmp[i] = (AliHLTHoughTrack*)tracks[i];
Int_t *t = new Int_t[ntrack];
for(Int_t i=0;i<ntrack;i++) t[i]=-1;
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3HOUGHINTMERGER_H
+#define ALIL3HOUGHINTMERGER_H
+
+#include "AliHLTMerger.h"
+
+class AliHLTHoughTrack;
+class AliHLTTrack;
+class AliHLTTrackArray;
+
+class AliHLTHoughIntMerger : public AliHLTMerger {
+
+ public:
+ AliHLTHoughIntMerger();
+ virtual ~AliHLTHoughIntMerger();
+
+
+ AliHLTTrack *MultiMerge(AliHLTTrackArray *mergedtrack,AliHLTTrack **tracks, Int_t ntrack);
+ Bool_t IsTrack(AliHLTTrack *innertrack,AliHLTTrack *outertrack);
+ void FillTracks(AliHLTTrackArray *tracks);
+ void Init(Int_t *row,Int_t p){fRowMin=row[0];fRowMax=row[1];fPatch=p;}
+ Int_t Merge();
+ void MMerge(); //Loop over tracks from different subsectors
+ void SetParameters(Double_t maxkappa=0.001, Double_t maxpsi=0.05, Double_t maxtgl=0.1);
+ void SortTracks(AliHLTTrack **tracks, Int_t ntrack) const;
+ void Print(AliHLTTrack **tracks);
+
+ private:
+ Int_t fPatch;//Index of the current patch
+ Int_t fRowMin;//First padrow inside the patch
+ Int_t fRowMax;//Last padrow inside the patch
+ Double_t fMaxKappa;//Maximum track curvature
+ Double_t fMaxPhi0;//Maximum phi0??
+ Double_t fMaxTgl;//??
+
+ ClassDef(AliHLTHoughIntMerger,1)
+};
+
+typedef AliHLTHoughIntMerger AliL3HoughIntMerger; // for backward comaptibility
+
+#endif
// Origin: Cvetan Cheshkov, CERN, Cvetan.Cheshkov@cern.ch
//-------------------------------------------------------------------------
-#include "AliL3HoughKalmanTrack.h"
+#include "AliHLTHoughKalmanTrack.h"
-#include "AliL3StandardIncludes.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3HoughBaseTransformer.h"
-#include "AliL3HoughTransformerRow.h"
-#include "AliL3Histogram.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTHoughBaseTransformer.h"
+#include "AliHLTHoughTransformerRow.h"
+#include "AliHLTHistogram.h"
-Int_t CalcExternalParams(const AliL3HoughTrack& t, Double_t deltax, Double_t deltay, Double_t deltaeta, const Double_t zvertex, const Double_t xhit, Double_t xx[5]);
+Int_t CalcExternalParams(const AliHLTHoughTrack& t, Double_t deltax, Double_t deltay, Double_t deltaeta, const Double_t zvertex, const Double_t xhit, Double_t xx[5]);
-ClassImp(AliL3HoughKalmanTrack)
+ClassImp(AliHLTHoughKalmanTrack)
//____________________________________________________________________________
-AliL3HoughKalmanTrack::AliL3HoughKalmanTrack(const AliL3HoughTrack& t) throw (const Char_t *)
+AliHLTHoughKalmanTrack::AliHLTHoughKalmanTrack(const AliHLTHoughTrack& t) throw (const Char_t *)
: AliTPCtrack()
{
- // The method constructs an AliL3HoughKalmanTrack object
+ // The method constructs an AliHLTHoughKalmanTrack object
// from an HLT Hough track
SetChi2(0.);
Double_t deltax = t.GetPterr();
Double_t deltay = t.GetPsierr();
Double_t deltaeta = t.GetTglerr();
- if(CalcExternalParams(t,0,0,0,zvertex,xhit,par)==0) throw "AliL3HoughKalmanTrack: conversion failed !\n";
+ if(CalcExternalParams(t,0,0,0,zvertex,xhit,par)==0) throw "AliHLTHoughKalmanTrack: conversion failed !\n";
Double_t cnv=1./(GetBz()*kB2C);
par[4]*=cnv;;
//and covariance matrix
//For the moment estimate the covariance matrix numerically
Double_t xx1[5];
- if(CalcExternalParams(t,deltax,0,0,zvertex,xhit,xx1)==0) throw "AliL3HoughKalmanTrack: conversion failed !\n";
+ if(CalcExternalParams(t,deltax,0,0,zvertex,xhit,xx1)==0) throw "AliHLTHoughKalmanTrack: conversion failed !\n";
Double_t xx2[5];
- if(CalcExternalParams(t,0,deltay,0,zvertex,xhit,xx2)==0) throw "AliL3HoughKalmanTrack: conversion failed !\n";
+ if(CalcExternalParams(t,0,deltay,0,zvertex,xhit,xx2)==0) throw "AliHLTHoughKalmanTrack: conversion failed !\n";
Double_t xx3[5];
- if(CalcExternalParams(t,0,0,deltaeta,zvertex,xhit,xx3)==0) throw "AliL3HoughKalmanTrack: conversion failed !\n";
+ if(CalcExternalParams(t,0,0,deltaeta,zvertex,xhit,xx3)==0) throw "AliHLTHoughKalmanTrack: conversion failed !\n";
Double_t dx1[5],dx2[5],dx3[5];
for(Int_t i=0;i<5;i++) {
}
//____________________________________________________________________________
-Int_t CalcExternalParams(const AliL3HoughTrack& t, Double_t deltax, Double_t deltay, Double_t deltaeta, const Double_t zvertex, const Double_t xhit, Double_t xx[5])
+Int_t CalcExternalParams(const AliHLTHoughTrack& t, Double_t deltax, Double_t deltay, Double_t deltaeta, const Double_t zvertex, const Double_t xhit, Double_t xx[5])
{
// Translate the parameters of the Hough tracks into
// AliKalmanTrack paramters
//First get the emiision angle and track curvature
Double_t binx = t.GetBinX()+deltax;
Double_t biny = t.GetBinY()+deltay;
- Double_t psi = atan((binx-biny)/(AliL3HoughTransformerRow::GetBeta1()-AliL3HoughTransformerRow::GetBeta2()));
- Double_t kappa = 2.0*(binx*cos(psi)-AliL3HoughTransformerRow::GetBeta1()*sin(psi));
+ Double_t psi = atan((binx-biny)/(AliHLTHoughTransformerRow::GetBeta1()-AliHLTHoughTransformerRow::GetBeta2()));
+ Double_t kappa = 2.0*(binx*cos(psi)-AliHLTHoughTransformerRow::GetBeta1()*sin(psi));
Double_t radius = 1./kappa;
//Local y coordinate
/*****************************************************************************
* October 11, 2004 *
* The class inherits from the off-line AliTPCtrack class. *
- * It is used to transform AliL3HoughTrack into AliTPCTrack, which is *
+ * It is used to transform AliHLTHoughTrack into AliTPCTrack, which is *
* then stored as AliESDtrack object in the ESD *
*****************************************************************************/
#include <AliTPCtrack.h>
-class AliL3HoughTrack;
-class AliL3HoughBaseTransformer;
+class AliHLTHoughTrack;
+class AliHLTHoughBaseTransformer;
-class AliL3HoughKalmanTrack : public AliTPCtrack {
+class AliHLTHoughKalmanTrack : public AliTPCtrack {
public:
- AliL3HoughKalmanTrack(const AliL3HoughTrack& t) throw (const Char_t *);
+ AliHLTHoughKalmanTrack(const AliHLTHoughTrack& t) throw (const Char_t *);
- ClassDef(AliL3HoughKalmanTrack,1) //HLT TPC Hough track
+ ClassDef(AliHLTHoughKalmanTrack,1) //HLT TPC Hough track
};
+typedef AliHLTHoughKalmanTrack AliL3HoughKalmanTrack; // for backward compatibility
+
#endif
--- /dev/null
+// @(#) $Id$
+
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+
+#pragma link C++ typedef AliL3Hough;
+#pragma link C++ typedef AliL3HoughBaseTransformer;
+#pragma link C++ typedef AliL3HoughTransformer;
+#pragma link C++ typedef AliL3HoughTransformerLUT;
+#pragma link C++ typedef AliL3HoughTransformerVhdl;
+#pragma link C++ typedef AliL3HoughTransformerNew;
+#pragma link C++ typedef AliL3HoughTransformerRow;
+#ifndef macosx
+#pragma link C++ typedef AliL3HoughTrack;
+#pragma link C++ typedef AliL3HoughKalmanTrack;
+#endif
+#pragma link C++ typedef AliL3HoughMaxFinder;
+#pragma link C++ typedef AliL3HoughEval;
+#pragma link C++ typedef AliL3Histogram;
+#pragma link C++ typedef AliL3Histogram1D;
+#pragma link C++ typedef AliL3HoughMerger;
+#pragma link C++ typedef AliL3HoughIntMerger;
+#pragma link C++ typedef AliL3HoughGlobalMerger;
+#pragma link C++ typedef AliL3HoughDisplay;
+#pragma link C++ typedef AliL3HoughClusterTransformer;
+#pragma link C++ typedef AliL3HistogramAdaptive;
+#ifndef macosx
+#pragma link C++ typedef AliL3HoughTest;
+#endif
+
+#ifdef use_aliroot
+#pragma link C++ typedef AliL3HoughTransformerGlobal;
+#endif
+
+#pragma link C++ class AliHLTHough;
+#pragma link C++ class AliHLTHoughBaseTransformer;
+#pragma link C++ class AliHLTHoughTransformer;
+#pragma link C++ class AliHLTHoughTransformerLUT;
+#pragma link C++ class AliHLTHoughTransformerVhdl;
+#pragma link C++ class AliHLTHoughTransformerNew;
+#pragma link C++ class AliHLTHoughTransformerRow;
+#ifndef macosx
+#pragma link C++ class AliHLTHoughTrack;
+#pragma link C++ class AliHLTHoughKalmanTrack;
+#endif
+#pragma link C++ class AliHLTHoughMaxFinder;
+#pragma link C++ class AliHLTHoughEval;
+#pragma link C++ class AliHLTHistogram;
+#pragma link C++ class AliHLTHistogram1D;
+#pragma link C++ class AliHLTHoughMerger;
+#pragma link C++ class AliHLTHoughIntMerger;
+#pragma link C++ class AliHLTHoughGlobalMerger;
+#pragma link C++ class AliHLTHoughDisplay;
+#pragma link C++ class AliHLTHoughClusterTransformer;
+#pragma link C++ class AliHLTHistogramAdaptive;
+#ifndef macosx
+#pragma link C++ class AliHLTHoughTest;
+#endif
+
+#ifdef use_aliroot
+#pragma link C++ class AliHLTHoughTransformerGlobal;
+#endif
+
+#endif
//*-- Copyright © ALICE HLT Group
#include <strings.h>
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#ifndef no_root
#include <TNtuple.h>
#include <TFile.h>
#endif
-#include "AliL3Logging.h"
-#include "AliL3HoughMaxFinder.h"
-#include "AliL3Histogram.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3Transform.h"
-#include "AliL3HoughTransformerRow.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHoughMaxFinder.h"
+#include "AliHLTHistogram.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHoughTransformerRow.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3HoughMaxFinder
+/** \class AliHLTHoughMaxFinder
<pre>
//_____________________________________________________________
-// AliL3HoughMaxFinder
+// AliHLTHoughMaxFinder
//
// Maximum finder
//
</pre>
*/
-ClassImp(AliL3HoughMaxFinder)
+ClassImp(AliHLTHoughMaxFinder)
-AliL3HoughMaxFinder::AliL3HoughMaxFinder()
+AliHLTHoughMaxFinder::AliHLTHoughMaxFinder()
{
//Default constructor
fThreshold = 0;
#endif
}
-AliL3HoughMaxFinder::AliL3HoughMaxFinder(Char_t *histotype,Int_t nmax,AliL3Histogram *hist)
+AliHLTHoughMaxFinder::AliHLTHoughMaxFinder(Char_t *histotype,Int_t nmax,AliHLTHistogram *hist)
{
//Constructor
- //fTracks = new AliL3TrackArray("AliL3HoughTrack");
+ //fTracks = new AliHLTTrackArray("AliHLTHoughTrack");
if(strcmp(histotype,"KappaPhi")==0) fHistoType='c';
if(strcmp(histotype,"DPsi")==0) fHistoType='l';
fThreshold=0;
}
-AliL3HoughMaxFinder::~AliL3HoughMaxFinder()
+AliHLTHoughMaxFinder::~AliHLTHoughMaxFinder()
{
//Destructor
if(fXPeaks)
#endif
}
-void AliL3HoughMaxFinder::Reset()
+void AliHLTHoughMaxFinder::Reset()
{
// Method to reinit the Peak Finder
for(Int_t i=0; i<fNMax; i++)
fN2PeaksPrevEtaSlice=0;
}
-void AliL3HoughMaxFinder::CreateNtuppel()
+void AliHLTHoughMaxFinder::CreateNtuppel()
{
// Fill a NTuple with the peak parameters
#ifndef no_root
#endif
}
-void AliL3HoughMaxFinder::WriteNtuppel(Char_t *filename)
+void AliHLTHoughMaxFinder::WriteNtuppel(Char_t *filename)
{
// Write the NTuple with the peak parameters
#ifndef no_root
TFile *file = TFile::Open(filename,"RECREATE");
if(!file)
{
- cerr<<"AliL3HoughMaxFinder::WriteNtuppel : Error opening file "<<filename<<endl;
+ cerr<<"AliHLTHoughMaxFinder::WriteNtuppel : Error opening file "<<filename<<endl;
return;
}
fNtuppel->Write();
#endif
}
-void AliL3HoughMaxFinder::FindAbsMaxima()
+void AliHLTHoughMaxFinder::FindAbsMaxima()
{
// Simple Peak Finder in the Hough space
if(!fCurrentHisto)
{
- cerr<<"AliL3HoughMaxFinder::FindAbsMaxima : No histogram"<<endl;
+ cerr<<"AliHLTHoughMaxFinder::FindAbsMaxima : No histogram"<<endl;
return;
}
- AliL3Histogram *hist = fCurrentHisto;
+ AliHLTHistogram *hist = fCurrentHisto;
if(hist->GetNEntries() == 0)
return;
if(fNPeaks > fNMax)
{
- cerr<<"AliL3HoughMaxFinder::FindAbsMaxima : Array out of range : "<<fNPeaks<<endl;
+ cerr<<"AliHLTHoughMaxFinder::FindAbsMaxima : Array out of range : "<<fNPeaks<<endl;
return;
}
#endif
}
-void AliL3HoughMaxFinder::FindBigMaxima()
+void AliHLTHoughMaxFinder::FindBigMaxima()
{
// Another Peak finder
- AliL3Histogram *hist = fCurrentHisto;
+ AliHLTHistogram *hist = fCurrentHisto;
if(hist->GetNEntries() == 0)
return;
//Found maxima
if(fNPeaks > fNMax)
{
- cerr<<"AliL3HoughMaxFinder::FindBigMaxima : Array out of range "<<fNPeaks<<endl;
+ cerr<<"AliHLTHoughMaxFinder::FindBigMaxima : Array out of range "<<fNPeaks<<endl;
return;
}
}
}
-void AliL3HoughMaxFinder::FindMaxima(Int_t threshold)
+void AliHLTHoughMaxFinder::FindMaxima(Int_t threshold)
{
//Locate all the maxima in input histogram.
//Maxima is defined as bins with more entries than the
if((Int_t)value[4] <= threshold) continue;//central bin below threshold
if(fNPeaks >= fNMax)
{
- cout<<"AliL3HoughMaxFinder::FindMaxima : Array out of range "<<fNPeaks<<endl;
+ cout<<"AliHLTHoughMaxFinder::FindMaxima : Array out of range "<<fNPeaks<<endl;
return;
}
}
-struct AliL3Window
+struct AliHLTWindow
{
Int_t fStart; // Start
Int_t fSum; // Sum
};
-void AliL3HoughMaxFinder::FindAdaptedPeaks(Int_t kappawindow,Float_t cutratio)
+void AliHLTHoughMaxFinder::FindAdaptedPeaks(Int_t kappawindow,Float_t cutratio)
{
//Peak finder which looks for peaks with a certain shape.
//The first step involves a pre-peak finder, which looks for peaks
//a few checks is performed to avoid the clear fake peaks (asymmetry check etc.)
- AliL3Histogram *hist = fCurrentHisto;
+ AliHLTHistogram *hist = fCurrentHisto;
if(!hist)
{
- cerr<<"AliL3HoughMaxFinder : No histogram!"<<endl;
+ cerr<<"AliHLTHoughMaxFinder : No histogram!"<<endl;
return;
}
//Start by looking for pre-peaks:
- AliL3Window **localmaxima = new AliL3Window*[hist->GetNbinsY()];
+ AliHLTWindow **localmaxima = new AliHLTWindow*[hist->GetNbinsY()];
Short_t *nmaxs = new Short_t[hist->GetNbinsY()];
Int_t n,lastsum,sum;
Bool_t sumwasrising;
for(Int_t ybin=ymin; ybin<=ymax; ybin++)
{
- localmaxima[ybin-ymin] = new AliL3Window[hist->GetNbinsX()];
+ localmaxima[ybin-ymin] = new AliHLTWindow[hist->GetNbinsX()];
nmaxs[ybin-ymin] = 0;
sumwasrising=0;
lastsum=0;
delete [] maxs;
}
-struct AliL3PreYPeak
+struct AliHLTPreYPeak
{
Int_t fStartPosition; // Start position in X
Int_t fEndPosition; // End position in X
Int_t fRightValue; // Neighbour values
};
-void AliL3HoughMaxFinder::FindAdaptedRowPeaks(Int_t kappawindow,Int_t xsize,Int_t ysize)
+void AliHLTHoughMaxFinder::FindAdaptedRowPeaks(Int_t kappawindow,Int_t xsize,Int_t ysize)
{
- // Peak finder which is working over the Hough Space provided by the AliL3HoughTransformerRow class
- AliL3Histogram *hist = fCurrentHisto;
+ // Peak finder which is working over the Hough Space provided by the AliHLTHoughTransformerRow class
+ AliHLTHistogram *hist = fCurrentHisto;
if(!hist)
{
- cerr<<"AliL3HoughMaxFinder : No histogram!"<<endl;
+ cerr<<"AliHLTHoughMaxFinder : No histogram!"<<endl;
return;
}
//Start by looking for pre-peaks:
- AliL3PreYPeak **localmaxima = new AliL3PreYPeak*[hist->GetNbinsY()];
+ AliHLTPreYPeak **localmaxima = new AliHLTPreYPeak*[hist->GetNbinsY()];
Short_t *nmaxs = new Short_t[hist->GetNbinsY()];
memset(nmaxs,0,hist->GetNbinsY()*sizeof(Short_t));
Int_t lastvalue=0,value=0;
for(Int_t ybin=fNextRow[ymin]; ybin<=ymax; ybin = fNextRow[ybin+1])
{
- localmaxima[ybin-ymin] = new AliL3PreYPeak[nxbins-2];
+ localmaxima[ybin-ymin] = new AliHLTPreYPeak[nxbins-2];
lastvalue = 0;
Bool_t found = 0;
for(Int_t xbin=xmin; xbin<=xmax; xbin++)
}
}
- AliL3Pre2DPeak maxima[500];
+ AliHLTPre2DPeak maxima[500];
Int_t nmaxima = 0;
for(Int_t ybin=ymax; ybin >= ymin; ybin--)
delete [] nmaxs;
}
-void AliL3HoughMaxFinder::FindPeak1(Int_t ywindow,Int_t xbinsides)
+void AliHLTHoughMaxFinder::FindPeak1(Int_t ywindow,Int_t xbinsides)
{
//Testing mutliple peakfinding.
//The algorithm searches the histogram for prepreaks by looking in windows
if(!fCurrentHisto)
{
- printf("AliL3HoughMaxFinder::FindPeak1 : No input histogram\n");
+ printf("AliHLTHoughMaxFinder::FindPeak1 : No input histogram\n");
return;
}
if(fCurrentHisto->GetNEntries()==0)
Int_t ymax = fCurrentHisto->GetLastYbin();
Int_t nbinsx = fCurrentHisto->GetNbinsX()+1;
- AliL3AxisWindow **windowPt = new AliL3AxisWindow*[nbinsx];
- AliL3AxisWindow **anotherPt = new AliL3AxisWindow*[nbinsx];
+ AliHLTAxisWindow **windowPt = new AliHLTAxisWindow*[nbinsx];
+ AliHLTAxisWindow **anotherPt = new AliHLTAxisWindow*[nbinsx];
for(Int_t i=0; i<nbinsx; i++)
{
- windowPt[i] = new AliL3AxisWindow;
+ windowPt[i] = new AliHLTAxisWindow;
#if defined(__DECCXX)
- bzero((char *)windowPt[i],sizeof(AliL3AxisWindow));
+ bzero((char *)windowPt[i],sizeof(AliHLTAxisWindow));
#else
- bzero((void*)windowPt[i],sizeof(AliL3AxisWindow));
+ bzero((void*)windowPt[i],sizeof(AliHLTAxisWindow));
#endif
anotherPt[i] = windowPt[i];
}
fNPeaks++;
if(fNPeaks==fNMax)
{
- cerr<<"AliL3HoughMaxFinder::FindPeak1 : Peak array out of range!!!"<<endl;
+ cerr<<"AliHLTHoughMaxFinder::FindPeak1 : Peak array out of range!!!"<<endl;
break;
}
}
delete [] anotherPt;
}
-void AliL3HoughMaxFinder::SortPeaks(struct AliL3AxisWindow **a,Int_t first,Int_t last)
+void AliHLTHoughMaxFinder::SortPeaks(struct AliHLTAxisWindow **a,Int_t first,Int_t last)
{
//General sorting routine
//Sort according to PeakCompare()
- static struct AliL3AxisWindow *tmp;
+ static struct AliHLTAxisWindow *tmp;
static int i; // "static" to save stack space
int j;
}
-Int_t AliL3HoughMaxFinder::PeakCompare(struct AliL3AxisWindow *a,struct AliL3AxisWindow *b) const
+Int_t AliHLTHoughMaxFinder::PeakCompare(struct AliHLTAxisWindow *a,struct AliHLTAxisWindow *b) const
{
// Peak comparison based on peaks weight
if(a->fWeight < b->fWeight) return 1;
return 0;
}
-void AliL3HoughMaxFinder::FindPeak(Int_t t1,Double_t t2,Int_t t3)
+void AliHLTHoughMaxFinder::FindPeak(Int_t t1,Double_t t2,Int_t t3)
{
//Attempt of a more sophisticated peak finder.
//Finds the best peak in the histogram, and returns the corresponding
if(!fCurrentHisto)
{
- printf("AliL3HoughMaxFinder::FindPeak : No histogram!!\n");
+ printf("AliHLTHoughMaxFinder::FindPeak : No histogram!!\n");
return;
}
- AliL3Histogram *hist = fCurrentHisto;
+ AliHLTHistogram *hist = fCurrentHisto;
if(hist->GetNEntries()==0)
return;
Int_t xu = xl + 1;
if(hist->GetBinCenterX(xl) > xpeak || hist->GetBinCenterX(xu) <= xpeak)
- printf("\nAliL3HoughMaxFinder::FindPeak : Wrong xrange %f %f %f\n\n",hist->GetBinCenterX(xl),xpeak,hist->GetBinCenterX(xu));
+ printf("\nAliHLTHoughMaxFinder::FindPeak : Wrong xrange %f %f %f\n\n",hist->GetBinCenterX(xl),xpeak,hist->GetBinCenterX(xu));
//printf("\nxlow %f xup %f\n",hist->GetBinCenterX(xl),hist->GetBinCenterX(xu));
//bin = hist->FindBin(xpeak,ypeak);
//Int_t weight = (Int_t)hist->GetBinContent(bin);
- //AliL3HoughTrack *track = new AliL3HoughTrack();
+ //AliHLTHoughTrack *track = new AliHLTHoughTrack();
//track->SetTrackParameters(xpeak,ypeak,weight);
fXPeaks[fNPeaks]=xpeak;
fYPeaks[fNPeaks]=ypeak;
//return track;
}
-Float_t AliL3HoughMaxFinder::GetXPeakSize(Int_t i) const
+Float_t AliHLTHoughMaxFinder::GetXPeakSize(Int_t i) const
{
// Get X size of a peak
if(i<0 || i>fNMax)
{
- STDCERR<<"AliL3HoughMaxFinder::GetXPeakSize : Invalid index "<<i<<STDENDL;
+ STDCERR<<"AliHLTHoughMaxFinder::GetXPeakSize : Invalid index "<<i<<STDENDL;
return 0;
}
Float_t binwidth = fCurrentHisto->GetBinWidthX();
return binwidth*(fENDXPeaks[i]-fSTARTXPeaks[i]+1);
}
-Float_t AliL3HoughMaxFinder::GetYPeakSize(Int_t i) const
+Float_t AliHLTHoughMaxFinder::GetYPeakSize(Int_t i) const
{
// Get Y size of a peak
if(i<0 || i>fNMax)
{
- STDCERR<<"AliL3HoughMaxFinder::GetYPeak : Invalid index "<<i<<STDENDL;
+ STDCERR<<"AliHLTHoughMaxFinder::GetYPeak : Invalid index "<<i<<STDENDL;
return 0;
}
Float_t binwidth = fCurrentHisto->GetBinWidthY();
return binwidth*(fENDYPeaks[i]-fSTARTYPeaks[i]+1);
}
-Bool_t AliL3HoughMaxFinder::MergeRowPeaks(AliL3Pre2DPeak *maxima1, AliL3Pre2DPeak *maxima2, Float_t distance)
+Bool_t AliHLTHoughMaxFinder::MergeRowPeaks(AliHLTPre2DPeak *maxima1, AliHLTPre2DPeak *maxima2, Float_t distance)
{
// Check the distance between tracks corresponding to given Hough space peaks and if the
// distance is smaller than some threshold value marks the smaller peak as fake
- AliL3Histogram *hist = fCurrentHisto;
+ AliHLTHistogram *hist = fCurrentHisto;
Int_t nxbins = hist->GetNbinsX()+2;
Int_t xtrack1=0,xtrack2=0,ytrack1=0,ytrack2=0;
else
lastrow = lastrow1;
- AliL3HoughTrack track1;
+ AliHLTHoughTrack track1;
Float_t x1 = hist->GetPreciseBinCenterX(xtrack1);
Float_t y1 = hist->GetPreciseBinCenterY(ytrack1);
- Float_t psi1 = atan((x1-y1)/(AliL3HoughTransformerRow::GetBeta1()-AliL3HoughTransformerRow::GetBeta2()));
- Float_t kappa1 = 2.0*(x1*cos(psi1)-AliL3HoughTransformerRow::GetBeta1()*sin(psi1));
+ Float_t psi1 = atan((x1-y1)/(AliHLTHoughTransformerRow::GetBeta1()-AliHLTHoughTransformerRow::GetBeta2()));
+ Float_t kappa1 = 2.0*(x1*cos(psi1)-AliHLTHoughTransformerRow::GetBeta1()*sin(psi1));
track1.SetTrackParameters(kappa1,psi1,1);
Float_t firsthit1[3];
if(!track1.GetCrossingPoint(firstrow,firsthit1)) return kFALSE;
Float_t lasthit1[3];
if(!track1.GetCrossingPoint(lastrow,lasthit1)) return kFALSE;
- AliL3HoughTrack track2;
+ AliHLTHoughTrack track2;
Float_t x2 = hist->GetPreciseBinCenterX(xtrack2);
Float_t y2 = hist->GetPreciseBinCenterY(ytrack2);
- Float_t psi2 = atan((x2-y2)/(AliL3HoughTransformerRow::GetBeta1()-AliL3HoughTransformerRow::GetBeta2()));
- Float_t kappa2 = 2.0*(x2*cos(psi2)-AliL3HoughTransformerRow::GetBeta1()*sin(psi2));
+ Float_t psi2 = atan((x2-y2)/(AliHLTHoughTransformerRow::GetBeta1()-AliHLTHoughTransformerRow::GetBeta2()));
+ Float_t kappa2 = 2.0*(x2*cos(psi2)-AliHLTHoughTransformerRow::GetBeta1()*sin(psi2));
track2.SetTrackParameters(kappa2,psi2,1);
Float_t firsthit2[3];
if(!track2.GetCrossingPoint(firstrow,firsthit2)) return kFALSE;
Float_t lasthit2[3];
if(!track2.GetCrossingPoint(lastrow,lasthit2)) return kFALSE;
- Float_t padpitchlow = AliL3Transform::GetPadPitchWidth(AliL3Transform::GetPatch(firstrow));
- Float_t padpitchup = AliL3Transform::GetPadPitchWidth(AliL3Transform::GetPatch(lastrow));
+ Float_t padpitchlow = AliHLTTransform::GetPadPitchWidth(AliHLTTransform::GetPatch(firstrow));
+ Float_t padpitchup = AliHLTTransform::GetPadPitchWidth(AliHLTTransform::GetPatch(lastrow));
// check the distance between tracks at the edges
// cout<<"Check "<<firsthit1[1]<<" "<<firsthit2[1]<<" "<<padpitchlow<<" "<<lasthit1[1]<<" "<<lasthit2[1]<<" "<<padpitchup<<" "<<xtrack1<<" "<<ytrack1<<" "<<xtrack2<<" "<<ytrack2<<endl;
if((fabs(firsthit1[1]-firsthit2[1])/padpitchlow + fabs(lasthit1[1]-lasthit2[1])/padpitchup) < distance) {
#ifndef ALIL3HOUGHMAXFINDER_H
#define ALIL3HOUGHMAXFINDER_H
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
-class AliL3Histogram;
-class AliL3TrackArray;
-class AliL3HoughTrack;
+class AliHLTHistogram;
+class AliHLTTrackArray;
+class AliHLTHoughTrack;
class TNtuple;
-struct AliL3AxisWindow
+struct AliHLTAxisWindow
{
Int_t fYmin; // min Y
Int_t fYmax; // max Y
Int_t fWeight; // weight
};
-struct AliL3Pre2DPeak
+struct AliHLTPre2DPeak
{
Float_t fX; // X coordinate of the preak
Float_t fY; // Y coordinate of the preak
Float_t fWeight; // Weight assigned to the peak
};
-class AliL3HoughMaxFinder {
+class AliHLTHoughMaxFinder {
public:
- AliL3HoughMaxFinder();
- AliL3HoughMaxFinder(Char_t *histotype,Int_t nmax,AliL3Histogram *hist=0);
- virtual ~AliL3HoughMaxFinder();
+ AliHLTHoughMaxFinder();
+ AliHLTHoughMaxFinder(Char_t *histotype,Int_t nmax,AliHLTHistogram *hist=0);
+ virtual ~AliHLTHoughMaxFinder();
void Reset();
void CreateNtuppel();
//More sophisticated peak finders:
void FindPeak(Int_t t1,Double_t t2,Int_t t3);
void FindPeak1(Int_t ywindow=2,Int_t xbinsides=1);
- void SortPeaks(struct AliL3AxisWindow **a,Int_t first,Int_t last);
- Int_t PeakCompare(struct AliL3AxisWindow *a,struct AliL3AxisWindow *b) const;
+ void SortPeaks(struct AliHLTAxisWindow **a,Int_t first,Int_t last);
+ Int_t PeakCompare(struct AliHLTAxisWindow *a,struct AliHLTAxisWindow *b) const;
//Setters:
void SetGradient(Float_t x,Float_t y) {fGradX=x; fGradY=y;}
void SetThreshold(Int_t f) {fThreshold = f;}
- void SetHistogram(AliL3Histogram *hist) {fCurrentHisto = hist;}
+ void SetHistogram(AliHLTHistogram *hist) {fCurrentHisto = hist;}
void SetTrackLUTs(UChar_t *tracknrows, UChar_t *trackfirstrow, UChar_t *tracklastrow, UChar_t *nextrow) {fTrackNRows = tracknrows; fTrackFirstRow = trackfirstrow; fTrackLastRow = tracklastrow; fNextRow = nextrow;}
void SetEtaSlice(Int_t etaslice) {fCurrentEtaSlice = etaslice;}
Int_t GetEndEta(Int_t i) const;
Int_t GetEntries() const {return fNPeaks;}
- //Method for merging of peaks produced by AliL3HoughTransfromerRow
- Bool_t MergeRowPeaks(AliL3Pre2DPeak *maxima1, AliL3Pre2DPeak *maxima2,Float_t distance);
+ //Method for merging of peaks produced by AliHLTHoughTransfromerRow
+ Bool_t MergeRowPeaks(AliHLTPre2DPeak *maxima1, AliHLTPre2DPeak *maxima2,Float_t distance);
private:
Int_t fThreshold; // Threshold for Peak Finder
Int_t fCurrentEtaSlice; // Current eta slice being processed
- AliL3Histogram *fCurrentHisto; //!
+ AliHLTHistogram *fCurrentHisto; //!
UChar_t *fTrackNRows; //!
UChar_t *fTrackFirstRow; //!
TNtuple *fNtuppel; //!
#endif
- ClassDef(AliL3HoughMaxFinder,1) //Maximum finder class
+ ClassDef(AliHLTHoughMaxFinder,1) //Maximum finder class
};
-inline Float_t AliL3HoughMaxFinder::GetXPeak(Int_t i) const
+typedef AliHLTHoughMaxFinder AliL3HoughMaxFinder; // for backward compatibility
+
+inline Float_t AliHLTHoughMaxFinder::GetXPeak(Int_t i) const
{
if(i<0 || i>fNMax)
{
- STDCERR<<"AliL3HoughMaxFinder::GetXPeak : Invalid index "<<i<<STDENDL;
+ STDCERR<<"AliHLTHoughMaxFinder::GetXPeak : Invalid index "<<i<<STDENDL;
return 0;
}
return fXPeaks[i];
}
-inline Float_t AliL3HoughMaxFinder::GetYPeak(Int_t i) const
+inline Float_t AliHLTHoughMaxFinder::GetYPeak(Int_t i) const
{
if(i<0 || i>fNMax)
{
- STDCERR<<"AliL3HoughMaxFinder::GetYPeak : Invalid index "<<i<<STDENDL;
+ STDCERR<<"AliHLTHoughMaxFinder::GetYPeak : Invalid index "<<i<<STDENDL;
return 0;
}
return fYPeaks[i];
}
-inline Int_t AliL3HoughMaxFinder::GetWeight(Int_t i) const
+inline Int_t AliHLTHoughMaxFinder::GetWeight(Int_t i) const
{
if(i<0 || i>fNMax)
{
- STDCERR<<"AliL3HoughMaxFinder::GetWeight : Invalid index "<<i<<STDENDL;
+ STDCERR<<"AliHLTHoughMaxFinder::GetWeight : Invalid index "<<i<<STDENDL;
return 0;
}
return fWeight[i];
}
-inline Int_t AliL3HoughMaxFinder::GetStartEta(Int_t i) const
+inline Int_t AliHLTHoughMaxFinder::GetStartEta(Int_t i) const
{
if(i<0 || i>fNMax)
{
- STDCERR<<"AliL3HoughMaxFinder::GetStartEta : Invalid index "<<i<<STDENDL;
+ STDCERR<<"AliHLTHoughMaxFinder::GetStartEta : Invalid index "<<i<<STDENDL;
return 0;
}
return fSTARTETAPeaks[i];
}
-inline Int_t AliL3HoughMaxFinder::GetEndEta(Int_t i) const
+inline Int_t AliHLTHoughMaxFinder::GetEndEta(Int_t i) const
{
if(i<0 || i>fNMax)
{
- STDCERR<<"AliL3HoughMaxFinder::GetStartEta : Invalid index "<<i<<STDENDL;
+ STDCERR<<"AliHLTHoughMaxFinder::GetStartEta : Invalid index "<<i<<STDENDL;
return 0;
}
return fENDETAPeaks[i];
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3HoughMerger.h"
-#include "AliL3HoughTransformer.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTHoughMerger.h"
+#include "AliHLTHoughTransformer.h"
#if __GNUC__ >= 3
using namespace std;
#endif
//_____________________________________________________________
-// AliL3HoughMerger
+// AliHLTHoughMerger
//
// Patch merging class for Hough tracklets
-ClassImp(AliL3HoughMerger)
+ClassImp(AliHLTHoughMerger)
-AliL3HoughMerger::AliL3HoughMerger()
+AliHLTHoughMerger::AliHLTHoughMerger()
{
//Default constructor
}
-AliL3HoughMerger::AliL3HoughMerger(Int_t nsubsectors)
+AliHLTHoughMerger::AliHLTHoughMerger(Int_t nsubsectors)
{
//Constructor
- InitMerger(nsubsectors,"AliL3HoughTrack");
+ InitMerger(nsubsectors,"AliHLTHoughTrack");
Is2Global(kFALSE);
SetParameters(0.001,0.1,0.05);
}
-AliL3HoughMerger::~AliL3HoughMerger()
+AliHLTHoughMerger::~AliHLTHoughMerger()
{
//dtor
}
-void AliL3HoughMerger::FillTracks(AliL3TrackArray *tracks,Int_t patch)
+void AliHLTHoughMerger::FillTracks(AliHLTTrackArray *tracks,Int_t patch)
{
//Fills tracks into merger
if(tracks->GetNTracks()==0)
- LOG(AliL3Log::kWarning,"AliL3HoughMerger::FillTracks","Track Array")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughMerger::FillTracks","Track Array")
<<"Adding empty track array"<<ENDLOG;
GetInTracks(patch)->AddTracks(tracks,kFALSE);//Copy tracks
printf("Filling %d tracks to merger\n",tracks->GetNTracks());
}
-void AliL3HoughMerger::SetParameters(Double_t maxkappa,Double_t maxpsi,Double_t maxphi0)
+void AliHLTHoughMerger::SetParameters(Double_t maxkappa,Double_t maxpsi,Double_t maxphi0)
{
//Set merger params
fMaxKappa = maxkappa;
fMaxPhi0 = maxphi0;
}
-Bool_t AliL3HoughMerger::IsTrack(AliL3Track *innertrack,AliL3Track *outertrack)
+Bool_t AliHLTHoughMerger::IsTrack(AliHLTTrack *innertrack,AliHLTTrack *outertrack)
{
//Check if the tracks can be merged, called by the track merger
- AliL3HoughTrack *tr1 = (AliL3HoughTrack*)innertrack;
- AliL3HoughTrack *tr2 = (AliL3HoughTrack*)outertrack;
+ AliHLTHoughTrack *tr1 = (AliHLTHoughTrack*)innertrack;
+ AliHLTHoughTrack *tr2 = (AliHLTHoughTrack*)outertrack;
if( (!tr1->IsPoint()) || (!tr2->IsPoint()) ) return kFALSE;
if(abs(tr1->GetEtaIndex() - tr2->GetEtaIndex()) > 1) return kFALSE;
return kTRUE;//Tracks could be merged
}
-void AliL3HoughMerger::AddTrack(AliL3TrackArray *mergedtrack,AliL3Track *track)
+void AliHLTHoughMerger::AddTrack(AliHLTTrackArray *mergedtrack,AliHLTTrack *track)
{
//Adds track to an already merged one
- AliL3Track *t[1];
+ AliHLTTrack *t[1];
t[0] = track;
MultiMerge(mergedtrack,t,1);
}
-AliL3Track *AliL3HoughMerger::MultiMerge(AliL3TrackArray *mergedtrack,AliL3Track **tracks, Int_t ntrack)
+AliHLTTrack *AliHLTHoughMerger::MultiMerge(AliHLTTrackArray *mergedtrack,AliHLTTrack **tracks, Int_t ntrack)
{
//Called by the track merger
- AliL3HoughTrack *newtrack = (AliL3HoughTrack*)mergedtrack->NextTrack();
- AliL3HoughTrack **trs = (AliL3HoughTrack**)tracks;
+ AliHLTHoughTrack *newtrack = (AliHLTHoughTrack*)mergedtrack->NextTrack();
+ AliHLTHoughTrack **trs = (AliHLTHoughTrack**)tracks;
Int_t weight=0;
//Sum up the total weight:
for(Int_t i=ntrack-1; i>=0; i--)
weight += trs[i]->GetWeight();
- AliL3HoughTrack *tpt=trs[0];//This is the innermost track
- AliL3HoughTrack *tpl=trs[ntrack-1];
+ AliHLTHoughTrack *tpt=trs[0];//This is the innermost track
+ AliHLTHoughTrack *tpl=trs[ntrack-1];
newtrack->SetTrackParameters(tpt->GetKappa(),tpt->GetPhi0(),weight);
newtrack->SetEtaIndex(tpt->GetEtaIndex());
newtrack->SetEta(tpt->GetEta());
newtrack->SetCharge(tpt->GetCharge());
newtrack->SetRowRange(tpt->GetFirstRow(),tpl->GetLastRow());
- return (AliL3Track*)newtrack;
+ return (AliHLTTrack*)newtrack;
}
-void AliL3HoughMerger::MergePatches(Bool_t slow)
+void AliHLTHoughMerger::MergePatches(Bool_t slow)
{
//Merge tracks from across the patches.
fSlow = slow;
- AliL3TrackArray *tracks;
- AliL3HoughTrack *track;
+ AliHLTTrackArray *tracks;
+ AliHLTHoughTrack *track;
for(Int_t i=0; i<GetNIn(); i++)
{
tracks = GetInTracks(i);
for(Int_t j=0; j<tracks->GetNTracks(); j++)
{
- track = (AliL3HoughTrack*)tracks->GetCheckedTrack(j);
+ track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(j);
if(!track) continue;
track->UpdateToFirstRow();
}
}
-void AliL3HoughMerger::Merge()
+void AliHLTHoughMerger::Merge()
{
//Merging of tracks
- Double_t edge0 = AliL3Transform::Pi()/18;
+ Double_t edge0 = AliHLTTransform::Pi()/18;
//Double_t edge1 = 2*PI - edge0;
- AliL3TrackArray *ttt = GetOutTracks();
+ AliHLTTrackArray *ttt = GetOutTracks();
Int_t subsec = GetNIn() - 2;
for(Int_t i=subsec;i>=0;i--){
- AliL3TrackArray *tout = GetOutTracks();
+ AliHLTTrackArray *tout = GetOutTracks();
if(i==subsec) tout = GetInTracks(subsec+1);
- AliL3TrackArray *tin = GetInTracks(i);
- Double_t xval = AliL3Transform::Row2X(AliL3Transform::GetLastRow(i));
- //Double_t xmax = AliL3Transform::Row2X(AliL3Transform::GetLastRow(i+1));
+ AliHLTTrackArray *tin = GetInTracks(i);
+ Double_t xval = AliHLTTransform::Row2X(AliHLTTransform::GetLastRow(i));
+ //Double_t xmax = AliHLTTransform::Row2X(AliHLTTransform::GetLastRow(i+1));
Double_t ymax = xval*tan(edge0);
for(Int_t out=0;out<tout->GetNTracks();out++){
- AliL3Track *outtrack=tout->GetCheckedTrack(out);
+ AliHLTTrack *outtrack=tout->GetCheckedTrack(out);
if(!outtrack) continue;
//outtrack->CalculateHelix();
outtrack->CalculatePoint(xval);
}
// tout->Compress();
for(Int_t in=0;in<tin->GetNTracks();in++){
- AliL3Track *intrack=(AliL3Track*)tin->GetTrack(in);
+ AliHLTTrack *intrack=(AliHLTTrack*)tin->GetTrack(in);
//intrack->CalculateHelix();
intrack->CalculatePoint(xval);
}
/*
//Add the tracks that cross the sector boundary:
for(Int_t in=0;in<tin->GetNTracks();in++){
- AliL3Track *intrack=(AliL3Track*)tin->GetCheckedTrack(in);
+ AliHLTTrack *intrack=(AliHLTTrack*)tin->GetCheckedTrack(in);
if(!intrack) continue;
if(intrack->CalculateEdgePoint(edge0)){
if(intrack->GetPointX()<xmax ){
}
*/
} // end subsector loop
- LOG(AliL3Log::kInformational,"AliL3HoughMerger::Merge","Result")
- <<AliL3Log::kDec<<"Total Merged Tracks: "<<GetOutTracks()->GetNPresent()
+ LOG(AliHLTLog::kInformational,"AliHLTHoughMerger::Merge","Result")
+ <<AliHLTLog::kDec<<"Total Merged Tracks: "<<GetOutTracks()->GetNPresent()
<<ENDLOG;
}
-Int_t AliL3HoughMerger::Merge(AliL3TrackArray* mergedtrack,AliL3TrackArray *tracksin,AliL3TrackArray *tracksout)
+Int_t AliHLTHoughMerger::Merge(AliHLTTrackArray* mergedtrack,AliHLTTrackArray *tracksin,AliHLTTrackArray *tracksout)
{
//Merging of tracks
- AliL3Track *tracks[2];
+ AliHLTTrack *tracks[2];
const Int_t kNOut=tracksout->GetNTracks();
const Int_t kNIn =tracksin->GetNTracks();
const Int_t kNMerged =mergedtrack->GetNTracks();
for(Int_t out =0;out<kNOut;out++)
ismatchedout[out] = kFALSE;
for(Int_t out =0;out<kNOut;out++){
- AliL3Track *outertrack=(AliL3Track*)tracksout->GetCheckedTrack(out);
+ AliHLTTrack *outertrack=(AliHLTTrack*)tracksout->GetCheckedTrack(out);
if(!outertrack) continue;
for(Int_t in =0;in<kNIn;in++){
if(ismatchedin[in]) continue;
- AliL3Track *innertrack=(AliL3Track*)tracksin->GetCheckedTrack(in);
+ AliHLTTrack *innertrack=(AliHLTTrack*)tracksin->GetCheckedTrack(in);
if(!innertrack) continue;
if(outertrack==innertrack) continue;
}
Int_t nmerged = mergedtrack->GetNTracks()-kNMerged;
- LOG(AliL3Log::kInformational,"AliL3HoughMerger::Merge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTHoughMerger::Merge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
delete[] ismatchedin;
delete[] ismatchedout;
return nmerged;
}
-void AliL3HoughMerger::SlowMerge(AliL3TrackArray *mergedtrack,AliL3TrackArray *tracksin,AliL3TrackArray *tracksout,Double_t xval)
+void AliHLTHoughMerger::SlowMerge(AliHLTTrackArray *mergedtrack,AliHLTTrackArray *tracksin,AliHLTTrackArray *tracksout,Double_t xval)
{
//Slow merging of tracks??
void *ntuple=GetNtuple();
const Int_t kNOut=tracksout->GetNTracks();
const Int_t kNIn =tracksin->GetNTracks();
const Int_t kNMerged =mergedtrack->GetNTracks();
- AliL3Track *tracks[2];
+ AliHLTTrack *tracks[2];
Bool_t merge = kTRUE;
while(merge){
Int_t inmin=-1,outmin=-1;
Double_t min=10;
for(Int_t out=0;out<kNOut;out++){
- AliL3Track *outertrack=tracksout->GetCheckedTrack(out);
+ AliHLTTrack *outertrack=tracksout->GetCheckedTrack(out);
if(!outertrack) continue;
for(Int_t in=0;in<kNIn;in++){
- AliL3Track *innertrack=tracksin->GetCheckedTrack(in);
+ AliHLTTrack *innertrack=tracksin->GetCheckedTrack(in);
if(!innertrack) continue;
Double_t diff = TrackDiff(innertrack,outertrack);
if(diff>=0&&diff<min){
}
}
if(inmin>=0&&outmin>=0){
- AliL3Track *outertrack=tracksout->GetTrack(outmin);
- AliL3Track *innertrack=tracksin->GetTrack(inmin);
+ AliHLTTrack *outertrack=tracksout->GetTrack(outmin);
+ AliHLTTrack *innertrack=tracksin->GetTrack(inmin);
tracks[0]=innertrack;
tracks[1]=outertrack;
SortTracks(tracks,2);
}
else merge = kFALSE;
}
- LOG(AliL3Log::kInformational,"AliL3HoughMerger::SlowMerge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "
+ LOG(AliHLTLog::kInformational,"AliHLTHoughMerger::SlowMerge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "
<<mergedtrack->GetNTracks()-kNMerged<<ENDLOG;
char name[256] = "ntuple_t.root";
for(Int_t i=0;i<GetNIn();i++)
WriteNtuple(name,ntuple);
}
-void AliL3HoughMerger::Print(AliL3Track **tracks)
+void AliHLTHoughMerger::Print(AliHLTTrack **tracks)
{
//Print merging results
- AliL3HoughTrack *tr1 = (AliL3HoughTrack*)tracks[0];
- AliL3HoughTrack *tr2 = (AliL3HoughTrack*)tracks[1];
+ AliHLTHoughTrack *tr1 = (AliHLTHoughTrack*)tracks[0];
+ AliHLTHoughTrack *tr2 = (AliHLTHoughTrack*)tracks[1];
Double_t kappadiff = fabs(tr1->GetKappa()-tr2->GetKappa());
Double_t phi0diff = fabs(tr1->GetPhi0()-tr2->GetPhi0());
cout << "---------Difference in merged tracks---------"<<endl;
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3HOUGHMERGER_H
+#define ALIL3HOUGHMERGER_H
+
+#include "AliHLTRootTypes.h"
+#include "AliHLTMerger.h"
+
+class AliHLTTrackArray;
+class AliHLTTrack;
+
+class AliHLTHoughMerger : public AliHLTMerger {
+
+ public:
+ AliHLTHoughMerger();
+ AliHLTHoughMerger(Int_t nsubsectors);
+ virtual ~AliHLTHoughMerger();
+
+ virtual Bool_t IsTrack(AliHLTTrack *innertrack,AliHLTTrack *outertrack);
+ virtual AliHLTTrack *MultiMerge(AliHLTTrackArray *mergedtrack,AliHLTTrack **tracks, Int_t ntrack);
+ virtual void AddTrack(AliHLTTrackArray *mergedtrack,AliHLTTrack *track);
+ void FillTracks(AliHLTTrackArray *tracks,Int_t patch);
+
+ void MergePatches(Bool_t slow=kTRUE);
+ void MergeEtaSlices(Int_t /*patch*/) {};
+ void MergeTracks(AliHLTTrackArray */*intracks*/,Int_t /*i*/,Int_t /*j*/) {};
+ void Print(AliHLTTrack **tracks);
+ void SetParameters(Double_t maxkappa=0.001, Double_t maxpsi=0.05,Double_t maxphi0=0.1);
+
+ private:
+ Double_t fMaxY;//maximum Y
+ Double_t fMaxZ;//maximum Z
+ Double_t fMaxKappa;//maximum track curvature
+ Double_t fMaxPsi;//maximum track emission angle
+ Double_t fMaxTgl;//??
+ Double_t fMaxPhi0;//??
+ Bool_t fSlow;//??
+
+ void Merge();
+ Int_t Merge(AliHLTTrackArray* mergedtrack,AliHLTTrackArray *tracksin,AliHLTTrackArray *tracksout);
+ void SlowMerge(AliHLTTrackArray *mergedtrack,AliHLTTrackArray *tracksin,AliHLTTrackArray *tracksout,Double_t xval);
+
+ ClassDef(AliHLTHoughMerger,1) //Patch merger for Hough tracklets
+
+};
+
+typedef AliHLTHoughMerger AliL3HoughMerger; // for backward compatibility
+
+#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-#include "AliL3HoughTest.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3Transform.h"
-#include "AliL3Histogram.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughTrack.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTHoughTest.h"
+#include "AliHLTModelTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHistogram.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTHoughTrack.h"
#include <TRandom.h>
#include <TMath.h>
#endif
//_____________________________________________________________
-// AliL3HoughTest
+// AliHLTHoughTest
-ClassImp(AliL3HoughTest)
+ClassImp(AliHLTHoughTest)
-AliL3HoughTest::AliL3HoughTest()
+AliHLTHoughTest::AliHLTHoughTest()
{
//ctor
fData=0;
}
-AliL3HoughTest::~AliL3HoughTest()
+AliHLTHoughTest::~AliHLTHoughTest()
{
//dtor
if(fData)
delete [] fData;
}
-Bool_t AliL3HoughTest::GenerateTrackData(Double_t pt,Double_t psi,Double_t tgl,Int_t sign,Int_t patch,Int_t minhits)
+Bool_t AliHLTHoughTest::GenerateTrackData(Double_t pt,Double_t psi,Double_t tgl,Int_t sign,Int_t patch,Int_t minhits)
{
//Generate digits according to given track parameters?
fCurrentPatch=patch;
if(fData)
delete fData;
- fData = new AliL3SimData[AliL3Transform::GetNRows(patch)];
- memset(fData,0,AliL3Transform::GetNRows(patch)*sizeof(AliL3SimData));
+ fData = new AliHLTSimData[AliHLTTransform::GetNRows(patch)];
+ memset(fData,0,AliHLTTransform::GetNRows(patch)*sizeof(AliHLTSimData));
- AliL3ModelTrack *track = new AliL3ModelTrack();
+ AliHLTModelTrack *track = new AliHLTModelTrack();
track->Init(0,patch);
track->SetPt(pt);
track->SetPsi(psi);
track->CalculateHelix();
Int_t temp[200];
- // Int_t temp2[AliL3Transform::GetNTimeBins()];
- Int_t * temp2 = new Int_t[AliL3Transform::GetNTimeBins()];
+ // Int_t temp2[AliHLTTransform::GetNTimeBins()];
+ Int_t * temp2 = new Int_t[AliHLTTransform::GetNTimeBins()];
Int_t entries=100;
Int_t clustercharge=100;
Int_t hitcounter=0;
- for(Int_t i=AliL3Transform::GetFirstRow(patch); i<=AliL3Transform::GetLastRow(patch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(patch); i<=AliHLTTransform::GetLastRow(patch); i++)
{
Float_t xyz[3];
if(!track->GetCrossingPoint(i,xyz))
continue;
- Int_t rowindex = i - AliL3Transform::GetFirstRow(patch);
+ Int_t rowindex = i - AliHLTTransform::GetFirstRow(patch);
Int_t sector,row;
- AliL3Transform::Slice2Sector(0,i,sector,row);
- AliL3Transform::Local2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Local2Raw(xyz,sector,row);
- if(xyz[1] < 0 || xyz[1] >= AliL3Transform::GetNPads(i) || xyz[2] < 0 || xyz[2] >= AliL3Transform::GetNTimeBins())
+ if(xyz[1] < 0 || xyz[1] >= AliHLTTransform::GetNPads(i) || xyz[2] < 0 || xyz[2] >= AliHLTTransform::GetNTimeBins())
continue;
hitcounter++;
track->SetPadHit(i,xyz[1]);
track->CalculateClusterWidths(i);
memset(temp,0,200*sizeof(Int_t));
- memset(temp2,0,AliL3Transform::GetNTimeBins()*sizeof(Int_t));
+ memset(temp2,0,AliHLTTransform::GetNTimeBins()*sizeof(Int_t));
Double_t xysigma = sqrt(track->GetParSigmaY2(i));
Double_t zsigma = sqrt(track->GetParSigmaZ2(i));
{
Int_t pad = TMath::Nint(gRandom->Gaus(xyz[1],xysigma));
Int_t time = TMath::Nint(gRandom->Gaus(xyz[2],zsigma));
- if(pad < 0 || pad >= AliL3Transform::GetNPads(i) || time < 0 || time >= AliL3Transform::GetNTimeBins())
+ if(pad < 0 || pad >= AliHLTTransform::GetNPads(i) || time < 0 || time >= AliHLTTransform::GetNTimeBins())
continue;
temp[pad]++;
temp2[time]++;
if(index < 0 || index >= 10)
{
- cerr<<"AliL3HoughTest::GenerateTrackData : Wrong index "<<index<<endl;
+ cerr<<"AliHLTHoughTest::GenerateTrackData : Wrong index "<<index<<endl;
exit(5);
}
npads++;
Int_t seqcharge = clustercharge*temp[j]/entries;
Int_t ntimes=0;
- for(Int_t k=0; k<AliL3Transform::GetNTimeBins(); k++)
+ for(Int_t k=0; k<AliHLTTransform::GetNTimeBins(); k++)
{
if(temp2[k]==0) continue;
Int_t tindex = k - mintime;
if(tindex < 0 || tindex >= 10)
{
- cerr<<"AliL3HoughTest::GenerateTrackData : Wrong timeindex "<<tindex<<" "<<k<<" "<<mintime<<endl;
+ cerr<<"AliHLTHoughTest::GenerateTrackData : Wrong timeindex "<<tindex<<" "<<k<<" "<<mintime<<endl;
exit(5);
}
Int_t charge = seqcharge*temp2[k]/entries;
return kTRUE;
}
-void AliL3HoughTest::Transform2Circle(AliL3Histogram *hist)
+void AliHLTHoughTest::Transform2Circle(AliHLTHistogram *hist)
{
//Hough trasnform
if(!fData)
{
- cerr<<"AliL3HoughTest::Transform : No data"<<endl;
+ cerr<<"AliHLTHoughTest::Transform : No data"<<endl;
return;
}
Float_t r,phi,phi0,kappa,xyz[3];
Int_t pad,time,charge,sector,row;
- for(Int_t i=AliL3Transform::GetFirstRow(fCurrentPatch); i<=AliL3Transform::GetLastRow(fCurrentPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fCurrentPatch); i<=AliHLTTransform::GetLastRow(fCurrentPatch); i++)
{
- Int_t rowindex = i - AliL3Transform::GetFirstRow(fCurrentPatch);
- AliL3Transform::Slice2Sector(0,i,sector,row);
+ Int_t rowindex = i - AliHLTTransform::GetFirstRow(fCurrentPatch);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
for(Int_t j=0; j<fData[rowindex].fNPads; j++)
{
pad = j + fData[rowindex].fMinpad;
time = k + fData[rowindex].fMintime;
charge = fData[rowindex].fPads[j][k];
if(charge == 0) continue;
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
r = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
- phi = AliL3Transform::GetPhi(xyz);
+ phi = AliHLTTransform::GetPhi(xyz);
for(Int_t k=hist->GetFirstYbin(); k<=hist->GetLastYbin(); k++)
{
}
}
-void AliL3HoughTest::Transform2CircleC(AliL3Histogram *hist)
+void AliHLTHoughTest::Transform2CircleC(AliHLTHistogram *hist)
{
//Hough transform
if(!fData)
{
- cerr<<"AliL3HoughTest::TransformC : No data"<<endl;
+ cerr<<"AliHLTHoughTest::TransformC : No data"<<endl;
return;
}
Int_t pad1,pad2,time1,time2,charge1,charge2,sector,row;
Float_t r1,r2,phi1,phi2,phi0,kappa,hit[3],hit2[3];
- for(Int_t i=AliL3Transform::GetFirstRow(fCurrentPatch); i<=AliL3Transform::GetLastRow(fCurrentPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fCurrentPatch); i<=AliHLTTransform::GetLastRow(fCurrentPatch); i++)
{
- Int_t rowindex1 = i - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex1 = i - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d1=0; d1<fData[rowindex1].fNPads; d1++)
{
pad1 = d1 + fData[rowindex1].fMinpad;
time1 = j + fData[rowindex1].fMintime;
charge1 = fData[rowindex1].fPads[d1][j];
if(charge1==0) continue;
- AliL3Transform::Slice2Sector(0,i,sector,row);
- AliL3Transform::Raw2Local(hit,sector,row,pad1,time1);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Raw2Local(hit,sector,row,pad1,time1);
r1 = sqrt(hit[0]*hit[0]+hit[1]*hit[1]);
phi1 = atan2(hit[1],hit[0]);
- for(Int_t j=i+1; j<=AliL3Transform::GetLastRow(fCurrentPatch); j++)
+ for(Int_t j=i+1; j<=AliHLTTransform::GetLastRow(fCurrentPatch); j++)
{
- Int_t rowindex2 = j - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex2 = j - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d2=0; d2<fData[rowindex2].fNPads; d2++)
{
pad2 = d2 + fData[rowindex2].fMinpad;
time2 = k + fData[rowindex2].fMintime;
charge2 = fData[rowindex2].fPads[d2][k];
if(charge2==0) continue;
- AliL3Transform::Slice2Sector(0,j,sector,row);
- AliL3Transform::Raw2Local(hit2,sector,row,pad2,time2);
+ AliHLTTransform::Slice2Sector(0,j,sector,row);
+ AliHLTTransform::Raw2Local(hit2,sector,row,pad2,time2);
r2 = sqrt(hit2[0]*hit2[0]+hit2[1]*hit2[1]);
phi2 = atan2(hit2[1],hit2[0]);
phi0 = atan( (r2*sin(phi1) - r1*sin(phi2)) / (r2*cos(phi1) - r1*cos(phi2)) );
}
}
-void AliL3HoughTest::Transform2CircleF(AliL3Histogram *hist)
+void AliHLTHoughTest::Transform2CircleF(AliHLTHistogram *hist)
{
//Fix one point in the middle of the tpc
if(!fData)
{
- cerr<<"AliL3HoughTest::TransformF : No data"<<endl;
+ cerr<<"AliHLTHoughTest::TransformF : No data"<<endl;
return;
}
Int_t pad1,pad2,time1,time2,charge1,charge2,sector,row;
Float_t r1,r2,phi1,phi2,phi0,kappa,hit[3],hit2[3];
- Int_t rowindex1 = 80 - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex1 = 80 - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d1=1; d1<fData[rowindex1].fNPads; d1++)
{
pad1 = d1 + fData[rowindex1].fMinpad;
- AliL3Transform::Slice2Sector(0,80,sector,row);
- AliL3Transform::Raw2Local(hit,sector,row,pad1,0);
+ AliHLTTransform::Slice2Sector(0,80,sector,row);
+ AliHLTTransform::Raw2Local(hit,sector,row,pad1,0);
r1 = sqrt(hit[0]*hit[0]+hit[1]*hit[1]);
phi1 = atan2(hit[1],hit[0]);
charge1 = fData[rowindex1].fPads[d1][j];
if(charge1==0) continue;
- for(Int_t j=0; j<=AliL3Transform::GetLastRow(fCurrentPatch); j++)
+ for(Int_t j=0; j<=AliHLTTransform::GetLastRow(fCurrentPatch); j++)
{
if(j==80) continue;
- Int_t rowindex2 = j - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex2 = j - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d2=0; d2<fData[rowindex2].fNPads; d2++)
{
pad2 = d2 + fData[rowindex2].fMinpad;
time2 = k + fData[rowindex2].fMintime;
charge2 = fData[rowindex2].fPads[d2][k];
if(charge2==0) continue;
- AliL3Transform::Slice2Sector(0,j,sector,row);
- AliL3Transform::Raw2Local(hit2,sector,row,pad2,time2);
+ AliHLTTransform::Slice2Sector(0,j,sector,row);
+ AliHLTTransform::Raw2Local(hit2,sector,row,pad2,time2);
r2 = sqrt(hit2[0]*hit2[0]+hit2[1]*hit2[1]);
phi2 = atan2(hit2[1],hit2[0]);
phi0 = atan( (r2*sin(phi1) - r1*sin(phi2)) / (r2*cos(phi1) - r1*cos(phi2)) );
return;
}
-void AliL3HoughTest::Transform2Line(AliL3Histogram *hist,Int_t *rowrange)
+void AliHLTHoughTest::Transform2Line(AliHLTHistogram *hist,Int_t *rowrange)
{
//Hough transform
if(!fData)
{
- cerr<<"AliL3HoughTest::Transform2Line : No data"<<endl;
+ cerr<<"AliHLTHoughTest::Transform2Line : No data"<<endl;
return;
}
Int_t pad,time,charge,sector,row;
Float_t hit[3],theta,rho;
- for(Int_t i=AliL3Transform::GetFirstRow(fCurrentPatch); i<=AliL3Transform::GetLastRow(fCurrentPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fCurrentPatch); i<=AliHLTTransform::GetLastRow(fCurrentPatch); i++)
{
if(i<rowrange[0])
continue;
if(i>rowrange[1])
break;
- Int_t rowindex = i - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex = i - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d=0; d<fData[rowindex].fNPads; d++)
{
pad = d + fData[rowindex].fMinpad;
time = j + fData[rowindex].fMintime;
charge = fData[rowindex].fPads[d][j];
if(charge==0) continue;
- AliL3Transform::Slice2Sector(0,i,sector,row);
- AliL3Transform::Raw2Local(hit,sector,row,pad,time);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Raw2Local(hit,sector,row,pad,time);
- hit[0] = hit[0] - AliL3Transform::Row2X(rowrange[0]);
+ hit[0] = hit[0] - AliHLTTransform::Row2X(rowrange[0]);
for(Int_t xbin=hist->GetFirstXbin(); xbin<hist->GetLastXbin(); xbin++)
{
}
}
-void AliL3HoughTest::Transform2LineC(AliL3Histogram *hist,Int_t *rowrange)
+void AliHLTHoughTest::Transform2LineC(AliHLTHistogram *hist,Int_t *rowrange)
{
//Hough transform?
if(!fData)
{
- cerr<<"AliL3HoughTest::Transform2Line : No data"<<endl;
+ cerr<<"AliHLTHoughTest::Transform2Line : No data"<<endl;
return;
}
Float_t theta,rho,hit[3],hit2[3];
for(Int_t i=rowrange[0]; i<=rowrange[1]; i++)
{
- Int_t rowindex1 = i - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex1 = i - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d1=0; d1<fData[rowindex1].fNPads; d1++)
{
pad1 = d1 + fData[rowindex1].fMinpad;
time1 = j + fData[rowindex1].fMintime;
charge1 = fData[rowindex1].fPads[d1][j];
if(charge1==0) continue;
- AliL3Transform::Slice2Sector(0,i,sector,row);
- AliL3Transform::Raw2Local(hit,sector,row,pad1,time1);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Raw2Local(hit,sector,row,pad1,time1);
- hit[0] = hit[0] - AliL3Transform::Row2X(rowrange[0]);
+ hit[0] = hit[0] - AliHLTTransform::Row2X(rowrange[0]);
for(Int_t i2=i+1; i2<=rowrange[1]; i2++)
{
- Int_t rowindex2 = i2 - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex2 = i2 - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d2=0; d2<fData[rowindex2].fNPads; d2++)
{
pad2 = d2 + fData[rowindex2].fMinpad;
time2 = k + fData[rowindex2].fMintime;
charge2 = fData[rowindex2].fPads[d2][k];
if(charge2==0) continue;
- AliL3Transform::Slice2Sector(0,i2,sector,row);
- AliL3Transform::Raw2Local(hit2,sector,row,pad2,time2);
+ AliHLTTransform::Slice2Sector(0,i2,sector,row);
+ AliHLTTransform::Raw2Local(hit2,sector,row,pad2,time2);
- hit2[0] = hit2[0] - AliL3Transform::Row2X(rowrange[0]);
+ hit2[0] = hit2[0] - AliHLTTransform::Row2X(rowrange[0]);
theta = atan2(hit2[0]-hit[0],hit[1]-hit2[1]);
rho = hit[0]*cos(theta)+hit[1]*sin(theta);
}
}
-void AliL3HoughTest::FillImage(TH2 *hist,Int_t displayrow)
+void AliHLTHoughTest::FillImage(TH2 *hist,Int_t displayrow)
{
//Draw digits data
if(!fData)
{
- cerr<<"AliL3HoughTest::FillImage : No data to fill"<<endl;
+ cerr<<"AliHLTHoughTest::FillImage : No data to fill"<<endl;
return;
}
- for(Int_t i=AliL3Transform::GetFirstRow(fCurrentPatch); i<=AliL3Transform::GetLastRow(fCurrentPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fCurrentPatch); i<=AliHLTTransform::GetLastRow(fCurrentPatch); i++)
{
- Int_t rowindex = i - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex = i - AliHLTTransform::GetFirstRow(fCurrentPatch);
if(displayrow >=0)
if(i != displayrow) continue;
//cout<<i<<" "<<pad<<" "<<time<<" "<<charge<<endl;
Float_t xyz[3];
Int_t sector,row;
- AliL3Transform::Slice2Sector(0,i,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
if(displayrow>=0)
hist->Fill(pad,time,charge);
else
}
}
-void AliL3HoughTest::Transform2Line3D(TH3 *hist,Int_t *rowrange,Float_t *phirange)
+void AliHLTHoughTest::Transform2Line3D(TH3 *hist,Int_t *rowrange,Float_t *phirange)
{
//HT in 3D?
if(!fData)
{
- cerr<<"AliL3HoughTest::Transform2Line : No data"<<endl;
+ cerr<<"AliHLTHoughTest::Transform2Line : No data"<<endl;
return;
}
Int_t pad,time,charge,sector,row;
Float_t hit[3],theta,rho,r,delta;
- for(Int_t i=AliL3Transform::GetFirstRow(fCurrentPatch); i<=AliL3Transform::GetLastRow(fCurrentPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fCurrentPatch); i<=AliHLTTransform::GetLastRow(fCurrentPatch); i++)
{
if(i<rowrange[0])
if(i>rowrange[1])
break;
- Int_t rowindex = i - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex = i - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d=0; d<fData[rowindex].fNPads; d++)
{
pad = d + fData[rowindex].fMinpad;
time = j + fData[rowindex].fMintime;
charge = fData[rowindex].fPads[d][j];
if(charge==0) continue;
- AliL3Transform::Slice2Sector(0,i,sector,row);
- AliL3Transform::Raw2Local(hit,sector,row,pad,time);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Raw2Local(hit,sector,row,pad,time);
- Float_t phi = AliL3Transform::GetPhi(hit);
+ Float_t phi = AliHLTTransform::GetPhi(hit);
if(phi < phirange[0] || phi > phirange[1])
continue;
- hit[0] = hit[0] - AliL3Transform::Row2X(rowrange[0]);
- Float_t x = hit[0] + AliL3Transform::Row2X(rowrange[0]);
+ hit[0] = hit[0] - AliHLTTransform::Row2X(rowrange[0]);
+ Float_t x = hit[0] + AliHLTTransform::Row2X(rowrange[0]);
r = sqrt(x*x + hit[1]*hit[1]);
delta = atan(hit[2]/r);
}
}
-void AliL3HoughTest::Transform2LineC3D(TH3 *hist,Int_t *rowrange)
+void AliHLTHoughTest::Transform2LineC3D(TH3 *hist,Int_t *rowrange)
{
//HT in 3D?
if(!fData)
{
- cerr<<"AliL3HoughTest::Transform2Line : No data"<<endl;
+ cerr<<"AliHLTHoughTest::Transform2Line : No data"<<endl;
return;
}
Int_t pad1,pad2,time1,time2,charge1,charge2,sector,row;
Float_t theta,rho,hit[3],hit2[3],r1,r2,delta,delta1,delta2;
- for(Int_t i=AliL3Transform::GetFirstRow(fCurrentPatch); i<=AliL3Transform::GetLastRow(fCurrentPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fCurrentPatch); i<=AliHLTTransform::GetLastRow(fCurrentPatch); i++)
{
if(i<rowrange[0])
continue;
if(i>rowrange[1])
break;
- Int_t rowindex1 = i - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex1 = i - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d1=0; d1<fData[rowindex1].fNPads; d1++)
{
pad1 = d1 + fData[rowindex1].fMinpad;
time1 = j + fData[rowindex1].fMintime;
charge1 = fData[rowindex1].fPads[d1][j];
if(charge1==0) continue;
- AliL3Transform::Slice2Sector(0,i,sector,row);
- AliL3Transform::Raw2Local(hit,sector,row,pad1,time1);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Raw2Local(hit,sector,row,pad1,time1);
r1 = sqrt(hit[0]*hit[0]+hit[1]*hit[1]);
delta1 = atan(hit[2]/r1);
- hit[0] = hit[0] - AliL3Transform::Row2X(rowrange[0]);
+ hit[0] = hit[0] - AliHLTTransform::Row2X(rowrange[0]);
for(Int_t i2=i+1; i2<=rowrange[1]; i2++)
{
- Int_t rowindex2 = i2 - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex2 = i2 - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d2=0; d2<fData[rowindex2].fNPads; d2++)
{
pad2 = d2 + fData[rowindex2].fMinpad;
time2 = k + fData[rowindex2].fMintime;
charge2 = fData[rowindex2].fPads[d2][k];
if(charge2==0) continue;
- AliL3Transform::Slice2Sector(0,i2,sector,row);
- AliL3Transform::Raw2Local(hit2,sector,row,pad2,time2);
+ AliHLTTransform::Slice2Sector(0,i2,sector,row);
+ AliHLTTransform::Raw2Local(hit2,sector,row,pad2,time2);
r2 = sqrt(hit2[0]*hit2[0]+hit2[1]*hit2[1]);
delta2 = atan(hit2[2]/r2);
delta = (charge1*delta1 + charge2*delta2)/(charge1+charge2);
- hit2[0] = hit2[0] - AliL3Transform::Row2X(rowrange[0]);
+ hit2[0] = hit2[0] - AliHLTTransform::Row2X(rowrange[0]);
theta = atan2(hit2[0]-hit[0],hit[1]-hit2[1]);
rho = hit[0]*cos(theta)+hit[1]*sin(theta);
}
}
-void AliL3HoughTest::TransformLines2Circle(TH3 *hist,AliL3TrackArray *tracks)
+void AliHLTHoughTest::TransformLines2Circle(TH3 *hist,AliHLTTrackArray *tracks)
{
//Another HT?
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3HoughTrack *tr = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *tr = (AliHLTHoughTrack*)tracks->GetCheckedTrack(i);
if(!tr) continue;
Int_t middlerow = (Int_t)(tr->GetFirstRow()+(tr->GetLastRow()-tr->GetFirstRow())/2);
Float_t hit[3];
tr->GetLineCrossingPoint(middlerow,hit);
- hit[0] += AliL3Transform::Row2X(tr->GetFirstRow());
+ hit[0] += AliHLTTransform::Row2X(tr->GetFirstRow());
Float_t r = sqrt(hit[0]*hit[0] + hit[1]*hit[1]);
hit[2] = r*tr->GetTgl();
Float_t phi = atan2(hit[1],hit[0]);
- Float_t theta = tr->GetPsiLine() - AliL3Transform::Pi()/2;
+ Float_t theta = tr->GetPsiLine() - AliHLTTransform::Pi()/2;
Float_t psi = 2*phi - theta;
Float_t kappa = 2/r*sin(phi-psi);
Float_t delta = atan(hit[2]/r);
}
}
-void AliL3HoughTest::Transform2Center(AliL3Histogram *hist)
+void AliHLTHoughTest::Transform2Center(AliHLTHistogram *hist)
{
//Choose parameter space to be center of curvature.
if(!fData)
{
- cerr<<"AliL3HoughTest::TransformC : No data"<<endl;
+ cerr<<"AliHLTHoughTest::TransformC : No data"<<endl;
return;
}
Int_t pad1,pad2,time1,time2,charge1,charge2,sector,row;
Float_t r1,r2,phi1,phi2,hit[3],hit2[3];
//Float_t phi_0,kappa;
- for(Int_t i=AliL3Transform::GetFirstRow(fCurrentPatch); i<=AliL3Transform::GetLastRow(fCurrentPatch); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(fCurrentPatch); i<=AliHLTTransform::GetLastRow(fCurrentPatch); i++)
{
- Int_t rowindex1 = i - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex1 = i - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d1=0; d1<fData[rowindex1].fNPads; d1++)
{
pad1 = d1 + fData[rowindex1].fMinpad;
time1 = j + fData[rowindex1].fMintime;
charge1 = fData[rowindex1].fPads[d1][j];
if(charge1==0) continue;
- AliL3Transform::Slice2Sector(0,i,sector,row);
- AliL3Transform::Raw2Local(hit,sector,row,pad1,time1);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Raw2Local(hit,sector,row,pad1,time1);
r1 = sqrt(hit[0]*hit[0]+hit[1]*hit[1])/2;
phi1 = atan2(hit[1],hit[0]);
- for(Int_t j=i+1; j<=AliL3Transform::GetLastRow(fCurrentPatch); j++)
+ for(Int_t j=i+1; j<=AliHLTTransform::GetLastRow(fCurrentPatch); j++)
{
- Int_t rowindex2 = j - AliL3Transform::GetFirstRow(fCurrentPatch);
+ Int_t rowindex2 = j - AliHLTTransform::GetFirstRow(fCurrentPatch);
for(Int_t d2=0; d2<fData[rowindex2].fNPads; d2++)
{
pad2 = d2 + fData[rowindex2].fMinpad;
time2 = k + fData[rowindex2].fMintime;
charge2 = fData[rowindex2].fPads[d2][k];
if(charge2==0) continue;
- AliL3Transform::Slice2Sector(0,j,sector,row);
- AliL3Transform::Raw2Local(hit2,sector,row,pad2,time2);
+ AliHLTTransform::Slice2Sector(0,j,sector,row);
+ AliHLTTransform::Raw2Local(hit2,sector,row,pad2,time2);
r2 = sqrt(hit2[0]*hit2[0]+hit2[1]*hit2[1])/2;
phi2 = atan2(hit2[1],hit2[0]);
Float_t yc = (r2-(r1/cos(phi1))*cos(phi2))/(sin(phi2)-tan(phi1)*cos(phi2));
}
-void AliL3HoughTest::FindAbsMaxima(TH3 *hist,Int_t zsearch,Float_t &maxx,Float_t &maxy,Float_t &maxz,Int_t &maxvalue) const
+void AliHLTHoughTest::FindAbsMaxima(TH3 *hist,Int_t zsearch,Float_t &maxx,Float_t &maxy,Float_t &maxz,Int_t &maxvalue) const
{
//Find peaks in the Hough space
TH1 *h1 = hist->Project3D("z");
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3HOUGHTEST_H
+#define ALIL3HOUGHTEST_H
+
+#include "AliHLTRootTypes.h"
+
+struct AliHLTSimData {
+ Int_t fPads[10][10];//maximum 10 pads width
+ Int_t fNPads; //number of pads
+ Int_t fMinpad; //??
+ Int_t fMintime; //??
+};
+
+class AliHLTHistogram;
+class TH2;
+class TH3;
+class AliHLTTrackArray;
+
+class AliHLTHoughTest {
+
+ public:
+
+ AliHLTHoughTest();
+ virtual ~AliHLTHoughTest();
+
+ Bool_t GenerateTrackData(Double_t pt,Double_t psi,Double_t tgl,Int_t sign,Int_t patch,Int_t minhits);
+ void FillImage(TH2 *hist,Int_t row=-1);
+ void Transform2Circle(AliHLTHistogram *hist);
+ void Transform2CircleC(AliHLTHistogram *hist);
+ void Transform2CircleF(AliHLTHistogram *hist);
+ void Transform2Line(AliHLTHistogram *hist,Int_t *rowrange);
+ void Transform2LineC(AliHLTHistogram *hist,Int_t *rowrange);
+ void Transform2Line3D(TH3 *hist,Int_t *rowrange,Float_t *phirange);
+ void Transform2LineC3D(TH3 *hist,Int_t *rowrange);
+ void TransformLines2Circle(TH3 *hist,AliHLTTrackArray *tracks);
+ void Transform2Center(AliHLTHistogram *hist);
+
+ void FindAbsMaxima(TH3 *hist,Int_t zsearch,Float_t &maxx,Float_t &maxy,Float_t &maxz,Int_t &maxvalue) const;
+
+ private:
+ AliHLTSimData *fData; //??
+ Int_t fCurrentPatch; //index of the current patch
+
+ ClassDef(AliHLTHoughTest,1) //Hough transform base class
+};
+
+typedef AliHLTHoughTest AliL3HoughTest; // for backward compatibility
+
+#endif
+
+
+
+
+
+
+
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Track.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3Transform.h"
-#include "AliL3HoughTransformerRow.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTrack.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHoughTransformerRow.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3HoughTrack
+/** \class AliHLTHoughTrack
<pre>
//_____________________________________________________________
-// AliL3HoughTrack
+// AliHLTHoughTrack
//
// Track class for Hough tracklets
//
</pre>
*/
-ClassImp(AliL3HoughTrack)
+ClassImp(AliHLTHoughTrack)
- AliL3HoughTrack::AliL3HoughTrack() : AliL3Track()
+ AliHLTHoughTrack::AliHLTHoughTrack() : AliHLTTrack()
{
//Constructor
ComesFromMainVertex(kTRUE);
}
-AliL3HoughTrack::~AliL3HoughTrack()
+AliHLTHoughTrack::~AliHLTHoughTrack()
{
//dtor
}
-void AliL3HoughTrack::Set(AliL3Track *track)
+void AliHLTHoughTrack::Set(AliHLTTrack *track)
{
//Basically copy constructor
- AliL3HoughTrack *tpt = (AliL3HoughTrack*)track;
+ AliHLTHoughTrack *tpt = (AliHLTHoughTrack*)track;
SetTrackParameters(tpt->GetKappa(),tpt->GetPsi(),tpt->GetWeight());
SetEtaIndex(tpt->GetEtaIndex());
SetEta(tpt->GetEta());
// fIsHelix = false;
}
-Int_t AliL3HoughTrack::Compare(const AliL3Track *tpt) const
+Int_t AliHLTHoughTrack::Compare(const AliHLTTrack *tpt) const
{
//Compare 2 hough tracks according to their weight
- AliL3HoughTrack *track = (AliL3HoughTrack*)tpt;
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tpt;
if(track->GetWeight() < GetWeight()) return 1;
if(track->GetWeight() > GetWeight()) return -1;
return 0;
}
-void AliL3HoughTrack::SetEta(Double_t f)
+void AliHLTHoughTrack::SetEta(Double_t f)
{
//Set eta, and calculate fTanl, which is the tan of dipangle
fEta = f;
Double_t theta = 2*atan(exp(-1.*fEta));
- Double_t dipangle = AliL3Transform::PiHalf() - theta;
+ Double_t dipangle = AliHLTTransform::PiHalf() - theta;
Double_t tgl = tan(dipangle);
SetTgl(tgl);
}
-void AliL3HoughTrack::UpdateToFirstRow()
+void AliHLTHoughTrack::UpdateToFirstRow()
{
//Update the track parameters to the point where track cross
//its first padrow.`
//Get the crossing point with the first padrow:
Float_t xyz[3];
if(!GetCrossingPoint(GetFirstRow(),xyz))
- LOG(AliL3Log::kWarning,"AliL3HoughTrack::UpdateToFirstRow()","Track parameters")
- <<AliL3Log::kDec<<"Track does not cross padrow "<<GetFirstRow()<<" centerx "
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTrack::UpdateToFirstRow()","Track parameters")
+ <<AliHLTLog::kDec<<"Track does not cross padrow "<<GetFirstRow()<<" centerx "
<<GetCenterX()<<" centery "<<GetCenterY()<<" Radius "<<GetRadius()<<" tgl "<<GetTgl()<<ENDLOG;
//printf("Track with eta %f tgl %f crosses at x %f y %f z %f on padrow %d\n",GetEta(),GetTgl(),xyz[0],xyz[1],xyz[2],GetFirstRow());
Double_t x0 = GetR0() * cos(GetPhi0()) ;
Double_t y0 = GetR0() * sin(GetPhi0()) ;
*/
- Double_t rc = GetRadius();//fabs(GetPt()) / AliL3Transform::GetBFieldValue();
- Double_t tPhi0 = GetPsi() + GetCharge() * AliL3Transform::PiHalf() / abs(GetCharge()) ;
+ Double_t rc = GetRadius();//fabs(GetPt()) / AliHLTTransform::GetBFieldValue();
+ Double_t tPhi0 = GetPsi() + GetCharge() * AliHLTTransform::PiHalf() / abs(GetCharge()) ;
Double_t xc = GetCenterX();//x0 - rc * cos(tPhi0) ;
Double_t yc = GetCenterY();//y0 - rc * sin(tPhi0) ;
Double_t sfac = sqrt( fac1 ) ;
if ( fabs(sfac-rc) > radius || fabs(sfac+rc) < radius ) {
- LOG(AliL3Log::kError,"AliL3HoughTrack::UpdateToFirstRow","Tracks")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTHoughTrack::UpdateToFirstRow","Tracks")<<AliHLTLog::kDec<<
"Track does not intersect"<<ENDLOG;
return;
}
Double_t td = atan2(radius*sin(phi) - yc,radius*cos(phi) - xc) ;
//Intersection in z
- if ( td < 0 ) td = td + AliL3Transform::TwoPi();
- Double_t deltat = fmod((-GetCharge()*td + GetCharge()*tPhi0),AliL3Transform::TwoPi());
- if ( deltat < 0. ) deltat += AliL3Transform::TwoPi();
- else if ( deltat > AliL3Transform::TwoPi() ) deltat -= AliL3Transform::TwoPi();
+ if ( td < 0 ) td = td + AliHLTTransform::TwoPi();
+ Double_t deltat = fmod((-GetCharge()*td + GetCharge()*tPhi0),AliHLTTransform::TwoPi());
+ if ( deltat < 0. ) deltat += AliHLTTransform::TwoPi();
+ else if ( deltat > AliHLTTransform::TwoPi() ) deltat -= AliHLTTransform::TwoPi();
Double_t z = GetZ0() + rc * GetTgl() * deltat ;
Double_t xExtra = radius * cos(phi) ;
Double_t tPhi = atan2(yExtra-yc,xExtra-xc);
//if ( tPhi < 0 ) tPhi += 2. * M_PI ;
- Double_t tPsi = tPhi - GetCharge() * AliL3Transform::PiHalf() / abs(GetCharge()) ;
- if ( tPsi > AliL3Transform::TwoPi() ) tPsi -= AliL3Transform::TwoPi() ;
- else if ( tPsi < 0. ) tPsi += AliL3Transform::TwoPi();
+ Double_t tPsi = tPhi - GetCharge() * AliHLTTransform::PiHalf() / abs(GetCharge()) ;
+ if ( tPsi > AliHLTTransform::TwoPi() ) tPsi -= AliHLTTransform::TwoPi() ;
+ else if ( tPsi < 0. ) tPsi += AliHLTTransform::TwoPi();
//And finally, update the track parameters
SetR0(radius);
//printf("last point %f %f %f\n",xyz[0],xyz[1],xyz[2]);
}
-void AliL3HoughTrack::SetTrackParameters(Double_t kappa,Double_t eangle,Int_t weight)
+void AliHLTHoughTrack::SetTrackParameters(Double_t kappa,Double_t eangle,Int_t weight)
{
//Set track parameters - sort of ctor
fWeight = weight;
fMinDist = 100000;
SetKappa(kappa);
- Double_t pt = fabs(AliL3Transform::GetBFieldValue()/kappa);
+ Double_t pt = fabs(AliHLTTransform::GetBFieldValue()/kappa);
SetPt(pt);
Double_t radius = 1/fabs(kappa);
SetRadius(radius);
SetR0(0);
Double_t charge = -1.*kappa;
SetCharge((Int_t)copysign(1.,charge));
- Double_t trackPhi0 = GetPsi() + charge*0.5*AliL3Transform::Pi()/fabs(charge);
+ Double_t trackPhi0 = GetPsi() + charge*0.5*AliHLTTransform::Pi()/fabs(charge);
Double_t xc = GetFirstPointX() - GetRadius() * cos(trackPhi0) ;
Double_t yc = GetFirstPointY() - GetRadius() * sin(trackPhi0) ;
SetCenterX(xc);
fIsHelix = true;
}
-void AliL3HoughTrack::SetTrackParametersRow(Double_t alpha1,Double_t alpha2,Double_t eta,Int_t weight)
+void AliHLTHoughTrack::SetTrackParametersRow(Double_t alpha1,Double_t alpha2,Double_t eta,Int_t weight)
{
//Set track parameters for HoughTransformerRow
//This includes curvature,emission angle and eta
- Double_t psi = atan((alpha1-alpha2)/(AliL3HoughTransformerRow::GetBeta1()-AliL3HoughTransformerRow::GetBeta2()));
- Double_t kappa = 2.0*(alpha1*cos(psi)-AliL3HoughTransformerRow::GetBeta1()*sin(psi));
+ Double_t psi = atan((alpha1-alpha2)/(AliHLTHoughTransformerRow::GetBeta1()-AliHLTHoughTransformerRow::GetBeta2()));
+ Double_t kappa = 2.0*(alpha1*cos(psi)-AliHLTHoughTransformerRow::GetBeta1()*sin(psi));
SetTrackParameters(kappa,psi,weight);
Double_t zovr;
- Double_t etaparam1 = AliL3HoughTransformerRow::GetEtaCalcParam1();
- Double_t etaparam2 = AliL3HoughTransformerRow::GetEtaCalcParam2();
+ Double_t etaparam1 = AliHLTHoughTransformerRow::GetEtaCalcParam1();
+ Double_t etaparam2 = AliHLTHoughTransformerRow::GetEtaCalcParam2();
if(eta>0)
zovr = (etaparam1 - sqrt(etaparam1*etaparam1 - 4.*etaparam2*eta))/(2.*etaparam2);
else
SetEta(exacteta);
}
-void AliL3HoughTrack::SetLineParameters(Double_t psi,Double_t D,Int_t weight,Int_t *rowrange,Int_t /*ref_row*/)
+void AliHLTHoughTrack::SetLineParameters(Double_t psi,Double_t D,Int_t weight,Int_t *rowrange,Int_t /*ref_row*/)
{
//Initialize a track piece, not yet a track
//Used in case of straight line transformation
fIsHelix = false;
}
-void AliL3HoughTrack::SetBestMCid(Int_t mcid,Double_t mindist)
+void AliHLTHoughTrack::SetBestMCid(Int_t mcid,Double_t mindist)
{
//Finds and set the closest mc label
if(mindist < fMinDist)
}
}
-void AliL3HoughTrack::GetLineCrossingPoint(Int_t padrow,Float_t *xy)
+void AliHLTHoughTrack::GetLineCrossingPoint(Int_t padrow,Float_t *xy)
{
//Returns the crossing point of the track with a given padrow
if(fIsHelix)
{
- printf("AliL3HoughTrack::GetLineCrossingPoint : Track is not a line\n");
+ printf("AliHLTHoughTrack::GetLineCrossingPoint : Track is not a line\n");
return;
}
- Float_t xhit = AliL3Transform::Row2X(padrow) - AliL3Transform::Row2X(GetFirstRow());
+ Float_t xhit = AliHLTTransform::Row2X(padrow) - AliHLTTransform::Row2X(GetFirstRow());
Float_t a = -1/tan(fPsiLine);
Float_t b = fDLine/sin(fPsiLine);
Float_t yhit = a*xhit + b;
#ifndef ALIL3HOUGHTRACK_H
#define ALIL3HOUGHTRACK_H
-#include "AliL3Track.h"
+#include "AliHLTTrack.h"
-class AliL3HoughTrack : public AliL3Track {
+class AliHLTHoughTrack : public AliHLTTrack {
public:
- AliL3HoughTrack();
- virtual ~AliL3HoughTrack();
+ AliHLTHoughTrack();
+ virtual ~AliHLTHoughTrack();
- virtual void Set(AliL3Track *track);
- virtual Int_t Compare(const AliL3Track *track) const;
+ virtual void Set(AliHLTTrack *track);
+ virtual Int_t Compare(const AliHLTTrack *track) const;
Bool_t IsHelix() const {return fIsHelix;}
void UpdateToFirstRow();
Float_t fBinX,fBinY,fSizeX,fSizeY;//Size and position of the hough space peak
- ClassDef(AliL3HoughTrack,1) //Track class for Hough tracklets
+ ClassDef(AliHLTHoughTrack,1) //Track class for Hough tracklets
};
+typedef AliHLTHoughTrack AliL3HoughTrack; // for backward comaptibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-/** \class AliL3HoughTransformer
+/** \class AliHLTHoughTransformer
<pre>
//_____________________________________________________________
-// AliL3HoughTransformer
+// AliHLTHoughTransformer
//
// Hough transformation class
//
</pre>
*/
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3HoughTransformer.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Transform.h"
-#include "AliL3DigitData.h"
-#include "AliL3HistogramAdaptive.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHoughTransformer.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTTransform.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTHistogramAdaptive.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3HoughTransformer)
+ClassImp(AliHLTHoughTransformer)
-AliL3HoughTransformer::AliL3HoughTransformer()
+AliHLTHoughTransformer::AliHLTHoughTransformer()
{
//Default constructor
fParamSpace = 0;
#endif
}
-AliL3HoughTransformer::AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t netasegments,Bool_t DoEtaOverlap,Bool_t /*DoMC*/) : AliL3HoughBaseTransformer(slice,patch,netasegments)
+AliHLTHoughTransformer::AliHLTHoughTransformer(Int_t slice,Int_t patch,Int_t netasegments,Bool_t DoEtaOverlap,Bool_t /*DoMC*/) : AliHLTHoughBaseTransformer(slice,patch,netasegments)
{
//Normal constructor
fParamSpace = 0;
#endif
}
-AliL3HoughTransformer::~AliL3HoughTransformer()
+AliHLTHoughTransformer::~AliHLTHoughTransformer()
{
// Dtor
DeleteHistograms();
#endif
}
-void AliL3HoughTransformer::DeleteHistograms()
+void AliHLTHoughTransformer::DeleteHistograms()
{
// Clean up
if(!fParamSpace)
fParamSpace = 0;
}
-void AliL3HoughTransformer::CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t ptres,
+void AliHLTHoughTransformer::CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t ptres,
Int_t nybin,Float_t psi)
{
//Create histograms.
if(ptmin > ptmax)
{
- cerr<<"AliL3HoughTransformer::CreateHistograms: Error in ptrange "<<ptmin<<" "<<ptmax<<endl;
+ cerr<<"AliHLTHoughTransformer::CreateHistograms: Error in ptrange "<<ptmin<<" "<<ptmax<<endl;
return;
}
if(psi < 0)
{
- cerr<<"AliL3HoughTransformer::CreateHistograms: Wrong psi-angle "<<psi<<endl;
+ cerr<<"AliHLTHoughTransformer::CreateHistograms: Wrong psi-angle "<<psi<<endl;
return;
}
- fParamSpace = new AliL3Histogram*[GetNEtaSegments()];
+ fParamSpace = new AliHLTHistogram*[GetNEtaSegments()];
Char_t histname[256];
Int_t i;
for(i=0; i<GetNEtaSegments(); i++)
{
sprintf(histname,"paramspace_%d",i);
- fParamSpace[i] = new AliL3HistogramAdaptive(histname,ptmin,ptmax,ptres,nybin,-psi,psi);
+ fParamSpace[i] = new AliHLTHistogramAdaptive(histname,ptmin,ptmax,ptres,nybin,-psi,psi);
}
}
-void AliL3HoughTransformer::CreateHistograms(Int_t nxbin,Float_t ptmin,
+void AliHLTHoughTransformer::CreateHistograms(Int_t nxbin,Float_t ptmin,
Int_t nybin,Float_t phimin,Float_t phimax)
{
//Create the histograms (parameter space).
//phimin = mimimum phi0
//phimax = maximum phi0
- Double_t x = AliL3Transform::GetBFact()*AliL3Transform::GetBField()/ptmin;
- //Double_t torad = AliL3Transform::Pi()/180;
+ Double_t x = AliHLTTransform::GetBFact()*AliHLTTransform::GetBField()/ptmin;
+ //Double_t torad = AliHLTTransform::Pi()/180;
CreateHistograms(nxbin,-1.*x,x,nybin,phimin/**torad*/,phimax/**torad*/);
}
-void AliL3HoughTransformer::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
+void AliHLTHoughTransformer::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
Int_t nybin,Float_t ymin,Float_t ymax)
{
//Create the histograms (parameter space).
//nybin = #bins in Y
//xmin xmax ymin ymax = histogram limits in X and Y
- fParamSpace = new AliL3Histogram*[GetNEtaSegments()];
+ fParamSpace = new AliHLTHistogram*[GetNEtaSegments()];
Char_t histname[256];
for(Int_t i=0; i<GetNEtaSegments(); i++)
{
sprintf(histname,"paramspace_%d",i);
- //fParamSpace[i] = new AliL3HistogramAdaptive(histname,0.5,1.5,0.05,nybin,ymin,ymax);
- fParamSpace[i] = new AliL3Histogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
+ //fParamSpace[i] = new AliHLTHistogramAdaptive(histname,0.5,1.5,0.05,nybin,ymin,ymax);
+ fParamSpace[i] = new AliHLTHistogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
}
#ifdef do_mc
if(fDoMC)
{
- AliL3Histogram *hist = fParamSpace[0];
+ AliHLTHistogram *hist = fParamSpace[0];
Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
- cout<<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(AliL3TrackIndex)<<" bytes to fTrackID"<<endl;
- fTrackID = new AliL3TrackIndex*[GetNEtaSegments()];
+ cout<<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(AliHLTTrackIndex)<<" bytes to fTrackID"<<endl;
+ fTrackID = new AliHLTTrackIndex*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
- fTrackID[i] = new AliL3TrackIndex[ncells];
+ fTrackID[i] = new AliHLTTrackIndex[ncells];
}
#endif
}
-void AliL3HoughTransformer::Reset()
+void AliHLTHoughTransformer::Reset()
{
//Reset all the histograms
if(!fParamSpace)
{
- LOG(AliL3Log::kWarning,"AliL3HoughTransformer::Reset","Histograms")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformer::Reset","Histograms")
<<"No histograms to reset"<<ENDLOG;
return;
}
#ifdef do_mc
if(fDoMC)
{
- AliL3Histogram *hist = fParamSpace[0];
+ AliHLTHistogram *hist = fParamSpace[0];
Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
for(Int_t i=0; i<GetNEtaSegments(); i++)
- memset(fTrackID[i],0,ncells*sizeof(AliL3TrackIndex));
+ memset(fTrackID[i],0,ncells*sizeof(AliHLTTrackIndex));
}
#endif
}
-Int_t AliL3HoughTransformer::GetEtaIndex(Double_t eta) const
+Int_t AliHLTHoughTransformer::GetEtaIndex(Double_t eta) const
{
//Return the histogram index of the corresponding eta.
return (Int_t)index;
}
-void AliL3HoughTransformer::GetEtaIndexes(Double_t eta,Int_t *indexes) const
+void AliHLTHoughTransformer::GetEtaIndexes(Double_t eta,Int_t *indexes) const
{
//Return histogram indexes in case of overlapping etaslices.
}
}
-AliL3Histogram *AliL3HoughTransformer::GetHistogram(Int_t etaindex)
+AliHLTHistogram *AliHLTHoughTransformer::GetHistogram(Int_t etaindex)
{
// Return a pointer to the histogram which contains etaindex eta slice
if(!fParamSpace || etaindex >= GetNEtaSegments() || etaindex < 0)
return fParamSpace[etaindex];
}
-Double_t AliL3HoughTransformer::GetEta(Int_t etaindex,Int_t /*slice*/) const
+Double_t AliHLTHoughTransformer::GetEta(Int_t etaindex,Int_t /*slice*/) const
{
// Return eta calculated in the middle of the eta slice
Double_t etaslice = (GetEtaMax()-GetEtaMin())/GetNEtaSegments();
return eta;
}
-void AliL3HoughTransformer::TransformCircle()
+void AliHLTHoughTransformer::TransformCircle()
{
//Transform the input data with a circle HT.
//The function loops over all the data, and transforms each pixel with the equations:
//and the proper histogram index is found by GetEtaIndex(eta).
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformer::TransformCircle","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformer::TransformCircle","Data")
<<"No input data "<<ENDLOG;
return;
}
//Loop over the padrows:
- for(Int_t i=AliL3Transform::GetFirstRow(GetPatch()); i<=AliL3Transform::GetLastRow(GetPatch()); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(GetPatch()); i<=AliHLTTransform::GetLastRow(GetPatch()); i++)
{
//Get the data on this padrow:
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
if(i != (Int_t)tempPt->fRow)
{
- cerr<<"AliL3HoughTransform::TransformCircle : Mismatching padrow numbering "<<i<<" "<<(Int_t)tempPt->fRow<<endl;
+ cerr<<"AliHLTHoughTransform::TransformCircle : Mismatching padrow numbering "<<i<<" "<<(Int_t)tempPt->fRow<<endl;
continue;
}
Float_t xyz[3];
//Transform data to local cartesian coordinates:
- AliL3Transform::Slice2Sector(GetSlice(),i,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
+ AliHLTTransform::Slice2Sector(GetSlice(),i,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
//Calculate the eta:
- Double_t eta = AliL3Transform::GetEta(xyz);
+ Double_t eta = AliHLTTransform::GetEta(xyz);
//Get the corresponding index, which determines which histogram to fill:
Int_t etaindex = GetEtaIndex(eta);
continue;
//Get the correct histogrampointer:
- AliL3Histogram *hist = fParamSpace[etaindex];
+ AliHLTHistogram *hist = fParamSpace[etaindex];
if(!hist)
{
- cerr<<"AliL3HoughTransformer::TransformCircle : Error getting histogram in index "<<etaindex<<endl;
+ cerr<<"AliHLTHoughTransformer::TransformCircle : Error getting histogram in index "<<etaindex<<endl;
continue;
}
//Do the transformation:
Float_t r = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
- Float_t phi = AliL3Transform::GetPhi(xyz);
+ Float_t phi = AliHLTTransform::GetPhi(xyz);
//Fill the histogram along the phirange
for(c=0; c<MaxTrack; c++)
if(fTrackID[etaindex][bin].fLabel[c] == label || fTrackID[etaindex][bin].fNHits[c] == 0)
break;
- if(c == MaxTrack-1) cerr<<"AliL3HoughTransformer::TransformCircle : Array reached maximum!! "<<c<<endl;
+ if(c == MaxTrack-1) cerr<<"AliHLTHoughTransformer::TransformCircle : Array reached maximum!! "<<c<<endl;
fTrackID[etaindex][bin].fLabel[c] = label;
fTrackID[etaindex][bin].fNHits[c]++;
}
}
//Move the data pointer to the next padrow:
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
}
-struct AliL3Digit {
+struct AliHLTDigit {
Int_t fRow; // Digit padrow
Double_t fR; // Digit radius in local coordinate system
Double_t fPhi; // Digit Phi angle in local coordinate system
Int_t fCharge; // Digit charge
- AliL3Digit *fNext; // Next digit
+ AliHLTDigit *fNext; // Next digit
};
-struct AliL3EtaContainer {
- AliL3Digit *fFirst; //First digit
- AliL3Digit *fLast; //Last digit
+struct AliHLTEtaContainer {
+ AliHLTDigit *fFirst; //First digit
+ AliHLTDigit *fLast; //Last digit
};
-void AliL3HoughTransformer::TransformCircleC(Int_t *rowrange,Int_t every)
+void AliHLTHoughTransformer::TransformCircleC(Int_t *rowrange,Int_t every)
{
//Circle transform, using combinations of every 2 points lying
//on different padrows and within the same etaslice.
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
- LOG(AliL3Log::kError,"AliL3HoughTransformer::TransformCircleC","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformer::TransformCircleC","Data")
<<"No input data "<<ENDLOG;
- Int_t minrow = AliL3Transform::GetFirstRow(GetPatch());
- Int_t maxrow = AliL3Transform::GetLastRow(GetPatch());
+ Int_t minrow = AliHLTTransform::GetFirstRow(GetPatch());
+ Int_t maxrow = AliHLTTransform::GetLastRow(GetPatch());
if(rowrange)
{
minrow = rowrange[0];
maxrow = rowrange[1];
- if(minrow < AliL3Transform::GetFirstRow(GetPatch()) || minrow >= AliL3Transform::GetLastRow(GetPatch()))
- minrow = AliL3Transform::GetFirstRow(GetPatch());
- if(maxrow < AliL3Transform::GetFirstRow(GetPatch()) || maxrow >= AliL3Transform::GetLastRow(GetPatch()))
- maxrow = AliL3Transform::GetLastRow(GetPatch());
+ if(minrow < AliHLTTransform::GetFirstRow(GetPatch()) || minrow >= AliHLTTransform::GetLastRow(GetPatch()))
+ minrow = AliHLTTransform::GetFirstRow(GetPatch());
+ if(maxrow < AliHLTTransform::GetFirstRow(GetPatch()) || maxrow >= AliHLTTransform::GetLastRow(GetPatch()))
+ maxrow = AliHLTTransform::GetLastRow(GetPatch());
if(minrow > maxrow || maxrow==minrow)
{
- cerr<<"AliL3HoughTransformer::TransformCircleC : Bad row range "<<minrow<<" "<<maxrow<<endl;
+ cerr<<"AliHLTHoughTransformer::TransformCircleC : Bad row range "<<minrow<<" "<<maxrow<<endl;
return;
}
}
else
{
- minrow = AliL3Transform::GetFirstRow(GetPatch());
- maxrow = AliL3Transform::GetLastRow(GetPatch());
+ minrow = AliHLTTransform::GetFirstRow(GetPatch());
+ maxrow = AliHLTTransform::GetLastRow(GetPatch());
}
Int_t counter=0;
- for(Int_t i=AliL3Transform::GetFirstRow(GetPatch()); i<=AliL3Transform::GetLastRow(GetPatch()); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(GetPatch()); i<=AliHLTTransform::GetLastRow(GetPatch()); i++)
{
counter += tempPt->fNDigit;
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
- Int_t bound = (GetNEtaSegments()+1)*(AliL3Transform::GetNRows(GetPatch())+1);
- AliL3EtaContainer *etaPt = new AliL3EtaContainer[bound];
- memset(etaPt,0,bound*sizeof(AliL3EtaContainer));
+ Int_t bound = (GetNEtaSegments()+1)*(AliHLTTransform::GetNRows(GetPatch())+1);
+ AliHLTEtaContainer *etaPt = new AliHLTEtaContainer[bound];
+ memset(etaPt,0,bound*sizeof(AliHLTEtaContainer));
- AliL3Digit *digits = new AliL3Digit[counter];
- cout<<"Allocating "<<counter*sizeof(AliL3Digit)<<" bytes to digitsarray"<<endl;
- memset(digits,0,counter*sizeof(AliL3Digit));
+ AliHLTDigit *digits = new AliHLTDigit[counter];
+ cout<<"Allocating "<<counter*sizeof(AliHLTDigit)<<" bytes to digitsarray"<<endl;
+ memset(digits,0,counter*sizeof(AliHLTDigit));
Int_t sector,row,totcharge,pad,time,charge;
Double_t r1,r2,phi1,phi2,eta,kappa,phi0;
tempPt = GetDataPointer();
cout<<"Calculating digits in patch "<<GetPatch()<<endl;
- for(Int_t i=AliL3Transform::GetFirstRow(GetPatch()); i<=AliL3Transform::GetLastRow(GetPatch()); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(GetPatch()); i<=AliHLTTransform::GetLastRow(GetPatch()); i++)
{
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
for(UInt_t di=0; di<tempPt->fNDigit; di++)
{
charge = digPt[di].fCharge;
pad = digPt[di].fPad;
time = digPt[di].fTime;
- AliL3Transform::Slice2Sector(GetSlice(),i,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
- eta = AliL3Transform::GetEta(xyz);
+ AliHLTTransform::Slice2Sector(GetSlice(),i,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
+ eta = AliHLTTransform::GetEta(xyz);
digits[counter].fRow = i;
digits[counter].fR = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
{
Int_t etaindex = GetEtaIndex(eta);
- Int_t index = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex;
+ Int_t index = (GetNEtaSegments()+1)*(i-AliHLTTransform::GetFirstRow(GetPatch())) + etaindex;
if(index > 0 && index < bound)
{
Int_t etaindex[2];
GetEtaIndexes(eta,etaindex);
Int_t index[2];
- index[0] = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex[0];
- index[1] = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex[1];
+ index[0] = (GetNEtaSegments()+1)*(i-AliHLTTransform::GetFirstRow(GetPatch())) + etaindex[0];
+ index[1] = (GetNEtaSegments()+1)*(i-AliHLTTransform::GetFirstRow(GetPatch())) + etaindex[1];
if(index[0] == index[1])
{
cerr<<"Same etaindexes "<<index[0]<<" "<<index[1]<<endl;
counter++;
}
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
cout<<"Doing the combinatorics"<<endl;
- AliL3Digit *dPt1,*dPt2;
+ AliHLTDigit *dPt1,*dPt2;
for(Int_t e=0; e<GetNEtaSegments(); e++)
{
for(Int_t i=minrow; i<=maxrow; i+=every)
{
- Int_t index1 = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + e;
+ Int_t index1 = (GetNEtaSegments()+1)*(i-AliHLTTransform::GetFirstRow(GetPatch())) + e;
- for(dPt1 = (AliL3Digit*)etaPt[index1].fFirst; dPt1 != 0; dPt1 = (AliL3Digit*)dPt1->fNext)
+ for(dPt1 = (AliHLTDigit*)etaPt[index1].fFirst; dPt1 != 0; dPt1 = (AliHLTDigit*)dPt1->fNext)
{
for(Int_t j=i+every; j<=maxrow; j+=every)
{
- Int_t index2 = (GetNEtaSegments()+1)*(j-AliL3Transform::GetFirstRow(GetPatch())) + e;
+ Int_t index2 = (GetNEtaSegments()+1)*(j-AliHLTTransform::GetFirstRow(GetPatch())) + e;
- for(dPt2 = (AliL3Digit*)etaPt[index2].fFirst; dPt2 != 0; dPt2 = (AliL3Digit*)dPt2->fNext)
+ for(dPt2 = (AliHLTDigit*)etaPt[index2].fFirst; dPt2 != 0; dPt2 = (AliHLTDigit*)dPt2->fNext)
{
if(dPt1->fRow == dPt2->fRow)
{
}
//Get the correct histogrampointer:
- AliL3Histogram *hist = fParamSpace[e];
+ AliHLTHistogram *hist = fParamSpace[e];
if(!hist)
{
- printf("AliL3HoughTransformer::TransformCircleC() : No histogram at index %d\n",i);
+ printf("AliHLTHoughTransformer::TransformCircleC() : No histogram at index %d\n",i);
continue;
}
}
-void AliL3HoughTransformer::TransformLine(Int_t *rowrange,Float_t *phirange)
+void AliHLTHoughTransformer::TransformLine(Int_t *rowrange,Float_t *phirange)
{
//Do a line transform on the data.
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformer::TransformLine","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformer::TransformLine","Data")
<<"No input data "<<ENDLOG;
return;
}
- Int_t minrow = AliL3Transform::GetFirstRow(GetPatch());
- Int_t maxrow = AliL3Transform::GetLastRow(GetPatch());
+ Int_t minrow = AliHLTTransform::GetFirstRow(GetPatch());
+ Int_t maxrow = AliHLTTransform::GetLastRow(GetPatch());
if(rowrange)
{
minrow = rowrange[0];
maxrow = rowrange[1];
- if(minrow < AliL3Transform::GetFirstRow(GetPatch()) || minrow >= AliL3Transform::GetLastRow(GetPatch()))
- minrow = AliL3Transform::GetFirstRow(GetPatch());
- if(maxrow < AliL3Transform::GetFirstRow(GetPatch()) || maxrow >= AliL3Transform::GetLastRow(GetPatch()))
- maxrow = AliL3Transform::GetLastRow(GetPatch());
+ if(minrow < AliHLTTransform::GetFirstRow(GetPatch()) || minrow >= AliHLTTransform::GetLastRow(GetPatch()))
+ minrow = AliHLTTransform::GetFirstRow(GetPatch());
+ if(maxrow < AliHLTTransform::GetFirstRow(GetPatch()) || maxrow >= AliHLTTransform::GetLastRow(GetPatch()))
+ maxrow = AliHLTTransform::GetLastRow(GetPatch());
if(minrow > maxrow || maxrow==minrow)
{
- cerr<<"AliL3HoughTransformer::TransformCircleC : Bad row range "<<minrow<<" "<<maxrow<<endl;
+ cerr<<"AliHLTHoughTransformer::TransformCircleC : Bad row range "<<minrow<<" "<<maxrow<<endl;
return;
}
}
for(Int_t i=minrow; i<=maxrow; i++)
{
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
if(i != (Int_t)tempPt->fRow)
{
- printf("AliL3HoughTransform::TransformLine : Mismatching padrow numbering\n");
+ printf("AliHLTHoughTransform::TransformLine : Mismatching padrow numbering\n");
continue;
}
for(UInt_t j=0; j<tempPt->fNDigit; j++)
continue;
Int_t sector,row;
Float_t xyz[3];
- AliL3Transform::Slice2Sector(GetSlice(),i,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
+ AliHLTTransform::Slice2Sector(GetSlice(),i,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
if(phirange)
{
- Float_t phi = AliL3Transform::GetPhi(xyz);
+ Float_t phi = AliHLTTransform::GetPhi(xyz);
if(phi < phirange[0] || phi > phirange[1])
continue;
}
- Float_t eta = AliL3Transform::GetEta(xyz);
+ Float_t eta = AliHLTTransform::GetEta(xyz);
Int_t etaindex = GetEtaIndex(eta);//(Int_t)(eta/etaslice);
if(etaindex < 0 || etaindex >= GetNEtaSegments())
continue;
- xyz[0] = xyz[0] - AliL3Transform::Row2X(minrow);
+ xyz[0] = xyz[0] - AliHLTTransform::Row2X(minrow);
//Get the correct histogram:
- AliL3Histogram *hist = fParamSpace[etaindex];
+ AliHLTHistogram *hist = fParamSpace[etaindex];
if(!hist)
{
- printf("AliL3HoughTransformer::TransformLine : Error getting histogram in index %d\n",etaindex);
+ printf("AliHLTHoughTransformer::TransformLine : Error getting histogram in index %d\n",etaindex);
continue;
}
for(Int_t xbin=hist->GetFirstXbin(); xbin<hist->GetLastXbin(); xbin++)
hist->Fill(theta,rho,charge);
}
}
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
}
-struct AliL3LDigit {
+struct AliHLTLDigit {
Int_t fRow; // Digit rowpad
Int_t fCharge; // Digit charge
Float_t fY; // Y position of the digit in the local coor system
- AliL3LDigit *fNext; // Next digit
+ AliHLTLDigit *fNext; // Next digit
};
-struct AliL3LEtaContainer {
- AliL3LDigit *fFirst; //First digit
- AliL3LDigit *fLast; //Last digit
+struct AliHLTLEtaContainer {
+ AliHLTLDigit *fFirst; //First digit
+ AliHLTLDigit *fLast; //Last digit
};
-void AliL3HoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
+void AliHLTHoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
{
//Circle transform ??
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
- LOG(AliL3Log::kError,"AliL3HoughTransformer::TransformCircleC","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformer::TransformCircleC","Data")
<<"No input data "<<ENDLOG;
Int_t counter=0;
- for(Int_t i=AliL3Transform::GetFirstRow(GetPatch()); i<=AliL3Transform::GetLastRow(GetPatch()); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(GetPatch()); i<=AliHLTTransform::GetLastRow(GetPatch()); i++)
{
counter += tempPt->fNDigit;
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
- Int_t bound = (GetNEtaSegments()+1)*(AliL3Transform::GetNRows(GetPatch())+1);
- AliL3LEtaContainer *etaPt = new AliL3LEtaContainer[bound];
- memset(etaPt,0,bound*sizeof(AliL3LEtaContainer));
+ Int_t bound = (GetNEtaSegments()+1)*(AliHLTTransform::GetNRows(GetPatch())+1);
+ AliHLTLEtaContainer *etaPt = new AliHLTLEtaContainer[bound];
+ memset(etaPt,0,bound*sizeof(AliHLTLEtaContainer));
- AliL3LDigit *digits = new AliL3LDigit[counter];
- cout<<"Allocating "<<counter*sizeof(AliL3LDigit)<<" bytes to digitsarray"<<endl;
- memset(digits,0,counter*sizeof(AliL3LDigit));
+ AliHLTLDigit *digits = new AliHLTLDigit[counter];
+ cout<<"Allocating "<<counter*sizeof(AliHLTLDigit)<<" bytes to digitsarray"<<endl;
+ memset(digits,0,counter*sizeof(AliHLTLDigit));
Int_t sector,row;
Float_t xyz[3];
tempPt = GetDataPointer();
cout<<"Calculating digits in patch "<<GetPatch()<<endl;
- for(Int_t i=AliL3Transform::GetFirstRow(GetPatch()); i<=AliL3Transform::GetLastRow(GetPatch()); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(GetPatch()); i<=AliHLTTransform::GetLastRow(GetPatch()); i++)
{
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
for(UInt_t di=0; di<tempPt->fNDigit; di++)
{
Int_t charge = digPt[di].fCharge;
Int_t pad = digPt[di].fPad;
Int_t time = digPt[di].fTime;
- AliL3Transform::Slice2Sector(GetSlice(),i,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
- Double_t eta = AliL3Transform::GetEta(xyz);
+ AliHLTTransform::Slice2Sector(GetSlice(),i,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
+ Double_t eta = AliHLTTransform::GetEta(xyz);
Float_t phi = atan2(xyz[1],xyz[0]);
if(phi < phirange[0] || phi > phirange[1]) continue;
digits[counter].fCharge = charge;
Int_t etaindex = GetEtaIndex(eta);
- Int_t index = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex;
+ Int_t index = (GetNEtaSegments()+1)*(i-AliHLTTransform::GetFirstRow(GetPatch())) + etaindex;
if(index > 0 && index < bound)
{
}
counter++;
}
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
cout<<"Doing the combinatorics"<<endl;
- AliL3LDigit *dPt1,*dPt2;
+ AliHLTLDigit *dPt1,*dPt2;
for(Int_t e=0; e<GetNEtaSegments(); e++)
{
for(Int_t i=rowrange[0]; i<=rowrange[1]; i++)
{
- Int_t index1 = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + e;
+ Int_t index1 = (GetNEtaSegments()+1)*(i-AliHLTTransform::GetFirstRow(GetPatch())) + e;
- for(dPt1 = (AliL3LDigit*)etaPt[index1].fFirst; dPt1 != 0; dPt1 = (AliL3LDigit*)dPt1->fNext)
+ for(dPt1 = (AliHLTLDigit*)etaPt[index1].fFirst; dPt1 != 0; dPt1 = (AliHLTLDigit*)dPt1->fNext)
{
for(Int_t j=i+1; j<=rowrange[1]; j++)
{
- Int_t index2 = (GetNEtaSegments()+1)*(j-AliL3Transform::GetFirstRow(GetPatch())) + e;
+ Int_t index2 = (GetNEtaSegments()+1)*(j-AliHLTTransform::GetFirstRow(GetPatch())) + e;
- for(dPt2 = (AliL3LDigit*)etaPt[index2].fFirst; dPt2 != 0; dPt2 = (AliL3LDigit*)dPt2->fNext)
+ for(dPt2 = (AliHLTLDigit*)etaPt[index2].fFirst; dPt2 != 0; dPt2 = (AliHLTLDigit*)dPt2->fNext)
{
if(dPt1->fRow == dPt2->fRow)
{
}
//Get the correct histogrampointer:
- AliL3Histogram *hist = fParamSpace[e];
+ AliHLTHistogram *hist = fParamSpace[e];
if(!hist)
{
- printf("AliL3HoughTransformer::TransformCircleC() : No histogram at index %d\n",i);
+ printf("AliHLTHoughTransformer::TransformCircleC() : No histogram at index %d\n",i);
continue;
}
//Do the transform:
- float x1 = AliL3Transform::Row2X(dPt1->fRow) - AliL3Transform::Row2X(rowrange[0]);
- float x2 = AliL3Transform::Row2X(dPt2->fRow) - AliL3Transform::Row2X(rowrange[0]);
+ float x1 = AliHLTTransform::Row2X(dPt1->fRow) - AliHLTTransform::Row2X(rowrange[0]);
+ float x2 = AliHLTTransform::Row2X(dPt2->fRow) - AliHLTTransform::Row2X(rowrange[0]);
float y1 = dPt1->fY;
float y2 = dPt2->fY;
float theta = atan2(x2-x1,y1-y2);
}
#ifdef do_mc
-Int_t AliL3HoughTransformer::GetTrackID(Int_t etaindex,Double_t kappa,Double_t psi) const
+Int_t AliHLTHoughTransformer::GetTrackID(Int_t etaindex,Double_t kappa,Double_t psi) const
{
// Returns the MC label for a given peak found in the Hough space
if(!fDoMC)
{
- cerr<<"AliL3HoughTransformer::GetTrackID : Flag switched off"<<endl;
+ cerr<<"AliHLTHoughTransformer::GetTrackID : Flag switched off"<<endl;
return -1;
}
if(etaindex < 0 || etaindex > GetNEtaSegments())
{
- cerr<<"AliL3HoughTransformer::GetTrackID : Wrong etaindex "<<etaindex<<endl;
+ cerr<<"AliHLTHoughTransformer::GetTrackID : Wrong etaindex "<<etaindex<<endl;
return -1;
}
- AliL3Histogram *hist = fParamSpace[etaindex];
+ AliHLTHistogram *hist = fParamSpace[etaindex];
Int_t bin = hist->FindBin(kappa,psi);
Int_t label=-1;
Int_t max=0;
//nhits = max;
return label;
#else
- Int_t AliL3HoughTransformer::GetTrackID(Int_t /*etaindex*/,Double_t /*kappa*/,Double_t /*psi*/) const
+ Int_t AliHLTHoughTransformer::GetTrackID(Int_t /*etaindex*/,Double_t /*kappa*/,Double_t /*psi*/) const
{
// Returns the MC label for a given peak found in the Hough space
if(!fDoMC)
{
- cerr<<"AliL3HoughTransformer::GetTrackID : Flag switched off"<<endl;
+ cerr<<"AliHLTHoughTransformer::GetTrackID : Flag switched off"<<endl;
return -1;
}
- cout<<"AliL3HoughTransformer::GetTrackID : Compile with do_mc flag!"<<endl;
+ cout<<"AliHLTHoughTransformer::GetTrackID : Compile with do_mc flag!"<<endl;
return -1;
#endif
}
#define ALIL3HOUGHTRANSFORMER_H
//-------------------------------------------------------------------------
-// Class AliL3HoughTransformer
+// Class AliHLTHoughTransformer
// This is one of the possible implementations of the Hough Transform
// TPC tracking algorithms for HLT.
//-------------------------------------------------------------------------
-#include "AliL3RootTypes.h"
-#include "AliL3HoughBaseTransformer.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTHoughBaseTransformer.h"
-class AliL3Histogram;
+class AliHLTHistogram;
-class AliL3HoughTransformer : public AliL3HoughBaseTransformer {
+class AliHLTHoughTransformer : public AliHLTHoughBaseTransformer {
public:
- AliL3HoughTransformer();
- AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t netasegments,Bool_t DoEtaOverlap=kFALSE,Bool_t DoMC=kFALSE);
- virtual ~AliL3HoughTransformer();
+ AliHLTHoughTransformer();
+ AliHLTHoughTransformer(Int_t slice,Int_t patch,Int_t netasegments,Bool_t DoEtaOverlap=kFALSE,Bool_t DoMC=kFALSE);
+ virtual ~AliHLTHoughTransformer();
void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t ptres,Int_t nybin,Float_t psi);
void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax);
void Reset();
void TransformCircle();
void TransformCircle(Int_t *rowrange,Int_t every) {
- AliL3HoughBaseTransformer:: TransformCircle(rowrange,every);
+ AliHLTHoughBaseTransformer:: TransformCircle(rowrange,every);
}
void TransformCircleC(Int_t *rowrange,Int_t every=1);
void TransformLine(Int_t *rowrange=0,Float_t *phirange=0);
Int_t GetEtaIndex(Double_t eta) const;
void GetEtaIndexes(Double_t eta,Int_t *indexes) const;
- AliL3Histogram *GetHistogram(Int_t etaindex);
+ AliHLTHistogram *GetHistogram(Int_t etaindex);
Double_t GetEta(Int_t etaindex,Int_t slice) const;
Int_t GetTrackID(Int_t etaindex,Double_t kappa,Double_t psi) const;
private:
- AliL3Histogram **fParamSpace; //!
+ AliHLTHistogram **fParamSpace; //!
#ifdef do_mc
- AliL3TrackIndex **fTrackID; //!
+ AliHLTTrackIndex **fTrackID; //!
#endif
Bool_t fDoMC; // Calculate mc labels or not
Bool_t fEtaOverlap; // Allow overlapping of eta slice or not
void DeleteHistograms();
- ClassDef(AliL3HoughTransformer,1) //Normal Hough transformation class
+ ClassDef(AliHLTHoughTransformer,1) //Normal Hough transformation class
};
+typedef AliHLTHoughTransformer AliL3HoughTransformer; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3HoughTransformerGlobal.h"
-#include "AliL3FileHandler.h"
-#include "AliL3Transform.h"
-#include "AliL3DigitData.h"
-#include "AliL3Track.h"
-#include "AliL3Histogram.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughMaxFinder.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3SpacePointData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHoughTransformerGlobal.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTTransform.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTrack.h"
+#include "AliHLTHistogram.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTHoughMaxFinder.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTSpacePointData.h"
#include <TH2.h>
#endif
//_____________________________________________________________
-// AliL3HoughTransformerGlobal
+// AliHLTHoughTransformerGlobal
//
// Hough transformation class
//
-ClassImp(AliL3HoughTransformerGlobal)
+ClassImp(AliHLTHoughTransformerGlobal)
-AliL3HoughTransformerGlobal::AliL3HoughTransformerGlobal()
+AliHLTHoughTransformerGlobal::AliHLTHoughTransformerGlobal()
{
//default ctor
fPadMin=0;
fSeedPadRow=-1;
}
-AliL3HoughTransformerGlobal::AliL3HoughTransformerGlobal(Char_t *path,Int_t event)
+AliHLTHoughTransformerGlobal::AliHLTHoughTransformerGlobal(Char_t *path,Int_t event)
{
//normal ctor
strcpy(fPath,path);
fPsi=0;
fPtMin=0;
fNActiveSlice=0;
- fTracks = new AliL3TrackArray("AliL3HoughTrack");
- fPeakFinder = new AliL3HoughMaxFinder("KappaPhi",1000);
+ fTracks = new AliHLTTrackArray("AliHLTHoughTrack");
+ fPeakFinder = new AliHLTHoughMaxFinder("KappaPhi",1000);
}
-AliL3HoughTransformerGlobal::~AliL3HoughTransformerGlobal()
+AliHLTHoughTransformerGlobal::~AliHLTHoughTransformerGlobal()
{
//dtor
if(fPadMin)
}
-void AliL3HoughTransformerGlobal::CreateHistograms(Float_t /*ptmin*/,Int_t nxbin,Int_t nybin)
+void AliHLTHoughTransformerGlobal::CreateHistograms(Float_t /*ptmin*/,Int_t nxbin,Int_t nybin)
{
//create histograms for HT
if(fPsi==0)
{
- cerr<<"AliL3HoughTransformerGlobal::CreateHistograms : Call DefineRegion first"<<endl;
+ cerr<<"AliHLTHoughTransformerGlobal::CreateHistograms : Call DefineRegion first"<<endl;
exit(5);
}
- AliL3HoughTransformer::CreateHistograms(nxbin,fPtMin,nybin,-fPsi,fPsi);
- //AliL3HoughTransformer::CreateHistograms(fPtMin,ptmax,ptres,nybin,fPsi);
+ AliHLTHoughTransformer::CreateHistograms(nxbin,fPtMin,nybin,-fPsi,fPsi);
+ //AliHLTHoughTransformer::CreateHistograms(fPtMin,ptmax,ptres,nybin,fPsi);
}
-void AliL3HoughTransformerGlobal::TransformCircleC()
+void AliHLTHoughTransformerGlobal::TransformCircleC()
{
//Hough Transform
- AliL3Seed *clusters = new AliL3Seed[1000];
+ AliHLTSeed *clusters = new AliHLTSeed[1000];
Int_t nclusters = LoadClusterSeeds(clusters);
Int_t i=0,sector,row,slice;
slice = sl;
cout<<"Transforming in slice "<<slice<<endl;
- AliL3DigitRowData *rowPt = (AliL3DigitRowData*)fMemHandler[i++]->GetDataPointer(dummy);
+ AliHLTDigitRowData *rowPt = (AliHLTDigitRowData*)fMemHandler[i++]->GetDataPointer(dummy);
- for(Int_t padrow=0; padrow<AliL3Transform::GetNRows(); padrow++)
+ for(Int_t padrow=0; padrow<AliHLTTransform::GetNRows(); padrow++)
{
if(padrow == fSeedPadRow) continue;
- AliL3DigitData *digits = (AliL3DigitData*)rowPt->fDigitData;
+ AliHLTDigitData *digits = (AliHLTDigitData*)rowPt->fDigitData;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
if(charge > GetUpperThreshold() || charge < GetLowerThreshold())
continue;
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
Rotate(xyz,i-1-fNActiveSlice);
- AliL3Transform::XYZtoRPhiEta(rpe,xyz);
+ AliHLTTransform::XYZtoRPhiEta(rpe,xyz);
rpe[0] = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
Int_t etaindex = GetEtaIndex(rpe[2]);
- AliL3Histogram *hist = GetHistogram(etaindex);
+ AliHLTHistogram *hist = GetHistogram(etaindex);
for(Int_t l=0; l<nclusters; l++)
{
hist->Fill(kappa,psi,charge);
}
}
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
}
}
delete [] clusters;
}
-void AliL3HoughTransformerGlobal::TransformCircle()
+void AliHLTHoughTransformerGlobal::TransformCircle()
{
//Hough Transform
Int_t i=0,sector,row,slice;
slice = sl;
cout<<"Transforming in slice "<<slice<<endl;
- AliL3DigitRowData *rowPt = (AliL3DigitRowData*)fMemHandler[i++]->GetDataPointer(dummy);
+ AliHLTDigitRowData *rowPt = (AliHLTDigitRowData*)fMemHandler[i++]->GetDataPointer(dummy);
- for(Int_t padrow=0; padrow<AliL3Transform::GetNRows(); padrow++)
+ for(Int_t padrow=0; padrow<AliHLTTransform::GetNRows(); padrow++)
{
- AliL3DigitData *digits = (AliL3DigitData*)rowPt->fDigitData;
+ AliHLTDigitData *digits = (AliHLTDigitData*)rowPt->fDigitData;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
if(charge > GetUpperThreshold() || charge < GetLowerThreshold())
continue;
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
Rotate(xyz,i-1-fNActiveSlice);
- AliL3Transform::XYZtoRPhiEta(rpe,xyz);
+ AliHLTTransform::XYZtoRPhiEta(rpe,xyz);
rpe[0] = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
Int_t etaindex = GetEtaIndex(rpe[2]);
- AliL3Histogram *hist = GetHistogram(etaindex);
+ AliHLTHistogram *hist = GetHistogram(etaindex);
for(Int_t b=hist->GetFirstYbin(); b<=hist->GetLastYbin(); b++)
{
//hist->Fill(kappa,psi,(int)rint(log((Float_t)charge)));
}
}
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
}
}
}
-void AliL3HoughTransformerGlobal::VerifyTracks(AliL3TrackArray *tracks,Int_t &index)
+void AliHLTHoughTransformerGlobal::VerifyTracks(AliHLTTrackArray *tracks,Int_t &index)
{
//remove tracks which do not cross the seed padrow
for(int i=index; i<tracks->GetNTracks(); i++)
{
- AliL3HoughTrack *tr = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *tr = (AliHLTHoughTrack*)tracks->GetCheckedTrack(i);
if(!tr) continue;
Float_t angle=0;
- AliL3Transform::Local2GlobalAngle(&angle,GetSlice());
- if(!tr->CalculateReferencePoint(angle,AliL3Transform::Row2X(fSeedPadRow)))
+ AliHLTTransform::Local2GlobalAngle(&angle,GetSlice());
+ if(!tr->CalculateReferencePoint(angle,AliHLTTransform::Row2X(fSeedPadRow)))
{
tracks->Remove(i);
continue;
}
Int_t sector,row;
- AliL3Transform::Slice2Sector(GetSlice(),fSeedPadRow,sector,row);
+ AliHLTTransform::Slice2Sector(GetSlice(),fSeedPadRow,sector,row);
float xyz[3] = {tr->GetPointX(),tr->GetPointY(),tr->GetPointZ()};
- AliL3Transform::Global2Raw(xyz,sector,row);
- if(xyz[1]<0 || xyz[1]>=AliL3Transform::GetNPads(fSeedPadRow) ||
- xyz[2]<0 || xyz[2]>=AliL3Transform::GetNTimeBins())
+ AliHLTTransform::Global2Raw(xyz,sector,row);
+ if(xyz[1]<0 || xyz[1]>=AliHLTTransform::GetNPads(fSeedPadRow) ||
+ xyz[2]<0 || xyz[2]>=AliHLTTransform::GetNTimeBins())
tracks->Remove(i);
}
tracks->Compress();
index = tracks->GetNTracks();
}
-void AliL3HoughTransformerGlobal::FindPeaks(AliL3Histogram *hist,Float_t eta)
+void AliHLTHoughTransformerGlobal::FindPeaks(AliHLTHistogram *hist,Float_t eta)
{
//Peak Finder
fPeakFinder->Reset();
if(fPeakFinder->GetWeight(0) < 1000)
return;
- AliL3HoughTrack *track = (AliL3HoughTrack*)fTracks->NextTrack();
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)fTracks->NextTrack();
track->SetTrackParameters(fPeakFinder->GetXPeak(0),fPeakFinder->GetYPeak(0),fPeakFinder->GetWeight(0));
track->SetEta(eta);
- track->SetRowRange(AliL3Transform::GetFirstRow(0),AliL3Transform::GetLastRow(5));
+ track->SetRowRange(AliHLTTransform::GetFirstRow(0),AliHLTTransform::GetLastRow(5));
}
-void AliL3HoughTransformerGlobal::Rotate(Float_t *xyz,Int_t relslice)
+void AliHLTHoughTransformerGlobal::Rotate(Float_t *xyz,Int_t relslice)
{
//Rotate coordinates from one slice to the slice relative to it;
//-1 means lower
//1 means upper
- Float_t angle = (Float_t)relslice*AliL3Transform::Deg2Rad(20);
+ Float_t angle = (Float_t)relslice*AliHLTTransform::Deg2Rad(20);
Float_t x=xyz[0],y=xyz[1];
xyz[0] = x*cos(angle) - y*sin(angle);
xyz[1] = x*sin(angle) + y*cos(angle);
}
-void AliL3HoughTransformerGlobal::DefineRegion(Float_t minpt,Float_t /*linephi*/,Int_t seedpadrow)
+void AliHLTHoughTransformerGlobal::DefineRegion(Float_t minpt,Float_t /*linephi*/,Int_t seedpadrow)
{
//Setup the region to be included in the transform
//This function should be called only once, since it is the same for all slices.
fSeedPadRow=seedpadrow;
fPtMin = minpt;
- fPadMin = new Int_t[AliL3Transform::GetNRows()];
- fPadMax = new Int_t[AliL3Transform::GetNRows()];
+ fPadMin = new Int_t[AliHLTTransform::GetNRows()];
+ fPadMax = new Int_t[AliHLTTransform::GetNRows()];
//Phirange of data which should be included in the transform
//Here we assume a min pt to define it; fPtMin
if(phi2 > phi)
phi = phi2;
- cout<<"Phiangle "<<phi*180/AliL3Transform::Pi()<<" psi "<<fPsi*180/AliL3Transform::Pi()<<" nslices "<<fNActiveSlice<<endl;
+ cout<<"Phiangle "<<phi*180/AliHLTTransform::Pi()<<" psi "<<fPsi*180/AliHLTTransform::Pi()<<" nslices "<<fNActiveSlice<<endl;
Float_t rotangle = fNActiveSlice*20;
//Calculate the LUT for min/max pad for every padrow, and check which slices we need.
Int_t pad,sector,row;
- for(Int_t i=0; i<AliL3Transform::GetNRows(); i++)
+ for(Int_t i=0; i<AliHLTTransform::GetNRows(); i++)
{
- AliL3Transform::Slice2Sector(0,i,sector,row);
+ AliHLTTransform::Slice2Sector(0,i,sector,row);
//Lower boundary:
- pad = AliL3Transform::GetNPads(i)-1;
+ pad = AliHLTTransform::GetNPads(i)-1;
while(pad >= 0)
{
- AliL3Transform::Raw2Local(xyz,sector,row,pad,0);
- if(AliL3Transform::GetPhi(xyz) > -1.*phi + AliL3Transform::Deg2Rad(rotangle))
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,0);
+ if(AliHLTTransform::GetPhi(xyz) > -1.*phi + AliHLTTransform::Deg2Rad(rotangle))
fPadMin[i] = pad;
else
break;
//Upper boundary
pad = 0;
- while(pad < AliL3Transform::GetNPads(i))
+ while(pad < AliHLTTransform::GetNPads(i))
{
- AliL3Transform::Raw2Local(xyz,sector,row,pad,0);
- if(AliL3Transform::GetPhi(xyz) < phi - AliL3Transform::Deg2Rad(rotangle))
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,0);
+ if(AliHLTTransform::GetPhi(xyz) < phi - AliHLTTransform::Deg2Rad(rotangle))
fPadMax[i] = pad;
else
break;
}
-Float_t AliL3HoughTransformerGlobal::CalculateBorder(Float_t *xyz,Int_t charge)
+Float_t AliHLTHoughTransformerGlobal::CalculateBorder(Float_t *xyz,Int_t charge)
{
//Define Hough space borders
- Double_t lineradius = sqrt(pow(AliL3Transform::Row2X(fSeedPadRow),2) + pow(AliL3Transform::GetMaxY(fSeedPadRow),2));
+ Double_t lineradius = sqrt(pow(AliHLTTransform::Row2X(fSeedPadRow),2) + pow(AliHLTTransform::GetMaxY(fSeedPadRow),2));
- Double_t kappa = -charge*AliL3Transform::GetBField()*AliL3Transform::GetBFact()/fPtMin;
+ Double_t kappa = -charge*AliHLTTransform::GetBField()*AliHLTTransform::GetBFact()/fPtMin;
//Calculate the psi angle of the track = emission angle with x-axis in origo
if( fabs(lineradius*kappa/2) > 1)
{
- cerr<<"AliL3TransformerGlobal::DefineRegion : Angle too big"<<endl;
+ cerr<<"AliHLTTransformerGlobal::DefineRegion : Angle too big"<<endl;
exit(5);
}
Int_t nslices=0;
- Float_t psi = AliL3Transform::Deg2Rad(10) - asin(lineradius*kappa/2);
+ Float_t psi = AliHLTTransform::Deg2Rad(10) - asin(lineradius*kappa/2);
if(charge > 0)
fPsi=psi;
cout<<"Calculated psi-angle "<<fPsi<<endl;
- AliL3Track track;
+ AliHLTTrack track;
track.SetFirstPoint(0,0,0);
track.SetPt(fPtMin);
track.SetPsi(psi);
Int_t crossingrow=0;
if(charge < 0)
- crossingrow = AliL3Transform::GetNRows()-1;
+ crossingrow = AliHLTTransform::GetNRows()-1;
Float_t rotangle;
{
if(crossingrow==0)
{
- cerr<<"AliL3HoughTransformerGlobal::DefineRegion : Error calculating point1 on row "<<crossingrow<<endl;
+ cerr<<"AliHLTHoughTransformerGlobal::DefineRegion : Error calculating point1 on row "<<crossingrow<<endl;
exit(5);
}
crossingrow--;
}
else
{
- while(!track.CalculateReferencePoint(AliL3Transform::Deg2Rad(rotangle),AliL3Transform::Row2X(crossingrow)))
+ while(!track.CalculateReferencePoint(AliHLTTransform::Deg2Rad(rotangle),AliHLTTransform::Row2X(crossingrow)))
{
if(crossingrow==0)
{
- cerr<<"AliL3HoughTransformerGlobal::DefineRegion : Error calculating point2 on row "<<crossingrow<<endl;
+ cerr<<"AliHLTHoughTransformerGlobal::DefineRegion : Error calculating point2 on row "<<crossingrow<<endl;
exit(5);
}
crossingrow--;
Rotate(xyz,-1*nslices);
Int_t sector,row;
- AliL3Transform::Slice2Sector(0,crossingrow,sector,row);
- AliL3Transform::Local2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(0,crossingrow,sector,row);
+ AliHLTTransform::Local2Raw(xyz,sector,row);
if(xyz[1] < 0)
{
if(crossingrow>0)
{
- cerr<<"AliL3HoughTransformerGlobal::DefineRegion : Wrong pad, probably a deadzone... "<<xyz[1]<<endl;
+ cerr<<"AliHLTHoughTransformerGlobal::DefineRegion : Wrong pad, probably a deadzone... "<<xyz[1]<<endl;
exit(5);
}
else
return 0;//here you only want the crossing point with the outer padrow
}
- if(xyz[1] >= AliL3Transform::GetNPads(crossingrow)) //Here the range is even one more slice away
+ if(xyz[1] >= AliHLTTransform::GetNPads(crossingrow)) //Here the range is even one more slice away
{
cerr<<"One more slice with pad "<<xyz[1]<<endl;
nslices++;
if(charge < 0)
- crossingrow = AliL3Transform::GetNRows()-1;
+ crossingrow = AliHLTTransform::GetNRows()-1;
goto redefine;
}
return phi;
}
-void AliL3HoughTransformerGlobal::LoadActiveSlices(Bool_t binary)
+void AliHLTHoughTransformerGlobal::LoadActiveSlices(Bool_t binary)
{
//Load active slices
if(fMemHandler)
UnloadActiveSlices();
- fMemHandler = new AliL3MemHandler*[(fNActiveSlice*2 + 1)];
+ fMemHandler = new AliHLTMemHandler*[(fNActiveSlice*2 + 1)];
Char_t filename[1024];
UInt_t dummy;
Int_t i=0,slice;
else
slice = sl;
cout<<"Loading slice "<<slice<<endl;
- fMemHandler[i] = new AliL3FileHandler();
+ fMemHandler[i] = new AliHLTFileHandler();
fMemHandler[i]->Init(slice,-1);
if(binary)
{
}
-void AliL3HoughTransformerGlobal::UnloadActiveSlices()
+void AliHLTHoughTransformerGlobal::UnloadActiveSlices()
{
//Unload active slices
if(!fMemHandler)
fMemHandler=0;
}
-Int_t AliL3HoughTransformerGlobal::LoadClusterSeeds(AliL3Seed *seeds)
+Int_t AliHLTHoughTransformerGlobal::LoadClusterSeeds(AliHLTSeed *seeds)
{
//Load cluster seeds
Char_t filename[1024];
UInt_t npoints;
sprintf(filename,"%s/hough/points_%d_%d_%d.raw",fPath,fEvent,GetSlice(),-1);
//sprintf(filename,"../tracker/points_%d_%d_%d.raw",fEvent,GetSlice(),-1);
- AliL3MemHandler mem;
+ AliHLTMemHandler mem;
if(!mem.SetBinaryInput(filename))
{
- cerr<<"AliL3HoughTransformerGlobal::LoadClusterSeeds : Cannot open file "<<filename<<endl;
+ cerr<<"AliHLTHoughTransformerGlobal::LoadClusterSeeds : Cannot open file "<<filename<<endl;
exit(5);
}
- AliL3SpacePointData *points = (AliL3SpacePointData*)mem.Allocate();
+ AliHLTSpacePointData *points = (AliHLTSpacePointData*)mem.Allocate();
mem.Binary2Memory(npoints,points);
mem.CloseBinaryInput();
Int_t lrow = (Int_t)points[i].fPadRow;
if(lrow < fSeedPadRow) continue;
if(lrow > fSeedPadRow) break;
- if(fabs(points[i].fY) > AliL3Transform::GetMaxY(lrow))
+ if(fabs(points[i].fY) > AliHLTTransform::GetMaxY(lrow))
{
- cerr<<"AliL3HoughTransformerGlobal::LoadClusterSeeds : Seeds seems not to be in local coordinates: "
+ cerr<<"AliHLTHoughTransformerGlobal::LoadClusterSeeds : Seeds seems not to be in local coordinates: "
<<points[i].fY<<endl;
exit(5);
}
- Float_t xyz[3] = {AliL3Transform::Row2X(lrow),points[i].fY,points[i].fZ};
- Double_t eta = AliL3Transform::GetEta(xyz);
+ Float_t xyz[3] = {AliHLTTransform::Row2X(lrow),points[i].fY,points[i].fZ};
+ Double_t eta = AliHLTTransform::GetEta(xyz);
seeds[counter].fPhi = atan2(xyz[1],xyz[0]);
seeds[counter].fRadius = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
seeds[counter].fIndex = GetEtaIndex(eta);
return counter;
}
-void AliL3HoughTransformerGlobal::DisplayActiveRegion(TH2F *hist,Int_t etaindex)
+void AliHLTHoughTransformerGlobal::DisplayActiveRegion(TH2F *hist,Int_t etaindex)
{
//Fill the active region in a histogram
else
slice = sl;
cout<<"Displaying slice "<<slice<<endl;
- AliL3DigitRowData *rowPt = (AliL3DigitRowData*)fMemHandler[i++]->GetDataPointer(dummy);
- for(Int_t padrow=0; padrow<AliL3Transform::GetNRows(); padrow++)
+ AliHLTDigitRowData *rowPt = (AliHLTDigitRowData*)fMemHandler[i++]->GetDataPointer(dummy);
+ for(Int_t padrow=0; padrow<AliHLTTransform::GetNRows(); padrow++)
{
- AliL3DigitData *digits = (AliL3DigitData*)rowPt->fDigitData;
+ AliHLTDigitData *digits = (AliHLTDigitData*)rowPt->fDigitData;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
Int_t pad = digits[j].fPad;
if(i==fNActiveSlice*2+1 && pad>fPadMax[padrow])
continue;
Int_t time = digits[j].fTime;
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
Rotate(xyz,i-1-fNActiveSlice);
- Double_t eta = AliL3Transform::GetEta(xyz);
+ Double_t eta = AliHLTTransform::GetEta(xyz);
if(GetEtaIndex(eta) == etaindex)
hist->Fill(xyz[0],xyz[1]);
}
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
}
}
}
#ifndef ALIL3HOUGHTRANSFORMERGLOBAL_H
#define ALIL3HOUGHTRANSFORMERGLOBAL_H
-#include "AliL3RootTypes.h"
-#include "AliL3HoughTransformer.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTHoughTransformer.h"
-class AliL3Histogram;
-class AliL3MemHandler;
-class AliL3TrackArray;
-class AliL3HoughMaxFinder;
+class AliHLTHistogram;
+class AliHLTMemHandler;
+class AliHLTTrackArray;
+class AliHLTHoughMaxFinder;
class TH2F;
-struct AliL3Seed {
+struct AliHLTSeed {
Float_t fPhi;//Track emission angle
Float_t fRadius;//Track radius
Float_t fEta;//Track eta
Int_t fIndex;//index?
};
-class AliL3HoughTransformerGlobal : public AliL3HoughTransformer {
+class AliHLTHoughTransformerGlobal : public AliHLTHoughTransformer {
public:
- AliL3HoughTransformerGlobal();
- AliL3HoughTransformerGlobal(Char_t *path,Int_t event=0);
- virtual ~AliL3HoughTransformerGlobal();
+ AliHLTHoughTransformerGlobal();
+ AliHLTHoughTransformerGlobal(Char_t *path,Int_t event=0);
+ virtual ~AliHLTHoughTransformerGlobal();
void CreateHistograms(Float_t ptmin,Int_t nxbin,Int_t nybin);
void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t pres,Int_t nybin,Float_t psi) {
- AliL3HoughTransformer::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
+ AliHLTHoughTransformer::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
}
void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax) {
- AliL3HoughTransformer::CreateHistograms(nxbin,ptmin,nybin,phimin,phimax);
+ AliHLTHoughTransformer::CreateHistograms(nxbin,ptmin,nybin,phimin,phimax);
}
void CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
Int_t nybin,Float_t ymin,Float_t ymax) {
- AliL3HoughTransformer::CreateHistograms(nxbin,xmin,xmax,nybin,ymin,ymax);
+ AliHLTHoughTransformer::CreateHistograms(nxbin,xmin,xmax,nybin,ymin,ymax);
}
- void VerifyTracks(AliL3TrackArray *tracks,Int_t &index);
+ void VerifyTracks(AliHLTTrackArray *tracks,Int_t &index);
void TransformCircle();
void TransformCircle(Int_t *row_range,Int_t every) {
- AliL3HoughTransformer::TransformCircle(row_range,every);
+ AliHLTHoughTransformer::TransformCircle(row_range,every);
}
void TransformCircleC();
void TransformCircleC(Int_t *rowrange,Int_t every){
- AliL3HoughTransformer::TransformCircleC(rowrange,every);
+ AliHLTHoughTransformer::TransformCircleC(rowrange,every);
}
void DefineRegion(Float_t ptmin,Float_t linephi,Int_t seedpadrow);
void LoadActiveSlices(Bool_t binary=kTRUE);
void SetSeedPadRow(Int_t i) {fSeedPadRow=i;}
- AliL3TrackArray *GetTracks() {return fTracks;}
+ AliHLTTrackArray *GetTracks() {return fTracks;}
private:
Int_t fEvent;//Event index
Float_t fPsi;//psi range
Float_t fPtMin;//minimum pt
Int_t fSeedPadRow;//?
- AliL3MemHandler **fMemHandler; //!
- AliL3TrackArray *fTracks; //!
- AliL3HoughMaxFinder *fPeakFinder; //!
+ AliHLTMemHandler **fMemHandler; //!
+ AliHLTTrackArray *fTracks; //!
+ AliHLTHoughMaxFinder *fPeakFinder; //!
void Rotate(Float_t *xyz,Int_t relslice);
- void FindPeaks(AliL3Histogram *hist,Float_t eta);
- Int_t LoadClusterSeeds(AliL3Seed *seeds);
+ void FindPeaks(AliHLTHistogram *hist,Float_t eta);
+ Int_t LoadClusterSeeds(AliHLTSeed *seeds);
Float_t CalculateBorder(Float_t *xyz,Int_t charge);
- ClassDef(AliL3HoughTransformerGlobal,1)
+ ClassDef(AliHLTHoughTransformerGlobal,1)
};
+typedef AliHLTHoughTransformerGlobal AliL3HoughTransformerGlobal; // for backward compatibility
+
#endif
// Author: Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-/** /class AliL3HoughTransformerLUT
+/** /class AliHLTHoughTransformerLUT
//<pre>
//_____________________________________________________________
-// AliL3HoughTransformerLUT
+// AliHLTHoughTransformerLUT
//
// Hough transformation class using Look-UP-Tables
//
//</pre>
*/
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3HoughTransformerLUT.h"
-#include "AliL3Transform.h"
-#include "AliL3MemHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Histogram.h"
-#include "AliL3HistogramAdaptive.h"
+#include "AliHLTLogging.h"
+#include "AliHLTHoughTransformerLUT.h"
+#include "AliHLTTransform.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTHistogram.h"
+#include "AliHLTHistogramAdaptive.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3HoughTransformerLUT)
+ClassImp(AliHLTHoughTransformerLUT)
-AliL3HoughTransformerLUT::AliL3HoughTransformerLUT() : AliL3HoughBaseTransformer()
+AliHLTHoughTransformerLUT::AliHLTHoughTransformerLUT() : AliHLTHoughBaseTransformer()
{
// default contructor
fParamSpace=0;
fX=fY=0.;
}
-AliL3HoughTransformerLUT::AliL3HoughTransformerLUT(Int_t slice,Int_t patch,Int_t nEtaSegments) : AliL3HoughBaseTransformer(slice,patch,nEtaSegments)
+AliHLTHoughTransformerLUT::AliHLTHoughTransformerLUT(Int_t slice,Int_t patch,Int_t nEtaSegments) : AliHLTHoughBaseTransformer(slice,patch,nEtaSegments)
{
// constructor
fParamSpace=0;
Init(slice,patch,nEtaSegments);
}
-AliL3HoughTransformerLUT::~AliL3HoughTransformerLUT()
+AliHLTHoughTransformerLUT::~AliHLTHoughTransformerLUT()
{
// destructor
DeleteHistograms();
}
}
-void AliL3HoughTransformerLUT::DeleteHistograms()
+void AliHLTHoughTransformerLUT::DeleteHistograms()
{
// deletes all histograms
if(fNPhi0){
}
}
-void AliL3HoughTransformerLUT::Init(Int_t slice,Int_t patch,Int_t nEtaSegments,Int_t /*nSeqs*/)
+void AliHLTHoughTransformerLUT::Init(Int_t slice,Int_t patch,Int_t nEtaSegments,Int_t /*nSeqs*/)
{
// Initialization
- AliL3HoughBaseTransformer::Init(slice,patch,nEtaSegments);
+ AliHLTHoughBaseTransformer::Init(slice,patch,nEtaSegments);
//delete old LUT tables
if(fNRows){
}
//member values
- fMinRow=AliL3Transform::GetFirstRow(patch);;
- fMaxRow=AliL3Transform::GetLastRow(patch);;
- fNRows=AliL3Transform::GetNRows(patch);;
+ fMinRow=AliHLTTransform::GetFirstRow(patch);;
+ fMaxRow=AliHLTTransform::GetLastRow(patch);;
+ fNRows=AliHLTTransform::GetNRows(patch);;
fNEtas=nEtaSegments;
if(fNEtas!=GetNEtaSegments()) {
- cerr << "AliL3HoughTransformerLUT::Init -> Error: Number of Etas must be equal!" << endl;
+ cerr << "AliHLTHoughTransformerLUT::Init -> Error: Number of Etas must be equal!" << endl;
exit(1);
}
- AliL3Transform::Slice2Sector(slice,fMinRow,fSector,fSectorRow);
- fZSign = slice < 18 ? 1:-1; //see AliL3Transformer
+ AliHLTTransform::Slice2Sector(slice,fMinRow,fSector,fSectorRow);
+ fZSign = slice < 18 ? 1:-1; //see AliHLTTransformer
fSlice = slice;
- fZLengthPlusOff=AliL3Transform::GetZLength()+AliL3Transform::GetZOffset();
- fTimeWidth=AliL3Transform::GetZWidth();
+ fZLengthPlusOff=AliHLTTransform::GetZLength()+AliHLTTransform::GetZOffset();
+ fTimeWidth=AliHLTTransform::GetZWidth();
fPadPitch=0;
- if(fSector<AliL3Transform::GetNSectorLow())
- fPadPitch=AliL3Transform::GetPadPitchWidthLow();
+ if(fSector<AliHLTTransform::GetNSectorLow())
+ fPadPitch=AliHLTTransform::GetPadPitchWidthLow();
else
- fPadPitch=AliL3Transform::GetPadPitchWidthUp();
+ fPadPitch=AliHLTTransform::GetPadPitchWidthUp();
Float_t etaMax=GetEtaMax();
Float_t etaMin=GetEtaMin();
fLUTX=new Float_t[fNRows];
fLUTY=new Float_t[fNRows];
for(Int_t rr=0;rr<fNRows;rr++){
- fLUTX[rr]=Float_t(AliL3Transform::Row2X(rr+fMinRow));
- fLUTY[rr]=Float_t(0.5*(AliL3Transform::GetNPads(rr+fMinRow)-1)*fPadPitch);
+ fLUTX[rr]=Float_t(AliHLTTransform::Row2X(rr+fMinRow));
+ fLUTY[rr]=Float_t(0.5*(AliHLTTransform::GetNPads(rr+fMinRow)-1)*fPadPitch);
//cout << rr << ": " << (Float_t)fLUTX[rr] << " " << (Float_t)fLUTY[rr] << endl;
}
}
}
-void AliL3HoughTransformerLUT::CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t ptres,
+void AliHLTHoughTransformerLUT::CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t ptres,
Int_t nybin,Float_t psi)
{
//Create histograms.
if(ptmin > ptmax)
{
- cerr<<"AliL3HoughTransformerLUT::CreateHistograms: Error in ptrange "<<ptmin<<" "<<ptmax<<endl;
+ cerr<<"AliHLTHoughTransformerLUT::CreateHistograms: Error in ptrange "<<ptmin<<" "<<ptmax<<endl;
return;
}
if(psi < 0)
{
- cerr<<"AliL3HoughTransformerLUT::CreateHistograms: Wrong psi-angle "<<psi<<endl;
+ cerr<<"AliHLTHoughTransformerLUT::CreateHistograms: Wrong psi-angle "<<psi<<endl;
return;
}
- fParamSpace = new AliL3Histogram*[fNEtas];
+ fParamSpace = new AliHLTHistogram*[fNEtas];
Char_t histname[256];
for(Int_t i=0; i<GetNEtaSegments(); i++)
{
sprintf(histname,"paramspace_%d",i);
- fParamSpace[i] = new AliL3HistogramAdaptive(histname,ptmin,ptmax,ptres,nybin,-psi,psi);
+ fParamSpace[i] = new AliHLTHistogramAdaptive(histname,ptmin,ptmax,ptres,nybin,-psi,psi);
}
//create lookup table for sin and cos
fLUT2sinphi0=new Float_t[fNPhi0];
fLUT2cosphi0=new Float_t[fNPhi0];
fLUTKappa=new Float_t[fNPhi0];
- AliL3Histogram *hist=fParamSpace[0];
+ AliHLTHistogram *hist=fParamSpace[0];
Int_t i=0;
for(Int_t b=hist->GetFirstYbin(); b<=hist->GetLastYbin(); b++)
{
}
}
-void AliL3HoughTransformerLUT::CreateHistograms(Int_t nxbin,Float_t ptMin,Int_t nybin,Float_t phimin,Float_t phimax)
+void AliHLTHoughTransformerLUT::CreateHistograms(Int_t nxbin,Float_t ptMin,Int_t nybin,Float_t phimin,Float_t phimax)
{
//Create the histograms (parameter space).
//These are 2D histograms, span by kappa (curvature of track) and phi0 (emission angle with x-axis).
//phi_min = mimimum phi0 (degrees)
//phi_max = maximum phi0 (degrees)
- Double_t x = AliL3Transform::GetBFact()*AliL3Transform::GetBField()/ptMin;
- //Double_t torad = AliL3Transform::Pi()/180;
+ Double_t x = AliHLTTransform::GetBFact()*AliHLTTransform::GetBField()/ptMin;
+ //Double_t torad = AliHLTTransform::Pi()/180;
CreateHistograms(nxbin,-1.*x,x,nybin,phimin/**torad*/,phimax/**torad*/);
}
-void AliL3HoughTransformerLUT::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,Int_t nybin,Float_t ymin,Float_t ymax)
+void AliHLTHoughTransformerLUT::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,Int_t nybin,Float_t ymin,Float_t ymax)
{
- fParamSpace = new AliL3Histogram*[fNEtas];
+ fParamSpace = new AliHLTHistogram*[fNEtas];
Char_t histname[256];
for(Int_t i=0; i<fNEtas; i++)
{
sprintf(histname,"paramspace_%d",i);
- fParamSpace[i] = new AliL3Histogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
+ fParamSpace[i] = new AliHLTHistogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
}
//create lookup table for sin and cos
fLUT2cosphi0=new Float_t[fNPhi0];
fLUTKappa=new Float_t[fNPhi0];
- AliL3Histogram *hist=fParamSpace[0];
+ AliHLTHistogram *hist=fParamSpace[0];
Int_t i=0;
for(Int_t b=hist->GetFirstYbin(); b<=hist->GetLastYbin(); b++)
{
}
}
-void AliL3HoughTransformerLUT::Reset()
+void AliHLTHoughTransformerLUT::Reset()
{
//Reset all the histograms
if(!fParamSpace)
{
- LOG(AliL3Log::kWarning,"AliL3HoughTransformer::Reset","Histograms")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformer::Reset","Histograms")
<<"No histograms to reset"<<ENDLOG;
return;
}
fParamSpace[i]->Reset();
}
-Int_t AliL3HoughTransformerLUT::GetEtaIndex(Double_t eta) const
+Int_t AliHLTHoughTransformerLUT::GetEtaIndex(Double_t eta) const
{
//Return the histogram index of the corresponding eta.
#endif
}
-AliL3Histogram *AliL3HoughTransformerLUT::GetHistogram(Int_t etaIndex)
+AliHLTHistogram *AliHLTHoughTransformerLUT::GetHistogram(Int_t etaIndex)
{
// gets hitogram
if(!fParamSpace || etaIndex >= fNEtas || etaIndex < 0)
return fParamSpace[etaIndex];
}
-Double_t AliL3HoughTransformerLUT::GetEta(Int_t etaIndex,Int_t slice) const
+Double_t AliHLTHoughTransformerLUT::GetEta(Int_t etaIndex,Int_t slice) const
{
// gets eta
if(etaIndex >= fNEtas || etaIndex < 0){
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerLUT::GetEta","Index") << "Index out of range."<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerLUT::GetEta","Index") << "Index out of range."<<ENDLOG;
return 0.;
}
if(slice != fSlice){
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerLUT::GetEta","Index") << "Given slice does not match internal slice."<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerLUT::GetEta","Index") << "Given slice does not match internal slice."<<ENDLOG;
return 0.;
}
return(fLUTEtaReal[etaIndex]);
}
-void AliL3HoughTransformerLUT::TransformCircle()
+void AliHLTHoughTransformerLUT::TransformCircle()
{
//Transform the input data with a circle HT.
//The function loops over all the data, and transforms each pixel with the equation:
//
//After a day of testing it is proven that this h
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformerLUT::TransformCircle","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformerLUT::TransformCircle","Data")
<<"No input data "<<ENDLOG;
return;
}
for(Int_t i=fMinRow, row=0; i<=fMaxRow; i++, row++)
{
//Get the data on this padrow:
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
if(i != (Int_t)tempPt->fRow)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformerLUT::TransformCircle","Data")
- <<"AliL3HoughTransformerLUT::TransformCircle : Mismatching padrow numbering "<<i<<" != "<<(Int_t)tempPt->fRow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformerLUT::TransformCircle","Data")
+ <<"AliHLTHoughTransformerLUT::TransformCircle : Mismatching padrow numbering "<<i<<" != "<<(Int_t)tempPt->fRow<<ENDLOG;
continue;
}
Int_t etaIndex = GetEtaIndex(eta);
#endif
if(etaIndex < 0 || etaIndex >= fNEtas){
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerLUT::TransformCircle","Histograms")<<"No histograms corresponding to eta index value of "<<etaIndex<<"."<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerLUT::TransformCircle","Histograms")<<"No histograms corresponding to eta index value of "<<etaIndex<<"."<<ENDLOG;
continue;
}
if(fAccCharge>0) AddCurveToHistogram(-1);
//Move the data pointer to the next padrow:
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
}
-void AliL3HoughTransformerLUT::Print()
+void AliHLTHoughTransformerLUT::Print()
{
// debug printout
cout << "fSlice: " << GetSlice() << endl;
#ifndef ALIL3_HOUGHTRANSFORMERLUT
#define ALIL3_HOUGHTRANSFORMERLUT
-#include "AliL3RootTypes.h"
-#include "AliL3HoughBaseTransformer.h"
-#include "AliL3Histogram.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTHoughBaseTransformer.h"
+#include "AliHLTHistogram.h"
/* use if you also want the eta index
to be looked up and linear searched */
//#define FULLLUT
-class AliL3HoughTransformerLUT : public AliL3HoughBaseTransformer {
+class AliHLTHoughTransformerLUT : public AliHLTHoughBaseTransformer {
public:
- AliL3HoughTransformerLUT();
- AliL3HoughTransformerLUT(Int_t slice,Int_t patch,Int_t nEtaSegments);
- virtual ~AliL3HoughTransformerLUT();
+ AliHLTHoughTransformerLUT();
+ AliHLTHoughTransformerLUT(Int_t slice,Int_t patch,Int_t nEtaSegments);
+ virtual ~AliHLTHoughTransformerLUT();
void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t pres,Int_t nybin,Float_t psi);
void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax);
void TransformCircle();
void TransformCircle(Int_t *row_range,Int_t every) {
- AliL3HoughBaseTransformer::TransformCircle(row_range,every);
+ AliHLTHoughBaseTransformer::TransformCircle(row_range,every);
}
Int_t GetEtaIndex(Double_t eta) const;
- AliL3Histogram *GetHistogram(Int_t etaIndex);
+ AliHLTHistogram *GetHistogram(Int_t etaIndex);
Double_t GetEta(Int_t etaIndex,Int_t slice) const;
void Print();
void Init(Int_t slice=0,Int_t patch=0,Int_t nEtaSegments=100,Int_t nSeqs=-1);
protected:
- AliL3Histogram **fParamSpace; //!
+ AliHLTHistogram **fParamSpace; //!
void DeleteHistograms();
Int_t FindIndex(Float_t rz2, Int_t start=-100) const;
void AddCurveToHistogram(Int_t newEtaIndex=-1);
- ClassDef(AliL3HoughTransformerLUT,1) //LUT Hough transformation class
+ ClassDef(AliHLTHoughTransformerLUT,1) //LUT Hough transformation class
};
-inline Float_t AliL3HoughTransformerLUT::CalcRoverZ2(Float_t eta) const
+typedef AliHLTHoughTransformerLUT AliL3HoughTransformerLUT; // for backward comaptibility
+
+inline Float_t AliHLTHoughTransformerLUT::CalcRoverZ2(Float_t eta) const
{
Float_t e=exp(2*eta);
Float_t ret=(e+1)/(e-1);
return ret;
}
-inline Float_t AliL3HoughTransformerLUT::CalcEta(Float_t roverz2) const
+inline Float_t AliHLTHoughTransformerLUT::CalcEta(Float_t roverz2) const
{
Float_t rz=sqrt(roverz2);
if(fZSign<0) rz=-rz;
return ret;
}
-inline Float_t AliL3HoughTransformerLUT::CalcX(Int_t row) const
+inline Float_t AliHLTHoughTransformerLUT::CalcX(Int_t row) const
{
return fLUTX[row];
}
-inline Float_t AliL3HoughTransformerLUT::CalcY(Int_t pad,Int_t row) const
+inline Float_t AliHLTHoughTransformerLUT::CalcY(Int_t pad,Int_t row) const
{
return pad*fPadPitch-fLUTY[row];
}
-inline Float_t AliL3HoughTransformerLUT::CalcZ(Int_t time) const
+inline Float_t AliHLTHoughTransformerLUT::CalcZ(Int_t time) const
{
Float_t ret=time*fTimeWidth;
if(fZSign>0) ret=fZLengthPlusOff-ret;
return ret;
}
-inline void AliL3HoughTransformerLUT::AddCurveToHistogram(Int_t newEtaIndex)
+inline void AliHLTHoughTransformerLUT::AddCurveToHistogram(Int_t newEtaIndex)
{
//get correct histogrampointer
- AliL3Histogram *hist = fParamSpace[fLastIndex];
+ AliHLTHistogram *hist = fParamSpace[fLastIndex];
//Fill the histogram along the phirange
Float_t r2=fX*fX+fY*fY;
fLastIndex=newEtaIndex;
}
-inline Int_t AliL3HoughTransformerLUT::FindIndex(Float_t rz2, Int_t start) const
+inline Int_t AliHLTHoughTransformerLUT::FindIndex(Float_t rz2, Int_t start) const
{
//could improve search through devide and conquere strategy
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-
-#include "AliL3Logging.h"
-#include "AliL3HoughTransformerNew.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Transform.h"
-#include "AliL3DigitData.h"
-#include "AliL3HistogramAdaptive.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3Vertex.h"
-#include "AliL3Fitter.h"
+#include "AliHLTStandardIncludes.h"
+
+#include "AliHLTLogging.h"
+#include "AliHLTHoughTransformerNew.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTTransform.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTHistogramAdaptive.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTVertex.h"
+#include "AliHLTFitter.h"
#if __GNUC__ >= 3
using namespace std;
#endif
//_____________________________________________________________
-// AliL3HoughTransformerNew
+// AliHLTHoughTransformerNew
//
// Hough transformation class
//
-ClassImp(AliL3HoughTransformerNew)
+ClassImp(AliHLTHoughTransformerNew)
-AliL3HoughTransformerNew::AliL3HoughTransformerNew()
+AliHLTHoughTransformerNew::AliHLTHoughTransformerNew()
{
//default ctor
fParamSpace3D=0;
}
-AliL3HoughTransformerNew::AliL3HoughTransformerNew(Int_t slice,Int_t patch,Int_t netasegments) : AliL3HoughTransformer(slice,patch,netasegments)
+AliHLTHoughTransformerNew::AliHLTHoughTransformerNew(Int_t slice,Int_t patch,Int_t netasegments) : AliHLTHoughTransformer(slice,patch,netasegments)
{
//normal ctor
fParamSpace3D=0;
}
-AliL3HoughTransformerNew::~AliL3HoughTransformerNew()
+AliHLTHoughTransformerNew::~AliHLTHoughTransformerNew()
{
//dtor
if(fParamSpace3D)
delete fParamSpace3D;
}
-void AliL3HoughTransformerNew::CreateHistograms(Int_t nxbins,Float_t xlow,Float_t xup,
+void AliHLTHoughTransformerNew::CreateHistograms(Int_t nxbins,Float_t xlow,Float_t xup,
Int_t nybins,Float_t ylow,Float_t yup,
Int_t nzbins,Float_t zlow,Float_t zup)
{
fParamSpace3D = new TH3F(name,"",nxbins,xlow,xup,nybins,ylow,yup,nzbins,zlow,zup);
}
-void AliL3HoughTransformerNew::Reset()
+void AliHLTHoughTransformerNew::Reset()
{
//Reset Hough space
fParamSpace3D->Reset();
-void AliL3HoughTransformerNew::TransformLine(Int_t *rowrange,Float_t *phirange)
+void AliHLTHoughTransformerNew::TransformLine(Int_t *rowrange,Float_t *phirange)
{
//Hough Transform
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformerNew::TransformLine","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformerNew::TransformLine","Data")
<<"No input data "<<ENDLOG;
return;
}
TH3 *hist = fParamSpace3D;
- for(Int_t i=AliL3Transform::GetFirstRow(GetPatch()); i<=AliL3Transform::GetLastRow(GetPatch()); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(GetPatch()); i<=AliHLTTransform::GetLastRow(GetPatch()); i++)
{
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
if(i < rowrange[0])
{
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
continue;
}
else if(i > rowrange[1])
break;
if(i != (Int_t)tempPt->fRow)
{
- printf("AliL3HoughTransform::TransformLine : Mismatching padrow numbering\n");
+ printf("AliHLTHoughTransform::TransformLine : Mismatching padrow numbering\n");
continue;
}
for(UInt_t j=0; j<tempPt->fNDigit; j++)
Int_t sector,row;
Float_t xyz[3];
- AliL3Transform::Slice2Sector(GetSlice(),i,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
+ AliHLTTransform::Slice2Sector(GetSlice(),i,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
- Float_t phi = AliL3Transform::GetPhi(xyz);
+ Float_t phi = AliHLTTransform::GetPhi(xyz);
if(phi < phirange[0] || phi > phirange[1])
continue;
- xyz[0] = xyz[0] - AliL3Transform::Row2X(rowrange[0]);
- Float_t x = xyz[0] + AliL3Transform::Row2X(rowrange[0]);
+ xyz[0] = xyz[0] - AliHLTTransform::Row2X(rowrange[0]);
+ Float_t x = xyz[0] + AliHLTTransform::Row2X(rowrange[0]);
Float_t r = sqrt(x*x + xyz[1]*xyz[1]);
Float_t delta = atan(xyz[2]/r);
for(Int_t xbin=hist->GetXaxis()->GetFirst(); xbin<=hist->GetXaxis()->GetLast(); xbin++)
hist->Fill(theta,rho,delta,charge);
}
}
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
}
-struct AliL3Digit {
+struct AliHLTDigit {
Int_t fRow;//padrow index
Int_t fCharge;//digits charge
Float_t fY;//Y coordinate of the digit
Float_t fZ;//Z coordinate of the digit
- AliL3Digit *fNext;//pointer to the next digit
+ AliHLTDigit *fNext;//pointer to the next digit
};
-struct AliL3EtaContainer {
+struct AliHLTEtaContainer {
void *fFirst;//pointer to the first digit in a sequence
void *fLast;//pointer to the last digit in a sequence
};
-void AliL3HoughTransformerNew::TransformLineC(Int_t *rowrange,Float_t *phirange)
+void AliHLTHoughTransformerNew::TransformLineC(Int_t *rowrange,Float_t *phirange)
{
//Hough Transform
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
- LOG(AliL3Log::kError,"AliL3HoughTransformer::TransformCircleC","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformer::TransformCircleC","Data")
<<"No input data "<<ENDLOG;
Int_t counter=0;
- for(Int_t i=AliL3Transform::GetFirstRow(GetPatch()); i<=AliL3Transform::GetLastRow(GetPatch()); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(GetPatch()); i<=AliHLTTransform::GetLastRow(GetPatch()); i++)
{
counter += tempPt->fNDigit;
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
- Int_t bound = (GetNEtaSegments()+1)*(AliL3Transform::GetNRows(GetPatch())+1);
- AliL3EtaContainer *etaPt = new AliL3EtaContainer[bound];
- memset(etaPt,0,bound*sizeof(AliL3EtaContainer));
+ Int_t bound = (GetNEtaSegments()+1)*(AliHLTTransform::GetNRows(GetPatch())+1);
+ AliHLTEtaContainer *etaPt = new AliHLTEtaContainer[bound];
+ memset(etaPt,0,bound*sizeof(AliHLTEtaContainer));
- AliL3Digit *digits = new AliL3Digit[counter];
- cout<<"Allocating "<<counter*sizeof(AliL3Digit)<<" bytes to digitsarray"<<endl;
- memset(digits,0,counter*sizeof(AliL3Digit));
+ AliHLTDigit *digits = new AliHLTDigit[counter];
+ cout<<"Allocating "<<counter*sizeof(AliHLTDigit)<<" bytes to digitsarray"<<endl;
+ memset(digits,0,counter*sizeof(AliHLTDigit));
Int_t sector,row;
Float_t xyz[3];
tempPt = GetDataPointer();
cout<<"Calculating digits in patch "<<GetPatch()<<endl;
- for(Int_t i=AliL3Transform::GetFirstRow(GetPatch()); i<=AliL3Transform::GetLastRow(GetPatch()); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(GetPatch()); i<=AliHLTTransform::GetLastRow(GetPatch()); i++)
{
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
for(UInt_t di=0; di<tempPt->fNDigit; di++)
{
Int_t charge = digPt[di].fCharge;
Int_t pad = digPt[di].fPad;
Int_t time = digPt[di].fTime;
- AliL3Transform::Slice2Sector(GetSlice(),i,sector,row);
- AliL3Transform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
- Double_t eta = AliL3Transform::GetEta(xyz);
+ AliHLTTransform::Slice2Sector(GetSlice(),i,sector,row);
+ AliHLTTransform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
+ Double_t eta = AliHLTTransform::GetEta(xyz);
Float_t phi = atan2(xyz[1],xyz[0]);
if(phi < phirange[0] || phi > phirange[1]) continue;
digits[counter].fCharge = charge;
Int_t etaindex = GetEtaIndex(eta);
- Int_t index = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex;
+ Int_t index = (GetNEtaSegments()+1)*(i-AliHLTTransform::GetFirstRow(GetPatch())) + etaindex;
if(index > 0 && index < bound)
{
if(etaPt[index].fFirst == 0)
etaPt[index].fFirst = (void*)(&digits[counter]);
else
- ((AliL3Digit*)(etaPt[index].fLast))->fNext = &digits[counter];
+ ((AliHLTDigit*)(etaPt[index].fLast))->fNext = &digits[counter];
etaPt[index].fLast = (void*)(&digits[counter]);
}
counter++;
}
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
cout<<"Doing the combinatorics"<<endl;
- AliL3Digit *dPt1,*dPt2;
+ AliHLTDigit *dPt1,*dPt2;
TH3 *hist = fParamSpace3D;
for(Int_t e=0; e<GetNEtaSegments(); e++)
{
for(Int_t i=rowrange[0]; i<=rowrange[1]; i++)
{
- Int_t index1 = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + e;
+ Int_t index1 = (GetNEtaSegments()+1)*(i-AliHLTTransform::GetFirstRow(GetPatch())) + e;
- for(dPt1 = (AliL3Digit*)etaPt[index1].fFirst; dPt1 != 0; dPt1 = (AliL3Digit*)dPt1->fNext)
+ for(dPt1 = (AliHLTDigit*)etaPt[index1].fFirst; dPt1 != 0; dPt1 = (AliHLTDigit*)dPt1->fNext)
{
for(Int_t j=i+1; j<=rowrange[1]; j++)
{
- Int_t index2 = (GetNEtaSegments()+1)*(j-AliL3Transform::GetFirstRow(GetPatch())) + e;
+ Int_t index2 = (GetNEtaSegments()+1)*(j-AliHLTTransform::GetFirstRow(GetPatch())) + e;
- for(dPt2 = (AliL3Digit*)etaPt[index2].fFirst; dPt2 != 0; dPt2 = (AliL3Digit*)dPt2->fNext)
+ for(dPt2 = (AliHLTDigit*)etaPt[index2].fFirst; dPt2 != 0; dPt2 = (AliHLTDigit*)dPt2->fNext)
{
if(dPt1->fRow == dPt2->fRow)
{
}
//Do the transform:
- Float_t x1 = AliL3Transform::Row2X(dPt1->fRow) - AliL3Transform::Row2X(rowrange[0]);
- Float_t x2 = AliL3Transform::Row2X(dPt2->fRow) - AliL3Transform::Row2X(rowrange[0]);
+ Float_t x1 = AliHLTTransform::Row2X(dPt1->fRow) - AliHLTTransform::Row2X(rowrange[0]);
+ Float_t x2 = AliHLTTransform::Row2X(dPt2->fRow) - AliHLTTransform::Row2X(rowrange[0]);
Float_t y1 = dPt1->fY;
Float_t y2 = dPt2->fY;
Float_t theta = atan2(x2-x1,y1-y2);
Float_t rho = x1*cos(theta)+y1*sin(theta);
- Float_t r1 = sqrt(pow(AliL3Transform::Row2X(dPt1->fRow),2) + pow(y1,2));
+ Float_t r1 = sqrt(pow(AliHLTTransform::Row2X(dPt1->fRow),2) + pow(y1,2));
Float_t delta1 = atan2(dPt1->fZ,r1);
- Float_t r2 = sqrt(pow(AliL3Transform::Row2X(dPt2->fRow),2) + pow(y2,2));
+ Float_t r2 = sqrt(pow(AliHLTTransform::Row2X(dPt2->fRow),2) + pow(y2,2));
Float_t delta2 = atan2(dPt2->fZ,r2);
Float_t delta = (dPt1->fCharge*delta1+dPt2->fCharge*delta2)/(dPt1->fCharge+dPt2->fCharge);
hist->Fill(theta,rho,delta,dPt1->fCharge+dPt2->fCharge);
#ifndef ALIL3HOUGHTRANSFORMERNEW_H
#define ALIL3HOUGHTRANSFORMERNEW_H
-#include "AliL3RootTypes.h"
-#include "AliL3HoughTransformer.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTHoughTransformer.h"
#include <TH3.h>
-class AliL3TrackArray;
-class AliL3HoughTrack;
+class AliHLTTrackArray;
+class AliHLTHoughTrack;
-class AliL3HoughTransformerNew : public AliL3HoughTransformer {
+class AliHLTHoughTransformerNew : public AliHLTHoughTransformer {
public:
- AliL3HoughTransformerNew();
- AliL3HoughTransformerNew(Int_t slice,Int_t patch,Int_t netasegments);
- virtual ~AliL3HoughTransformerNew();
+ AliHLTHoughTransformerNew();
+ AliHLTHoughTransformerNew(Int_t slice,Int_t patch,Int_t netasegments);
+ virtual ~AliHLTHoughTransformerNew();
void Reset();
void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t pres,Int_t nybin,Float_t psi) {
- AliL3HoughTransformer::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
+ AliHLTHoughTransformer::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
}
void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax) {
- AliL3HoughTransformer::CreateHistograms(nxbin,ptmin,nybin,phimin,phimax);
+ AliHLTHoughTransformer::CreateHistograms(nxbin,ptmin,nybin,phimin,phimax);
}
void CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,Int_t nybin,Float_t ymin,Float_t ymax) {
- AliL3HoughTransformer::CreateHistograms(nxbin,xmin,xmax,nybin,ymin,ymax);
+ AliHLTHoughTransformer::CreateHistograms(nxbin,xmin,xmax,nybin,ymin,ymax);
}
void CreateHistograms(Int_t nxbins,Float_t xlow,Float_t xup,
Int_t nybins,Float_t ylow,Float_t yup,
void TransformLineC(Int_t *rowrange,Float_t *phirange);
TH3 *GetHistogram() {return fParamSpace3D;}
- AliL3Histogram *GetHistogram(Int_t etaindex){
- return AliL3HoughTransformer::GetHistogram(etaindex);
+ AliHLTHistogram *GetHistogram(Int_t etaindex){
+ return AliHLTHoughTransformer::GetHistogram(etaindex);
}
private:
TH3 *fParamSpace3D;//Histogram containing the hough space
- ClassDef(AliL3HoughTransformerNew,1) //Normal Hough transformation class
+ ClassDef(AliHLTHoughTransformerNew,1) //Normal Hough transformation class
};
+typedef AliHLTHoughTransformerNew AliL3HoughTransformerNew; // for backward comaptibility
+
#endif
// Author: Cvetan Cheshkov <mailto:cvetan.cheshkov@cern.ch>
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Transform.h"
-#include "AliL3DigitData.h"
-#include "AliL3HistogramAdaptive.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3HoughTransformerRow.h"
+#include "AliHLTLogging.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTTransform.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTHistogramAdaptive.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTHoughTransformerRow.h"
#if __GNUC__ >= 3
using namespace std;
#endif
//_____________________________________________________________
-// AliL3HoughTransformerRow
+// AliHLTHoughTransformerRow
//
// Impelementation of the so called "TPC rows Hough transformation" class
//
// Transforms the TPC data into the hough space and counts the missed TPC
// rows corresponding to each track cnadidate - hough space bin
-ClassImp(AliL3HoughTransformerRow)
+ClassImp(AliHLTHoughTransformerRow)
-Float_t AliL3HoughTransformerRow::fgBeta1 = 1.0/AliL3Transform::Row2X(84);
-Float_t AliL3HoughTransformerRow::fgBeta2 = 1.0/(AliL3Transform::Row2X(158)*(1.0+tan(AliL3Transform::Pi()*10/180)*tan(AliL3Transform::Pi()*10/180)));
-Float_t AliL3HoughTransformerRow::fgDAlpha = 0.22;
-Float_t AliL3HoughTransformerRow::fgDEta = 0.40;
-Double_t AliL3HoughTransformerRow::fgEtaCalcParam1 = 1.0289;
-Double_t AliL3HoughTransformerRow::fgEtaCalcParam2 = 0.15192;
-Double_t AliL3HoughTransformerRow::fgEtaCalcParam3 = 1./(32.*600.*600.);
+Float_t AliHLTHoughTransformerRow::fgBeta1 = 1.0/AliHLTTransform::Row2X(84);
+Float_t AliHLTHoughTransformerRow::fgBeta2 = 1.0/(AliHLTTransform::Row2X(158)*(1.0+tan(AliHLTTransform::Pi()*10/180)*tan(AliHLTTransform::Pi()*10/180)));
+Float_t AliHLTHoughTransformerRow::fgDAlpha = 0.22;
+Float_t AliHLTHoughTransformerRow::fgDEta = 0.40;
+Double_t AliHLTHoughTransformerRow::fgEtaCalcParam1 = 1.0289;
+Double_t AliHLTHoughTransformerRow::fgEtaCalcParam2 = 0.15192;
+Double_t AliHLTHoughTransformerRow::fgEtaCalcParam3 = 1./(32.*600.*600.);
-AliL3HoughTransformerRow::AliL3HoughTransformerRow()
+AliHLTHoughTransformerRow::AliHLTHoughTransformerRow()
{
//Default constructor
fParamSpace = 0;
}
-AliL3HoughTransformerRow::AliL3HoughTransformerRow(Int_t slice,Int_t patch,Int_t netasegments,Bool_t /*DoMC*/,Float_t zvertex) : AliL3HoughBaseTransformer(slice,patch,netasegments,zvertex)
+AliHLTHoughTransformerRow::AliHLTHoughTransformerRow(Int_t slice,Int_t patch,Int_t netasegments,Bool_t /*DoMC*/,Float_t zvertex) : AliHLTHoughBaseTransformer(slice,patch,netasegments,zvertex)
{
//Normal constructor
fParamSpace = 0;
}
-AliL3HoughTransformerRow::~AliL3HoughTransformerRow()
+AliHLTHoughTransformerRow::~AliHLTHoughTransformerRow()
{
//Destructor
if(fLastTransformer) return;
}
if(fStartPadParams)
{
- for(Int_t i = AliL3Transform::GetFirstRow(0); i<=AliL3Transform::GetLastRow(5); i++)
+ for(Int_t i = AliHLTTransform::GetFirstRow(0); i<=AliHLTTransform::GetLastRow(5); i++)
{
if(!fStartPadParams[i]) continue;
delete [] fStartPadParams[i];
}
if(fEndPadParams)
{
- for(Int_t i = AliL3Transform::GetFirstRow(0); i<=AliL3Transform::GetLastRow(5); i++)
+ for(Int_t i = AliHLTTransform::GetFirstRow(0); i<=AliHLTTransform::GetLastRow(5); i++)
{
if(!fEndPadParams[i]) continue;
delete [] fEndPadParams[i];
}
if(fLUTr)
{
- for(Int_t i = AliL3Transform::GetFirstRow(0); i<=AliL3Transform::GetLastRow(5); i++)
+ for(Int_t i = AliHLTTransform::GetFirstRow(0); i<=AliHLTTransform::GetLastRow(5); i++)
{
if(!fLUTr[i]) continue;
delete [] fLUTr[i];
}
}
-void AliL3HoughTransformerRow::DeleteHistograms()
+void AliHLTHoughTransformerRow::DeleteHistograms()
{
// Clean up
if(!fParamSpace)
delete [] fParamSpace;
}
-struct AliL3TrackLength {
+struct AliHLTTrackLength {
// Structure is used for temporarely storage of the LUT
// which contains the track lengths associated to each hough
// space bin
Float_t fTrackPt; // Pt of the track
};
-void AliL3HoughTransformerRow::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
+void AliHLTHoughTransformerRow::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
Int_t nybin,Float_t ymin,Float_t ymax)
{
//Create the histograms (parameter space)
//nybin = #bins in Y
//xmin xmax ymin ymax = histogram limits in X and Y
if(fLastTransformer) {
- SetTransformerArrays((AliL3HoughTransformerRow *)fLastTransformer);
+ SetTransformerArrays((AliHLTHoughTransformerRow *)fLastTransformer);
return;
}
- fParamSpace = new AliL3Histogram*[GetNEtaSegments()];
+ fParamSpace = new AliHLTHistogram*[GetNEtaSegments()];
Char_t histname[256];
for(Int_t i=0; i<GetNEtaSegments(); i++)
{
sprintf(histname,"paramspace_%d",i);
- fParamSpace[i] = new AliL3Histogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
+ fParamSpace[i] = new AliHLTHistogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
}
#ifdef do_mc
{
- AliL3Histogram *hist = fParamSpace[0];
+ AliHLTHistogram *hist = fParamSpace[0];
Int_t ncellsx = (hist->GetNbinsX()+3)/2;
Int_t ncellsy = (hist->GetNbinsY()+3)/2;
Int_t ncells = ncellsx*ncellsy;
if(!fTrackID)
{
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
- <<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(AliL3TrackIndex)<<" bytes to fTrackID"<<ENDLOG;
- fTrackID = new AliL3TrackIndex*[GetNEtaSegments()];
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
+ <<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(AliHLTTrackIndex)<<" bytes to fTrackID"<<ENDLOG;
+ fTrackID = new AliHLTTrackIndex*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
- fTrackID[i] = new AliL3TrackIndex[ncells];
+ fTrackID[i] = new AliHLTTrackIndex[ncells];
}
}
#endif
- AliL3Histogram *hist = fParamSpace[0];
+ AliHLTHistogram *hist = fParamSpace[0];
Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
if(!fGapCount)
{
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(UChar_t)<<" bytes to fGapCount"<<ENDLOG;
fGapCount = new UChar_t*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
}
if(!fCurrentRowCount)
{
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(UChar_t)<<" bytes to fCurrentRowCount"<<ENDLOG;
fCurrentRowCount = new UChar_t*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
}
if(!fPrevBin)
{
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(UChar_t)<<" bytes to fPrevBin"<<ENDLOG;
fPrevBin = new UChar_t*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
}
if(!fNextBin)
{
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(UChar_t)<<" bytes to fNextBin"<<ENDLOG;
fNextBin = new UChar_t*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
Int_t ncellsy = hist->GetNbinsY()+2;
if(!fNextRow)
{
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<GetNEtaSegments()*ncellsy*sizeof(UChar_t)<<" bytes to fNextRow"<<ENDLOG;
fNextRow = new UChar_t*[GetNEtaSegments()];
for(Int_t i=0; i<GetNEtaSegments(); i++)
if(!fTrackNRows)
{
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<ncells*sizeof(UChar_t)<<" bytes to fTrackNRows"<<ENDLOG;
fTrackNRows = new UChar_t[ncells];
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<ncells*sizeof(UChar_t)<<" bytes to fTrackFirstRow"<<ENDLOG;
fTrackFirstRow = new UChar_t[ncells];
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<ncells*sizeof(UChar_t)<<" bytes to fTrackLastRow"<<ENDLOG;
fTrackLastRow = new UChar_t[ncells];
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<ncells*sizeof(UChar_t)<<" bytes to fInitialGapCount"<<ENDLOG;
fInitialGapCount = new UChar_t[ncells];
- AliL3HoughTrack track;
+ AliHLTHoughTrack track;
Int_t xmin = hist->GetFirstXbin();
Int_t xmax = hist->GetLastXbin();
Int_t xmiddle = (hist->GetNbinsX()+1)/2;
Int_t nxgrid = (hist->GetNbinsX()+3)/2+1;
Int_t nygrid = hist->GetNbinsY()+3;
- AliL3TrackLength *tracklength = new AliL3TrackLength[nxgrid*nygrid];
- memset(tracklength,0,nxgrid*nygrid*sizeof(AliL3TrackLength));
+ AliHLTTrackLength *tracklength = new AliHLTTrackLength[nxgrid*nygrid];
+ memset(tracklength,0,nxgrid*nygrid*sizeof(AliHLTTrackLength));
for(Int_t ybin=ymin-1; ybin<=(ymax+1); ybin++)
{
for(Int_t deltay = 0; deltay <= 1; deltay++) {
for(Int_t deltax = 0; deltax <= 1; deltax++) {
- AliL3TrackLength *curtracklength = &tracklength[(xbin + deltax) + (ybin + deltay)*nxgrid];
+ AliHLTTrackLength *curtracklength = &tracklength[(xbin + deltax) + (ybin + deltay)*nxgrid];
UInt_t maxfirstrow = 0;
UInt_t maxlastrow = 0;
Float_t maxtrackpt = 0;
Float_t kappa = 2.0*(xtrack*cos(psi)-fgBeta1*sin(psi));
track.SetTrackParameters(kappa,psi,1);
maxtrackpt = track.GetPt();
- if(maxtrackpt < 0.9*0.1*AliL3Transform::GetSolenoidField())
+ if(maxtrackpt < 0.9*0.1*AliHLTTransform::GetSolenoidField())
{
maxfirstrow = maxlastrow = 0;
curtracklength->fIsFilled = kTRUE;
Double_t centery = track.GetCenterY();
Double_t radius = track.GetRadius();
- for(Int_t j=AliL3Transform::GetFirstRow(0); j<=AliL3Transform::GetLastRow(5); j++)
+ for(Int_t j=AliHLTTransform::GetFirstRow(0); j<=AliHLTTransform::GetLastRow(5); j++)
{
Float_t hit[3];
// if(!track.GetCrossingPoint(j,hit)) continue;
- hit[0] = AliL3Transform::Row2X(j);
+ hit[0] = AliHLTTransform::Row2X(j);
Double_t aa = (hit[0] - centerx)*(hit[0] - centerx);
Double_t r2 = radius*radius;
if(aa > r2)
hit[2] = 0;
- AliL3Transform::LocHLT2Raw(hit,0,j);
+ AliHLTTransform::LocHLT2Raw(hit,0,j);
hit[1] += 0.5;
- if(hit[1]>=0 && hit[1]<AliL3Transform::GetNPads(j))
+ if(hit[1]>=0 && hit[1]<AliHLTTransform::GetNPads(j))
{
if(!firstrow) {
curfirstrow = j;
fInitialGapCount[xbin + ybin*nxbins] = 1;
if((maxlastrow-maxfirstrow+1)<=MIN_TRACK_LENGTH)
fInitialGapCount[xbin + ybin*nxbins] = MAX_N_GAPS+1;
- if(maxtrackpt < 0.9*0.1*AliL3Transform::GetSolenoidField())
+ if(maxtrackpt < 0.9*0.1*AliHLTTransform::GetSolenoidField())
fInitialGapCount[xbin + ybin*nxbins] = MAX_N_GAPS;
fTrackFirstRow[xbin + ybin*nxbins] = maxfirstrow;
fTrackLastRow[xbin + ybin*nxbins] = maxlastrow;
if(!fStartPadParams)
{
- Int_t nrows = AliL3Transform::GetLastRow(5) - AliL3Transform::GetFirstRow(0) + 1;
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
- <<"Transformer: Allocating about "<<nrows*100*sizeof(AliL3PadHoughParams)<<" bytes to fStartPadParams"<<ENDLOG;
- fStartPadParams = new AliL3PadHoughParams*[nrows];
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
- <<"Transformer: Allocating about "<<nrows*100*sizeof(AliL3PadHoughParams)<<" bytes to fEndPadParams"<<ENDLOG;
- fEndPadParams = new AliL3PadHoughParams*[nrows];
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ Int_t nrows = AliHLTTransform::GetLastRow(5) - AliHLTTransform::GetFirstRow(0) + 1;
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
+ <<"Transformer: Allocating about "<<nrows*100*sizeof(AliHLTPadHoughParams)<<" bytes to fStartPadParams"<<ENDLOG;
+ fStartPadParams = new AliHLTPadHoughParams*[nrows];
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
+ <<"Transformer: Allocating about "<<nrows*100*sizeof(AliHLTPadHoughParams)<<" bytes to fEndPadParams"<<ENDLOG;
+ fEndPadParams = new AliHLTPadHoughParams*[nrows];
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating about "<<nrows*100*sizeof(Float_t)<<" bytes to fLUTr"<<ENDLOG;
fLUTr = new Float_t*[nrows];
Int_t nbinx = hist->GetNbinsX()+2;
Int_t firstbin = hist->GetFirstYbin();
Int_t lastbin = hist->GetLastYbin();
- for(Int_t i=AliL3Transform::GetFirstRow(0); i<=AliL3Transform::GetLastRow(5); i++)
+ for(Int_t i=AliHLTTransform::GetFirstRow(0); i<=AliHLTTransform::GetLastRow(5); i++)
{
- Int_t npads = AliL3Transform::GetNPads(i);
- Int_t ipatch = AliL3Transform::GetPatch(i);
- Double_t padpitch = AliL3Transform::GetPadPitchWidth(ipatch);
- Float_t x = AliL3Transform::Row2X(i);
+ Int_t npads = AliHLTTransform::GetNPads(i);
+ Int_t ipatch = AliHLTTransform::GetPatch(i);
+ Double_t padpitch = AliHLTTransform::GetPadPitchWidth(ipatch);
+ Float_t x = AliHLTTransform::Row2X(i);
Float_t x2 = x*x;
- fStartPadParams[i] = new AliL3PadHoughParams[npads];
- fEndPadParams[i] = new AliL3PadHoughParams[npads];
+ fStartPadParams[i] = new AliHLTPadHoughParams[npads];
+ fEndPadParams[i] = new AliHLTPadHoughParams[npads];
fLUTr[i] = new Float_t[npads];
for(Int_t pad=0; pad<npads; pad++)
{
//create lookup table for z of the digits
if(!fLUTforwardZ)
{
- Int_t ntimebins = AliL3Transform::GetNTimeBins();
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ Int_t ntimebins = AliHLTTransform::GetNTimeBins();
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<ntimebins*sizeof(Float_t)<<" bytes to fLUTforwardZ"<<ENDLOG;
fLUTforwardZ = new Float_t[ntimebins];
- LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
+ LOG(AliHLTLog::kInformational,"AliHLTHoughTransformerRow::CreateHistograms()","")
<<"Transformer: Allocating "<<ntimebins*sizeof(Float_t)<<" bytes to fLUTbackwardZ"<<ENDLOG;
fLUTbackwardZ = new Float_t[ntimebins];
for(Int_t i=0; i<ntimebins; i++){
Float_t z;
- z=AliL3Transform::GetZFast(0,i,GetZVertex());
+ z=AliHLTTransform::GetZFast(0,i,GetZVertex());
fLUTforwardZ[i]=z;
- z=AliL3Transform::GetZFast(18,i,GetZVertex());
+ z=AliHLTTransform::GetZFast(18,i,GetZVertex());
fLUTbackwardZ[i]=z;
}
}
}
-void AliL3HoughTransformerRow::Reset()
+void AliHLTHoughTransformerRow::Reset()
{
//Reset all the histograms. Should be done when processing new slice
if(fLastTransformer) return;
if(!fParamSpace)
{
- LOG(AliL3Log::kWarning,"AliL3HoughTransformer::Reset","Histograms")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformer::Reset","Histograms")
<<"No histograms to reset"<<ENDLOG;
return;
}
#ifdef do_mc
{
- AliL3Histogram *hist = fParamSpace[0];
+ AliHLTHistogram *hist = fParamSpace[0];
Int_t ncellsx = (hist->GetNbinsX()+3)/2;
Int_t ncellsy = (hist->GetNbinsY()+3)/2;
Int_t ncells = ncellsx*ncellsy;
for(Int_t i=0; i<GetNEtaSegments(); i++)
- memset(fTrackID[i],0,ncells*sizeof(AliL3TrackIndex));
+ memset(fTrackID[i],0,ncells*sizeof(AliHLTTrackIndex));
}
#endif
- AliL3Histogram *hist = fParamSpace[0];
+ AliHLTHistogram *hist = fParamSpace[0];
Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
for(Int_t i=0; i<GetNEtaSegments(); i++)
{
}
}
-Int_t AliL3HoughTransformerRow::GetEtaIndex(Double_t eta) const
+Int_t AliHLTHoughTransformerRow::GetEtaIndex(Double_t eta) const
{
//Return the histogram index of the corresponding eta.
return (Int_t)index;
}
-inline AliL3Histogram *AliL3HoughTransformerRow::GetHistogram(Int_t etaindex)
+inline AliHLTHistogram *AliHLTHoughTransformerRow::GetHistogram(Int_t etaindex)
{
// Return a pointer to the histogram which contains etaindex eta slice
if(!fParamSpace || etaindex >= GetNEtaSegments() || etaindex < 0)
return fParamSpace[etaindex];
}
-Double_t AliL3HoughTransformerRow::GetEta(Int_t etaindex,Int_t /*slice*/) const
+Double_t AliHLTHoughTransformerRow::GetEta(Int_t etaindex,Int_t /*slice*/) const
{
// Return eta calculated in the middle of the eta slice
Double_t etaslice = (GetEtaMax()-GetEtaMin())/GetNEtaSegments();
return eta;
}
-void AliL3HoughTransformerRow::TransformCircle()
+void AliHLTHoughTransformerRow::TransformCircle()
{
// This method contains the hough transformation
// Depending on the option selected, it reads as an input
else if(fTPCRawStream)
TransformCircleFromRawStream();
}
-void AliL3HoughTransformerRow::TransformCircleFromDigitArray()
+void AliHLTHoughTransformerRow::TransformCircleFromDigitArray()
{
//Do the Hough Transform
Int_t lowerthreshold = GetLowerThreshold();
//Assumes that all the etaslice histos are the same!
- AliL3Histogram *h = fParamSpace[0];
+ AliHLTHistogram *h = fParamSpace[0];
Int_t firstbiny = h->GetFirstYbin();
Int_t firstbinx = h->GetFirstXbin();
Int_t lastbinx = h->GetLastXbin();
UChar_t lastpad;
Int_t lastetaindex=-1;
- AliL3EtaRow *etaclust = new AliL3EtaRow[netasegments];
+ AliHLTEtaRow *etaclust = new AliHLTEtaRow[netasegments];
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformer::TransformCircle","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformer::TransformCircle","Data")
<<"No input data "<<ENDLOG;
return;
}
lutz = fLUTbackwardZ;
//Loop over the padrows:
- for(UChar_t i=AliL3Transform::GetFirstRow(ipatch); i<=AliL3Transform::GetLastRow(ipatch); i++)
+ for(UChar_t i=AliHLTTransform::GetFirstRow(ipatch); i<=AliHLTTransform::GetLastRow(ipatch); i++)
{
lastpad = 255;
//Flush eta clusters array
- memset(etaclust,0,netasegments*sizeof(AliL3EtaRow));
+ memset(etaclust,0,netasegments*sizeof(AliHLTEtaRow));
Float_t radius=0;
//Get the data on this padrow:
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
if((Int_t)i != (Int_t)tempPt->fRow)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformerRow::TransformCircle","Data")
- <<"AliL3HoughTransform::TransformCircle : Mismatching padrow numbering "<<(Int_t)i<<" "<<(Int_t)tempPt->fRow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformerRow::TransformCircle","Data")
+ <<"AliHLTHoughTransform::TransformCircle : Mismatching padrow numbering "<<(Int_t)i<<" "<<(Int_t)tempPt->fRow<<ENDLOG;
continue;
}
// cout<<" Starting row "<<i<<endl;
}
//Move the data pointer to the next padrow:
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
delete [] etaclust;
}
-void AliL3HoughTransformerRow::TransformCircleFromRawStream()
+void AliHLTHoughTransformerRow::TransformCircleFromRawStream()
{
//Do the Hough Transform
Int_t lowerthreshold = GetLowerThreshold();
//Assumes that all the etaslice histos are the same!
- AliL3Histogram *h = fParamSpace[0];
+ AliHLTHistogram *h = fParamSpace[0];
Int_t firstbiny = h->GetFirstYbin();
Int_t firstbinx = h->GetFirstXbin();
Int_t lastbinx = h->GetLastXbin();
Int_t nbinx = h->GetNbinsX()+2;
Int_t lastetaindex = -1;
- AliL3EtaRow *etaclust = new AliL3EtaRow[netasegments];
+ AliHLTEtaRow *etaclust = new AliHLTEtaRow[netasegments];
if(!fTPCRawStream)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformer::TransformCircle","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformer::TransformCircle","Data")
<<"No input data "<<ENDLOG;
return;
}
Int_t ipatch = GetPatch();
- UChar_t rowmin = AliL3Transform::GetFirstRowOnDDL(ipatch);
- UChar_t rowmax = AliL3Transform::GetLastRowOnDDL(ipatch);
- // Int_t ntimebins = AliL3Transform::GetNTimeBins();
+ UChar_t rowmin = AliHLTTransform::GetFirstRowOnDDL(ipatch);
+ UChar_t rowmax = AliHLTTransform::GetLastRowOnDDL(ipatch);
+ // Int_t ntimebins = AliHLTTransform::GetNTimeBins();
Int_t ilastpatch = GetLastPatch();
Int_t islice = GetSlice();
Float_t *lutz;
lutz = fLUTbackwardZ;
//Flush eta clusters array
- memset(etaclust,0,netasegments*sizeof(AliL3EtaRow));
+ memset(etaclust,0,netasegments*sizeof(AliHLTEtaRow));
UChar_t i=0;
Int_t npads=0;
Int_t sector=fTPCRawStream->GetSector();
Int_t row=fTPCRawStream->GetRow();
Int_t slice,srow;
- AliL3Transform::Sector2Slice(slice,srow,sector,row);
+ AliHLTTransform::Sector2Slice(slice,srow,sector,row);
if(slice!=islice){
- LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Slice")
- <<AliL3Log::kDec<<"Found slice "<<slice<<", expected "<<islice<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDDLDataFileHandler::DDLDigits2Memory","Slice")
+ <<AliHLTLog::kDec<<"Found slice "<<slice<<", expected "<<islice<<ENDLOG;
continue;
}
i=(UChar_t)srow;
- npads = AliL3Transform::GetNPads(srow)-1;
+ npads = AliHLTTransform::GetNPads(srow)-1;
//Flush eta clusters array
- memset(etaclust,0,netasegments*sizeof(AliL3EtaRow));
+ memset(etaclust,0,netasegments*sizeof(AliHLTEtaRow));
radius=0;
pad=fTPCRawStream->GetPad();
/*
if((pad<0)||(pad>=(npads+1))){
- LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Pad")
- <<AliL3Log::kDec<<"Pad value out of bounds "<<pad<<" "
+ LOG(AliHLTLog::kError,"AliHLTDDLDataFileHandler::DDLDigits2Memory","Pad")
+ <<AliHLTLog::kDec<<"Pad value out of bounds "<<pad<<" "
<<npads+1<<ENDLOG;
continue;
}
UShort_t time=fTPCRawStream->GetTime();
/*
if((time<0)||(time>=ntimebins)){
- LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Time")
- <<AliL3Log::kDec<<"Time out of bounds "<<time<<" "
- <<AliL3Transform::GetNTimeBins()<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDDLDataFileHandler::DDLDigits2Memory","Time")
+ <<AliHLTLog::kDec<<"Time out of bounds "<<time<<" "
+ <<AliHLTTransform::GetNTimeBins()<<ENDLOG;
continue;
}
*/
}
#ifndef do_mc
-Int_t AliL3HoughTransformerRow::GetTrackID(Int_t /*etaindex*/,Double_t /*alpha1*/,Double_t /*alpha2*/) const
+Int_t AliHLTHoughTransformerRow::GetTrackID(Int_t /*etaindex*/,Double_t /*alpha1*/,Double_t /*alpha2*/) const
{
// Does nothing if do_mc undefined
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerRow::GetTrackID","Data")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerRow::GetTrackID","Data")
<<"Flag switched off"<<ENDLOG;
return -1;
#else
-Int_t AliL3HoughTransformerRow::GetTrackID(Int_t etaindex,Double_t alpha1,Double_t alpha2) const
+Int_t AliHLTHoughTransformerRow::GetTrackID(Int_t etaindex,Double_t alpha1,Double_t alpha2) const
{
// Returns the MC label for a given peak found in the Hough space
if(etaindex < 0 || etaindex > GetNEtaSegments())
{
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerRow::GetTrackID","Data")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerRow::GetTrackID","Data")
<<"Wrong etaindex "<<etaindex<<ENDLOG;
return -1;
}
- AliL3Histogram *hist = fParamSpace[etaindex];
+ AliHLTHistogram *hist = fParamSpace[etaindex];
Int_t bin = hist->FindLabelBin(alpha1,alpha2);
if(bin==-1) {
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerRow::GetTrackID()","")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerRow::GetTrackID()","")
<<"Track candidate outside Hough space boundaries: "<<alpha1<<" "<<alpha2<<ENDLOG;
return -1;
}
}
}
if(max2 !=0 ) {
- LOG(AliL3Log::kDebug,"AliL3HoughTransformerRow::GetTrackID()","")
+ LOG(AliHLTLog::kDebug,"AliHLTHoughTransformerRow::GetTrackID()","")
<<" TrackID"<<" label "<<label<<" max "<<max<<" label2 "<<label2<<" max2 "<<max2<<" "<<(Float_t)max2/(Float_t)max<<" "<<fTrackID[etaindex][bin].fLabel[MaxTrack-1]<<" "<<(Int_t)fTrackID[etaindex][bin].fNHits[MaxTrack-1]<<ENDLOG;
}
return label;
#endif
}
-Int_t AliL3HoughTransformerRow::GetTrackLength(Double_t alpha1,Double_t alpha2,Int_t *rows) const
+Int_t AliHLTHoughTransformerRow::GetTrackLength(Double_t alpha1,Double_t alpha2,Int_t *rows) const
{
// Returns the track length for a given peak found in the Hough space
- AliL3Histogram *hist = fParamSpace[0];
+ AliHLTHistogram *hist = fParamSpace[0];
Int_t bin = hist->FindBin(alpha1,alpha2);
if(bin==-1) {
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerRow::GetTrackLength()","")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerRow::GetTrackLength()","")
<<"Track candidate outside Hough space boundaries: "<<alpha1<<" "<<alpha2<<ENDLOG;
return -1;
}
return 0;
}
-inline void AliL3HoughTransformerRow::FillClusterRow(UChar_t i,Int_t binx1,Int_t binx2,UChar_t *ngaps2,UChar_t *currentrow2,UChar_t *lastrow2
+inline void AliHLTHoughTransformerRow::FillClusterRow(UChar_t i,Int_t binx1,Int_t binx2,UChar_t *ngaps2,UChar_t *currentrow2,UChar_t *lastrow2
#ifdef do_mc
- ,AliL3EtaRow etaclust,AliL3TrackIndex *trackid
+ ,AliHLTEtaRow etaclust,AliHLTTrackIndex *trackid
#endif
)
{
}
-inline void AliL3HoughTransformerRow::FillCluster(UChar_t i,Int_t etaindex,AliL3EtaRow *etaclust,Int_t ilastpatch,Int_t firstbinx,Int_t lastbinx,Int_t nbinx,Int_t firstbiny)
+inline void AliHLTHoughTransformerRow::FillCluster(UChar_t i,Int_t etaindex,AliHLTEtaRow *etaclust,Int_t ilastpatch,Int_t firstbinx,Int_t lastbinx,Int_t nbinx,Int_t firstbiny)
{
// The method is a part of the fast hough transform.
// It fills a TPC cluster into the hough space.
UChar_t *nextbin = fNextBin[etaindex];
UChar_t *nextrow = fNextRow[etaindex];
#ifdef do_mc
- AliL3TrackIndex *trackid = fTrackID[etaindex];
+ AliHLTTrackIndex *trackid = fTrackID[etaindex];
#endif
//Do the transformation:
- AliL3PadHoughParams *startparams = &fStartPadParams[(Int_t)i][etaclust[etaindex].fStartPad];
- AliL3PadHoughParams *endparams = &fEndPadParams[(Int_t)i][etaclust[etaindex].fEndPad];
+ AliHLTPadHoughParams *startparams = &fStartPadParams[(Int_t)i][etaclust[etaindex].fStartPad];
+ AliHLTPadHoughParams *endparams = &fEndPadParams[(Int_t)i][etaclust[etaindex].fEndPad];
Float_t alpha1 = startparams->fAlpha;
Float_t deltaalpha1 = startparams->fDeltaAlpha;
if(binx2>lastbinx) binx2 = lastbinx;
#ifdef do_mc
if(binx2<binx1) {
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerRow::TransformCircle()","")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerRow::TransformCircle()","")
<<"Wrong filling "<<binx1<<" "<<binx2<<" "<<i<<" "<<etaclust[etaindex].fStartPad<<" "<<etaclust[etaindex].fEndPad<<ENDLOG;
}
#endif
UChar_t *lastrow2 = lastrow + tempbin;
#ifdef do_mc
Int_t tempbin2 = ((Int_t)(b/2))*((Int_t)((nbinx+1)/2));
- AliL3TrackIndex *trackid2 = trackid + tempbin2;
+ AliHLTTrackIndex *trackid2 = trackid + tempbin2;
#endif
FillClusterRow(i,binx1,binx2,ngaps2,currentrow2,lastrow2
#ifdef do_mc
if(binx2>lastbinx) binx2 = lastbinx;
#ifdef do_mc
if(binx2<binx1) {
- LOG(AliL3Log::kWarning,"AliL3HoughTransformerRow::TransformCircle()","")
+ LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerRow::TransformCircle()","")
<<"Wrong filling "<<binx1<<" "<<binx2<<" "<<i<<" "<<etaclust[etaindex].fStartPad<<" "<<etaclust[etaindex].fEndPad<<ENDLOG;
}
#endif
UChar_t *lastrow2 = lastrow + tempbin;
#ifdef do_mc
Int_t tempbin2 = ((Int_t)(b/2))*((Int_t)((nbinx+1)/2));
- AliL3TrackIndex *trackid2 = trackid + tempbin2;
+ AliHLTTrackIndex *trackid2 = trackid + tempbin2;
#endif
FillClusterRow(i,binx1,binx2,ngaps2,currentrow2,lastrow2
#ifdef do_mc
}
#ifdef do_mc
-inline void AliL3HoughTransformerRow::FillClusterMCLabels(AliL3DigitData digpt,AliL3EtaRow *etaclust)
+inline void AliHLTHoughTransformerRow::FillClusterMCLabels(AliHLTDigitData digpt,AliHLTEtaRow *etaclust)
{
// The method is a part of the fast hough transform.
// It fills the MC labels of a TPC cluster into a
}
#endif
-void AliL3HoughTransformerRow::SetTransformerArrays(AliL3HoughTransformerRow *tr)
+void AliHLTHoughTransformerRow::SetTransformerArrays(AliHLTHoughTransformerRow *tr)
{
// In case of sequential filling of the hough space, the method is used to
// transmit the pointers to the hough arrays from one transformer to the
#ifndef ALIL3HOUGHTRANSFORMERROW_H
#define ALIL3HOUGHTRANSFORMERROW_H
-#include "AliL3RootTypes.h"
-#include "AliL3HoughBaseTransformer.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTHoughBaseTransformer.h"
#define MAX_N_GAPS 5
#define MIN_TRACK_LENGTH 70
-struct AliL3EtaRow {
+struct AliHLTEtaRow {
UChar_t fStartPad; //First pad in the cluster
UChar_t fEndPad; //Last pad in the cluster
Bool_t fIsFound; //Is the cluster already found
#endif
};
-struct AliL3PadHoughParams {
+struct AliHLTPadHoughParams {
// Parameters which represent given pad in the hough space
// Used in order to avoid as much as possible floating
// point operations during the hough transform
Int_t fLastBin; // Last alpha2 bin to be filled
};
-class AliL3DigitData;
-class AliL3Histogram;
+class AliHLTDigitData;
+class AliHLTHistogram;
-class AliL3HoughTransformerRow : public AliL3HoughBaseTransformer {
+class AliHLTHoughTransformerRow : public AliHLTHoughBaseTransformer {
public:
- AliL3HoughTransformerRow();
- AliL3HoughTransformerRow(Int_t slice,Int_t patch,Int_t netasegments,Bool_t DoMC=kFALSE,Float_t zvertex=0.0);
- virtual ~AliL3HoughTransformerRow();
+ AliHLTHoughTransformerRow();
+ AliHLTHoughTransformerRow(Int_t slice,Int_t patch,Int_t netasegments,Bool_t DoMC=kFALSE,Float_t zvertex=0.0);
+ virtual ~AliHLTHoughTransformerRow();
void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t pres,Int_t nybin,Float_t psi) {
- AliL3HoughBaseTransformer::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
+ AliHLTHoughBaseTransformer::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
}
void CreateHistograms(Int_t /*nxbin*/,Float_t /*ptmin*/,Int_t /*nybin*/,Float_t /*phimin*/,Float_t /*phimax*/)
{STDCERR<<"This method for creation of parameter space histograms is not supported for this Transformer!"<<STDENDL;}
void Reset();
void TransformCircle();
void TransformCircle(Int_t *row_range,Int_t every) {
- AliL3HoughBaseTransformer::TransformCircle(row_range,every);
+ AliHLTHoughBaseTransformer::TransformCircle(row_range,every);
}
Int_t GetEtaIndex(Double_t eta) const;
- AliL3Histogram *GetHistogram(Int_t etaindex);
+ AliHLTHistogram *GetHistogram(Int_t etaindex);
Double_t GetEta(Int_t etaindex,Int_t slice) const;
Int_t GetTrackID(Int_t etaindex,Double_t alpha1,Double_t alpha2) const;
Int_t GetTrackLength(Double_t alpha1,Double_t alpha2,Int_t *rows) const;
UChar_t **fGapCount; //!
UChar_t **fCurrentRowCount; //!
#ifdef do_mc
- AliL3TrackIndex **fTrackID; //!
+ AliHLTTrackIndex **fTrackID; //!
#endif
UChar_t *fTrackNRows; //!
UChar_t **fNextBin; //!
UChar_t **fNextRow; //!
- AliL3PadHoughParams **fStartPadParams; //!
- AliL3PadHoughParams **fEndPadParams; //!
+ AliHLTPadHoughParams **fStartPadParams; //!
+ AliHLTPadHoughParams **fEndPadParams; //!
Float_t **fLUTr; //!
Float_t *fLUTforwardZ; //!
Float_t *fLUTbackwardZ; //!
- AliL3Histogram **fParamSpace; //!
+ AliHLTHistogram **fParamSpace; //!
void TransformCircleFromDigitArray();
void TransformCircleFromRawStream();
inline void FillClusterRow(UChar_t i,Int_t binx1,Int_t binx2,UChar_t *ngaps2,UChar_t *currentrow2,UChar_t *lastrow2
#ifdef do_mc
- ,AliL3EtaRow etaclust,AliL3TrackIndex *trackid
+ ,AliHLTEtaRow etaclust,AliHLTTrackIndex *trackid
#endif
);
- inline void FillCluster(UChar_t i,Int_t etaindex,AliL3EtaRow *etaclust,Int_t ilastpatch,Int_t firstbinx,Int_t lastbinx,Int_t nbinx,Int_t firstbiny);
+ inline void FillCluster(UChar_t i,Int_t etaindex,AliHLTEtaRow *etaclust,Int_t ilastpatch,Int_t firstbinx,Int_t lastbinx,Int_t nbinx,Int_t firstbiny);
#ifdef do_mc
- inline void FillClusterMCLabels(AliL3DigitData digpt,AliL3EtaRow *etaclust);
+ inline void FillClusterMCLabels(AliHLTDigitData digpt,AliHLTEtaRow *etaclust);
#endif
- void SetTransformerArrays(AliL3HoughTransformerRow *tr);
+ void SetTransformerArrays(AliHLTHoughTransformerRow *tr);
static Float_t fgBeta1,fgBeta2; // Two curves which define the Hough space
static Float_t fgDAlpha, fgDEta; // Correlation factor between Hough space bin size and resolution
AliTPCRawStream *fTPCRawStream; // Pointer to the raw stream in case of fast reading of the raw data (fast_raw flag)
- ClassDef(AliL3HoughTransformerRow,1) //TPC Rows Hough transformation class
+ ClassDef(AliHLTHoughTransformerRow,1) //TPC Rows Hough transformation class
};
+typedef AliHLTHoughTransformerRow AliL3HoughTransformerRow; // for backward compatibility
+
#endif
// Author: Constantin Loizides <mailto:loizides@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Transform.h"
-#include "AliL3DigitData.h"
-#include "AliL3HoughTransformerVhdl.h"
-#include "AliL3FFloat.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTTransform.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTHoughTransformerVhdl.h"
+#include "AliHLTFFloat.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3HoughTransformerVhdl
+/** \class AliHLTHoughTransformerVhdl
// <pre>
//_____________________________________________________________
-// AliL3HoughTransformerVhdl
+// AliHLTHoughTransformerVhdl
//
// Hough transformation class for VHDL comparism.
//
//</pre>
*/
-ClassImp(AliL3HoughTransformerVhdl)
+ClassImp(AliHLTHoughTransformerVhdl)
-AliL3HoughTransformerVhdl::AliL3HoughTransformerVhdl()
- : AliL3HoughTransformerLUT()
+AliHLTHoughTransformerVhdl::AliHLTHoughTransformerVhdl()
+ : AliHLTHoughTransformerLUT()
{
//default ctor
fIts=0;
}
-AliL3HoughTransformerVhdl::AliL3HoughTransformerVhdl(Int_t slice,Int_t patch,Int_t netasegments,Int_t nits)
- : AliL3HoughTransformerLUT(slice,patch,netasegments)
+AliHLTHoughTransformerVhdl::AliHLTHoughTransformerVhdl(Int_t slice,Int_t patch,Int_t netasegments,Int_t nits)
+ : AliHLTHoughTransformerLUT(slice,patch,netasegments)
{
//normal ctor
fEpsilon=0;
fIts=nits;
}
-AliL3HoughTransformerVhdl::~AliL3HoughTransformerVhdl()
+AliHLTHoughTransformerVhdl::~AliHLTHoughTransformerVhdl()
{
//dtor
}
-void AliL3HoughTransformerVhdl::CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax)
+void AliHLTHoughTransformerVhdl::CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax)
{
//Create histograms containing the hough space
- AliL3HoughTransformerLUT::CreateHistograms(nxbin,ptmin,nybin,phimin,phimax);
+ AliHLTHoughTransformerLUT::CreateHistograms(nxbin,ptmin,nybin,phimin,phimax);
}
-void AliL3HoughTransformerVhdl::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
+void AliHLTHoughTransformerVhdl::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
Int_t nybin,Float_t ymin,Float_t ymax)
{
//Create histograms containing the hough space
- AliL3HoughTransformerLUT::CreateHistograms(nxbin,xmin,xmax,nybin,ymin,ymax);
+ AliHLTHoughTransformerLUT::CreateHistograms(nxbin,xmin,xmax,nybin,ymin,ymax);
fEpsilon=(ymax-ymin)/nybin;
fSinEpsilon=sin(fEpsilon);
//cout << fEpsilon << " - " << (xmax-xmin)/nxbin << endl;
}
-void AliL3HoughTransformerVhdl::Init(Int_t slice,Int_t patch,Int_t netasegments,Int_t /*nits*/)
+void AliHLTHoughTransformerVhdl::Init(Int_t slice,Int_t patch,Int_t netasegments,Int_t /*nits*/)
{
//Init hough transformer
- AliL3HoughTransformerLUT::Init(slice,patch,netasegments);
+ AliHLTHoughTransformerLUT::Init(slice,patch,netasegments);
}
-void AliL3HoughTransformerVhdl::TransformCircle()
+void AliHLTHoughTransformerVhdl::TransformCircle()
{
//Transform the input data with a circle HT.
//The function loops over all the data, and transforms each pixel with the equation:
//and the proper histogram index is found by GetEtaIndex(eta).
- AliL3DigitRowData *tempPt = GetDataPointer();
+ AliHLTDigitRowData *tempPt = GetDataPointer();
if(!tempPt)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformerVhdl::TransformCircle","Data")
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformerVhdl::TransformCircle","Data")
<<"No input data "<<ENDLOG;
return;
}
for(Int_t i=fMinRow, row=0; i<=fMaxRow; i++, row++)
{
//Get the data on this padrow:
- AliL3DigitData *digPt = tempPt->fDigitData;
+ AliHLTDigitData *digPt = tempPt->fDigitData;
if(i != (Int_t)tempPt->fRow)
{
- LOG(AliL3Log::kError,"AliL3HoughTransformerVhdl::TransformCircle","Data")
- <<"AliL3HoughTransformerLUT::TransformCircle : Mismatching padrow numbering "<<i<<" != "<<(Int_t)tempPt->fRow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTHoughTransformerVhdl::TransformCircle","Data")
+ <<"AliHLTHoughTransformerLUT::TransformCircle : Mismatching padrow numbering "<<i<<" != "<<(Int_t)tempPt->fRow<<ENDLOG;
continue;
}
Int_t etaindex = FindIndex(rz2);
if(etaindex < 0 || etaindex >= fNEtas){
- //LOG(AliL3Log::kWarning,"AliL3HoughTransformerVhdl::TransformCircle","Histograms")<<"No histograms corresponding to eta index value of "<<etaindex<<"."<<ENDLOG;
+ //LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerVhdl::TransformCircle","Histograms")<<"No histograms corresponding to eta index value of "<<etaindex<<"."<<ENDLOG;
continue;
}
//Get the correct histogrampointer:
- AliL3Histogram *hist = fParamSpace[etaindex];
+ AliHLTHistogram *hist = fParamSpace[etaindex];
if(!hist){
- //LOG(AliL3Log::kWarning,"AliL3HoughTransformerVhdl::TransformCircle","Histograms")<<"Error getting histogram in index "<<etaindex<<"."<<ENDLOG;
+ //LOG(AliHLTLog::kWarning,"AliHLTHoughTransformerVhdl::TransformCircle","Histograms")<<"Error getting histogram in index "<<etaindex<<"."<<ENDLOG;
continue;
}
}
}
//Move the data pointer to the next padrow:
- AliL3MemHandler::UpdateRowPointer(tempPt);
+ AliHLTMemHandler::UpdateRowPointer(tempPt);
}
#ifdef use_error
}
-void AliL3HoughTransformerVhdl::Print()
+void AliHLTHoughTransformerVhdl::Print()
{
//Print transformer params
- AliL3HoughTransformerLUT::Print();
+ AliHLTHoughTransformerLUT::Print();
cout << "fEpsilon: " << fEpsilon << endl;
cout << "fIts: " << fIts << endl;
}
-void AliL3HoughTransformerVhdl::PrintVhdl() const
+void AliHLTHoughTransformerVhdl::PrintVhdl() const
{
//Print all transformer params
cout << "fSlice := " << GetSlice() << ";" << endl;
#ifndef ALIL3HOUGHTRANSFORMERVHDL_H
#define ALIL3HOUGHTRANSFORMERVHDL_H
-#include "AliL3Histogram.h"
-#include "AliL3HoughTransformerLUT.h"
-class AliL3Histogram;
+#include "AliHLTHistogram.h"
+#include "AliHLTHoughTransformerLUT.h"
+class AliHLTHistogram;
-class AliL3HoughTransformerVhdl : public AliL3HoughTransformerLUT
+class AliHLTHoughTransformerVhdl : public AliHLTHoughTransformerLUT
{
public:
- AliL3HoughTransformerVhdl();
- AliL3HoughTransformerVhdl(Int_t slice,Int_t patch,Int_t netasegments,Int_t nits=0);
- virtual ~AliL3HoughTransformerVhdl();
+ AliHLTHoughTransformerVhdl();
+ AliHLTHoughTransformerVhdl(Int_t slice,Int_t patch,Int_t netasegments,Int_t nits=0);
+ virtual ~AliHLTHoughTransformerVhdl();
void CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t pres,Int_t nybin,Float_t psi) {
- AliL3HoughTransformerLUT::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
+ AliHLTHoughTransformerLUT::CreateHistograms(ptmin,ptmax,pres,nybin,psi);
}
void CreateHistograms(Int_t nxbin,Float_t ptmin,Int_t nybin,Float_t phimin,Float_t phimax);
void CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
void TransformCircle();
void TransformCircle(Int_t *row_range,Int_t every) {
- AliL3HoughTransformerLUT::TransformCircle(row_range,every);
+ AliHLTHoughTransformerLUT::TransformCircle(row_range,every);
}
void TransformCircleC(Int_t */*rowrange*/,Int_t /*every*/) {return;}
Float_t fYmin;//Lower limit in Y
Float_t fYmax;//Upper limit in Y
- ClassDef(AliL3HoughTransformerVhdl,1) //VHDL Hough transformation class
+ ClassDef(AliHLTHoughTransformerVhdl,1) //VHDL Hough transformation class
};
+typedef AliHLTHoughTransformerVhdl AliL3HoughTransformerVhdl; // for backward compatibility
+
#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3HOUGHDISPLAY_H
-#define ALIL3HOUGHDISPLAY_H
-
-class TGeometry;
-class AliL3TrackArray;
-class AliL3DigitRowData;
-class TPolyMarker3D;
-class AliL3Track;
-
-class AliL3HoughDisplay {
-
- public:
- AliL3HoughDisplay();
- virtual ~AliL3HoughDisplay();
-
- void Init(Char_t *trackfile, Char_t *gfile="$(LEVEL3)/GEO/alice.geom");
- void DisplayEvent();
- void ShowData(AliL3DigitRowData *data,UInt_t size,Int_t slice,Int_t patch);
-
- private:
-
- TGeometry *fGeom; //!
- AliL3TrackArray *fTracks; //!
- AliL3DigitRowData *fDigitRowData; //!
- UInt_t fNDigitRowData; //!
- Int_t fShowSlice; //Which slice to show
- Int_t fPatch;//Which patch to show
-
- void GenerateHits(AliL3Track *track,Float_t *x,Float_t *y,Float_t *z,Int_t &n);
-
- TPolyMarker3D *LoadDigits();
-
- ClassDef(AliL3HoughDisplay,1)
-};
-
-inline void AliL3HoughDisplay::ShowData(AliL3DigitRowData *data,UInt_t size,Int_t slice,Int_t patch)
-{
- fShowSlice = slice;
- fPatch = patch;
- fDigitRowData = data;
- fNDigitRowData = size;
-}
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3HOUGHEVAL_H
-#define ALIL3HOUGHEVAL_H
-
-#include "AliL3RootTypes.h"
-
-class AliL3TrackArray;
-class AliL3HoughBaseTransformer;
-class AliL3HoughTrack;
-class AliL3DigitRowData;
-class AliL3Histogram;
-class AliL3Histogram1D;
-
-class AliL3HoughEval {
-
- public:
- AliL3HoughEval();
- virtual ~AliL3HoughEval();
-
- void InitTransformer(AliL3HoughBaseTransformer *transformer);
- void GenerateLUT();
- void DisplayEtaSlice(Int_t etaindex,AliL3Histogram *hist);
- Bool_t LookInsideRoad(AliL3HoughTrack *track,Int_t &nrowscrossed,Int_t *rowrange,Bool_t remove=kFALSE);
-#ifdef use_root
- void CompareMC(AliL3TrackArray *tracks,Char_t *goodtracks="good_tracks",Int_t treshold=0);
-#endif
- void FindEta(AliL3TrackArray *tracks);
-
- //Getters
- AliL3Histogram1D *GetEtaHisto(Int_t i) {if(!fEtaHistos) return 0; if(!fEtaHistos[i]) return 0; return fEtaHistos[i];}
-
- //Setters:
- void RemoveFoundTracks() {fRemoveFoundTracks = kTRUE;}
- void SetNumOfRowsToMiss(Int_t i) {fNumOfRowsToMiss = i;}
- void SetNumOfPadsToLook(Int_t i) {fNumOfPadsToLook = i;}
- void SetSlice(Int_t i) {fSlice=i;}
- void SetZVertex(Float_t zvertex) {fZVertex=zvertex;}
-
- private:
-
- Int_t fSlice;//Index of the slice being processed
- Int_t fPatch;//Index of the patch being processed
- Int_t fNrows;//Number of padrows inside the patch
- Int_t fNEtaSegments;//Number of eta slices
- Double_t fEtaMin;//Minimum allowed eta
- Double_t fEtaMax;//Maximum allowed eta
- Int_t fNumOfPadsToLook;//Padrow search window
- Int_t fNumOfRowsToMiss;//Maximum numbers of padrow which could be missed
- AliL3Histogram1D **fEtaHistos; //!
- Float_t fZVertex;//Z position of the primary vertex
-
- //Flags
- Bool_t fRemoveFoundTracks;//Remove the found tracks or not?
-
- AliL3HoughBaseTransformer *fHoughTransformer; //!
- AliL3DigitRowData **fRowPointers; //!
-
- ClassDef(AliL3HoughEval,1) //Hough transform verfication class
-
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
-//*-- Copyright © ALICE HLT Group
-
-#include "AliL3StandardIncludes.h"
-
-#include "AliL3Logging.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3HoughGlobalMerger.h"
-#include "AliL3Track.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Transform.h"
-
-//_____________________________________________________________
-// Merging Hough tracks across slices
-
-ClassImp(AliL3HoughGlobalMerger)
-
-AliL3HoughGlobalMerger::AliL3HoughGlobalMerger()
-{
- fTracks = 0;
-}
-
-AliL3HoughGlobalMerger::AliL3HoughGlobalMerger(Int_t first,Int_t last)
-{
- fNSlices = last-first+1;
- fTracks = new AliL3TrackArray*[fNSlices];
- for(Int_t i=0; i<fNSlices; i++)
- fTracks[i] = new AliL3TrackArray("AliL3HoughTrack");
-
-
-}
-AliL3HoughGlobalMerger::~AliL3HoughGlobalMerger()
-{
- if(fTracks)
- {
- for(Int_t i=0; i<fNSlices; i++)
- {
- if(!fTracks[i])
- continue;
- delete fTracks;
- }
- delete [] fTracks;
- }
-
-}
-
-void AliL3HoughGlobalMerger::FillTracks(AliL3TrackArray *tracks,Int_t slice)
-{
-
- fTracks[slice]->AddTracks(tracks,kTRUE,slice);
-
-}
-
-void AliL3HoughGlobalMerger::Merge()
-{
- for(Int_t slice=0; slice<fNSlices; slice++)
- {
- if(slice+1 == fNSlices) continue;
- AliL3TrackArray *t1 = fTracks[slice];
- //AliL3TrackArray *t2 = fTracks[slice+1];
- Float_t angle = AliL3Transform::Pi()/18;
- AliL3Transform::Local2GlobalAngle(&angle,slice);
-
- for(Int_t i=0; i<t1->GetNTracks(); i++)
- {
-
- }
- }
-
-}
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3_HOUGHGLOBALMERGER_H
-#define ALIL3_HOUGHGLOBALMERGER_H
-
-#include "AliL3Merger.h"
-
-class AliL3TrackArray;
-class AliL3Track;
-
-class AliL3HoughGlobalMerger {
-
- private:
- AliL3TrackArray **fTracks; //!
- Int_t fNSlices;
-
- public:
- AliL3HoughGlobalMerger();
- AliL3HoughGlobalMerger(Int_t first,Int_t last);
- virtual ~AliL3HoughGlobalMerger();
-
- void FillTracks(AliL3TrackArray *tracks,Int_t i);
- void Merge();
-
- ClassDef(AliL3HoughGlobalMerger,1)
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3HOUGHINTMERGER_H
-#define ALIL3HOUGHINTMERGER_H
-
-#include "AliL3Merger.h"
-
-class AliL3HoughTrack;
-class AliL3Track;
-class AliL3TrackArray;
-
-class AliL3HoughIntMerger : public AliL3Merger {
-
- public:
- AliL3HoughIntMerger();
- virtual ~AliL3HoughIntMerger();
-
-
- AliL3Track *MultiMerge(AliL3TrackArray *mergedtrack,AliL3Track **tracks, Int_t ntrack);
- Bool_t IsTrack(AliL3Track *innertrack,AliL3Track *outertrack);
- void FillTracks(AliL3TrackArray *tracks);
- void Init(Int_t *row,Int_t p){fRowMin=row[0];fRowMax=row[1];fPatch=p;}
- Int_t Merge();
- void MMerge(); //Loop over tracks from different subsectors
- void SetParameters(Double_t maxkappa=0.001, Double_t maxpsi=0.05, Double_t maxtgl=0.1);
- void SortTracks(AliL3Track **tracks, Int_t ntrack) const;
- void Print(AliL3Track **tracks);
-
- private:
- Int_t fPatch;//Index of the current patch
- Int_t fRowMin;//First padrow inside the patch
- Int_t fRowMax;//Last padrow inside the patch
- Double_t fMaxKappa;//Maximum track curvature
- Double_t fMaxPhi0;//Maximum phi0??
- Double_t fMaxTgl;//??
-
- ClassDef(AliL3HoughIntMerger,1)
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#pragma link C++ class AliL3Hough;
-#pragma link C++ class AliL3HoughBaseTransformer;
-#pragma link C++ class AliL3HoughTransformer;
-#pragma link C++ class AliL3HoughTransformerLUT;
-#pragma link C++ class AliL3HoughTransformerVhdl;
-#pragma link C++ class AliL3HoughTransformerNew;
-#pragma link C++ class AliL3HoughTransformerRow;
-#ifndef macosx
-#pragma link C++ class AliL3HoughTrack;
-#pragma link C++ class AliL3HoughKalmanTrack;
-#endif
-#pragma link C++ class AliL3HoughMaxFinder;
-#pragma link C++ class AliL3HoughEval;
-#pragma link C++ class AliL3Histogram;
-#pragma link C++ class AliL3Histogram1D;
-#pragma link C++ class AliL3HoughMerger;
-#pragma link C++ class AliL3HoughIntMerger;
-#pragma link C++ class AliL3HoughGlobalMerger;
-#pragma link C++ class AliL3HoughDisplay;
-#pragma link C++ class AliL3HoughClusterTransformer;
-#pragma link C++ class AliL3HistogramAdaptive;
-#ifndef macosx
-#pragma link C++ class AliL3HoughTest;
-#endif
-
-#ifdef use_aliroot
-#pragma link C++ class AliL3HoughTransformerGlobal;
-#endif
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3HOUGHMERGER_H
-#define ALIL3HOUGHMERGER_H
-
-#include "AliL3RootTypes.h"
-#include "AliL3Merger.h"
-
-class AliL3TrackArray;
-class AliL3Track;
-
-class AliL3HoughMerger : public AliL3Merger {
-
- public:
- AliL3HoughMerger();
- AliL3HoughMerger(Int_t nsubsectors);
- virtual ~AliL3HoughMerger();
-
- virtual Bool_t IsTrack(AliL3Track *innertrack,AliL3Track *outertrack);
- virtual AliL3Track *MultiMerge(AliL3TrackArray *mergedtrack,AliL3Track **tracks, Int_t ntrack);
- virtual void AddTrack(AliL3TrackArray *mergedtrack,AliL3Track *track);
- void FillTracks(AliL3TrackArray *tracks,Int_t patch);
-
- void MergePatches(Bool_t slow=kTRUE);
- void MergeEtaSlices(Int_t /*patch*/) {};
- void MergeTracks(AliL3TrackArray */*intracks*/,Int_t /*i*/,Int_t /*j*/) {};
- void Print(AliL3Track **tracks);
- void SetParameters(Double_t maxkappa=0.001, Double_t maxpsi=0.05,Double_t maxphi0=0.1);
-
- private:
- Double_t fMaxY;//maximum Y
- Double_t fMaxZ;//maximum Z
- Double_t fMaxKappa;//maximum track curvature
- Double_t fMaxPsi;//maximum track emission angle
- Double_t fMaxTgl;//??
- Double_t fMaxPhi0;//??
- Bool_t fSlow;//??
-
- void Merge();
- Int_t Merge(AliL3TrackArray* mergedtrack,AliL3TrackArray *tracksin,AliL3TrackArray *tracksout);
- void SlowMerge(AliL3TrackArray *mergedtrack,AliL3TrackArray *tracksin,AliL3TrackArray *tracksout,Double_t xval);
-
- ClassDef(AliL3HoughMerger,1) //Patch merger for Hough tracklets
-
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3HOUGHTEST_H
-#define ALIL3HOUGHTEST_H
-
-#include "AliL3RootTypes.h"
-
-struct AliL3SimData {
- Int_t fPads[10][10];//maximum 10 pads width
- Int_t fNPads; //number of pads
- Int_t fMinpad; //??
- Int_t fMintime; //??
-};
-
-class AliL3Histogram;
-class TH2;
-class TH3;
-class AliL3TrackArray;
-
-class AliL3HoughTest {
-
- public:
-
- AliL3HoughTest();
- virtual ~AliL3HoughTest();
-
- Bool_t GenerateTrackData(Double_t pt,Double_t psi,Double_t tgl,Int_t sign,Int_t patch,Int_t minhits);
- void FillImage(TH2 *hist,Int_t row=-1);
- void Transform2Circle(AliL3Histogram *hist);
- void Transform2CircleC(AliL3Histogram *hist);
- void Transform2CircleF(AliL3Histogram *hist);
- void Transform2Line(AliL3Histogram *hist,Int_t *rowrange);
- void Transform2LineC(AliL3Histogram *hist,Int_t *rowrange);
- void Transform2Line3D(TH3 *hist,Int_t *rowrange,Float_t *phirange);
- void Transform2LineC3D(TH3 *hist,Int_t *rowrange);
- void TransformLines2Circle(TH3 *hist,AliL3TrackArray *tracks);
- void Transform2Center(AliL3Histogram *hist);
-
- void FindAbsMaxima(TH3 *hist,Int_t zsearch,Float_t &maxx,Float_t &maxy,Float_t &maxz,Int_t &maxvalue) const;
-
- private:
- AliL3SimData *fData; //??
- Int_t fCurrentPatch; //index of the current patch
-
- ClassDef(AliL3HoughTest,1) //Hough transform base class
-};
-
-#endif
-
-
-
-
-
-
-
# Constantin Loizides #
################################
-MODNAME = AliL3Hough
+MODNAME = AliHLTHough
ifndef ALIHLT_TOPDIR
ALIHLT_TOPDIR = $(shell pwd)/..
include $(ALIHLT_TOPDIR)/Makefile.conf
-SRCS = AliL3HoughTransformer.cxx AliL3HoughClusterTransformer.cxx \
- AliL3HoughEval.cxx AliL3HoughMerger.cxx AliL3HoughBaseTransformer.cxx \
- AliL3HoughIntMerger.cxx AliL3HoughGlobalMerger.cxx AliL3HoughTransformerVhdl.cxx \
- AliL3Histogram.cxx AliL3Histogram1D.cxx AliL3HoughMaxFinder.cxx AliL3Hough.cxx \
- AliL3HoughTransformerLUT.cxx AliL3HoughTransformerRow.cxx AliL3HistogramAdaptive.cxx
+SRCS = AliHLTHoughTransformer.cxx AliHLTHoughClusterTransformer.cxx \
+ AliHLTHoughEval.cxx AliHLTHoughMerger.cxx AliHLTHoughBaseTransformer.cxx \
+ AliHLTHoughIntMerger.cxx AliHLTHoughGlobalMerger.cxx AliHLTHoughTransformerVhdl.cxx \
+ AliHLTHistogram.cxx AliHLTHistogram1D.cxx AliHLTHoughMaxFinder.cxx AliHLTHough.cxx \
+ AliHLTHoughTransformerLUT.cxx AliHLTHoughTransformerRow.cxx AliHLTHistogramAdaptive.cxx
ifneq ($(ARCH),macosx)
## for macosx put into src as symbolic link
-SRCS += AliL3HoughTrack.cxx
+SRCS += AliHLTHoughTrack.cxx
endif
ifeq ($(ALIHLT_USEPACKAGE),ROOT)
-SRCS += AliL3HoughDisplay.cxx AliL3HoughTest.cxx AliL3HoughTransformerNew.cxx AliL3HoughTransformerGlobal.cxx
+SRCS += AliHLTHoughDisplay.cxx AliHLTHoughTest.cxx AliHLTHoughTransformerNew.cxx AliHLTHoughTransformerGlobal.cxx
HDRS = $(SRCS:.cxx=.h) $(MODNAME)LinkDef.h
OBJS = $(patsubst %.cxx,$(OBJDIR)/%.o,$(SRCS)) $(DICTO)
endif
ifeq ($(ALIHLT_USEPACKAGE),ALIROOT)
-SRCS += AliL3HoughDisplay.cxx AliL3HoughTest.cxx AliL3HoughTransformerNew.cxx AliL3HoughTransformerGlobal.cxx
+SRCS += AliHLTHoughDisplay.cxx AliHLTHoughTest.cxx AliHLTHoughTransformerNew.cxx AliHLTHoughTransformerGlobal.cxx
HDRS = $(SRCS:.cxx=.h) $(MODNAME)LinkDef.h
OBJS = $(patsubst %.cxx,$(OBJDIR)/%.o,$(SRCS)) $(DICTO)
endif
// $Id$
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
#include <sys/time.h>
#include <TNtuple.h>
#include <TTimer.h>
-#include "AliL3Track.h"
-#include "AliL3KalmanTrack.h"
-#include "AliL3Benchmark.h"
-#include "AliL3MemHandler.h"
-#include "AliL3FileHandler.h"
-#include "AliL3DataHandler.h"
-#include "AliL3Transform.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3DigitData.h"
-#include "AliL3Logging.h"
-#include "AliL3TrackArray.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3InterMerger.h"
-#include "AliL3TrackMerger.h"
-#include "AliL3Kalman.h"
+#include "AliHLTTrack.h"
+#include "AliHLTKalmanTrack.h"
+#include "AliHLTBenchmark.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDataHandler.h"
+#include "AliHLTTransform.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTInterMerger.h"
+#include "AliHLTTrackMerger.h"
+#include "AliHLTKalman.h"
/*
- AliL3Kalman
+ AliHLTKalman
*/
-ClassImp(AliL3Kalman)
+ClassImp(AliHLTKalman)
-AliL3Kalman::AliL3Kalman(Char_t *datapath, Int_t *slice, Int_t min_clusters = 0){
+AliHLTKalman::AliHLTKalman(Char_t *datapath, Int_t *slice, Int_t min_clusters = 0){
// Constructor
if (slice)
{
// NB! fNrow under only for single-patch, must include other possibilities
// later on. ?? Maybe better also to put it in an Init-function
fRow[0][0] = 0;
- fRow[0][1] = AliL3Transform::GetLastRow(-1);
+ fRow[0][1] = AliHLTTransform::GetLastRow(-1);
fWriteOut = kTRUE;
fBenchmark = 0;
}
-AliL3Kalman::~AliL3Kalman()
+AliHLTKalman::~AliHLTKalman()
{
// Destructor
if (fBenchmark) delete fBenchmark;
}
-void AliL3Kalman::Init()
+void AliHLTKalman::Init()
{
- fBenchmark = new AliL3Benchmark();
+ fBenchmark = new AliHLTBenchmark();
}
-void AliL3Kalman::LoadTracks(Int_t event, Bool_t sp)
+void AliHLTKalman::LoadTracks(Int_t event, Bool_t sp)
{
// Load space points and tracks from conformal tracker
// Must also be possible to take seeds (and clusters) from Hough-transform??
// Load space points
Char_t fname[1024];
- AliL3FileHandler *clusterfile[36][6];
+ AliHLTFileHandler *clusterfile[36][6];
for(Int_t s=fMinSlice; s<=fMaxSlice; s++)
{
- for(Int_t p=0; p<AliL3Transform::GetNPatches(); p++)
+ for(Int_t p=0; p<AliHLTTransform::GetNPatches(); p++)
{
Int_t patch;
if(sp==kTRUE)
patch=p;
fClusters[s][p] = 0;
- clusterfile[s][p] = new AliL3FileHandler();
+ clusterfile[s][p] = new AliHLTFileHandler();
if(event<0)
sprintf(fname,"%s/points_%d_%d.raw",fPath,s,patch);
else
sprintf(fname,"%s/points_%d_%d_%d.raw",fPath,event,s,patch);
if(!clusterfile[s][p]->SetBinaryInput(fname))
{
- LOG(AliL3Log::kError,"AliL3Evaluation::Setup","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluation::Setup","File Open")
<<"Inputfile "<<fname<<" does not exist"<<ENDLOG;
delete clusterfile[s][p];
clusterfile[s][p] = 0;
continue;
}
- fClusters[s][p] = (AliL3SpacePointData*)clusterfile[s][p]->Allocate();
+ fClusters[s][p] = (AliHLTSpacePointData*)clusterfile[s][p]->Allocate();
clusterfile[s][p]->Binary2Memory(fNcl[s][p],fClusters[s][p]);
clusterfile[s][p]->CloseBinaryInput();
if(sp==kTRUE)
// Load tracks
//sprintf(fname,"%s/kalmantracks_%d.raw",fPath,event);
sprintf(fname,"%s/tracks_%d.raw",fPath,event);
- AliL3FileHandler *tfile = new AliL3FileHandler();
+ AliHLTFileHandler *tfile = new AliHLTFileHandler();
if(!tfile->SetBinaryInput(fname)){
- LOG(AliL3Log::kError,"AliL3Evaluation::Setup","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluation::Setup","File Open")
<<"Inputfile "<<fname<<" does not exist"<<ENDLOG;
return;
}
if(fTracks)
delete fTracks;
- fTracks = new AliL3TrackArray();
+ fTracks = new AliHLTTrackArray();
tfile->Binary2TrackArray(fTracks);
tfile->CloseBinaryInput();
delete tfile;
fBenchmark->Stop("Load tracks");
cpuTime = GetCpuTime() - initTime;
- LOG(AliL3Log::kInformational,"AliL3Kalman::LoadTracks()","Timing")
+ LOG(AliHLTLog::kInformational,"AliHLTKalman::LoadTracks()","Timing")
<<"Loading tracks in "<<cpuTime*1000<<" ms"<<ENDLOG;
}
-void AliL3Kalman::ProcessTracks()
+void AliHLTKalman::ProcessTracks()
{
// Run the Kalman filter algorithm on the loaded tracks.
// If the track is OK, the loaded track is saved in file kalmantracks_0.raw
fTracks->QSort();
- fKalmanTracks = new AliL3TrackArray();
+ fKalmanTracks = new AliHLTTrackArray();
// Make a ntuple to store state vector, covariance matrix and chisquare
// Will eventually not need a TTree??
initTime = GetCpuTime();
fBenchmark->Start("Process tracks");*/
- AliL3Track *track = (AliL3Track*)fTracks->GetCheckedTrack(iTrack);
+ AliHLTTrack *track = (AliHLTTrack*)fTracks->GetCheckedTrack(iTrack);
if (!track) continue;
if (track->GetNumberOfPoints() < fMinPointsOnTrack) continue;
- AliL3KalmanTrack *kalmantrack = new AliL3KalmanTrack();
+ AliHLTKalmanTrack *kalmantrack = new AliHLTKalmanTrack();
Bool_t save = kTRUE;
meas[20] = chisq;
// Add the track to the trackarray
- AliL3Track *outtrack = (AliL3Track*)fKalmanTracks->NextTrack();
+ AliHLTTrack *outtrack = (AliHLTTrack*)fKalmanTracks->NextTrack();
outtrack->Set(track);
// SET THE PARAMETERS ACCORDING TO KALMAN FILTER
outtrack->SetTgl(x[3]);
// The factor 2 in the expression for Pt is not included in the similar offline expression. However
// it should be like this if I use a factor 1/2 in the calculation of par4??
- //outtrack->SetPt(1/(2*TMath::Abs(1e-9*TMath::Abs(x[4])/x[4] + x[4])/(0.0029980*AliL3Transform::GetBField())));
- //outtrack->SetPt(1/(TMath::Abs(x[4])/0.0029980*AliL3Transform::GetBField()));
+ //outtrack->SetPt(1/(2*TMath::Abs(1e-9*TMath::Abs(x[4])/x[4] + x[4])/(0.0029980*AliHLTTransform::GetBField())));
+ //outtrack->SetPt(1/(TMath::Abs(x[4])/0.0029980*AliHLTTransform::GetBField()));
outtrack->SetPsi(x[2]);
//outtrack->Set(track);
/*fBenchmark->Stop("Process tracks");
cpuTime = GetCpuTime() - initTime;
- LOG(AliL3Log::kInformational,"AliL3Kalman::ProcessTracks()","Timing")
+ LOG(AliHLTLog::kInformational,"AliHLTKalman::ProcessTracks()","Timing")
<<"Processed track "<<iTrack<<" in "<<cpuTime*1000<<" ms"<<ENDLOG;*/
}
fBenchmark->Stop("Process tracks");
cpuTime = GetCpuTime() - initTime;
- LOG(AliL3Log::kInformational,"AliL3Kalman::ProcessTracks()","Timing")
+ LOG(AliHLTLog::kInformational,"AliHLTKalman::ProcessTracks()","Timing")
<<"Process tracks in "<<cpuTime*1000<<" ms"<<ENDLOG;
if (fWriteOut)
{
Char_t tname[80];
sprintf(tname,"%s/kalmantracks_%d.raw",fWriteOutPath,fEvent);
- AliL3MemHandler *mem = new AliL3MemHandler();
+ AliHLTMemHandler *mem = new AliHLTMemHandler();
mem->SetBinaryOutput(tname);
mem->TrackArray2Binary(fKalmanTracks);
mem->CloseBinaryOutput();
}
-Int_t AliL3Kalman::MakeKalmanSeed(AliL3KalmanTrack *kalmantrack, AliL3Track *track)
+Int_t AliHLTKalman::MakeKalmanSeed(AliHLTKalmanTrack *kalmantrack, AliHLTTrack *track)
{
Int_t num_of_clusters = track->GetNumberOfPoints();
Int_t slice0 = (id>>25) & 0x7f;
Int_t patch0 = (id>>22) & 0x7;
UInt_t pos0 = id&0x3fffff;
- AliL3SpacePointData *points0 = fClusters[slice0][patch0];
+ AliHLTSpacePointData *points0 = fClusters[slice0][patch0];
id = hitnum[Int_t(num_of_clusters/2)];
Int_t slice1 = (id>>25) & 0x7f;
Int_t patch1 = (id>>22) & 0x7;
UInt_t pos1 = id&0x3fffff;
- AliL3SpacePointData *points1 = fClusters[slice1][patch1];
+ AliHLTSpacePointData *points1 = fClusters[slice1][patch1];
id = hitnum[num_of_clusters-1];
Int_t slice2 = (id>>25) & 0x7f;
Int_t patch2 = (id>>22) & 0x7;
UInt_t pos2 = id&0x3fffff;
- AliL3SpacePointData *points2 = fClusters[slice2][patch2];
+ AliHLTSpacePointData *points2 = fClusters[slice2][patch2];
return kalmantrack->MakeSeed(track, points0, pos0, slice0, points1, pos1, slice1, points2, pos2, slice2);
}
-Int_t AliL3Kalman::InitKalmanTrack(AliL3KalmanTrack *kalmantrack, AliL3Track *track)
+Int_t AliHLTKalman::InitKalmanTrack(AliHLTKalmanTrack *kalmantrack, AliHLTTrack *track)
{
UInt_t *hitnum = track->GetHitNumbers();
UInt_t id;
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
return kalmantrack->Init(track, points, pos, slice);
}
-Int_t AliL3Kalman::Propagate(AliL3KalmanTrack *kalmantrack, AliL3Track *track)
+Int_t AliHLTKalman::Propagate(AliHLTKalmanTrack *kalmantrack, AliHLTTrack *track)
{
// This function propagtes the kalmantrack to the next cluster of the loaded
// track
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
if (!points) continue;
if (kalmantrack->Propagate(points,pos,slice) == 0)
{
return 1;
}
-Double_t AliL3Kalman::GetCpuTime()
+Double_t AliHLTKalman::GetCpuTime()
{
//Return the Cputime in seconds.
struct timeval tv;
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3_KALMAN
+#define ALIL3_KALMAN
+
+
+class AliHLTSpacePointData;
+class AliHLTTrackArray;
+class AliHLTBenchmark;
+class AliHLTTrackSegmentData;
+class AliHLTKalmanTrack;
+class AliHLTTrack;
+
+class AliHLTKalman {
+
+ private:
+
+ Int_t fMinSlice;
+ Int_t fMaxSlice;
+ AliHLTSpacePointData *fClusters[36][6];
+ Char_t fPath[1024];
+ UInt_t fNcl[36][6];
+ AliHLTTrackArray *fTracks;
+ AliHLTTrackArray *fKalmanTracks;
+ AliHLTTrackArray *fSeeds;
+
+ AliHLTBenchmark *fBenchmark;
+ Int_t fMinPointsOnTrack;
+ Int_t fRow[6][2];
+ Char_t fWriteOutPath[256];
+ Bool_t fWriteOut;
+ Int_t fEvent;
+
+ public:
+
+ AliHLTKalman(Char_t *datapath, Int_t *slice, Int_t min_clusters);
+ virtual ~AliHLTKalman();
+ void Init();
+ void LoadTracks(Int_t event, Bool_t sp);
+ void ProcessTracks();
+ Int_t MakeKalmanSeed(AliHLTKalmanTrack *kalmantrack, AliHLTTrack *track);
+ Int_t InitKalmanTrack(AliHLTKalmanTrack *kalmantrack, AliHLTTrack *track);
+ Int_t Propagate(AliHLTKalmanTrack *kalmantrack, AliHLTTrack *track);
+ Int_t Update(AliHLTSpacePointData *points, UInt_t pos, AliHLTKalmanTrack *kalmantrack);
+ void WriteFiles(Char_t *path="data"){fWriteOut = kTRUE; sprintf(fWriteOutPath,"%s",path);}
+ Double_t GetCpuTime();
+ AliHLTTrackArray *GetTracks() {return fKalmanTracks;}
+};
+
+typedef AliHLTKalman AliL3Kalman; // for backward compatibility
+
+#endif
--- /dev/null
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+
+#pragma link C++ typedef AliL3Kalman;
+#pragma link C++ typedef AliL3KalmanTrack;
+
+#pragma link C++ class AliHLTKalman;
+#pragma link C++ class AliHLTKalmanTrack;
+
+#endif
#include "TMath.h"
-#include "AliL3KalmanTrack.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3StandardIncludes.h"
+#include "AliHLTKalmanTrack.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTStandardIncludes.h"
// includes for offline comparison, will be removed
#include "AliTPCtrack.h"
#include "Riostream.h"
-ClassImp(AliL3KalmanTrack)
+ClassImp(AliHLTKalmanTrack)
// Class for kalman tracks
-AliL3KalmanTrack::AliL3KalmanTrack()
+AliHLTKalmanTrack::AliHLTKalmanTrack()
{
fX = 0;
// Constructor
}
-AliL3KalmanTrack::~AliL3KalmanTrack()
+AliHLTKalmanTrack::~AliHLTKalmanTrack()
{
// Destructor
}
-Int_t AliL3KalmanTrack::MakeSeed(AliL3Track *track, AliL3SpacePointData *points0, UInt_t pos0, Int_t slice0, AliL3SpacePointData *points1, UInt_t pos1, Int_t slice1, AliL3SpacePointData *points2, UInt_t pos2, Int_t slice2)
+Int_t AliHLTKalmanTrack::MakeSeed(AliHLTTrack *track, AliHLTSpacePointData *points0, UInt_t pos0, Int_t slice0, AliHLTSpacePointData *points1, UInt_t pos1, Int_t slice1, AliHLTSpacePointData *points2, UInt_t pos2, Int_t slice2)
{
Float_t xyz[3];
xyz[0] = points0[pos0].fX;
xyz[1] = points0[pos0].fY;
- AliL3Transform::Global2LocHLT(xyz,slice0);
+ AliHLTTransform::Global2LocHLT(xyz,slice0);
fX = xyz[0];
fP0 = xyz[1];
fP1 = points0[pos0].fZ;
xyz[0] = points1[pos1].fX;
xyz[1] = points1[pos1].fY;
- AliL3Transform::Global2LocHLT(xyz,slice1);
+ AliHLTTransform::Global2LocHLT(xyz,slice1);
Float_t x2 = xyz[0];
Float_t y2 = xyz[1];
Float_t z2 = points1[pos1].fZ;
xyz[0] = points2[pos2].fX;
xyz[1] = points2[pos2].fY;
- AliL3Transform::Global2LocHLT(xyz,slice2);
+ AliHLTTransform::Global2LocHLT(xyz,slice2);
Float_t x3 = 0;//xyz[0];
Float_t y3 = 0;//xyz[1];
Float_t z3 = 0;//points2[pos2].fZ;
return 1;
}
-Int_t AliL3KalmanTrack::Init(AliL3Track *track, AliL3SpacePointData *points, UInt_t pos, Int_t slice)
+Int_t AliHLTKalmanTrack::Init(AliHLTTrack *track, AliHLTSpacePointData *points, UInt_t pos, Int_t slice)
{
// Can also find seed for x4 by track->CalculateHelix() and fP4 = track->GetKappa()
Float_t xyz[3];
xyz[0] = points[pos].fX;
xyz[1] = points[pos].fY;
- AliL3Transform::Global2LocHLT(xyz,slice);
+ AliHLTTransform::Global2LocHLT(xyz,slice);
fX = xyz[0];
// Is this consistent with what's used in AliTPCtrack and AliTPCtracker ??
// Except for the factor 0.5, it is somewhat consistent with the calculation of Pt in AliTPCtrack.
// When I plot fP4, it is more consistent with offline if the factor 1/2 is included.
- //fP4 = (-track->GetCharge()*1./(track->GetPt()/(0.0029980*AliL3Transform::GetBField())));
- fP4 = 0.5*(-track->GetCharge()*1./(track->GetPt()/(0.0029980*AliL3Transform::GetBField())));
+ //fP4 = (-track->GetCharge()*1./(track->GetPt()/(0.0029980*AliHLTTransform::GetBField())));
+ fP4 = 0.5*(-track->GetCharge()*1./(track->GetPt()/(0.0029980*AliHLTTransform::GetBField())));
//cout << fP4 << endl;
//fP4 = 0.5*track->GetKappa();
if (TMath::Abs(fP4) >= 0.0066) return 0; // From AliTPCtrackerMI
/*Float_t firstXY[2];
firstXY[0] = track->GetFirstPointX();
firstXY[1] = track->GetFirstPointY();
- AliL3Transform::Global2LocHLT(firstXY,slice);
+ AliHLTTransform::Global2LocHLT(firstXY,slice);
*/
- //Float_t centerX = track->GetFirstPointX() - ((track->GetPt()/(0.0029980*AliL3Transform::GetBField())) * TMath::Cos(track->GetPsi() + track->GetCharge() * 0.5 * 3.14159265358979323846));
- //Float_t centerX = firstXY[0] - ((track->GetPt()/(0.0029980*AliL3Transform::GetBField())) * TMath::Cos(track->GetPsi() + track->GetCharge() * 0.5 * 3.14159265358979323846));
+ //Float_t centerX = track->GetFirstPointX() - ((track->GetPt()/(0.0029980*AliHLTTransform::GetBField())) * TMath::Cos(track->GetPsi() + track->GetCharge() * 0.5 * 3.14159265358979323846));
+ //Float_t centerX = firstXY[0] - ((track->GetPt()/(0.0029980*AliHLTTransform::GetBField())) * TMath::Cos(track->GetPsi() + track->GetCharge() * 0.5 * 3.14159265358979323846));
//fP2 = fP4*centerX; // Curvature times center of curvature
// track->GetPointPsi() is almost always zero, why??. Still it's good for seed.
return 0;
}
- //cout << "AliL3KalmanTrack::Init, " << fP0 << " " << fP1 << " " << fP2 << " " << fP3 << " " << fP4 << endl;
+ //cout << "AliHLTKalmanTrack::Init, " << fP0 << " " << fP1 << " " << fP2 << " " << fP3 << " " << fP4 << endl;
//Float_t num = 12;
fC00 = points[pos].fSigmaY2;
return 1;
}
-Int_t AliL3KalmanTrack::Propagate(AliL3SpacePointData *points, UInt_t pos, Int_t slice)
+Int_t AliHLTKalmanTrack::Propagate(AliHLTSpacePointData *points, UInt_t pos, Int_t slice)
{
// Propagates track to the plane of the next found cluster
Float_t Xold = fX; // X position for previous space point
xyz[0] = points[pos].fX;
xyz[1] = points[pos].fY;
- //AliL3Transform::Global2Local(xyz,slice);
- AliL3Transform::Global2LocHLT(xyz,slice);
+ //AliHLTTransform::Global2Local(xyz,slice);
+ AliHLTTransform::Global2LocHLT(xyz,slice);
Float_t Xnew = xyz[0];
Float_t dx = Xnew - Xold; //cout << Xnew << endl;
//return UpdateTrack(points, pos, slice);
}
-Int_t AliL3KalmanTrack::UpdateTrack(AliL3SpacePointData *points, UInt_t pos, Int_t slice)
+Int_t AliHLTKalmanTrack::UpdateTrack(AliHLTSpacePointData *points, UInt_t pos, Int_t slice)
{
// Update the track parameters with the measured values
xyz[0] = points[pos].fX;
xyz[1] = points[pos].fY;
- //AliL3Transform::Global2Local(xyz,slice);
- AliL3Transform::Global2LocHLT(xyz,slice);
+ //AliHLTTransform::Global2Local(xyz,slice);
+ AliHLTTransform::Global2LocHLT(xyz,slice);
//fX = points[pos].fX;
fX = xyz[0];
fP2 = eta;
fP3 += k30*dy + k31*dz; //cout << "update " << fP3 << endl;
fP4 = cur;
- //cout << "AliL3KalmanTrack::Update, " << fP0 << " " << fP1 << " " << fP2 << " " << fP3 << " " << fP4 << endl;
+ //cout << "AliHLTKalmanTrack::Update, " << fP0 << " " << fP1 << " " << fP2 << " " << fP3 << " " << fP4 << endl;
//cout << "Measured, " << points[pos].fY << " " << points[pos].fZ << endl;
Float_t c10 = fC10;
/* sigmaY2 = sigmaY2*det;
sigmaZ2 = sigmaZ2*det;
sigmaYZ = sigmaYZ*det;*/
- //cout << "AliL3KalmanTrack::Update, Chi2 = " << GetChisq() << endl;
+ //cout << "AliHLTKalmanTrack::Update, Chi2 = " << GetChisq() << endl;
//cout << "AliKalmanTrack::Update, sigmaY2 = " << sigmaY2 << " sigmaZ2 = " << sigmaZ2 << " sigmaYZ = " << sigmaYZ << " dy = " << dy << " dz = " << dz << endl;
// Calculate increase of chisquare
return 1;
}
-//Float_t AliL3KalmanTrack::GetChisqIncrement(AliL3SpacePointData *points, UInt_t pos)
-Float_t AliL3KalmanTrack::GetChisqIncrement(Float_t y, Float_t error_y, Float_t z, Float_t error_z)
+//Float_t AliHLTKalmanTrack::GetChisqIncrement(AliHLTSpacePointData *points, UInt_t pos)
+Float_t AliHLTKalmanTrack::GetChisqIncrement(Float_t y, Float_t error_y, Float_t z, Float_t error_z)
{
// This function calculates a predicted chi2 increment.
//-----------------------------------------------------------------
return (dy*r00*dy + 2*r01*dy*dz + dz*r11*dz)/det;
}
-Float_t AliL3KalmanTrack::f2(Float_t x1,Float_t y1,
+Float_t AliHLTKalmanTrack::f2(Float_t x1,Float_t y1,
Float_t x2,Float_t y2,
Float_t x3,Float_t y3)
{
return -a/(d*y1-b)*xr/sqrt(xr*xr+yr*yr);
}
-Float_t AliL3KalmanTrack::f3(Float_t x1,Float_t y1,
+Float_t AliHLTKalmanTrack::f3(Float_t x1,Float_t y1,
Float_t x2,Float_t y2,
Float_t z1,Float_t z2)
{
return (z1 - z2)/sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
-Float_t AliL3KalmanTrack::f4(Float_t x1,Float_t y1,
+Float_t AliHLTKalmanTrack::f4(Float_t x1,Float_t y1,
Float_t x2,Float_t y2,
Float_t x3,Float_t y3)
{
return -xr*yr/sqrt(xr*xr+yr*yr);
}
-void AliL3KalmanTrack::Set(AliL3KalmanTrack *track)
+void AliHLTKalmanTrack::Set(AliHLTKalmanTrack *track)
{
- AliL3KalmanTrack *tpt = (AliL3KalmanTrack*)track;
+ AliHLTKalmanTrack *tpt = (AliHLTKalmanTrack*)track;
SetX0(tpt->GetX0());
SetX1(tpt->GetX1());
SetX2(tpt->GetX2());
SetNHits(tpt->GetNHits());
}
-Int_t AliL3KalmanTrack::PropagateOfflineTrack(Double_t x, Double_t y, Double_t z, Double_t ey, Double_t ez)
+Int_t AliHLTKalmanTrack::PropagateOfflineTrack(Double_t x, Double_t y, Double_t z, Double_t ey, Double_t ez)
{
// Propagates track to the plane of the next found cluster
Float_t Xold = fX; // X position for previous space point
}
-Int_t AliL3KalmanTrack::UpdateOfflineTrack(Double_t x, Double_t y, Double_t z, Double_t ey, Double_t ez)
+Int_t AliHLTKalmanTrack::UpdateOfflineTrack(Double_t x, Double_t y, Double_t z, Double_t ey, Double_t ez)
{
// Update the track parameters with the measured values
//fX = x;
fP2 = eta;
fP3 += k30*dy + k31*dz; //cout << "update " << fP3 << endl;
fP4 = cur;
- //cout << "AliL3KalmanTrack::Update, " << fP0 << " " << fP1 << " " << fP2 << " " << fP3 << " " << fP4 << endl;
+ //cout << "AliHLTKalmanTrack::Update, " << fP0 << " " << fP1 << " " << fP2 << " " << fP3 << " " << fP4 << endl;
//cout << "Measured, " << points[pos].fY << " " << points[pos].fZ << endl;
Float_t c01 = fC10;
fC44 -= k40*c04 + k41*c14;
- //cout << "AliL3KalmanTrack::Update, error " << fC00 << " " << fC11 << " " << fC22 << " " << fC33 << " " << fC44 << endl;
+ //cout << "AliHLTKalmanTrack::Update, error " << fC00 << " " << fC11 << " " << fC22 << " " << fC33 << " " << fC44 << endl;
sigmaY2 = sigmaY2*det;
sigmaZ2 = sigmaZ2*det;
sigmaYZ = sigmaYZ*det;
- //cout << "AliL3KalmanTrack::Update, Chi2 = " << GetChisq() << endl;
+ //cout << "AliHLTKalmanTrack::Update, Chi2 = " << GetChisq() << endl;
fChisq = GetChisq() + GetChisqIncrementOfflineTrack(y,z,ey,ez);
//cout << "fChisq = " << fChisq << endl;
}
-Float_t AliL3KalmanTrack::GetChisqIncrementOfflineTrack(Double_t y, Double_t z, Double_t ey, Double_t ez)
+Float_t AliHLTKalmanTrack::GetChisqIncrementOfflineTrack(Double_t y, Double_t z, Double_t ey, Double_t ez)
{
// This function calculates a predicted chi2 increment.
//-----------------------------------------------------------------
* GetCovariance(Float_t xx[15])
*/
-#include "AliL3RootTypes.h"
-#include "AliL3Track.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTTrack.h"
// includes for offline comparison, will be removed
#include "AliTPCtrack.h"
// includes for offline comparison, will be removed
-class AliL3SpacePointData;
+class AliHLTSpacePointData;
-class AliL3KalmanTrack : public AliL3Track {
-//class AliL3KalmanTrack {
+class AliHLTKalmanTrack : public AliHLTTrack {
+//class AliHLTKalmanTrack {
private:
public:
- AliL3KalmanTrack();
- virtual ~AliL3KalmanTrack();
-Int_t MakeSeed(AliL3Track *track, AliL3SpacePointData *points0, UInt_t pos0, Int_t slice0, AliL3SpacePointData *points1, UInt_t pos1, Int_t slice1, AliL3SpacePointData *points2, UInt_t pos2, Int_t slice2);
- Int_t Init(AliL3Track *track, AliL3SpacePointData *points, UInt_t pos,Int_t slice);
- Int_t Propagate(AliL3SpacePointData *points, UInt_t pos, Int_t slice);
- Int_t UpdateTrack(AliL3SpacePointData *points, UInt_t pos, Int_t slice);
- Int_t UpdateTrackII(AliL3SpacePointData *points, UInt_t pos);
+ AliHLTKalmanTrack();
+ virtual ~AliHLTKalmanTrack();
+Int_t MakeSeed(AliHLTTrack *track, AliHLTSpacePointData *points0, UInt_t pos0, Int_t slice0, AliHLTSpacePointData *points1, UInt_t pos1, Int_t slice1, AliHLTSpacePointData *points2, UInt_t pos2, Int_t slice2);
+ Int_t Init(AliHLTTrack *track, AliHLTSpacePointData *points, UInt_t pos,Int_t slice);
+ Int_t Propagate(AliHLTSpacePointData *points, UInt_t pos, Int_t slice);
+ Int_t UpdateTrack(AliHLTSpacePointData *points, UInt_t pos, Int_t slice);
+ Int_t UpdateTrackII(AliHLTSpacePointData *points, UInt_t pos);
void AddTrack();
// Float_t GetStateVector(Float_t xx[5]) const {
void GetStateVector(Float_t xx[5]) const {
fC44 = f[14];}
void SetChisq(Float_t f) {fChisq = f;}
void SetMaxChi2(Float_t f) {fMaxChi2 = f;}
- //Float_t GetChisqIncrement(AliL3SpacePointData *points, UInt_t pos);
+ //Float_t GetChisqIncrement(AliHLTSpacePointData *points, UInt_t pos);
Float_t GetChisqIncrement(Float_t y, Float_t error_y, Float_t z, Float_t error_z);
Float_t f2(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t x3,Float_t y3);
Float_t f3(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t z1,Float_t z2);
Float_t f4(Float_t x1,Float_t y1, Float_t x2,Float_t y2, Float_t x3,Float_t y3);
- void Set(AliL3KalmanTrack *track);
+ void Set(AliHLTKalmanTrack *track);
Int_t GetNHits() const {return fNHits;}
void SetNHits(Int_t f) {fNHits = f;}
};
+typedef AliHLTKalmanTrack AliL3KalmanTrack; // for backward compatibility
+
#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3_KALMAN
-#define ALIL3_KALMAN
-
-
-class AliL3SpacePointData;
-class AliL3TrackArray;
-class AliL3Benchmark;
-class AliL3TrackSegmentData;
-class AliL3KalmanTrack;
-class AliL3Track;
-
-class AliL3Kalman {
-
- private:
-
- Int_t fMinSlice;
- Int_t fMaxSlice;
- AliL3SpacePointData *fClusters[36][6];
- Char_t fPath[1024];
- UInt_t fNcl[36][6];
- AliL3TrackArray *fTracks;
- AliL3TrackArray *fKalmanTracks;
- AliL3TrackArray *fSeeds;
-
- AliL3Benchmark *fBenchmark;
- Int_t fMinPointsOnTrack;
- Int_t fRow[6][2];
- Char_t fWriteOutPath[256];
- Bool_t fWriteOut;
- Int_t fEvent;
-
- public:
-
- AliL3Kalman(Char_t *datapath, Int_t *slice, Int_t min_clusters);
- virtual ~AliL3Kalman();
- void Init();
- void LoadTracks(Int_t event, Bool_t sp);
- void ProcessTracks();
- Int_t MakeKalmanSeed(AliL3KalmanTrack *kalmantrack, AliL3Track *track);
- Int_t InitKalmanTrack(AliL3KalmanTrack *kalmantrack, AliL3Track *track);
- Int_t Propagate(AliL3KalmanTrack *kalmantrack, AliL3Track *track);
- Int_t Update(AliL3SpacePointData *points, UInt_t pos, AliL3KalmanTrack *kalmantrack);
- void WriteFiles(Char_t *path="data"){fWriteOut = kTRUE; sprintf(fWriteOutPath,"%s",path);}
- Double_t GetCpuTime();
- AliL3TrackArray *GetTracks() {return fKalmanTracks;}
-};
-
-#endif
+++ /dev/null
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#pragma link C++ class AliL3Kalman;
-#pragma link C++ class AliL3KalmanTrack;
-
-#endif
# Constantin Loizides #
################################
-MODNAME = AliL3Kalman
+MODNAME = AliHLTKalman
ifndef ALIHLT_TOPDIR
ALIHLT_TOPDIR = $(shell pwd)/..
include $(ALIHLT_TOPDIR)/Makefile.conf
-SRCS = AliL3Kalman.cxx AliL3KalmanTrack.cxx
+SRCS = AliHLTKalman.cxx AliHLTKalmanTrack.cxx
ifeq ($(ALIHLT_USEPACKAGE),ROOT)
HDRS = $(SRCS:.cxx=.h) $(MODNAME)LinkDef.h
+++ /dev/null
-#-*- Mode: Makefile -*-
-# $Id$
-
-include HLT/hlt.conf
-
-SRCS:= comp/AliL3ClusterFitter.cxx \
-comp/AliL3Compress.cxx \
-comp/AliL3DataCompressor.cxx \
-comp/AliL3DataCompressorHelper.cxx \
-comp/AliL3ModelTrack.cxx \
-comp/AliL3Modeller.cxx \
-comp/AliL3OfflineDataCompressor.cxx \
-comp/AliL3CompressAC.cxx
-
-CSRCS:= comp/AliL3FitUtilities.c comp/bitio.c comp/errhand.c
-
-HDRS:= $(SRCS:.cxx=.h)
-
-CHDRS:= $(CSRCS:.c=.h)
-
-DHDR:= comp/AliL3CompLinkDef.h
-
-EDEFINE := ${HLTDEFS}
-PACKCXXFLAGS := ${HLTCXXFLAGS}
-PACKCFLAGS := ${HLTCLFAGS}
-PACKDCXXFLAGS:= ${HLTDCXXFLAGS}
-
-EINCLUDE+= HLT/src HLT/hough HLT/comp HLT/misc HLT/ITS HLT/MUON/src TPC ITS MUON STEER RAW
+++ /dev/null
-#-*- Mode: Makefile -*-
-# $Id$
-
-include HLT/hlt.conf
-
-SRCS:= hough/AliL3Histogram.cxx \
-hough/AliL3Histogram1D.cxx \
-hough/AliL3HistogramAdaptive.cxx \
-hough/AliL3Hough.cxx \
-hough/AliL3HoughBaseTransformer.cxx \
-hough/AliL3HoughClusterTransformer.cxx \
-hough/AliL3HoughDisplay.cxx \
-hough/AliL3HoughEval.cxx \
-hough/AliL3HoughGlobalMerger.cxx \
-hough/AliL3HoughIntMerger.cxx \
-hough/AliL3HoughMaxFinder.cxx \
-hough/AliL3HoughMerger.cxx \
-hough/AliL3HoughTest.cxx \
-hough/AliL3HoughTrack.cxx \
-hough/AliL3HoughKalmanTrack.cxx \
-hough/AliL3HoughTransformer.cxx \
-hough/AliL3HoughTransformerGlobal.cxx \
-hough/AliL3HoughTransformerLUT.cxx \
-hough/AliL3HoughTransformerNew.cxx \
-hough/AliL3HoughTransformerRow.cxx \
-hough/AliL3HoughTransformerVhdl.cxx
-
-
-HDRS:= $(SRCS:.cxx=.h) $(HLTEHDRS)
-
-DHDR:= hough/AliL3HoughLinkDef.h
-
-EDEFINE := ${HLTDEFS}
-PACKCXXFLAGS := ${HLTCXXFLAGS}
-PACKCFLAGS := ${HLTCLFAGS}
-PACKDCXXFLAGS:= ${HLTDCXXFLAGS}
-
-EINCLUDE+= HLT/src HLT/hough HLT/comp HLT/misc HLT/ITS HLT/MUON/src TPC ITS MUON STEER RAW
+++ /dev/null
-#-*- Mode: Makefile -*-
-
-include HLT/hlt.conf
-
-SRCS:= ITS/AliL3ITStrack.cxx ITS/AliL3ITStracker.cxx ITS/AliL3ITSVertexerZ.cxx ITS/AliL3ITSclusterer.cxx
-
-HDRS:= $(SRCS:.cxx=.h) $(HLTEHDRS)
-
-DHDR:= ITS/AliL3ITSLinkDef.h
-
-EDEFINE := ${HLTDEFS}
-PACKCXXFLAGS := ${HLTCXXFLAGS}
-PACKCFLAGS := ${HLTCLFAGS}
-PACKDCXXFLAGS:= ${HLTDCXXFLAGS}
-
-EINCLUDE += HLT/src HLT/hough HLT/comp HLT/misc HLT/ITS HLT/MUON/src TPC ITS MUON STEER RAW
+++ /dev/null
-#-*- Mode: Makefile -*-
-
-include HLT/hlt.conf
-
-SRCS += MUON/src/AliRoot/Region.cxx \
-MUON/src/AliRoot/Point.cxx \
-MUON/src/AliRoot/TriggerRecord.cxx \
-MUON/src/AliRoot/ADCStream.cxx \
-MUON/src/AliRoot/Track.cxx \
-MUON/src/AliRoot/ADCStreamSource.cxx \
-MUON/src/AliRoot/TriggerSource.cxx \
-MUON/src/AliRoot/ClusterSource.cxx \
-MUON/src/AliRoot/TrackSink.cxx \
-MUON/src/AliRoot/TrackerCallback.cxx \
-MUON/src/AliRoot/ClusterFinderCallback.cxx \
-MUON/src/AliRoot/MicrodHLT.cxx
-
-HDRS:= $(SRCS:.cxx=.hpp) \
-MUON/src/AliRoot/TrackerInterface.hpp \
-MUON/src/AliRoot/ClusterFinderInterface.hpp \
-MUON/src/AliRoot/AliHLTMUONTracker.h \
-MUON/src/AliRoot/Tracker.hpp \
-MUON/src/AliRoot/ClusterFinder.hpp \
-
-SRCS += MUON/src/AliHLTMUONUtils.cxx \
-MUON/src/AliHLTMUONOutOfMemory.cxx \
-MUON/src/Version/Version.cxx \
-MUON/src/AliHLTMUONCoreRegionOfInterest.cxx \
-MUON/src/Tracking/Calculations.cxx \
-MUON/src/Tracking/MansoTracker.cxx \
-MUON/src/Clustering/CenterOfGravityFinder.cxx \
-MUON/src/AliRoot/TrackerProxy.cxx \
-MUON/src/AliRoot/ClusterFinderProxy.cxx \
-MUON/src/AliRoot/convert.cxx \
-MUON/src/AliRoot/AliHLTMUONTracker.cxx \
-MUON/src/Debug/AliHLTMUONPrint.cxx
-
-
-DHDR:= MUON/src/AliRoot/HLTMUONLinkDef.h
-
-EDEFINE := ${HLTDEFS}
-PACKCXXFLAGS := ${HLTCXXFLAGS}
-PACKCFLAGS := ${HLTCLFAGS}
-PACKDCXXFLAGS:= ${HLTDCXXFLAGS}
-
-EINCLUDE += HLT/src HLT/hough HLT/comp HLT/misc HLT/ITS HLT/MUON/src TPC ITS MUON STEER RAW
+++ /dev/null
-#-*- Mode: Makefile -*-
-# $Id$
-
-include HLT/hlt.conf
-
-SRCS:= misc/AliL3AltroMemHandler.cxx \
-misc/AliL3DDLDataFileHandler.cxx \
-misc/AliL3DDLRawReader.cxx \
-misc/AliL3DDLRawReaderFile.cxx \
-misc/AliL3DDLTPCRawStream.cxx \
-misc/AliL3DataHandler.cxx \
-misc/AliL3FFloat.cxx \
-misc/AliL3Stopwatch.cxx \
-misc/AliL3TPCMapping.cxx \
-misc/AliL3TransBit.cxx \
-misc/AliL3VHDLClusterFinder.cxx
-
-HDRS:= $(SRCS:.cxx=.h) $(HLTEHDRS)
-
-DHDR:= misc/AliL3MiscLinkDef.h
-
-EDEFINE := ${HLTDEFS}
-PACKCXXFLAGS := ${HLTCXXFLAGS}
-PACKCFLAGS := ${HLTCLFAGS}
-PACKDCXXFLAGS:= ${HLTDCXXFLAGS}
-
-EINCLUDE+= HLT/src HLT/hough HLT/comp HLT/misc HLT/ITS HLT/MUON/src TPC ITS MUON STEER RAW
+++ /dev/null
-#-*- Mode: Makefile -*-
-# $Id$
-
-include HLT/hlt.conf
-
-SRCS:= src/AliL3Benchmark.cxx \
-src/AliL3ClustFinderNew.cxx \
-src/AliL3ConfMapFit.cxx \
-src/AliL3ConfMapPoint.cxx \
-src/AliL3ConfMapTrack.cxx \
-src/AliL3ConfMapper.cxx \
-src/AliL3Display.cxx \
-src/AliL3Evaluate.cxx \
-src/AliL3FileHandler.cxx \
-src/AliL3Fitter.cxx \
-src/AliL3Merger.cxx \
-src/AliL3GlobalMerger.cxx \
-src/AliL3InterMerger.cxx \
-src/AliL3Logger.cxx \
-src/AliL3MemHandler.cxx \
-src/AliL3RawDataFileHandler.cxx \
-src/AliL3Track.cxx \
-src/AliL3TrackArray.cxx \
-src/AliL3TrackMerger.cxx \
-src/AliL3Transform.cxx \
-src/AliL3Vertex.cxx \
-src/AliL3VertexArray.cxx \
-src/AliL3VertexFinder.cxx \
-src/AliLevel3.cxx \
-src/AliHLTReconstructor.cxx \
-src/AliL3TPCtracker.cxx \
-src/AliL3Log.cxx \
-src/AliL3TPCBeamTestMemHandler.cxx
-
-HDRS:= $(SRCS:.cxx=.h) src/AliL3SpacePointData.h
-
-DHDR:= src/AliL3SrcLinkDef.h
-
-EDEFINE := ${HLTDEFS}
-PACKCXXFLAGS := ${HLTCXXFLAGS}
-PACKCFLAGS := ${HLTCLFAGS}
-PACKDCXXFLAGS:= ${HLTDCXXFLAGS}
-
-EINCLUDE += HLT/src HLT/hough HLT/comp HLT/misc HLT/ITS HLT/MUON/src TPC ITS MUON STEER RAW
// Author: Constantin Loizides <mailto: loizides@ikf.uni-frankfurt.de>
// *-- Copyright & copy ALICE HLT Group
-/** \class AliL3AltroMemHandler
+/** \class AliHLTAltroMemHandler
<pre>
//--------------------------------------------------------------------
-// AliL3AltroMemHandler
+// AliHLTAltroMemHandler
//
// Converts digits in memory into a backlinked ALTRO like data format.
// Its output file is used as input to the various VHDL testbenches.
</pre>
*/
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3AltroMemHandler.h"
-#include "AliL3Logging.h"
+#include "AliHLTAltroMemHandler.h"
+#include "AliHLTLogging.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3AltroMemHandler)
+ClassImp(AliHLTAltroMemHandler)
-AliL3AltroMemHandler::AliL3AltroMemHandler(){
+AliHLTAltroMemHandler::AliHLTAltroMemHandler(){
// default constructor
Clear();
ClearRead();
};
-void AliL3AltroMemHandler::Clear(){
+void AliHLTAltroMemHandler::Clear(){
// clear everything
memset(fAltroMem,0,ALTRO_SIZE);
memset(fTimesPerPad,0,1024);
fFlag=kFALSE;
};
-void AliL3AltroMemHandler::ClearRead(){
+void AliHLTAltroMemHandler::ClearRead(){
// clears the reading
fRCounter=0;
fSCounter=0;
fRTime=0;
}
-void AliL3AltroMemHandler::Write(UShort_t row, UChar_t pad, UShort_t time, UShort_t charge)
+void AliHLTAltroMemHandler::Write(UShort_t row, UChar_t pad, UShort_t time, UShort_t charge)
{
// writes packets
if(fTCounter==0){
Add(charge,time);
}
-void AliL3AltroMemHandler::Add(UShort_t charge, UShort_t time)
+void AliHLTAltroMemHandler::Add(UShort_t charge, UShort_t time)
{
// adds new time and charge
fTimesPerPad[fTCounter]=time;
fTCounter++;
}
-void AliL3AltroMemHandler::MakeAltroPackets()
+void AliHLTAltroMemHandler::MakeAltroPackets()
{
// makes Altro packets
UShort_t i=0,j=0;
}
}
-void AliL3AltroMemHandler::AddTrailer()
+void AliHLTAltroMemHandler::AddTrailer()
{
// adds data trailer
UShort_t savepcounter=fPCounter;
fAltroMem[--fCounter]=fLRow;
}
-void AliL3AltroMemHandler::Write()
+void AliHLTAltroMemHandler::Write()
{
// default form of Write
if(fCounter==ALTRO_SIZE) return;
}
}
-void AliL3AltroMemHandler::WriteFinal()
+void AliHLTAltroMemHandler::WriteFinal()
{
// makes Altro packets and writes them
if(fTCounter>0){
}
}
-Bool_t AliL3AltroMemHandler::Read(UShort_t &row, UChar_t &pad, UShort_t &time, UShort_t &charge)
+Bool_t AliHLTAltroMemHandler::Read(UShort_t &row, UChar_t &pad, UShort_t &time, UShort_t &charge)
{
// reads the packets
if(fFlag==kTRUE) {
- LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::Read","File Open")<<"Binary not supported!"<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTAltroMemHandler::Read","File Open")<<"Binary not supported!"<<ENDLOG;
return kFALSE;
}
if(feof(fInBinary)){
- LOG(AliL3Log::kDebug,"AliL3AltroMemHandler::Read","File Open")<<"End of File!"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTAltroMemHandler::Read","File Open")<<"End of File!"<<ENDLOG;
return kFALSE;
}
ClearRead();
return kFALSE;
} else {
- LOG(AliL3Log::kError,"AliL3AltroMemHandler::Read","Trailer not found!")<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTAltroMemHandler::Read","Trailer not found!")<<ENDLOG;
return kFALSE;
}
}
return kTRUE;
}
-Bool_t AliL3AltroMemHandler::ReadSequence(UShort_t &row, UChar_t &pad, UShort_t &time, UChar_t &n, UShort_t **charges)
+Bool_t AliHLTAltroMemHandler::ReadSequence(UShort_t &row, UChar_t &pad, UShort_t &time, UChar_t &n, UShort_t **charges)
{
// reads sequence
if(fFlag==kTRUE) {
- LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::ReadSequence","File Open")<<"Binary not supported!"<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTAltroMemHandler::ReadSequence","File Open")<<"Binary not supported!"<<ENDLOG;
return kFALSE;
}
if(feof(fInBinary)){
- LOG(AliL3Log::kDebug,"AliL3AltroMemHandler::ReadSequence","File Open")<<"End of File!"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTAltroMemHandler::ReadSequence","File Open")<<"End of File!"<<ENDLOG;
return kFALSE;
}
ClearRead();
return kFALSE;
} else {
- LOG(AliL3Log::kError,"AliL3AltroMemHandler::ReadSequence","Format") <<"Trailer not found!"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTAltroMemHandler::ReadSequence","Format") <<"Trailer not found!"<<ENDLOG;
return kFALSE;
}
}
return kTRUE;
}
-Bool_t AliL3AltroMemHandler::SetBinaryInput(FILE *file)
+Bool_t AliHLTAltroMemHandler::SetBinaryInput(FILE *file)
{
// sets binary input
fInBinary = file;
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::SetBinaryInput","File Open")<<"Pointer to File = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTAltroMemHandler::SetBinaryInput","File Open")<<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
ClearRead();
return kTRUE;
}
-Bool_t AliL3AltroMemHandler::SetASCIIInput(FILE *file)
+Bool_t AliHLTAltroMemHandler::SetASCIIInput(FILE *file)
{
// sets ASCII input
fInBinary = file;
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::SetASCIIInput","File Open")<<"Pointer to File = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTAltroMemHandler::SetASCIIInput","File Open")<<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
ClearRead();
return kTRUE;
}
-Bool_t AliL3AltroMemHandler::SetBinaryOutput(FILE *file){
+Bool_t AliHLTAltroMemHandler::SetBinaryOutput(FILE *file){
// sets binary output
fOutBinary = file;
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::SetBinaryOutput","File Open") <<"Pointer to File = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTAltroMemHandler::SetBinaryOutput","File Open") <<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
Clear();
return kTRUE;
}
-Bool_t AliL3AltroMemHandler::SetASCIIOutput(FILE *file){
+Bool_t AliHLTAltroMemHandler::SetASCIIOutput(FILE *file){
// sets ASCII output
fOutBinary = file;
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3AltroMemHandler::SetASCIIOutput","File Open") <<"Pointer to File = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTAltroMemHandler::SetASCIIOutput","File Open") <<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
Clear();
#ifndef ALIL3ALTROMEMHANDLER_H
#define ALIL3ALTROMEMHANDLER_H
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
//Maximum size of Altro packet equals 1000 bit
#define ALTRO_PACKET_SIZE 125
//Maximum size of array to store whole pad
#define ALTRO_SIZE (100*ALTRO_PACKET_SIZE)
-class AliL3AltroMemHandler {
+class AliHLTAltroMemHandler {
public:
- AliL3AltroMemHandler();
- virtual ~AliL3AltroMemHandler() {}
+ AliHLTAltroMemHandler();
+ virtual ~AliHLTAltroMemHandler() {}
void Write(UShort_t row, UChar_t pad, UShort_t time, UShort_t charge);
Bool_t Read(UShort_t &row, UChar_t &pad, UShort_t &time, UShort_t &charge);
Bool_t ReadSequence(UShort_t &row, UChar_t &pad, UShort_t &time, UChar_t &n, UShort_t **charges);
void AddTrailer();
void Write();
- ClassDef(AliL3AltroMemHandler,1)
+ ClassDef(AliHLTAltroMemHandler,1)
};
+typedef AliHLTAltroMemHandler AliL3AltroMemHandler; // for backward compatibility
+
#endif
// Author: C. Loizides <loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3MemHandler.h"
-#include "AliL3DigitData.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTDigitData.h"
#ifdef use_newio
#include "AliRawReaderRoot.h"
#include "AliRawReaderDate.h"
#else
-#include "AliL3DDLTPCRawStream.h"
-#include "AliL3DDLRawReaderFile.h"
+#include "AliHLTDDLTPCRawStream.h"
+#include "AliHLTDDLRawReaderFile.h"
#endif
-#include "AliL3DDLDataFileHandler.h"
+#include "AliHLTDDLDataFileHandler.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3DDLDataFileHandler
+/** \class AliHLTDDLDataFileHandler
<pre>
//_____________________________________________________________
-// AliL3DDLDataFileHandler
+// AliHLTDDLDataFileHandler
//
// This class does converts from the DDL format of offline
// into the memory I/O handling of the HLT binary files.
//
// Examples: see ddl2binary in exa and the general
-// AliL3MemHandler class description
+// AliHLTMemHandler class description
//
</pre>
*/
-ClassImp(AliL3DDLDataFileHandler)
+ClassImp(AliHLTDDLDataFileHandler)
-AliL3DDLDataFileHandler::AliL3DDLDataFileHandler()
+AliHLTDDLDataFileHandler::AliHLTDDLDataFileHandler()
{
// default constructor
fReader=0;
fTPCStream=0;
}
-AliL3DDLDataFileHandler::~AliL3DDLDataFileHandler()
+AliHLTDDLDataFileHandler::~AliHLTDDLDataFileHandler()
{
// destructor
FreeAll();
}
-void AliL3DDLDataFileHandler::FreeAll()
+void AliHLTDDLDataFileHandler::FreeAll()
{
// frees all heap memory
if(fReader) delete fReader;
#ifdef use_newio
-Bool_t AliL3DDLDataFileHandler::SetReaderInput(AliRawEvent *rawevent)
+Bool_t AliHLTDDLDataFileHandler::SetReaderInput(AliRawEvent *rawevent)
{
// sets the input of the reader
fEvent=-1;
return kTRUE;
}
-Bool_t AliL3DDLDataFileHandler::SetReaderInput(Char_t *name,Int_t event)
+Bool_t AliHLTDDLDataFileHandler::SetReaderInput(Char_t *name,Int_t event)
{
// sets the input of the reader
fEvent=event;
return kTRUE;
}
#else
-Bool_t AliL3DDLDataFileHandler::SetReaderInput(Char_t *name, Bool_t add)
+Bool_t AliHLTDDLDataFileHandler::SetReaderInput(Char_t *name, Bool_t add)
{
// sets the input of the reader
if(fReader){
- LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::SetReaderInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTDDLDataFileHandler::SetReaderInput","File Open")
<<"Reader ptr is already in use"<<ENDLOG;
return kFALSE;
}
- fReader=new AliL3DDLRawReaderFile(name,add);
- fTPCStream=new AliL3DDLTPCRawStream(fReader);
+ fReader=new AliHLTDDLRawReaderFile(name,add);
+ fTPCStream=new AliHLTDDLTPCRawStream(fReader);
return kTRUE;
}
-Bool_t AliL3DDLDataFileHandler::SetReaderInput(AliL3DDLRawReaderFile *rf)
+Bool_t AliHLTDDLDataFileHandler::SetReaderInput(AliHLTDDLRawReaderFile *rf)
{
// sets the input of the reader
if(fReader){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetReaderInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetReaderInput","File Open")
<<"Reader ptr is already in use, delete it first"<<ENDLOG;
return kFALSE;
}
//Open the raw data file with given file.
fReader = rf;
- fTPCStream=new AliL3DDLTPCRawStream(fReader);
+ fTPCStream=new AliHLTDDLTPCRawStream(fReader);
return kTRUE;
}
#endif
-void AliL3DDLDataFileHandler::CloseReaderInput()
+void AliHLTDDLDataFileHandler::CloseReaderInput()
{
// closes the input of the reader
if(!fReader){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::CloseReaderInput","File Close")
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::CloseReaderInput","File Close")
<<"Nothing to Close"<<ENDLOG;
return;
}
}
#ifdef use_newio
-Bool_t AliL3DDLDataFileHandler::IsDigit(Int_t /*i*/)
+Bool_t AliHLTDDLDataFileHandler::IsDigit(Int_t /*i*/)
{
// dummy
- AliL3MemHandler::IsDigit();
+ AliHLTMemHandler::IsDigit();
return kTRUE;
}
#endif
#ifndef fast_raw
-AliL3DigitRowData * AliL3DDLDataFileHandler::DDLData2Memory(UInt_t &nrow,Int_t event)
+AliHLTDigitRowData * AliHLTDDLDataFileHandler::DDLData2Memory(UInt_t &nrow,Int_t event)
{
// transfers the DDL data to the memory
#ifdef use_newio
fTPCStream=new AliTPCRawStream(fReader);
}
#endif
- AliL3DigitRowData *data = 0;
+ AliHLTDigitRowData *data = 0;
nrow=0;
if(!fReader){
- LOG(AliL3Log::kWarning,"AliL3DDLDataFileHandler::DDLData2Memory","File")
- <<"No Input avalible: no object AliL3DDLRawReaderFile"<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTDDLDataFileHandler::DDLData2Memory","File")
+ <<"No Input avalible: no object AliHLTDDLRawReaderFile"<<ENDLOG;
return 0;
}
UShort_t ***charges=new UShort_t**[nrows];
for(Int_t r=fRowMin;r<=fRowMax;r++){
Int_t lrow=r-fRowMin;
- charges[lrow]=new UShort_t*[AliL3Transform::GetNPads(r)];
- for(Int_t k=0;k<AliL3Transform::GetNPads(r);k++){
- charges[lrow][k]=new UShort_t[AliL3Transform::GetNTimeBins()];
- for(Int_t j=0;j<AliL3Transform::GetNTimeBins();j++) charges[lrow][k][j]=0;
+ charges[lrow]=new UShort_t*[AliHLTTransform::GetNPads(r)];
+ for(Int_t k=0;k<AliHLTTransform::GetNPads(r);k++){
+ charges[lrow][k]=new UShort_t[AliHLTTransform::GetNTimeBins()];
+ for(Int_t j=0;j<AliHLTTransform::GetNTimeBins();j++) charges[lrow][k][j]=0;
}
}
for(Int_t r=fRowMin;r<=fRowMax;r++){
ndigits[r-fRowMin] = 0; //now digits on row
- Int_t patch=AliL3Transform::GetPatch(r);
+ Int_t patch=AliHLTTransform::GetPatch(r);
Int_t sector,row;
- AliL3Transform::Slice2Sector(fSlice,r,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,r,sector,row);
if(sector<36) //taken from AliTPCBuffer160.cxx
ddlid=sector*2+patch;
#else
fTPCStream->SetDDLID(ddls[i]); //ddl to read out
#endif
- Int_t zerosup = AliL3Transform::GetZeroSup();
- Int_t adcsat = AliL3Transform::GetADCSat();
+ Int_t zerosup = AliHLTTransform::GetZeroSup();
+ Int_t adcsat = AliHLTTransform::GetADCSat();
Int_t slice,srow;
Int_t lrow=-1;
if(fTPCStream->IsNewSector() || fTPCStream->IsNewRow()) {
Int_t sector=fTPCStream->GetSector();
Int_t row=fTPCStream->GetRow();
- AliL3Transform::Sector2Slice(slice,srow,sector,row);
+ AliHLTTransform::Sector2Slice(slice,srow,sector,row);
if(slice!=fSlice){
- LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Slice")
- <<AliL3Log::kDec<<"Found slice "<<slice<<", expected "<<fSlice<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDDLDataFileHandler::DDLDigits2Memory","Slice")
+ <<AliHLTLog::kDec<<"Found slice "<<slice<<", expected "<<fSlice<<ENDLOG;
continue;
}
lrow=srow-fRowMin;
Int_t pad=fTPCStream->GetPad();
if(fTPCStream->IsNewPad()) {
- if((pad<0)||(pad>=AliL3Transform::GetNPads(srow))){
- LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Pad")
- <<AliL3Log::kDec<<"Pad value out of bounds "<<pad<<" "
- <<AliL3Transform::GetNPads(srow)<<ENDLOG;
+ if((pad<0)||(pad>=AliHLTTransform::GetNPads(srow))){
+ LOG(AliHLTLog::kError,"AliHLTDDLDataFileHandler::DDLDigits2Memory","Pad")
+ <<AliHLTLog::kDec<<"Pad value out of bounds "<<pad<<" "
+ <<AliHLTTransform::GetNPads(srow)<<ENDLOG;
continue;
}
}
Int_t time=fTPCStream->GetTime();
- if((time<0)||(time>=AliL3Transform::GetNTimeBins())){
- LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Time")
- <<AliL3Log::kDec<<"Time out of bounds "<<time<<" "
- <<AliL3Transform::GetNTimeBins()<<ENDLOG;
+ if((time<0)||(time>=AliHLTTransform::GetNTimeBins())){
+ LOG(AliHLTLog::kError,"AliHLTDDLDataFileHandler::DDLDigits2Memory","Time")
+ <<AliHLTLog::kDec<<"Time out of bounds "<<time<<" "
+ <<AliHLTTransform::GetNTimeBins()<<ENDLOG;
continue;
}
charges[lrow][pad][time]=dig;
}
- Int_t size = sizeof(AliL3DigitData)*ndigitcount
- + nrows*sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData)*ndigitcount
+ + nrows*sizeof(AliHLTDigitRowData);
- LOG(AliL3Log::kDebug,"AliL3DDLDataFileHandler::DDLDigits2Memory","Digits")
- <<AliL3Log::kDec<<"Found "<<ndigitcount<<" Digits"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTDDLDataFileHandler::DDLDigits2Memory","Digits")
+ <<AliHLTLog::kDec<<"Found "<<ndigitcount<<" Digits"<<ENDLOG;
- data=(AliL3DigitRowData*) Allocate(size);
+ data=(AliHLTDigitRowData*) Allocate(size);
nrow = (UInt_t)nrows;
- AliL3DigitRowData *tempPt = data;
+ AliHLTDigitRowData *tempPt = data;
for(Int_t r=fRowMin;r<=fRowMax;r++){
Int_t lrow=r-fRowMin;
tempPt->fNDigit = ndigits[lrow];
Int_t localcount=0;
- for(Int_t pad=0;pad<AliL3Transform::GetNPads(r);pad++){
- for(Int_t time=0;time<AliL3Transform::GetNTimeBins();time++){
+ for(Int_t pad=0;pad<AliHLTTransform::GetNPads(r);pad++){
+ for(Int_t time=0;time<AliHLTTransform::GetNTimeBins();time++){
UShort_t dig=charges[lrow][pad][time];
if(!dig) continue;
if(localcount >= ndigits[lrow])
- LOG(AliL3Log::kFatal,"AliL3DDLDataFileHandler::DDLDigits2Binary","Memory")
- <<AliL3Log::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
+ LOG(AliHLTLog::kFatal,"AliHLTDDLDataFileHandler::DDLDigits2Binary","Memory")
+ <<AliHLTLog::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
<<ndigits[lrow]<<ENDLOG;
}
if(localcount != ndigits[lrow])
- LOG(AliL3Log::kFatal,"AliL3DDLDataFileHandler::DDLDigits2Binary","Memory")
- <<AliL3Log::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
+ LOG(AliHLTLog::kFatal,"AliHLTDDLDataFileHandler::DDLDigits2Binary","Memory")
+ <<AliHLTLog::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
<<ndigits[lrow]<<ENDLOG;
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData)
- + ndigits[lrow]*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData)
+ + ndigits[lrow]*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}
//delete charge array
for(Int_t r=fRowMin;r<=fRowMax;r++){
Int_t lrow=r-fRowMin;
- for(Int_t k=0;k<AliL3Transform::GetNPads(r);k++)
+ for(Int_t k=0;k<AliHLTTransform::GetNPads(r);k++)
delete charges[lrow][k];
delete charges[lrow];
}
return data;
}
#else
-AliL3DigitRowData * AliL3DDLDataFileHandler::DDLData2Memory(UInt_t &nrow,Int_t event)
+AliHLTDigitRowData * AliHLTDDLDataFileHandler::DDLData2Memory(UInt_t &nrow,Int_t event)
{
// transfers the DDL data to the memory
#ifdef use_newio
fTPCStream=new AliTPCRawStream(fReader);
}
#endif
- AliL3DigitRowData *data = 0;
+ AliHLTDigitRowData *data = 0;
nrow=0;
if(!fReader){
- LOG(AliL3Log::kWarning,"AliL3DDLDataFileHandler::DDLData2Memory","File")
- <<"No Input avalible: no object AliL3DDLRawReaderFile"<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTDDLDataFileHandler::DDLData2Memory","File")
+ <<"No Input avalible: no object AliHLTDDLRawReaderFile"<<ENDLOG;
return 0;
}
Int_t ddlid=-1,lddlid=-1;
for(Int_t r=fRowMin;r<=fRowMax;r++){
- Int_t patch=AliL3Transform::GetPatch(r);
+ Int_t patch=AliHLTTransform::GetPatch(r);
Int_t sector,row;
- AliL3Transform::Slice2Sector(fSlice,r,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,r,sector,row);
if(sector<36) //taken from AliTPCBuffer160.cxx
ddlid=sector*2+patch;
}
#endif
-Bool_t AliL3DDLDataFileHandler::DDLData2CompBinary(Int_t event)
+Bool_t AliHLTDDLDataFileHandler::DDLData2CompBinary(Int_t event)
{
// transfers the DDL data to the memory and converts it
// to comp binary
Bool_t out = kTRUE;
UInt_t ndigits=0;
- AliL3DigitRowData *digits=0;
+ AliHLTDigitRowData *digits=0;
digits = DDLData2Memory(ndigits,event);
out = Memory2CompBinary(ndigits,digits);
Free();
#include "../TPC/AliTPCRawStream.h"
#include <TString.h>
#else
-#include "AliL3DDLRawReaderFile.h"
-#include "AliL3DDLTPCRawStream.h"
+#include "AliHLTDDLRawReaderFile.h"
+#include "AliHLTDDLTPCRawStream.h"
#endif
-#include "AliL3MemHandler.h"
+#include "AliHLTMemHandler.h"
-class AliL3DDLDataFileHandler:public AliL3MemHandler{
+class AliHLTDDLDataFileHandler:public AliHLTMemHandler{
public:
- AliL3DDLDataFileHandler();
- virtual ~AliL3DDLDataFileHandler();
+ AliHLTDDLDataFileHandler();
+ virtual ~AliHLTDDLDataFileHandler();
#ifdef use_newio
Bool_t SetReaderInput(AliRawEvent *rawevent);
Bool_t SetReaderInput(Char_t *name,Int_t event=0);
Bool_t IsDigit(Int_t i=0);
- AliL3DigitRowData *AliAltroDigits2Memory(UInt_t & nrow,Int_t event=0,Bool_t /*eventmerge*/=kFALSE){return DDLData2Memory(nrow,event);};
+ AliHLTDigitRowData *AliAltroDigits2Memory(UInt_t & nrow,Int_t event=0,Bool_t /*eventmerge*/=kFALSE){return DDLData2Memory(nrow,event);};
#else
Bool_t SetReaderInput(Char_t *name,Bool_t add=kTRUE);
- Bool_t SetReaderInput(AliL3DDLRawReaderFile *rf);
+ Bool_t SetReaderInput(AliHLTDDLRawReaderFile *rf);
#endif
void CloseReaderInput();
- void FreeAll(); //like AliL3MemHandler::Free() or AliL3FileHandler::FreeDigitsTree
+ void FreeAll(); //like AliHLTMemHandler::Free() or AliHLTFileHandler::FreeDigitsTree
- AliL3DigitRowData* DDLData2Memory(UInt_t &nrow,Int_t event=-1);
+ AliHLTDigitRowData* DDLData2Memory(UInt_t &nrow,Int_t event=-1);
Bool_t DDLData2CompBinary(Int_t event=-1);
AliTPCRawStream* GetTPCRawStream(){return fTPCStream;}
AliRawReader *fReader; // raw reader
AliTPCRawStream *fTPCStream;// TPC raw stream
#else
- AliL3DDLRawReaderFile *fReader; // raw reader
- AliL3DDLTPCRawStream *fTPCStream; // TPC raw stream
+ AliHLTDDLRawReaderFile *fReader; // raw reader
+ AliHLTDDLTPCRawStream *fTPCStream; // TPC raw stream
#endif
- ClassDef(AliL3DDLDataFileHandler,1) //DDL Data Filehandler class
+ ClassDef(AliHLTDDLDataFileHandler,1) //DDL Data Filehandler class
};
+
+typedef AliHLTDDLDataFileHandler AliL3DDLDataFileHandler; // for backward compatibility
+
#endif
// Author: Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
-#include "AliL3DDLRawReader.h"
+#include "AliHLTDDLRawReader.h"
#if __GNUC__ >= 3
using namespace std;
* provided "as is" without express or implied warranty. *
**************************************************************************/
-/** \class AliL3DDLRawReader
+/** \class AliHLTDDLRawReader
<pre>
//_____________________________________________________________
-// AliL3DDLRawReader (taken from the offline AliROOT code,
+// AliHLTDDLRawReader (taken from the offline AliROOT code,
// original authors: D.Favretto and A.K.Mohanty)
//
// This is the base class for reading ddl raw data
</pre>
*/
-ClassImp(AliL3DDLRawReader)
+ClassImp(AliHLTDDLRawReader)
-AliL3DDLRawReader::AliL3DDLRawReader()
+AliHLTDDLRawReader::AliHLTDDLRawReader()
{
fMiniHeader = NULL;
fCount = 0;
fSelectMaxDDLID = -1;
}
-AliL3DDLRawReader::~AliL3DDLRawReader()
+AliHLTDDLRawReader::~AliHLTDDLRawReader()
{
}
-void AliL3DDLRawReader::Select(Int_t detectorID, Int_t minDDLID, Int_t maxDDLID)
+void AliHLTDDLRawReader::Select(Int_t detectorID, Int_t minDDLID, Int_t maxDDLID)
{
// read only data of the detector with the given ID and in the given
// range of DDLs (minDDLID <= DDLID < maxDDLID).
fSelectMaxDDLID = maxDDLID;
}
-Bool_t AliL3DDLRawReader::IsSelected() const
+Bool_t AliHLTDDLRawReader::IsSelected() const
{
// apply the selection (if any)
return kTRUE;
}
-Bool_t AliL3DDLRawReader::CheckMiniHeader() const
+Bool_t AliHLTDDLRawReader::CheckMiniHeader() const
{
// check the magic number of the mini header
if ((fMiniHeader->fMagicWord[2] != 0x12) ||
(fMiniHeader->fMagicWord[1] != 0x34) ||
(fMiniHeader->fMagicWord[0] != 0x56)) {
- LOG(AliL3Log::kError,"AliL3DDLRawReader::CheckMiniHeader","MH")
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReader::CheckMiniHeader","MH")
<<"DDL mini header has wrong magic word!"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3DDLRawReader::ReadNextInt(UInt_t& data)
+Bool_t AliHLTDDLRawReader::ReadNextInt(UInt_t& data)
{
// reads the next 4 bytes at the current position
// returns kFALSE if the data could not be read
if (!ReadMiniHeader()) return kFALSE;
}
if (fCount < (Int_t) sizeof(data)) {
- LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextInt","Data")
- <<AliL3Log::kDec<<"Too few data left ("<<fCount<<") to read UInt_t!"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReader::ReadNextInt","Data")
+ <<AliHLTLog::kDec<<"Too few data left ("<<fCount<<") to read UInt_t!"<<ENDLOG;
return kFALSE;
}
if (!ReadNext((UChar_t*) &data, sizeof(data))) {
- LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextInt","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReader::ReadNextInt","Data")
<<"Could not read data."<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3DDLRawReader::ReadNextShort(UShort_t& data)
+Bool_t AliHLTDDLRawReader::ReadNextShort(UShort_t& data)
{
// reads the next 2 bytes at the current position
// returns kFALSE if the data could not be read
if (!ReadMiniHeader()) return kFALSE;
}
if (fCount < (Int_t) sizeof(data)) {
- LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextShort","Data")
- <<AliL3Log::kDec<<"Too few data left ("<<fCount<<") to read UShort_t!"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReader::ReadNextShort","Data")
+ <<AliHLTLog::kDec<<"Too few data left ("<<fCount<<") to read UShort_t!"<<ENDLOG;
return kFALSE;
}
if (!ReadNext((UChar_t*) &data, sizeof(data))) {
- LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextShort","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReader::ReadNextShort","Data")
<<"Could not read data."<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3DDLRawReader::ReadNextChar(UChar_t& data)
+Bool_t AliHLTDDLRawReader::ReadNextChar(UChar_t& data)
{
// reads the next 1 byte at the current stream position
// returns kFALSE if the data could not be read
if (!ReadMiniHeader()) return kFALSE;
}
if (!ReadNext((UChar_t*) &data, sizeof(data))) {
- LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextChar","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReader::ReadNextChar","Data")
<<"Could not read data."<<ENDLOG;
return kFALSE;
}
#ifndef ALIL3DDLRAWREADER_H
#define ALIL3DDLRAWREADER_H
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
// see description in upcoming ALICE note
// by D.Favretto and A.K.Mohanty
-struct AliL3DDLMiniHeader
+struct AliHLTDDLMiniHeader
{
UInt_t fSize; // size
UChar_t fDetectorID; // detector ID
UShort_t fDDLID; // DDL ID
};
-class AliL3DDLRawReader
+class AliHLTDDLRawReader
{
public :
- AliL3DDLRawReader();
- virtual ~AliL3DDLRawReader();
+ AliHLTDDLRawReader();
+ virtual ~AliHLTDDLRawReader();
void Select(Int_t detectorID, Int_t minDDLID = -1, Int_t maxDDLID = -1);
Bool_t CheckMiniHeader() const;
virtual Bool_t ReadNext(UChar_t* data, Int_t size) = 0;
- AliL3DDLMiniHeader* fMiniHeader; // current mini header
+ AliHLTDDLMiniHeader* fMiniHeader; // current mini header
Int_t fCount; // counter of bytes to be read for current DDL
Int_t fSelectDetectorID; // id of selected detector (<0 = no selection)
Int_t fSelectMinDDLID; // minimal index of selected DDLs (<0 = no selection)
Int_t fSelectMaxDDLID; // maximal index of selected DDLs (<0 = no selection)
- ClassDef(AliL3DDLRawReader,1) //AliL3DDLRawReader
+ ClassDef(AliHLTDDLRawReader,1) //AliHLTDDLRawReader
};
+typedef AliHLTDDLRawReader AliL3DDLRawReader; // for backward compatibility
+
#endif
#include <iostream.h>
#endif
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
-#include "AliL3DDLRawReaderFile.h"
+#include "AliHLTDDLRawReaderFile.h"
#if __GNUC__ == 3
using namespace std;
* provided "as is" without express or implied warranty. *
**************************************************************************/
-/** \class AliL3DDLRawReaderFile
+/** \class AliHLTDDLRawReaderFile
<pre>
//_____________________________________________________________
-// AliL3DDLRawReaderFile (taken from the offline AliROOT code,
+// AliHLTDDLRawReaderFile (taken from the offline AliROOT code,
// original authors: D.Favretto and A.K.Mohanty)
//
// This is the base class for reading ddl raw data
</pre>
*/
-ClassImp(AliL3DDLRawReaderFile)
+ClassImp(AliHLTDDLRawReaderFile)
-AliL3DDLRawReaderFile::AliL3DDLRawReaderFile(const Char_t* name, Bool_t addnum)
+AliHLTDDLRawReaderFile::AliHLTDDLRawReaderFile(const Char_t* name, Bool_t addnum)
{
// create an object to read digits from the given input file(s)
// if addNumber is true, a number starting at 1 is appended to the file name
fStream = NULL;
OpenNextFile();
}
- fMiniHeader = new AliL3DDLMiniHeader;
+ fMiniHeader = new AliHLTDDLMiniHeader;
fBuffer = NULL;
fBufferSize = 0;
}
-AliL3DDLRawReaderFile::~AliL3DDLRawReaderFile()
+AliHLTDDLRawReaderFile::~AliHLTDDLRawReaderFile()
{
// close the input file
if(fFileName) delete fFileName;
if (fBuffer) delete[] fBuffer;
}
-Bool_t AliL3DDLRawReaderFile::OpenNextFile()
+Bool_t AliHLTDDLRawReaderFile::OpenNextFile()
{
if (fStream) {
#if defined(__HP_aCC) || defined(__DECCXX)
fStream = NULL;
}
if (fFileNumber < 0) {
- LOG(AliL3Log::kError,"AliL3DDLRawReaderFile::OpenNextFile","File")
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReaderFile::OpenNextFile","File")
<<"Could not open file, file number is negative."<<ENDLOG;
return kFALSE;
}
#endif
}
-Bool_t AliL3DDLRawReaderFile::ReadMiniHeader()
+Bool_t AliHLTDDLRawReaderFile::ReadMiniHeader()
{
// read a mini header at the current stream position
// returns kFALSE if the mini header could not be read
if (!fStream) return kFALSE;
do {
if (fCount > 0) fStream->seekg(Int_t(fStream->tellg()) + fCount);
- while (!fStream->read((Char_t*) fMiniHeader, sizeof(AliL3DDLMiniHeader))) {
+ while (!fStream->read((Char_t*) fMiniHeader, sizeof(AliHLTDDLMiniHeader))) {
if (!OpenNextFile()) return kFALSE;
}
//cout << fMiniHeader->fSize << " " << fMiniHeader->fDetectorID << " " << fMiniHeader->fVersion << " " << fMiniHeader->fCompressionFlag << " " << fMiniHeader->fDDLID << endl;
return kTRUE;
}
-Bool_t AliL3DDLRawReaderFile::ReadNextData(UChar_t*& data)
+Bool_t AliHLTDDLRawReaderFile::ReadNextData(UChar_t*& data)
{
// reads the next payload at the current stream position
// returns kFALSE if the data could not be read
fBuffer = new UChar_t[fBufferSize];
}
if (!fStream->read((Char_t*) fBuffer, fCount)) {
- LOG(AliL3Log::kError,"AliL3DDLRawReaderFile::ReadNextData","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReaderFile::ReadNextData","Data")
<<"Could not read next data!"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3DDLRawReaderFile::ReadNext(UChar_t* data, Int_t size)
+Bool_t AliHLTDDLRawReaderFile::ReadNext(UChar_t* data, Int_t size)
{
// reads the next block of data at the current stream position
// returns kFALSE if the data could not be read
if (!fStream->read((Char_t*) data, size)) {
- LOG(AliL3Log::kError,"AliL3DDLRawReaderFile::ReadNext","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReaderFile::ReadNext","Data")
<<"Could not read next data!"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3DDLRawReaderFile::Reset()
+Bool_t AliHLTDDLRawReaderFile::Reset()
{
// reset the current stream position to the beginning of the file
#endif
} else {
if (!OpenNextFile()){
- LOG(AliL3Log::kError,"AliL3DDLRawReaderFile::Reset","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLRawReaderFile::Reset","Data")
<<"Could not reset data stream!"<<ENDLOG;
return kFALSE;
}
#ifndef ALIL3DDLRAWREADERFILE_H
#define ALIL3DDLRAWREADERFILE_H
-#include "AliL3RootTypes.h"
-#include "AliL3DDLRawReader.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTDDLRawReader.h"
-class AliL3DDLRawReaderFile: public AliL3DDLRawReader
+class AliHLTDDLRawReaderFile: public AliHLTDDLRawReader
{
public :
- AliL3DDLRawReaderFile(const Char_t* name, Bool_t addnum = kTRUE);
- virtual ~AliL3DDLRawReaderFile();
+ AliHLTDDLRawReaderFile(const Char_t* name, Bool_t addnum = kTRUE);
+ virtual ~AliHLTDDLRawReaderFile();
virtual Bool_t ReadMiniHeader();
virtual Bool_t ReadNextData(UChar_t*& data);
UChar_t* fBuffer; //! buffer for payload
Int_t fBufferSize; // size of fBuffer in bytes
- ClassDef(AliL3DDLRawReaderFile, 1) //AliL3DDLRawReaderFile
+ ClassDef(AliHLTDDLRawReaderFile, 1) //AliHLTDDLRawReaderFile
};
+typedef AliHLTDDLRawReaderFile AliL3DDLRawReaderFile; // for backward compatibility
+
#endif
// Author: Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3DDLRawReader.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTDDLRawReader.h"
-#include "AliL3DDLTPCRawStream.h"
+#include "AliHLTDDLTPCRawStream.h"
//#include "AliTPCHuffman.h"
* provided "as is" without express or implied warranty. *
**************************************************************************/
-/** \class AliL3DDLTPCRawReaderStream
+/** \class AliHLTDDLTPCRawReaderStream
<pre>
//_____________________________________________________________
-// AliL3DDLTPCRawReaderStream (taken from the offline AliROOT code,
+// AliHLTDDLTPCRawReaderStream (taken from the offline AliROOT code,
// original authors: D.Favretto and A.K.Mohanty)
//
// This is a base class for reading TPC raw data
using namespace std;
#endif
-ClassImp(AliL3DDLTPCRawStream)
+ClassImp(AliHLTDDLTPCRawStream)
-AliL3DDLTPCRawStream::AliL3DDLTPCRawStream(AliL3DDLRawReader* rawReader)
+AliHLTDDLTPCRawStream::AliHLTDDLTPCRawStream(AliHLTDDLRawReader* rawReader)
{
// create an object to read TPC raw digits
fTime = fSignal = -1;
}
-AliL3DDLTPCRawStream::~AliL3DDLTPCRawStream()
+AliHLTDDLTPCRawStream::~AliHLTDDLTPCRawStream()
{
// clean up
delete[] fData;
}
-Bool_t AliL3DDLTPCRawStream::SetDDLID(Int_t d)
+Bool_t AliHLTDDLTPCRawStream::SetDDLID(Int_t d)
{
// sets DDL ID
if((d<0)||(d>216)){
- LOG(AliL3Log::kFatal,"AliL3DDLTPCRawStream::SetDDLID","DDL")
- <<AliL3Log::kDec<<"DDL number out of range "<<d<<ENDLOG;
+ LOG(AliHLTLog::kFatal,"AliHLTDDLTPCRawStream::SetDDLID","DDL")
+ <<AliHLTLog::kDec<<"DDL number out of range "<<d<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3DDLTPCRawStream::Next()
+Bool_t AliHLTDDLTPCRawStream::Next()
{
// read the next raw digit
// returns kFALSE if there is no digit left
} while (fRawReader->GetDataSize() == 0);
if (fRawReader->IsCompressed()) { // compressed data
- LOG(AliL3Log::kFatal,"AliL3DDLTPCRawStream::Next","Compression")
+ LOG(AliHLTLog::kFatal,"AliHLTDDLTPCRawStream::Next","Compression")
<<"Compression is not implemented (yet)!"<<ENDLOG;
return kFALSE;
} else { // uncompressed data
fPosition = 0;
}
if (fPosition + 4 >= fDataSize) {
- LOG(AliL3Log::kError,"AliL3DDLTPCRawStream::Next","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLTPCRawStream::Next","Data")
<<"Could not read trailer"<<ENDLOG;
return kFALSE;
}
if (fBunchLength == 0) {
if (fPosition >= fDataSize) {
- LOG(AliL3Log::kError,"AliL3DDLTPCRawStream::Next","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLTPCRawStream::Next","Data")
<<"Could not read bunch length"<<ENDLOG;
return kFALSE;
}
fCount--;
if (fPosition >= fDataSize) {
- LOG(AliL3Log::kError,"AliL3DDLTPCRawStream::Next","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLTPCRawStream::Next","Data")
<<"Could not read time bin"<<ENDLOG;
return kFALSE;
}
fTime++;
if (fPosition >= fDataSize) {
- LOG(AliL3Log::kError,"AliL3DDLTPCRawStream::Next","Data")
+ LOG(AliHLTLog::kError,"AliHLTDDLTPCRawStream::Next","Data")
<<"Could not read sample amplitude"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-UShort_t AliL3DDLTPCRawStream::Get10BitWord(UChar_t* buffer, Int_t position) const
+UShort_t AliHLTDDLTPCRawStream::Get10BitWord(UChar_t* buffer, Int_t position) const
{
// return a word in a 10 bit array as an UShort_t
Int_t iBit = position * 10;
#ifndef ALIL3DDLTPCRAWSTREAM_H
#define ALIL3DDLTPCRAWSTREAM_H
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3DDLRawReader;
+class AliHLTDDLRawReader;
-class AliL3DDLTPCRawStream
+class AliHLTDDLTPCRawStream
{
public :
- AliL3DDLTPCRawStream(AliL3DDLRawReader* rawReader);
- virtual ~AliL3DDLTPCRawStream();
+ AliHLTDDLTPCRawStream(AliHLTDDLRawReader* rawReader);
+ virtual ~AliHLTDDLTPCRawStream();
virtual Bool_t Next();
Bool_t SetDDLID(Int_t d); //choose ddlid to readout
static const Int_t fgkOffset = 1; // offset of signal
static const Int_t fgkDataMax = 10000000; // size of array for uncompressed raw data
- AliL3DDLRawReader* fRawReader; // object for reading the raw data
+ AliHLTDDLRawReader* fRawReader; // object for reading the raw data
UShort_t* fData; //[fgkDataMax] uncompressed raw data
Int_t fDataSize; // actual size of the uncompressed raw data
Int_t fTime; // index of current time bin
Int_t fSignal; // signal in ADC counts
- ClassDef(AliL3DDLTPCRawStream, 1) // AliL3DDLTPCRawStream
+ ClassDef(AliHLTDDLTPCRawStream, 1) // AliHLTDDLTPCRawStream
};
+typedef AliHLTDDLTPCRawStream AliL3DDLTPCRawStream; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Logging.h"
-#include "AliL3TransBit.h"
-#include "AliL3Transform.h"
-#include "AliL3DataHandler.h"
-#include "AliL3DigitData.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransBit.h"
+#include "AliHLTTransform.h"
+#include "AliHLTDataHandler.h"
+#include "AliHLTDigitData.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3DataHandler
+/** \class AliHLTDataHandler
<pre>
//_____________________________________________________________
-// AliL3DataHandler
+// AliHLTDataHandler
//
// HLT Binary file handler.
//
-// This class have more or less the same functionality as AliL3MemHandler,
+// This class have more or less the same functionality as AliHLTMemHandler,
// except that it handles 8 bit ADC-values. Reading and writing is done in the same way
-// as illustrated in example 1) and 2) in AliL3MemHandler.
+// as illustrated in example 1) and 2) in AliHLTMemHandler.
//
// For converting 10 bit data files to 8 bit data files, do:
//
-// AliL3MemHandler *file = new AliL3DataHandler();
+// AliHLTMemHandler *file = new AliHLTDataHandler();
// file->Init(slice,patch);
// file->SetBinaryInput(inputfile); //10 bit data file
// file->SetBinaryOutput(outputfile); //8 bit data file
// --------------------
//
// The data is RLE encoded, using _8_bit representation of the ADC-values.
-// Conversion is done in the class AliL3TransBit.
+// Conversion is done in the class AliHLTTransBit.
//
// In the beginning of every row, the row number if written and the number of pads
// containing data on that row. For every pad with data the pad number is written,
</pre>
*/
-ClassImp(AliL3DataHandler)
+ClassImp(AliHLTDataHandler)
-AliL3DataHandler::AliL3DataHandler()
+AliHLTDataHandler::AliHLTDataHandler()
{
// default constructor
fBitTransformer = 0;
- LOG(AliL3Log::kInformational,"AliL3DataHandler::AliL3DataHandler","Data format")
+ LOG(AliHLTLog::kInformational,"AliHLTDataHandler::AliHLTDataHandler","Data format")
<<"8 bit data handler initialized"<<ENDLOG;
}
-AliL3DataHandler::~AliL3DataHandler()
+AliHLTDataHandler::~AliHLTDataHandler()
{
// destructor
if(fBitTransformer)
delete fBitTransformer;
}
-void AliL3DataHandler::Convert10to8Bit()
+void AliHLTDataHandler::Convert10to8Bit()
{
//Convert from 10 bit data in inputfile, to 8 bit data written to outputfile.
if(!fInBinary)
{
- LOG(AliL3Log::kError,"AliL3DataHandler::Convert10to8Bit","File")
- <<AliL3Log::kHex<<"Pointer to input file : "<<(void*)fInBinary<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::Convert10to8Bit","File")
+ <<AliHLTLog::kHex<<"Pointer to input file : "<<(void*)fInBinary<<ENDLOG;
return;
}
if(!fOutBinary)
{
- LOG(AliL3Log::kError,"AliL3DataHandler::Convert10to8Bit","File")
- <<AliL3Log::kHex<<"Pointer to output file : "<<(void*)fOutBinary<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::Convert10to8Bit","File")
+ <<AliHLTLog::kHex<<"Pointer to output file : "<<(void*)fOutBinary<<ENDLOG;
return;
}
//Initialize the bit transformation class:
- fBitTransformer = new AliL3TransBitV1();
+ fBitTransformer = new AliHLTTransBitV1();
Int_t b0=10; // original number of bits
Int_t b1=8; // compressed
fBitTransformer->SetBits(b0,b1);
fBitTransformer->FindOptimumX0();
fBitTransformer->Update();
- AliL3MemHandler *memory = new AliL3MemHandler();
+ AliHLTMemHandler *memory = new AliHLTMemHandler();
memory->Init(fSlice,fPatch);
memory->SetBinaryInput(fInBinary);
UInt_t nrow;
- AliL3DigitRowData *data = (AliL3DigitRowData*)memory->CompBinary2Memory(nrow);
+ AliHLTDigitRowData *data = (AliHLTDigitRowData*)memory->CompBinary2Memory(nrow);
Memory2CompBinary(nrow,data);
delete memory;
}
-Bool_t AliL3DataHandler::Memory2CompBinary(UInt_t nrow,AliL3DigitRowData *data)
+Bool_t AliHLTDataHandler::Memory2CompBinary(UInt_t nrow,AliHLTDigitRowData *data)
{
//Compress data by RLE, and write to a binary file.
Memory2CompMemory(nrow,data,comp);
if(!CompMemory2CompBinary(nrow,comp,size))
{
- LOG(AliL3Log::kError,"AliL3DataHandler::Memory2CompBinary","File")
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::Memory2CompBinary","File")
<<"Error writing to file "<<ENDLOG;
return 0;
}
return kTRUE;
}
-AliL3DigitRowData *AliL3DataHandler::CompBinary2Memory(UInt_t &nrow)
+AliHLTDigitRowData *AliHLTDataHandler::CompBinary2Memory(UInt_t &nrow)
{
//Read RLE compressed binary file, unpack it and return pointer to it.
- AliL3MemHandler *memory = new AliL3MemHandler();
+ AliHLTMemHandler *memory = new AliHLTMemHandler();
memory->SetBinaryInput(fInBinary);
Byte_t *comp = memory->Allocate();
if(!CompBinary2CompMemory(nrow,comp))
{
- LOG(AliL3Log::kError,"AliL3DataHandler::CompBinary2Memory","File")
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::CompBinary2Memory","File")
<<"Error reading from file "<<ENDLOG;
return 0;
}
UInt_t size = GetMemorySize(nrow,comp);
- AliL3DigitRowData *data = (AliL3DigitRowData*)Allocate(size);
+ AliHLTDigitRowData *data = (AliHLTDigitRowData*)Allocate(size);
CompMemory2Memory(nrow,data,comp);
delete memory;
return data;
}
-void AliL3DataHandler::Write(Byte_t *comp,UInt_t &index,UShort_t value)
+void AliHLTDataHandler::Write(Byte_t *comp,UInt_t &index,UShort_t value)
{
//Write one value (=1 byte) to array comp.
if(value > 255)
{
- LOG(AliL3Log::kFatal,"AliL3DataHandler::Write","Bitnumbers")
+ LOG(AliHLTLog::kFatal,"AliHLTDataHandler::Write","Bitnumbers")
<<"Value too big for storing in 1 byte, something is wrong: "<<value<<" "<<index<<ENDLOG;
}
comp[index] = (Byte_t)value;
index++;
}
-Short_t AliL3DataHandler::Read(Byte_t *comp,UInt_t &index)
+Short_t AliHLTDataHandler::Read(Byte_t *comp,UInt_t &index)
{
//Read one value (=1 byte) from array comp
return value;
}
-Short_t AliL3DataHandler::Test(Byte_t *comp,UInt_t index)
+Short_t AliHLTDataHandler::Test(Byte_t *comp,UInt_t index)
{
//Check the value (=1 byte) in array comp, but not read.
return value;
}
-Bool_t AliL3DataHandler::Memory2CompMemory(UInt_t nrow,AliL3DigitRowData *data,Byte_t *comp)
+Bool_t AliHLTDataHandler::Memory2CompMemory(UInt_t nrow,AliHLTDigitRowData *data,Byte_t *comp)
{
//Perform RLE.
if(!data)
{
- LOG(AliL3Log::kError,"AliL3DataHandler::Memory2CompMemory","Data")
- <<AliL3Log::kHex<<" Pointer to data = "<<(void*)data<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::Memory2CompMemory","Data")
+ <<AliHLTLog::kHex<<" Pointer to data = "<<(void*)data<<ENDLOG;
return 0;
}
if(!comp)
{
- LOG(AliL3Log::kError,"AliL3DataHandler::Memory2CompMemory","Data")
- <<AliL3Log::kHex<<" Pointer to compressed data = "<<(void*)comp<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::Memory2CompMemory","Data")
+ <<AliHLTLog::kHex<<" Pointer to compressed data = "<<(void*)comp<<ENDLOG;
return 0;
}
- AliL3DigitRowData *rowPt = data;
+ AliHLTDigitRowData *rowPt = data;
UInt_t index = 0;
Int_t npads[200];
Write(comp,index,255);
if(rowPt->fDigitData[digit].fTime >= 2*255)
{
- cerr<<"AliL3DataHandler::Memory2CompMemory : Should not happen "<<(Int_t)rowPt->fDigitData[digit].fTime<<endl;
+ cerr<<"AliHLTDataHandler::Memory2CompMemory : Should not happen "<<(Int_t)rowPt->fDigitData[digit].fTime<<endl;
Write(comp,index,255);
numberOfZeroIntervals++;
}
//Check for saturation:
if(charge>255)
{
- LOG(AliL3Log::kWarning,"AliL3DataHandler::Memory2CompMemory","Digit")
+ LOG(AliHLTLog::kWarning,"AliHLTDataHandler::Memory2CompMemory","Digit")
<<"ADC-value saturated : "<<charge<<ENDLOG;
charge=255;
}
Write(comp,index,255);
if(nzero >= 2*255)
{
- cerr<<"AliL3DataHandler::Memory2CompMemory : Should not happen "<<(Int_t)rowPt->fDigitData[digit].fTime<<endl;
+ cerr<<"AliHLTDataHandler::Memory2CompMemory : Should not happen "<<(Int_t)rowPt->fDigitData[digit].fTime<<endl;
Write(comp,index,255);
numberOfZeroIntervals++;
}
}
-UInt_t AliL3DataHandler::GetCompMemorySize(UInt_t nrow,AliL3DigitRowData *data)
+UInt_t AliHLTDataHandler::GetCompMemorySize(UInt_t nrow,AliHLTDigitRowData *data)
{
//Calculate the size (in bytes) of RLE data.
if(!data)
{
- LOG(AliL3Log::kError,"AliL3DataHandler::GetCompMemorySize","Data")
- <<AliL3Log::kHex<<" Data pointer = "<<(void*)data<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::GetCompMemorySize","Data")
+ <<AliHLTLog::kHex<<" Data pointer = "<<(void*)data<<ENDLOG;
return 0;
}
- AliL3DigitRowData *rowPt = data;
+ AliHLTDigitRowData *rowPt = data;
UInt_t index = 0;
Int_t npads[200];
}
-UInt_t AliL3DataHandler::CompMemory2Memory(UInt_t nrow,AliL3DigitRowData *data,Byte_t *comp)
+UInt_t AliHLTDataHandler::CompMemory2Memory(UInt_t nrow,AliHLTDigitRowData *data,Byte_t *comp)
{
//Uncompress RLE data.
if(!data)
{
- LOG(AliL3Log::kError,"AliL3DataHandler::CompMemory2Memory","Array")
- <<AliL3Log::kHex<<"Pointer to data: "<<(void*)data<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::CompMemory2Memory","Array")
+ <<AliHLTLog::kHex<<"Pointer to data: "<<(void*)data<<ENDLOG;
return 0;
}
if(!comp)
{
- LOG(AliL3Log::kError,"AliL3DataHandler::CompMemory2Memory","Array")
- <<AliL3Log::kHex<<"Pointer to compressed data: "<<(void*)comp<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::CompMemory2Memory","Array")
+ <<AliHLTLog::kHex<<"Pointer to compressed data: "<<(void*)comp<<ENDLOG;
return 0;
}
Int_t outsize=0;
- AliL3DigitRowData *rowPt = data;
+ AliHLTDigitRowData *rowPt = data;
UInt_t index=0;
UShort_t pad,time,charge;
{
while( (charge = Read(comp,index)) != 0)
{
- if(time >= AliL3Transform::GetNTimeBins())
- cerr<<"AliL3DataHandler::CompMemory2Memory : Time out of range "<<time<<endl;
+ if(time >= AliHLTTransform::GetNTimeBins())
+ cerr<<"AliHLTDataHandler::CompMemory2Memory : Time out of range "<<time<<endl;
rowPt->fDigitData[ndigit].fPad = pad;
rowPt->fDigitData[ndigit].fTime = time;
rowPt->fDigitData[ndigit].fCharge = charge;
}
rowPt->fNDigit = ndigit;
UpdateRowPointer(rowPt);
- outsize += sizeof(AliL3DigitData)*ndigit + sizeof(AliL3DigitRowData);
+ outsize += sizeof(AliHLTDigitData)*ndigit + sizeof(AliHLTDigitRowData);
}
return outsize;
}
-UInt_t AliL3DataHandler::GetMemorySize(UInt_t nrow,Byte_t *comp)
+UInt_t AliHLTDataHandler::GetMemorySize(UInt_t nrow,Byte_t *comp)
{
//Calculate size (in bytes) of unpacked data.
}
}
- Int_t size = sizeof(AliL3DigitData)*ndigit + sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData)*ndigit + sizeof(AliHLTDigitRowData);
outsize += size;
}
return outsize;
}
-Bool_t AliL3DataHandler::CompBinary2CompMemory(UInt_t &nrow,Byte_t *comp)
+Bool_t AliHLTDataHandler::CompBinary2CompMemory(UInt_t &nrow,Byte_t *comp)
{
//Read RLE data from binary file into array comp.
rewind(fInBinary);
if(fread(&type,1,1,fInBinary)!=1) return kFALSE;
if(type > 0)
{
- LOG(AliL3Log::kError,"AliL3DataHandler::CompBinary2CompMemory","Filetype")
+ LOG(AliHLTLog::kError,"AliHLTDataHandler::CompBinary2CompMemory","Filetype")
<<"Inputfile does not seem to contain 8 bit data : "<<type<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3DataHandler::CompMemory2CompBinary(UInt_t nrow,Byte_t *comp,UInt_t size)
+Bool_t AliHLTDataHandler::CompMemory2CompBinary(UInt_t nrow,Byte_t *comp,UInt_t size)
{
//Write RLE data in comp to binary file.
//In order to distinguish these files from 10 bit data,
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3DATAHANDLER_H
+#define ALIL3DATAHANDLER_H
+
+#include "AliHLTMemHandler.h"
+
+class AliHLTTransBit;
+
+class AliHLTDataHandler : public AliHLTMemHandler {
+
+ public:
+ AliHLTDataHandler();
+ ~AliHLTDataHandler();
+
+ void Convert10to8Bit();
+ Bool_t Memory2CompBinary(UInt_t nrow,AliHLTDigitRowData *data);
+ AliHLTDigitRowData *CompBinary2Memory(UInt_t &nrows);
+
+ private:
+
+ AliHLTTransBit *fBitTransformer; //! bit transsformer
+
+ void Write(Byte_t *comp,UInt_t &index,UShort_t value);
+ Short_t Read(Byte_t *comp,UInt_t &index);
+ Short_t Test(Byte_t *comp,UInt_t index);
+ Bool_t Memory2CompMemory(UInt_t nrow,AliHLTDigitRowData *data,Byte_t *comp);
+ UInt_t GetCompMemorySize(UInt_t row,AliHLTDigitRowData *data);
+ UInt_t GetMemorySize(UInt_t nrow,Byte_t *comp);
+ Bool_t CompMemory2CompBinary(UInt_t nrow,Byte_t *comp,UInt_t size);
+ Bool_t CompBinary2CompMemory(UInt_t &nrow,Byte_t *comp);
+ UInt_t CompMemory2Memory(UInt_t nrow,AliHLTDigitRowData *data,Byte_t *comp);
+
+ ClassDef(AliHLTDataHandler,1) //Data handler class
+};
+
+typedef AliHLTDataHandler AliL3DataHandler; // for backward compatibility
+
+#endif
#ifdef USEFFLOAT
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Logger.h"
+#include "AliHLTLogging.h"
+#include "AliHLTLogger.h"
//calculate statistics according to usage and
//difference to floating point results
//use cast to int instead of sprintf and atoi
//#define FASTWITHROUNDINGERROS
-#include "AliL3FFloat.h"
+#include "AliHLTFFloat.h"
-/** \class AliL3FFloat
+/** \class AliHLTFFloat
<pre>
//----------------------------------------------------
-// AliL3FFloat
+// AliHLTFFloat
//
// Fixed Floating Point class for debugging purposes.
//
</pre>
*/
-ClassImp(AliL3FFloat)
+ClassImp(AliHLTFFloat)
-Int_t AliL3FFloat::fDigits = DEFDIG;
-Int_t AliL3FFloat::fMax = DEFMAX;
-Int_t AliL3FFloat::fMin = DEFMIN;
+Int_t AliHLTFFloat::fDigits = DEFDIG;
+Int_t AliHLTFFloat::fMax = DEFMAX;
+Int_t AliHLTFFloat::fMin = DEFMIN;
#ifdef CALCSTATS
-Int_t AliL3FFloat::fN = 0;
-Int_t AliL3FFloat::fNRounded = 0;
-Int_t AliL3FFloat::fNOpAdds = 0;
-Int_t AliL3FFloat::fNOpMults = 0;
-Int_t AliL3FFloat::fNOpDivs = 0;
-Int_t AliL3FFloat::fNOpSubs = 0;
-Int_t AliL3FFloat::fNOverFlow = 0;
-Int_t AliL3FFloat::fNUnderFlow = 0;
-Double_t AliL3FFloat::fNDiff = 0;
-#endif
-
-void AliL3FFloat::PrintStat(){
+Int_t AliHLTFFloat::fN = 0;
+Int_t AliHLTFFloat::fNRounded = 0;
+Int_t AliHLTFFloat::fNOpAdds = 0;
+Int_t AliHLTFFloat::fNOpMults = 0;
+Int_t AliHLTFFloat::fNOpDivs = 0;
+Int_t AliHLTFFloat::fNOpSubs = 0;
+Int_t AliHLTFFloat::fNOverFlow = 0;
+Int_t AliHLTFFloat::fNUnderFlow = 0;
+Double_t AliHLTFFloat::fNDiff = 0;
+#endif
+
+void AliHLTFFloat::PrintStat(){
#ifdef CALCSTATS
cout << "fN: " << fN << endl;
cout << "fNRounded: " << fNRounded << endl;
#endif
}
-AliL3FFloat::~AliL3FFloat()
+AliHLTFFloat::~AliHLTFFloat()
{
#ifdef CALCSTATS
Double_t diff=fabs(fVal-fExactVal);
#endif
}
-ostream& operator<<(ostream &os, const AliL3FFloat &f)
+ostream& operator<<(ostream &os, const AliHLTFFloat &f)
{
os << (Double_t)f << "(" << f.fExactVal << ")";
return os;
}
-AliL3FFloat operator + (const AliL3FFloat &f1,const AliL3FFloat &f2)
+AliHLTFFloat operator + (const AliHLTFFloat &f1,const AliHLTFFloat &f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r+=f2;
return r;
}
-AliL3FFloat operator + (const AliL3FFloat &f1,const Double_t f2)
+AliHLTFFloat operator + (const AliHLTFFloat &f1,const Double_t f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r+=f2;
return r;
}
-AliL3FFloat operator + (const Double_t f1,const AliL3FFloat &f2)
+AliHLTFFloat operator + (const Double_t f1,const AliHLTFFloat &f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r+=f2;
return r;
}
-AliL3FFloat operator + (const AliL3FFloat &f)
+AliHLTFFloat operator + (const AliHLTFFloat &f)
{
- AliL3FFloat r(f);
+ AliHLTFFloat r(f);
return r;
}
-AliL3FFloat operator - (const AliL3FFloat &f1,const AliL3FFloat &f2)
+AliHLTFFloat operator - (const AliHLTFFloat &f1,const AliHLTFFloat &f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r-=f2;
return r;
}
-AliL3FFloat operator - (const AliL3FFloat &f1,const Double_t f2)
+AliHLTFFloat operator - (const AliHLTFFloat &f1,const Double_t f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r-=f2;
return r;
}
-AliL3FFloat operator - (const Double_t f1,const AliL3FFloat &f2)
+AliHLTFFloat operator - (const Double_t f1,const AliHLTFFloat &f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r-=f2;
return r;
}
-AliL3FFloat operator - (const AliL3FFloat &f)
+AliHLTFFloat operator - (const AliHLTFFloat &f)
{
- AliL3FFloat r((-(Double_t)f));
+ AliHLTFFloat r((-(Double_t)f));
return r;
}
-AliL3FFloat operator * (const AliL3FFloat &f1,const AliL3FFloat &f2)
+AliHLTFFloat operator * (const AliHLTFFloat &f1,const AliHLTFFloat &f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r*=f2;
return r;
}
-AliL3FFloat operator * (const AliL3FFloat &f1,const Double_t f2)
+AliHLTFFloat operator * (const AliHLTFFloat &f1,const Double_t f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r*=f2;
return r;
}
-AliL3FFloat operator * (const Double_t f1,const AliL3FFloat &f2)
+AliHLTFFloat operator * (const Double_t f1,const AliHLTFFloat &f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r*=f2;
return r;
}
-AliL3FFloat operator / (const AliL3FFloat &f1,const AliL3FFloat &f2)
+AliHLTFFloat operator / (const AliHLTFFloat &f1,const AliHLTFFloat &f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r/=f2;
return r;
}
-AliL3FFloat operator / (const AliL3FFloat &f1,const Double_t f2)
+AliHLTFFloat operator / (const AliHLTFFloat &f1,const Double_t f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r/=f2;
return r;
}
-AliL3FFloat operator / (const Double_t f1,const AliL3FFloat &f2)
+AliHLTFFloat operator / (const Double_t f1,const AliHLTFFloat &f2)
{
- AliL3FFloat r(f1);
+ AliHLTFFloat r(f1);
r/=f2;
return r;
}
#ifdef USEINTS
-void AliL3FFloat::SetParams(Int_t dig,Int_t min,Int_t max)
+void AliHLTFFloat::SetParams(Int_t dig,Int_t min,Int_t max)
{
fDigits=dig;
fMin=min;
fMax=max;
}
-inline void AliL3FFloat::Set(Double_t val)
+inline void AliHLTFFloat::Set(Double_t val)
{
Round(val);
CheckBounds();
#endif
}
-inline void AliL3FFloat::Set(const AliL3FFloat &f)
+inline void AliHLTFFloat::Set(const AliHLTFFloat &f)
{
fVali=f.GetValInt();
fVal=f.GetVal();
#endif
}
-inline void AliL3FFloat::Round(Double_t val)
+inline void AliHLTFFloat::Round(Double_t val)
{
fExactVal=val;
fVali=Fnt_t(val*fDigits);
#endif
}
-inline Bool_t AliL3FFloat::CheckUpperBound()
+inline Bool_t AliHLTFFloat::CheckUpperBound()
{
if(fVal>fMax){
fVal=fMax;
return kTRUE;
}
-inline Bool_t AliL3FFloat::CheckLowerBound()
+inline Bool_t AliHLTFFloat::CheckLowerBound()
{
if(fVal<fMin){
fVal=fMin;
return kTRUE;
}
-AliL3FFloat& AliL3FFloat::operator += (const AliL3FFloat &f)
+AliHLTFFloat& AliHLTFFloat::operator += (const AliHLTFFloat &f)
{
fExactVal+=f.GetExactVal();
fVali+=f.GetValInt();
return *this;
}
-AliL3FFloat& AliL3FFloat::operator += (const Double_t f)
+AliHLTFFloat& AliHLTFFloat::operator += (const Double_t f)
{
fExactVal+=f;
fVali+=Fnt_t(f*fDigits);
return *this;
}
-AliL3FFloat& AliL3FFloat::operator -= (const AliL3FFloat &f)
+AliHLTFFloat& AliHLTFFloat::operator -= (const AliHLTFFloat &f)
{
fExactVal-=f.GetExactVal();
fVali-=f.GetValInt();
return *this;
}
-AliL3FFloat& AliL3FFloat::operator -= (const Double_t f)
+AliHLTFFloat& AliHLTFFloat::operator -= (const Double_t f)
{
fExactVal-=f;
fVali-=Fnt_t(f*fDigits);
return *this;
}
-AliL3FFloat& AliL3FFloat::operator *= (const AliL3FFloat &f)
+AliHLTFFloat& AliHLTFFloat::operator *= (const AliHLTFFloat &f)
{
fExactVal*=f.GetExactVal();
fVali=Fnt_t((fVali*f.GetValInt())/fDigits);
return *this;
}
-AliL3FFloat& AliL3FFloat::operator *= (const Double_t f)
+AliHLTFFloat& AliHLTFFloat::operator *= (const Double_t f)
{
fExactVal*=f;
fVali=Fnt_t(fVali*Fnt_t(f));
return *this;
}
-AliL3FFloat& AliL3FFloat::operator /= (const AliL3FFloat &f)
+AliHLTFFloat& AliHLTFFloat::operator /= (const AliHLTFFloat &f)
{
fExactVal/=f.GetExactVal();
fVali=Fnt_t(fVali*fDigits/f.GetValInt());
return *this;
}
-AliL3FFloat& AliL3FFloat::operator /= (const Double_t f)
+AliHLTFFloat& AliHLTFFloat::operator /= (const Double_t f)
{
fExactVal/=f;
fVali=Fnt_t((fVali*fDigits)/(Int_t(f*fDigits)));
#else
//--------------------------------------------------------
-Char_t AliL3FFloat::fQuery[10] = "%.2f";
+Char_t AliHLTFFloat::fQuery[10] = "%.2f";
-inline void AliL3FFloat::Set(const Double_t val)
+inline void AliHLTFFloat::Set(const Double_t val)
{
fVal=Round(val);
fExactVal=val;
#endif
}
-inline void AliL3FFloat::Set(const AliL3FFloat &f)
+inline void AliHLTFFloat::Set(const AliHLTFFloat &f)
{
fVal=(Double_t)f;
fExactVal=f.GetExactVal();
#endif
}
-AliL3FFloat& AliL3FFloat::operator += (const AliL3FFloat &f)
+AliHLTFFloat& AliHLTFFloat::operator += (const AliHLTFFloat &f)
{
Double_t ev=fExactVal+f.GetExactVal();
Set(fVal+(Double_t)f);
return *this;
}
-AliL3FFloat& AliL3FFloat::operator += (const Double_t f)
+AliHLTFFloat& AliHLTFFloat::operator += (const Double_t f)
{
Double_t ev=fExactVal+f;
Set(fVal+Round(f));
return *this;
}
-AliL3FFloat& AliL3FFloat::operator -= (const AliL3FFloat &f)
+AliHLTFFloat& AliHLTFFloat::operator -= (const AliHLTFFloat &f)
{
Double_t ev=fExactVal-f.GetExactVal();
Set(fVal-(Double_t)f);
return *this;
}
-AliL3FFloat& AliL3FFloat::operator -= (const Double_t f)
+AliHLTFFloat& AliHLTFFloat::operator -= (const Double_t f)
{
Double_t ev=fExactVal-f;
Set(fVal-Round(f));
return *this;
}
-AliL3FFloat& AliL3FFloat::operator *= (const AliL3FFloat &f)
+AliHLTFFloat& AliHLTFFloat::operator *= (const AliHLTFFloat &f)
{
Double_t ev=fExactVal*f.GetExactVal();
Set(fVal*(Double_t)f);
return *this;
}
-AliL3FFloat& AliL3FFloat::operator *= (const Double_t f)
+AliHLTFFloat& AliHLTFFloat::operator *= (const Double_t f)
{
Double_t ev=fExactVal*f;
Set(fVal*Round(f));
return *this;
}
-AliL3FFloat& AliL3FFloat::operator /= (const AliL3FFloat &f)
+AliHLTFFloat& AliHLTFFloat::operator /= (const AliHLTFFloat &f)
{
Double_t ev=fExactVal/f.GetExactVal();
Set(fVal/(Double_t)f);
return *this;
}
-AliL3FFloat& AliL3FFloat::operator /= (const Double_t f)
+AliHLTFFloat& AliHLTFFloat::operator /= (const Double_t f)
{
Double_t ev=fExactVal/f;
Set(fVal/Round(f));
return *this;
}
-inline Bool_t AliL3FFloat::CheckUpperBound()
+inline Bool_t AliHLTFFloat::CheckUpperBound()
{
if(fVal>fMax){
fVal=fMax;
return kTRUE;
}
-inline Bool_t AliL3FFloat::CheckLowerBound()
+inline Bool_t AliHLTFFloat::CheckLowerBound()
{
if(fVal<fMin){
fVal=fMin;
}
#ifdef FASTWITHROUNDINGERROS
-inline Double_t AliL3FFloat::Round(Double_t val)
+inline Double_t AliHLTFFloat::Round(Double_t val)
{
Int_t dummy=Int_t(fDigits*val);
Double_t ret=(Double_t)(dummy)/fDigits;
return ret;
}
#else
-inline Double_t AliL3FFloat::Round(Double_t val)
+inline Double_t AliHLTFFloat::Round(Double_t val)
{
static Char_t strnum[100];
sprintf(strnum,fQuery,val);
}
#endif
-void AliL3FFloat::SetParams(Int_t dig,Int_t min,Int_t max)
+void AliHLTFFloat::SetParams(Int_t dig,Int_t min,Int_t max)
{
fDigits=dig;
Int_t prec=0;
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3FFLOAT_H
+#define ALIL3FFLOAT_H
+
+#include "AliHLTRootTypes.h"
+
+#ifndef USEFFLOAT
+typedef Float_t AliHLTFFloat;
+#else
+
+//use Ints times Digits instead of Floats
+#define USEINTS
+
+#define DEFDIG 100
+#define DEFMIN -1000000
+#define DEFMAX 1000000
+
+#ifdef USEINTS
+
+//ROOT does not know about 64 bit integer
+#ifdef no_root
+typedef long long int Fnt_t;
+#else
+typedef Int_t Fnt_t;
+#endif
+
+class AliHLTFFloat {
+ public:
+ AliHLTFFloat(const Double_t val=0) {Set(val);}
+ AliHLTFFloat(const AliHLTFFloat &f) {Set(f);}
+ virtual ~AliHLTFFloat();
+
+ AliHLTFFloat& operator = (const AliHLTFFloat &f) {Set(f); return *this;}
+ AliHLTFFloat& operator = (const Double_t f) {Set(f); return *this;}
+
+ operator const Double_t () const {return fVal;}
+ operator const Float_t () const {return (Float_t)fVal;}
+#ifdef no_root
+ operator const Fnt_t () const {return (Fnt_t)fVal;}
+#endif
+ operator const Int_t () const {return (Int_t)fVal;}
+
+
+ friend ostream& operator<<(ostream &os, const AliHLTFFloat &f);
+
+ friend AliHLTFFloat operator + (const AliHLTFFloat &f1,const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator + (const AliHLTFFloat &f1,const Double_t f2);
+ friend AliHLTFFloat operator + (const Double_t f1, const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator + (const AliHLTFFloat &f1);
+ friend AliHLTFFloat operator - (const AliHLTFFloat &f1,const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator - (const AliHLTFFloat &f1,const Double_t f2);
+ friend AliHLTFFloat operator - (const Double_t f1, const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator - (const AliHLTFFloat &f1);
+ friend AliHLTFFloat operator * (const AliHLTFFloat &f1,const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator * (const AliHLTFFloat &f1,const Double_t f2);
+ friend AliHLTFFloat operator * (const Double_t f1, const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator / (const AliHLTFFloat &f1,const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator / (const AliHLTFFloat &f1,const Double_t f2);
+ friend AliHLTFFloat operator / (const Double_t f1, const AliHLTFFloat &f2);
+
+ AliHLTFFloat& operator += (const AliHLTFFloat &f);
+ AliHLTFFloat& operator += (const Double_t f);
+ AliHLTFFloat& operator -= (const AliHLTFFloat &f);
+ AliHLTFFloat& operator -= (const Double_t f);
+ AliHLTFFloat& operator *= (const AliHLTFFloat &f);
+ AliHLTFFloat& operator *= (const Double_t f);
+ AliHLTFFloat& operator /= (const AliHLTFFloat &f);
+ AliHLTFFloat& operator /= (const Double_t f);
+ //==,!=,>=, ...
+ //++,--
+
+ static void PrintStat();
+ static void SetParams(Int_t dig=DEFDIG,Int_t min=DEFMIN,Int_t max=DEFMAX);
+ void Set(const Double_t f=0);
+ void Set(const AliHLTFFloat &f);
+ inline Double_t GetVal() const {return fVal;}
+ inline Double_t GetExactVal() const {return fExactVal;}
+ inline Fnt_t GetValInt() const {return fVali;}
+
+ private:
+
+ void Round(Double_t f);
+ Bool_t CheckUpperBound();
+ Bool_t CheckLowerBound();
+ Bool_t CheckBounds() {return (CheckUpperBound() && CheckLowerBound());}
+
+ Fnt_t fVali;
+ Double_t fVal;
+ Double_t fExactVal;
+
+ static Int_t fDigits;
+ static Int_t fMax;
+ static Int_t fMin;
+
+#ifdef CALCSTATS
+ static Int_t fN;
+ static Int_t fNRounded;
+ static Int_t fNOpAdds;
+ static Int_t fNOpMults;
+ static Int_t fNOpDivs;
+ static Int_t fNOpSubs;
+ static Int_t fNOverFlow;
+ static Int_t fNUnderFlow;
+ static Double_t fNDiff;
+#endif
+
+ ClassDef(AliHLTFFloat,1)
+};
+
+#else
+
+class AliHLTFFloat {
+ public:
+ AliHLTFFloat(const Double_t val=0) {Set(val);}
+ AliHLTFFloat(const AliHLTFFloat &f) {Set(f);}
+ virtual ~AliHLTFFloat();
+
+ AliHLTFFloat& operator = (const AliHLTFFloat &f) {Set(f); return *this;}
+ AliHLTFFloat& operator = (const Double_t f) {Set(f); return *this;}
+
+ operator const Double_t () const {return fVal;}
+ operator const Float_t () const {return (Float_t)fVal;}
+ operator const Int_t () const {return (Int_t)fVal;}
+
+ friend ostream& operator<<(ostream &os, const AliHLTFFloat &f);
+
+ friend AliHLTFFloat operator + (const AliHLTFFloat &f1,const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator + (const AliHLTFFloat &f1,const Double_t f2);
+ friend AliHLTFFloat operator + (const Double_t f1, const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator + (const AliHLTFFloat &f1);
+ friend AliHLTFFloat operator - (const AliHLTFFloat &f1,const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator - (const AliHLTFFloat &f1,const Double_t f2);
+ friend AliHLTFFloat operator - (const Double_t f1, const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator - (const AliHLTFFloat &f1);
+ friend AliHLTFFloat operator * (const AliHLTFFloat &f1,const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator * (const AliHLTFFloat &f1,const Double_t f2);
+ friend AliHLTFFloat operator * (const Double_t f1, const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator / (const AliHLTFFloat &f1,const AliHLTFFloat &f2);
+ friend AliHLTFFloat operator / (const AliHLTFFloat &f1,const Double_t f2);
+ friend AliHLTFFloat operator / (const Double_t f1, const AliHLTFFloat &f2);
+
+ AliHLTFFloat& operator += (const AliHLTFFloat &f);
+ AliHLTFFloat& operator += (const Double_t f);
+ AliHLTFFloat& operator -= (const AliHLTFFloat &f);
+ AliHLTFFloat& operator -= (const Double_t f);
+ AliHLTFFloat& operator *= (const AliHLTFFloat &f);
+ AliHLTFFloat& operator *= (const Double_t f);
+ AliHLTFFloat& operator /= (const AliHLTFFloat &f);
+ AliHLTFFloat& operator /= (const Double_t f);
+ //==,!=,>=, ...
+ //++,--
+
+ static void PrintStat();
+ static void SetParams(Int_t dig=DEFDIG,Int_t min=DEFMIN,Int_t max=DEFMAX);
+ void Set(const Double_t f=0);
+ void Set(const AliHLTFFloat &f);
+ inline Double_t GetVal() const {return fVal;}
+ inline Double_t GetExactVal() const {return fExactVal;}
+
+ private:
+
+ Double_t Round(Double_t f);
+ Bool_t CheckUpperBound();
+ Bool_t CheckLowerBound();
+ Bool_t CheckBounds() {return (CheckUpperBound() && CheckLowerBound());}
+
+ Double_t fVal;
+ Double_t fExactVal;
+
+ static Int_t fDigits;
+ static Char_t fQuery[10];
+ static Int_t fMax;
+ static Int_t fMin;
+
+#ifdef CALCSTATS
+ static Int_t fN;
+ static Int_t fNRounded;
+ static Int_t fNOpAdds;
+ static Int_t fNOpMults;
+ static Int_t fNOpDivs;
+ static Int_t fNOpSubs;
+ static Int_t fNOverFlow;
+ static Int_t fNUnderFlow;
+ static Double_t fNDiff;
+#endif
+
+ ClassDef(AliHLTFFloat,1)
+};
+
+#endif
+#endif
+
+typedef AliHLTFFloat AliL3FFloat; // for backward compatibility
+
+#endif
+
+
+
+
--- /dev/null
+// @(#) $Id$
+
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+
+#ifndef macosx
+#pragma link C++ typedef AliL3TransBit;
+#pragma link C++ typedef AliL3TransBitV1;
+#pragma link C++ typedef AliL3TransBitV2;
+#pragma link C++ typedef AliL3DataHandler;
+#endif
+#pragma link C++ typedef AliL3AltroMemHandler;
+#pragma link C++ typedef AliL3VHDLClusterFinder;
+#pragma link C++ typedef AliL3TPCMapping;
+#pragma link C++ typedef AliL3DDLRawReader;
+#pragma link C++ typedef AliL3DDLRawReaderFile;
+#pragma link C++ typedef AliL3DDLTPCRawStream;
+#ifndef macosx
+#pragma link C++ typedef AliL3DDLDataFileHandler;
+#endif
+
+#ifdef USEFFLOAT
+#pragma link C++ typedef AliL3FFloat;
+#endif
+
+#ifndef macosx
+#pragma link C++ class AliHLTTransBit;
+#pragma link C++ class AliHLTTransBitV1;
+#pragma link C++ class AliHLTTransBitV2;
+#pragma link C++ class AliHLTDataHandler;
+#endif
+#pragma link C++ class AliHLTAltroMemHandler;
+#pragma link C++ class AliHLTVHDLClusterFinder;
+#pragma link C++ class AliHLTTPCMapping;
+#pragma link C++ class AliHLTDDLRawReader;
+#pragma link C++ class AliHLTDDLRawReaderFile;
+#pragma link C++ class AliHLTDDLTPCRawStream;
+#ifndef macosx
+#pragma link C++ class AliHLTDDLDataFileHandler;
+#endif
+
+#ifdef USEFFLOAT
+#pragma link C++ class AliHLTFFloat;
+#endif
+
+#endif
+
// Author: C. Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3Stopwatch.h"
+#include "AliHLTStopwatch.h"
#ifdef no_root
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#if __GNUC__ == 3
using namespace std;
#endif
-/** \class AliL3Stopwatch
+/** \class AliHLTStopwatch
<pre>
//----------------------------------------------------
-// AliL3Stopwatch
+// AliHLTStopwatch
//
// Stopwatch class. This class returns the real and cpu time between
// the start and stop events (taken from Root)
*/
-ClassImp(AliL3Stopwatch)
+ClassImp(AliHLTStopwatch)
-clock_t AliL3Stopwatch::gTicks = 0;
+clock_t AliHLTStopwatch::gTicks = 0;
-AliL3Stopwatch::AliL3Stopwatch()
+AliHLTStopwatch::AliHLTStopwatch()
{
// Create a stopwatch and start it.
if (!gTicks) gTicks = (clock_t)sysconf(_SC_CLK_TCK);
Start();
}
-AliL3Stopwatch::~AliL3Stopwatch()
+AliHLTStopwatch::~AliHLTStopwatch()
{
}
-void AliL3Stopwatch::Start(Bool_t reset)
+void AliHLTStopwatch::Start(Bool_t reset)
{
// Start the stopwatch. If reset is kTRUE reset the stopwatch before
// starting it (including the stopwatch counter).
fCounter++;
}
-void AliL3Stopwatch::Stop()
+void AliHLTStopwatch::Stop()
{
// Stop the stopwatch.
fStopRealTime = GetRealTime();
fState = kStopped;
}
-void AliL3Stopwatch::Continue()
+void AliHLTStopwatch::Continue()
{
// Resume a stopped stopwatch. The stopwatch continues counting from the last
// Start() onwards (this is like the laptimer function).
if (fState == kUndefined){
- cerr << "Error in AliL3Stopwatch::Continue! Stopwatch not started." << endl;
+ cerr << "Error in AliHLTStopwatch::Continue! Stopwatch not started." << endl;
return;
}
fState = kRunning;
}
-Double_t AliL3Stopwatch::RealTime()
+Double_t AliHLTStopwatch::RealTime()
{
// Return the realtime passed between the start and stop events. If the
// stopwatch was still running stop it first.
if (fState == kUndefined){
- cerr << "Error in AliL3Stopwatch::RealTime! Stopwatch not started." << endl;
+ cerr << "Error in AliHLTStopwatch::RealTime! Stopwatch not started." << endl;
return -1.0;
}
return fTotalRealTime;
}
-Double_t AliL3Stopwatch::CpuTime()
+Double_t AliHLTStopwatch::CpuTime()
{
// Return the cputime passed between the start and stop events. If the
// stopwatch was still running stop it first.
if (fState == kUndefined){
- cerr << "Error in AliL3Stopwatch::CpuTime! Stopwatch not started." << endl;
+ cerr << "Error in AliHLTStopwatch::CpuTime! Stopwatch not started." << endl;
return -1.0;
}
if (fState == kRunning)
return fTotalCpuTime;
}
-Double_t AliL3Stopwatch::GetRealTime()
+Double_t AliHLTStopwatch::GetRealTime()
{
struct tms cpt;
Double_t trt = (Double_t)times(&cpt);
return trt / (Double_t)gTicks;
}
-Double_t AliL3Stopwatch::GetCPUTime()
+Double_t AliHLTStopwatch::GetCPUTime()
{
struct tms cpt;
times(&cpt);
}
//______________________________________________________________________________
-void AliL3Stopwatch::Print(Char_t *opt) const
+void AliHLTStopwatch::Print(Char_t *opt) const
{
// Print the real and cpu time passed between the start and stop events.
// and the number of times (slices) this TStopwatch was called
// (if this number > 1)
- Double_t realt = ((AliL3Stopwatch*)(this))->RealTime();
+ Double_t realt = ((AliHLTStopwatch*)(this))->RealTime();
Int_t hours = Int_t(realt / 3600);
realt -= hours * 3600;
Int_t sec = Int_t(realt);
Int_t counter = Counter();
if (counter <= 1 )
- printf("Real time %d:%d:%d, CP time %.3f", hours, min, sec, ((AliL3Stopwatch*)(this))->CpuTime());
+ printf("Real time %d:%d:%d, CP time %.3f", hours, min, sec, ((AliHLTStopwatch*)(this))->CpuTime());
else
- printf("Real time %d:%d:%d, CP time %.3f, %d slices", hours, min, sec, ((AliL3Stopwatch*)(this))->CpuTime(),counter);
+ printf("Real time %d:%d:%d, CP time %.3f, %d slices", hours, min, sec, ((AliHLTStopwatch*)(this))->CpuTime(),counter);
}
#endif
#ifndef no_root
#include <TStopwatch.h>
-typedef TStopwatch AliL3Stopwatch;
+typedef TStopwatch AliHLTStopwatch;
#else
#include <sys/types.h>
#include <sys/times.h>
#include <unistd.h>
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3Stopwatch
+class AliHLTStopwatch
{
private:
static clock_t gTicks;
public:
- AliL3Stopwatch();
- ~AliL3Stopwatch();
+ AliHLTStopwatch();
+ ~AliHLTStopwatch();
void Start(Bool_t reset = kTRUE);
void Stop();
void Continue();
#endif
+typedef AliHLTStopwatch AliL3Stopwatch; // for backward compatibility
+
#endif
--- /dev/null
+const Int_t AliHLTTPCMapping::fgkNIROC = 5504;
+const Int_t AliHLTTPCMapping::fgkIRows[fgkNIROC] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62};
+const Int_t AliHLTTPCMapping::fgkIPad[fgkNIROC] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107};
+const Int_t AliHLTTPCMapping::fgkICon[fgkNIROC] = {127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,132,133,133,133,133,134,134,134,135,135,135,135,9,9,9,9,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,132,133,133,133,133,134,134,134,135,135,135,135,9,9,9,9,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,132,133,133,133,133,134,134,134,135,135,135,135,9,9,9,9,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,132,133,133,133,133,134,134,134,135,135,135,135,9,9,9,9,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,130,131,131,131,131,132,132,132,133,133,133,133,134,134,134,134,135,135,135,135,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,136,136,136,128,137,137,137,129,138,138,138,130,130,130,130,131,140,140,140,141,132,132,133,142,142,142,134,134,134,134,135,144,144,144,18,18,18,9,8,8,8,8,16,16,16,7,6,6,15,14,14,14,5,4,4,4,4,12,12,12,3,11,11,11,2,10,10,10,1,136,136,136,136,137,137,137,137,138,138,138,138,130,139,139,139,140,140,140,140,141,141,141,142,142,142,142,134,143,143,143,144,144,144,144,18,18,18,18,17,17,17,8,16,16,16,16,15,15,15,14,14,14,14,13,13,13,4,12,12,12,12,11,11,11,11,10,10,10,10,136,136,136,136,137,137,137,137,138,138,138,138,139,139,139,139,140,140,140,140,141,141,141,141,142,142,142,142,143,143,143,143,144,144,144,144,18,18,18,18,17,17,17,17,16,16,16,16,15,15,15,15,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,10,10,10,10,136,136,136,136,137,137,137,137,138,138,138,138,139,139,139,139,140,140,140,140,141,141,141,141,142,142,142,142,143,143,143,143,144,144,144,144,18,18,18,18,17,17,17,17,16,16,16,16,15,15,15,15,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,10,10,10,10,136,136,136,136,137,137,137,137,138,138,138,138,139,139,139,139,140,140,140,140,141,141,141,141,142,142,142,142,143,143,143,143,144,144,144,144,18,18,18,18,17,17,17,17,16,16,16,16,15,15,15,15,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,10,10,10,10,136,136,136,145,146,137,137,137,147,138,138,138,139,139,139,139,139,149,140,140,140,141,141,141,141,151,142,142,142,143,143,143,143,153,144,144,144,18,18,18,27,17,17,17,17,16,16,16,25,15,15,15,15,14,14,14,23,13,13,13,13,13,12,12,12,21,11,11,11,20,19,10,10,10,145,145,145,145,146,146,146,146,147,147,147,147,139,139,148,148,148,149,149,149,149,141,141,150,150,151,151,151,151,152,143,143,143,153,153,153,153,27,27,27,27,17,17,17,26,25,25,25,25,24,24,15,15,23,23,23,23,22,22,22,13,13,21,21,21,21,20,20,20,20,19,19,19,19,145,145,145,145,146,146,146,146,147,147,147,147,148,148,148,148,148,149,149,149,149,150,150,150,150,151,151,151,151,152,152,152,152,153,153,153,153,27,27,27,27,26,26,26,26,25,25,25,25,24,24,24,24,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,145,145,145,145,146,146,146,146,147,147,147,147,148,148,148,148,148,149,149,149,149,150,150,150,150,151,151,151,151,151,152,152,152,152,153,153,153,153,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,145,145,145,145,146,146,146,146,147,147,147,147,148,148,148,148,148,149,149,149,149,150,150,150,150,151,151,151,151,151,152,152,152,152,153,153,153,153,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,145,145,145,145,146,146,146,146,147,147,147,147,157,157,148,148,148,149,149,149,149,150,150,150,150,151,151,160,160,160,152,152,152,152,153,153,153,153,27,27,27,27,26,26,26,26,34,34,34,25,25,24,24,24,24,23,23,23,23,22,22,22,31,31,21,21,21,21,20,20,20,20,19,19,19,19,154,154,154,154,155,155,155,155,155,156,156,156,156,157,157,157,157,158,158,158,158,158,150,150,150,159,160,160,160,160,161,152,152,152,152,162,162,162,162,36,36,36,36,26,26,26,26,35,34,34,34,34,33,24,24,24,32,32,32,32,32,31,31,31,31,30,30,30,30,29,29,29,29,29,28,28,28,28,154,154,154,154,155,155,155,155,155,156,156,156,156,157,157,157,157,158,158,158,158,158,159,159,159,159,160,160,160,160,161,161,161,161,161,162,162,162,162,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,32,32,32,32,32,31,31,31,31,30,30,30,30,29,29,29,29,29,28,28,28,28,154,154,154,154,155,155,155,155,155,156,156,156,156,157,157,157,157,158,158,158,158,158,159,159,159,159,160,160,160,160,161,161,161,161,161,162,162,162,162,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,32,32,32,32,32,31,31,31,31,30,30,30,30,29,29,29,29,29,28,28,28,28,154,154,154,154,155,155,155,155,155,156,156,156,156,156,157,157,157,157,158,158,158,158,159,159,159,159,159,160,160,160,160,161,161,161,161,161,162,162,162,162,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,33,32,32,32,32,31,31,31,31,30,30,30,30,30,29,29,29,29,29,28,28,28,28,154,154,154,154,155,164,164,164,164,165,156,156,156,156,157,157,157,166,158,158,167,167,159,159,159,159,159,160,160,169,169,161,161,161,161,161,162,162,162,162,36,36,36,36,35,35,35,35,35,43,43,34,34,33,33,33,33,33,41,41,32,32,40,31,31,31,30,30,30,30,39,38,38,38,38,29,28,28,28,28,154,163,163,163,164,164,164,164,164,165,165,165,165,165,166,166,166,166,167,167,167,167,159,159,168,168,168,169,169,169,169,170,170,170,170,170,162,171,171,171,45,45,45,36,44,44,44,44,44,43,43,43,43,42,42,42,33,33,41,41,41,41,40,40,40,40,39,39,39,39,39,38,38,38,38,38,37,37,37,28,163,163,163,163,163,164,164,164,164,165,165,165,165,166,166,166,166,166,167,167,167,167,167,168,168,168,168,168,169,169,169,169,170,170,170,170,170,171,171,171,171,45,45,45,45,44,44,44,44,44,43,43,43,43,42,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,37,37,37,37,37,163,163,163,163,163,164,164,164,164,165,165,165,165,166,166,166,166,166,167,167,167,167,167,168,168,168,168,168,169,169,169,169,170,170,170,170,170,171,171,171,171,45,45,45,45,44,44,44,44,44,43,43,43,43,42,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,37,37,37,37,37,163,163,163,163,163,164,164,164,164,165,165,165,165,166,166,166,166,166,167,167,167,167,167,168,168,168,168,168,169,169,169,169,170,170,170,170,170,171,171,171,171,45,45,45,45,44,44,44,44,44,43,43,43,43,42,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,37,37,37,37,37,163,163,163,163,172,173,173,173,164,165,165,165,165,174,166,166,175,175,175,167,176,176,176,168,168,168,168,177,178,169,169,169,169,170,170,179,179,179,171,171,171,171,45,45,45,45,53,53,53,44,44,43,43,43,43,52,51,42,42,42,42,50,50,50,41,49,49,49,40,40,48,39,39,39,39,38,47,47,47,46,37,37,37,37,172,172,172,172,172,173,173,173,173,174,174,174,174,174,175,175,175,175,175,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,179,171,171,171,180,54,45,45,45,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,46,46,46,46,46,172,172,172,172,172,173,173,173,173,174,174,174,174,174,175,175,175,175,175,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,179,180,180,180,180,54,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,46,46,46,46,46,172,172,172,172,172,173,173,173,173,173,174,174,174,174,174,175,175,175,175,176,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,180,180,180,180,180,54,54,54,54,54,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,172,172,172,172,172,173,173,173,173,173,174,174,174,174,174,175,175,175,175,176,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,180,180,180,180,180,54,54,54,54,54,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,181,181,181,182,182,182,182,183,183,183,184,184,184,185,185,185,185,186,186,186,187,187,187,187,188,188,188,189,189,189,190,190,190,191,191,191,191,180,180,180,180,180,180,54,54,54,54,54,54,65,65,65,65,64,64,64,63,63,63,62,62,62,61,61,61,61,60,60,60,59,59,59,59,58,58,58,57,57,57,56,56,56,56,55,55,55,181,181,181,182,182,182,182,183,183,183,183,184,184,184,185,185,185,185,186,186,186,187,187,187,187,188,188,188,189,189,189,190,190,190,191,191,191,191,192,192,192,192,253,253,253,253,66,66,66,66,65,65,65,65,64,64,64,63,63,63,62,62,62,61,61,61,61,60,60,60,59,59,59,59,58,58,58,57,57,57,57,56,56,56,56,55,55,55,181,181,181,182,182,182,182,183,183,183,183,184,184,184,185,185,185,185,186,186,186,187,187,187,187,188,188,188,189,189,189,190,190,190,191,191,191,191,192,192,192,192,253,253,253,253,66,66,66,66,65,65,65,65,64,64,64,63,63,63,62,62,62,61,61,61,61,60,60,60,59,59,59,59,58,58,58,57,57,57,57,56,56,56,56,55,55,55,181,181,181,182,182,182,182,183,183,183,183,184,184,184,185,185,185,185,186,186,186,187,187,187,188,188,188,188,189,189,189,190,190,190,191,191,191,191,192,192,192,192,253,253,253,253,66,66,66,66,65,65,65,65,64,64,64,63,63,63,62,62,62,62,61,61,61,60,60,60,59,59,59,59,58,58,58,57,57,57,57,56,56,56,56,55,55,55,181,181,181,181,182,182,182,183,183,183,183,184,184,184,185,185,185,185,186,186,186,186,187,187,187,188,188,188,188,189,189,189,190,190,190,190,191,191,191,192,192,192,192,253,253,253,253,66,66,66,66,65,65,65,64,64,64,64,63,63,63,62,62,62,62,61,61,61,60,60,60,60,59,59,59,59,58,58,58,57,57,57,57,56,56,56,55,55,55,55,181,181,181,181,182,182,194,183,183,195,195,184,184,184,185,197,197,197,186,186,186,186,187,187,187,188,188,188,188,189,189,189,190,190,190,190,191,191,203,192,192,192,192,253,253,253,253,66,66,66,66,77,65,65,64,64,64,64,63,63,63,62,62,62,62,61,61,61,60,60,60,60,71,71,71,59,58,58,58,69,69,57,57,68,56,56,55,55,55,55,181,193,193,193,194,194,194,195,195,195,195,184,184,184,197,197,197,197,198,198,198,186,199,199,199,200,200,200,200,189,189,189,202,202,202,190,203,203,203,204,204,204,192,253,254,254,254,66,78,78,78,77,77,77,64,76,76,76,63,63,63,74,74,74,74,73,73,73,60,72,72,72,71,71,71,71,58,58,58,69,69,69,69,68,68,68,67,67,67,55,193,193,193,193,194,194,194,195,195,195,195,196,196,196,196,197,197,197,198,198,198,198,199,199,199,199,200,200,200,201,201,201,201,202,202,202,202,203,203,203,204,204,204,204,254,254,254,254,78,78,78,78,77,77,77,76,76,76,76,75,75,75,75,74,74,74,73,73,73,73,72,72,72,72,71,71,71,70,70,70,70,69,69,69,69,68,68,68,67,67,67,67,193,193,193,193,194,194,194,195,195,195,195,196,196,196,196,197,197,197,198,198,198,198,199,199,199,199,200,200,200,201,201,201,201,202,202,202,202,203,203,203,204,204,204,204,254,254,254,254,78,78,78,78,77,77,77,76,76,76,76,75,75,75,75,74,74,74,73,73,73,73,72,72,72,72,71,71,71,70,70,70,70,69,69,69,69,68,68,68,67,67,67,67,193,193,193,193,194,194,194,195,195,195,195,196,196,196,196,197,197,197,198,198,198,198,199,199,199,199,200,200,200,201,201,201,201,202,202,202,202,203,203,203,204,204,204,204,254,254,254,254,78,78,78,78,77,77,77,76,76,76,76,75,75,75,75,74,74,74,73,73,73,73,72,72,72,72,71,71,71,70,70,70,70,69,69,69,69,68,68,68,67,67,67,67,193,193,193,193,194,194,194,194,195,195,195,196,196,196,196,197,197,197,197,198,198,198,199,199,199,199,200,200,200,200,201,201,201,201,202,202,202,202,203,203,203,204,204,204,204,254,254,254,254,78,78,78,78,77,77,77,76,76,76,76,75,75,75,75,74,74,74,74,73,73,73,73,72,72,72,71,71,71,71,70,70,70,70,69,69,69,68,68,68,68,67,67,67,67,193,193,193,205,194,194,194,194,207,207,195,196,196,196,196,197,197,209,209,198,198,198,199,199,199,211,200,200,200,200,201,201,201,201,202,202,202,214,203,203,203,204,204,204,216,255,254,254,254,90,78,78,78,77,77,77,88,76,76,76,75,75,75,75,74,74,74,74,85,73,73,73,72,72,72,83,83,71,71,70,70,70,70,69,81,81,68,68,68,68,79,67,67,67,205,205,205,205,194,206,206,206,207,207,207,208,208,196,196,209,209,209,209,210,210,198,211,211,211,211,212,212,212,200,201,201,213,213,214,214,214,214,203,203,203,216,216,216,216,255,255,255,255,90,90,90,90,77,77,77,88,88,88,88,87,87,75,75,74,86,86,86,85,85,85,85,72,84,84,83,83,83,83,70,70,82,82,81,81,81,80,80,80,68,79,79,79,79,205,205,205,205,206,206,206,206,207,207,207,208,208,208,208,209,209,209,209,210,210,210,210,211,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215,215,215,216,216,216,216,255,255,255,255,90,90,90,90,89,89,89,88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,85,84,84,84,84,83,83,83,83,82,82,82,82,81,81,81,80,80,80,80,79,79,79,79,205,205,205,205,206,206,206,206,207,207,207,208,208,208,208,209,209,209,209,210,210,210,210,211,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215,215,215,216,216,216,216,255,255,255,255,90,90,90,90,89,89,89,88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,85,84,84,84,84,83,83,83,83,82,82,82,82,81,81,81,80,80,80,80,79,79,79,79,205,205,205,205,206,206,206,206,207,207,207,208,208,208,208,209,209,209,209,210,210,210,210,211,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215,215,215,216,216,216,216,255,255,255,255,90,90,90,90,89,89,89,88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,85,84,84,84,84,83,83,83,83,82,82,82,82,81,81,81,80,80,80,80,79,79,79,79,205,205,205,205,206,206,206,206,207,207,207,207,208,208,208,208,209,209,209,210,210,210,210,210,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215,215,215,215,216,216,216,216,255,255,255,255,90,90,90,90,89,89,89,89,88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,84,84,84,84,84,83,83,83,82,82,82,82,81,81,81,81,80,80,80,80,79,79,79,79,217,217,217,217,218,218,206,206,207,207,207,219,208,208,208,220,221,221,221,210,210,222,222,222,223,223,211,224,224,212,212,213,213,213,225,226,226,226,226,215,215,215,215,228,228,228,228,256,256,256,256,102,102,102,102,89,89,89,89,100,100,100,100,99,87,87,87,86,86,98,98,85,97,97,96,96,96,84,84,95,95,95,94,82,82,82,93,81,81,81,80,80,92,92,91,91,91,91,217,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,221,221,221,222,222,222,222,222,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,215,215,215,215,228,228,228,228,256,256,256,256,102,102,102,102,89,89,89,89,100,100,100,100,99,99,99,99,98,98,98,98,97,97,97,96,96,96,96,96,95,95,95,94,94,94,94,93,93,93,93,92,92,92,92,91,91,91,91,217,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227,227,227,227,228,228,228,228,256,256,256,256,102,102,102,102,101,101,101,101,100,100,100,100,99,99,99,99,98,98,98,98,97,97,97,97,96,96,96,96,95,95,95,95,94,94,94,94,93,93,93,93,92,92,92,92,91,91,91,91,217,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227,227,227,227,228,228,228,228,256,256,256,256,102,102,102,102,101,101,101,101,100,100,100,100,99,99,99,99,98,98,98,98,97,97,97,97,96,96,96,96,95,95,95,95,94,94,94,94,93,93,93,93,92,92,92,92,91,91,91,91,217,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227,227,227,227,228,228,228,228,256,256,256,256,102,102,102,102,101,101,101,101,100,100,100,100,99,99,99,99,98,98,98,98,97,97,97,97,96,96,96,96,95,95,95,95,94,94,94,94,93,93,93,93,92,92,92,92,91,91,91,91,229,229,229,217,218,218,218,230,219,219,219,219,220,220,220,220,221,221,221,233,234,234,234,222,223,223,223,223,236,224,224,224,225,225,225,225,237,238,238,238,226,227,227,227,227,240,240,240,228,256,257,257,257,102,114,114,114,101,101,101,101,100,112,112,112,111,99,99,99,99,98,98,98,110,97,97,97,97,96,108,108,108,107,95,95,95,94,94,94,94,93,93,93,93,104,92,92,92,91,103,103,103,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,227,227,227,227,240,240,240,240,257,257,257,257,114,114,114,114,101,101,101,101,112,112,112,112,111,111,111,111,111,110,110,110,110,109,109,109,109,108,108,108,108,107,107,107,107,106,106,106,106,105,105,105,105,104,104,104,104,103,103,103,103,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,239,239,239,227,240,240,240,240,257,257,257,257,114,114,114,114,101,113,113,113,112,112,112,112,111,111,111,111,111,110,110,110,110,109,109,109,109,108,108,108,108,107,107,107,107,106,106,106,106,105,105,105,105,104,104,104,104,103,103,103,103,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,239,239,239,239,239,240,240,240,240,257,257,257,257,114,114,114,114,113,113,113,113,113,112,112,112,112,111,111,111,111,110,110,110,110,109,109,109,109,108,108,108,108,107,107,107,107,106,106,106,106,106,105,105,105,105,104,104,104,104,103,103,103,103,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,239,239,239,239,239,240,240,240,240,257,257,257,257,114,114,114,114,113,113,113,113,113,112,112,112,112,111,111,111,111,110,110,110,110,109,109,109,109,108,108,108,108,107,107,107,107,106,106,106,106,106,105,105,105,105,104,104,104,104,103,103,103,103,241,229,229,229,230,230,230,230,231,231,231,231,244,232,232,232,232,233,233,233,233,246,234,234,234,235,235,235,235,236,236,236,236,237,237,237,249,238,238,238,250,239,239,239,239,239,240,240,240,252,258,257,257,257,126,114,114,114,113,113,113,113,113,124,112,112,112,123,111,111,111,110,110,110,110,109,109,109,109,108,108,108,120,107,107,107,107,106,106,106,106,118,105,105,105,105,104,104,104,104,103,103,103,115,241,241,241,241,242,242,242,230,243,243,243,231,231,244,244,244,244,245,245,245,233,246,246,246,246,247,247,247,235,235,236,248,248,248,249,249,249,249,250,250,250,250,239,239,239,239,251,252,252,252,252,258,258,258,258,126,126,126,126,125,113,113,113,113,124,124,124,124,123,123,123,123,122,122,122,110,109,109,121,121,121,120,120,120,120,107,119,119,119,118,118,118,118,105,105,117,117,117,104,116,116,116,115,115,115,115,241,241,241,241,242,242,242,242,243,243,243,243,243,244,244,244,244,245,245,245,245,246,246,246,246,247,247,247,247,247,248,248,248,248,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,258,258,258,258,126,126,126,126,125,125,125,125,125,124,124,124,124,123,123,123,123,122,122,122,122,121,121,121,121,121,120,120,120,120,119,119,119,119,118,118,118,118,117,117,117,117,117,116,116,116,116,115,115,115,115,241,241,241,241,242,242,242,242,243,243,243,243,243,244,244,244,244,245,245,245,245,246,246,246,246,247,247,247,247,247,248,248,248,248,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,258,258,258,258,126,126,126,126,125,125,125,125,125,124,124,124,124,123,123,123,123,122,122,122,122,121,121,121,121,121,120,120,120,120,119,119,119,119,118,118,118,118,117,117,117,117,117,116,116,116,116,115,115,115,115,241,241,241,241,242,242,242,242,242,243,243,243,243,244,244,244,244,245,245,245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,248,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,258,258,258,258,126,126,126,126,125,125,125,125,125,124,124,124,124,123,123,123,123,122,122,122,122,122,121,121,121,121,120,120,120,120,119,119,119,119,119,118,118,118,118,117,117,117,117,116,116,116,116,116,115,115,115,115,241,241,241,241,242,242,242,242,242,243,243,243,243,244,244,244,244,245,245,245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,248,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,258,258,258,258,126,126,126,126,125,125,125,125,125,124,124,124,124,123,123,123,123,122,122,122,122,122,121,121,121,121,120,120,120,120,119,119,119,119,119,118,118,118,118,117,117,117,117,116,116,116,116,116,115,115,115,115};
+const Int_t AliHLTTPCMapping::fgkIPin[fgkNIROC] = {2,1,3,5,2,1,3,5,2,1,3,5,2,4,1,2,1,3,5,2,1,3,5,2,1,3,5,2,4,1,2,1,3,5,5,3,1,2,1,4,2,5,3,1,2,5,3,1,2,5,3,1,2,1,4,2,5,3,1,2,5,3,1,2,5,3,1,2,4,6,7,9,4,6,7,9,4,6,7,9,6,3,5,4,6,7,9,4,6,7,9,4,6,7,9,6,3,5,4,6,7,9,9,7,6,4,5,3,6,9,7,6,4,9,7,6,4,9,7,6,4,5,3,6,9,7,6,4,9,7,6,4,9,7,6,4,8,10,11,13,8,10,11,13,8,10,11,13,8,7,9,8,10,11,13,8,10,11,13,8,10,11,13,8,7,9,8,10,11,13,13,11,10,8,9,7,8,13,11,10,8,13,11,10,8,13,11,10,8,9,7,8,13,11,10,8,13,11,10,8,13,11,10,8,12,14,15,17,12,14,15,17,12,14,15,17,10,11,13,12,14,15,17,12,14,15,17,12,14,15,17,10,11,13,12,14,15,17,17,15,14,12,13,11,10,17,15,14,12,17,15,14,12,17,15,14,12,13,11,10,17,15,14,12,17,15,14,12,17,15,14,12,16,18,19,21,16,18,21,19,16,18,21,19,12,14,15,17,16,18,21,19,16,18,19,16,18,21,19,12,14,15,17,16,18,21,19,19,21,18,16,17,15,14,12,19,21,18,16,19,18,16,19,21,18,16,17,15,14,12,19,21,18,16,19,21,18,16,21,19,18,16,20,0,2,1,20,2,0,1,20,2,0,1,16,18,21,19,20,4,2,0,0,20,21,20,4,2,0,16,18,21,19,20,4,2,0,0,2,4,20,19,21,18,16,0,2,4,20,21,20,0,0,2,4,20,19,21,18,16,1,0,2,20,1,0,2,20,1,2,0,20,4,6,3,5,6,4,3,5,6,4,3,5,20,0,1,3,8,6,1,3,2,1,3,8,6,1,3,20,4,2,0,8,6,1,3,3,1,6,8,0,2,4,20,3,1,6,8,3,1,2,3,1,6,8,3,1,0,20,5,3,4,6,5,3,4,6,5,3,6,4,8,10,7,9,10,8,7,9,10,8,7,9,4,2,5,7,12,10,5,7,6,4,5,7,12,10,5,7,8,6,1,3,12,10,5,7,7,5,10,12,3,1,6,8,7,5,10,12,7,5,4,6,7,5,10,12,7,5,2,4,9,7,8,10,9,7,8,10,9,7,10,8,12,14,13,15,14,12,13,15,14,12,13,15,8,6,9,13,16,14,9,13,10,8,9,13,16,14,9,13,12,10,5,7,16,14,9,13,13,9,14,16,7,5,10,12,13,9,14,16,13,9,8,10,13,9,14,16,13,9,6,8,15,13,12,14,15,13,12,14,15,13,14,12,16,18,17,19,18,16,17,19,18,16,17,19,12,10,15,17,20,18,15,17,14,12,15,17,20,18,15,17,16,14,9,13,20,18,15,17,17,15,18,20,13,9,14,16,17,15,18,20,17,15,12,14,17,15,18,20,17,15,10,12,19,17,16,18,19,17,16,18,19,17,18,16,20,22,21,1,2,22,20,21,2,22,20,21,18,16,14,19,21,1,22,19,21,18,16,19,21,5,22,19,21,20,18,15,17,1,22,19,21,21,19,22,1,17,15,18,20,21,19,22,5,21,19,16,18,21,19,22,1,21,19,14,16,18,21,20,22,2,21,20,22,2,1,21,22,20,4,2,3,5,4,1,3,5,4,1,3,5,22,20,1,3,5,4,2,3,5,22,20,1,3,1,3,7,9,1,22,19,21,4,2,3,5,5,3,2,4,21,19,22,1,9,7,3,1,3,1,20,22,5,3,2,4,5,3,1,20,22,5,3,1,4,5,3,1,4,5,3,2,4,8,6,7,9,8,6,7,9,8,6,7,9,6,4,2,7,9,8,6,7,9,4,2,5,7,4,2,11,13,4,2,3,5,8,6,7,9,9,7,6,8,5,3,2,4,13,11,2,4,7,5,2,4,9,7,6,8,9,7,2,4,6,9,7,6,8,9,7,6,8,9,7,6,8,12,10,11,13,12,10,11,13,12,10,11,13,12,10,8,11,13,12,10,11,13,8,6,9,11,10,8,6,15,17,8,6,7,9,12,10,11,13,13,11,10,12,9,7,6,8,17,15,6,8,10,11,9,6,8,13,11,10,12,13,11,8,10,12,13,11,10,12,13,11,10,12,13,11,10,12,18,16,15,17,16,14,15,17,16,14,15,17,18,16,14,15,17,16,14,15,17,12,10,13,15,16,14,12,19,21,12,10,11,13,16,14,15,17,17,15,14,16,13,11,10,12,21,19,12,14,16,15,13,10,12,17,15,14,16,17,15,14,16,18,17,15,14,16,17,15,14,16,17,15,16,18,14,20,19,21,20,18,19,21,20,18,19,21,1,3,20,19,21,20,18,19,21,16,14,17,19,20,18,3,5,7,16,14,15,17,20,18,19,21,21,19,18,20,17,15,14,16,7,5,3,18,20,19,17,14,16,21,19,18,20,21,19,20,3,1,21,19,18,20,21,19,18,20,21,19,20,14,2,1,3,5,1,3,5,7,9,2,1,3,5,4,2,5,7,1,3,5,7,9,20,18,21,5,4,2,1,9,1,20,18,19,21,2,1,3,5,5,3,1,2,21,19,18,20,1,9,1,2,4,5,21,18,20,9,7,5,3,1,7,5,2,4,5,3,1,2,9,7,5,3,1,5,3,1,2,6,4,7,9,6,4,2,11,13,6,4,7,9,8,6,9,11,6,4,2,11,13,1,3,7,9,8,6,11,13,2,3,5,7,9,6,4,7,9,9,7,4,6,9,7,5,3,2,13,11,6,8,9,7,3,1,13,11,2,4,6,11,9,6,8,9,7,4,6,13,11,2,4,6,9,7,4,6,10,8,11,13,12,10,8,15,17,10,8,11,13,12,10,13,15,12,10,8,15,17,4,2,11,13,12,10,15,17,8,6,4,11,13,10,8,11,13,13,11,8,10,13,11,4,6,8,17,15,10,12,13,11,2,4,17,15,8,10,12,15,13,10,12,13,11,8,10,17,15,8,10,12,13,11,8,10,14,12,15,17,18,16,14,19,21,16,14,12,15,17,16,14,17,19,16,14,19,21,10,8,6,15,17,16,14,19,21,14,12,10,15,17,14,12,15,17,17,15,12,14,17,15,10,12,14,21,19,14,16,17,15,6,8,10,21,19,14,16,19,17,14,16,17,15,12,14,16,21,19,14,16,18,17,15,12,14,18,16,19,21,20,4,2,0,1,0,20,18,19,21,20,18,21,3,20,18,1,3,16,14,12,19,21,20,18,2,0,20,18,16,19,21,18,16,19,21,21,19,16,18,21,19,16,18,20,0,2,18,20,21,19,12,14,16,3,1,18,20,3,21,18,20,21,19,18,20,0,1,0,2,4,20,21,19,16,18,20,0,1,3,10,8,6,3,5,6,4,2,1,3,0,1,5,7,2,0,5,7,20,18,0,1,3,6,4,1,3,0,1,3,5,7,20,2,0,1,1,0,2,20,7,5,3,1,0,3,1,4,6,3,1,0,18,20,7,5,0,2,7,5,1,0,3,1,2,4,6,5,3,6,8,10,3,1,0,20,6,4,2,5,7,14,12,7,9,10,8,5,7,6,4,2,9,13,8,6,4,9,13,6,4,2,5,7,10,8,5,7,6,4,2,9,13,6,4,3,5,5,3,4,6,13,9,2,4,6,7,5,8,10,7,5,2,4,6,13,9,4,6,8,13,9,2,4,6,7,5,8,10,9,7,12,14,7,5,2,4,6,12,10,8,9,13,18,16,13,15,14,12,9,13,12,10,8,15,17,14,12,10,15,17,12,10,8,9,13,14,12,9,13,12,10,8,15,17,10,8,7,9,9,7,8,10,17,15,8,10,12,13,9,12,14,13,9,8,10,12,17,15,10,12,14,17,15,8,10,12,13,9,12,14,15,13,16,18,13,9,8,10,12,18,16,14,15,17,22,20,17,19,18,16,15,17,18,16,14,19,21,20,18,16,19,21,18,16,14,15,17,18,16,15,17,18,16,14,19,21,14,12,13,15,15,13,12,14,21,19,14,16,18,17,15,16,18,17,15,14,16,18,21,19,16,18,20,21,19,14,16,18,17,15,16,18,19,17,20,22,17,15,14,16,18,22,20,19,21,5,1,3,5,21,22,20,19,21,5,22,20,1,3,5,22,1,3,5,22,20,19,21,5,1,22,20,19,21,22,20,1,3,5,18,16,17,19,19,17,16,18,5,3,1,20,22,21,19,20,22,1,5,21,19,20,22,5,3,1,22,5,3,1,20,22,5,21,19,20,22,21,5,3,1,5,21,19,20,22,2,1,3,7,9,4,2,7,9,2,1,3,7,9,6,4,2,7,9,4,2,7,9,2,1,3,7,9,2,3,5,7,9,6,4,2,7,9,22,20,21,5,5,21,20,22,9,7,2,4,6,9,7,5,3,2,9,7,3,1,2,9,7,2,4,9,7,2,4,6,9,7,3,1,2,9,7,2,4,9,7,3,1,2,8,6,4,11,13,8,6,11,13,8,6,4,11,13,12,10,8,11,13,8,6,11,13,8,6,4,11,13,8,6,4,11,13,12,10,8,11,13,1,3,7,9,9,7,3,1,13,11,8,10,12,13,11,4,6,8,13,11,4,6,8,13,11,6,8,13,11,8,10,12,13,11,4,6,8,13,11,6,8,13,11,4,6,8,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,16,14,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,16,14,15,17,6,4,2,11,13,13,11,2,4,6,17,15,14,16,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,14,16,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,19,21,12,10,8,15,17,17,15,8,10,12,21,19,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,4,2,1,4,2,1,3,1,3,5,8,6,4,2,1,3,5,6,4,2,6,4,2,1,4,2,1,6,4,2,6,4,2,4,2,1,3,20,18,16,14,19,21,21,19,14,16,18,20,3,1,2,4,2,4,6,2,4,6,1,2,4,1,2,4,6,2,4,6,5,3,1,2,4,6,8,5,3,1,3,1,2,4,1,2,4,6,3,5,8,6,5,7,4,2,7,9,10,2,1,6,4,7,9,8,1,3,10,8,3,5,6,3,5,10,8,1,8,1,3,8,6,5,7,4,2,1,3,3,1,2,4,3,1,2,4,7,5,6,8,3,1,8,1,8,10,5,3,6,5,3,8,10,3,1,8,9,7,4,6,1,2,10,9,7,2,4,7,5,6,8,5,3,6,8,7,9,12,10,9,11,8,6,11,13,12,3,5,10,8,11,13,10,5,7,14,12,7,9,8,7,9,12,3,5,10,5,7,12,10,9,11,8,6,5,7,7,5,6,8,7,5,6,8,11,9,10,12,7,5,10,5,3,12,9,7,8,9,7,12,14,7,5,10,13,11,8,10,5,3,12,13,11,6,8,11,9,10,12,9,7,8,10,11,13,16,14,13,15,12,10,15,17,14,7,9,14,12,15,17,12,9,11,16,11,13,12,10,11,13,14,7,9,12,9,11,16,14,13,15,12,10,9,11,9,11,10,12,11,9,10,12,15,13,14,16,11,9,12,9,7,14,13,11,10,12,13,11,16,11,9,12,17,15,12,14,9,7,14,17,15,10,12,15,13,14,16,13,11,10,14,12,15,17,18,17,19,16,14,19,21,16,11,13,18,16,19,21,16,14,13,15,18,15,17,16,14,15,17,16,11,13,16,14,13,15,18,17,19,16,14,13,15,13,15,14,16,15,13,14,16,19,17,18,15,13,14,16,13,11,16,17,15,14,16,17,15,18,15,13,14,16,21,19,16,18,13,11,16,21,19,14,16,19,17,18,17,15,12,14,18,16,19,21,20,21,0,20,18,0,1,18,15,17,20,0,1,3,20,18,17,19,20,19,21,20,18,19,21,18,15,17,20,18,17,19,20,21,0,20,18,17,19,17,19,18,20,19,17,18,20,0,21,20,19,17,18,20,17,15,18,21,19,18,20,21,19,20,19,17,18,20,3,1,0,20,17,15,18,1,0,18,20,0,21,20,21,19,16,18,20,2,0,1,4,2,1,6,4,2,3,20,19,21,6,4,2,5,2,0,1,21,2,0,1,4,2,0,1,20,19,21,2,0,1,21,4,2,1,2,0,1,21,21,1,0,2,21,1,0,2,1,2,4,21,1,0,2,21,19,20,1,0,2,4,1,0,2,21,1,0,2,5,2,4,6,21,19,20,3,2,4,6,1,2,4,1,0,2,20,6,4,3,5,8,6,3,12,10,8,5,6,4,2,0,10,8,7,8,6,4,3,6,4,3,5,8,6,3,2,0,1,3,6,4,3,5,8,6,3,6,4,3,5,5,3,4,6,5,3,4,6,3,6,8,5,3,4,6,3,1,0,2,3,6,8,5,3,4,6,3,4,6,8,7,8,10,0,2,4,6,5,8,10,12,3,6,8,5,3,4,6,10,8,7,9,10,5,7,16,14,7,9,10,8,1,3,12,9,13,14,12,10,5,10,8,7,9,12,10,5,6,4,5,7,10,8,7,9,12,10,5,10,8,7,9,7,9,8,10,9,7,8,10,5,10,12,9,7,8,10,7,5,4,6,5,10,12,9,7,8,10,5,10,12,14,13,9,12,3,1,8,10,9,7,14,16,7,5,10,9,7,8,10,14,12,13,15,12,9,13,20,18,13,15,14,12,5,7,14,15,17,18,16,7,9,14,12,13,15,14,7,9,10,8,9,13,14,12,13,15,16,14,7,14,12,13,15,13,15,12,14,15,13,12,14,7,14,16,15,13,12,14,13,9,8,10,9,7,14,15,13,12,14,9,7,16,18,17,15,14,7,5,12,14,15,13,18,20,13,9,12,15,13,12,14,18,16,17,19,16,14,15,17,22,17,19,18,16,9,13,18,16,19,21,20,13,15,18,16,17,19,18,16,13,15,14,12,15,17,18,16,17,19,18,9,13,18,16,17,19,17,19,16,18,19,17,16,18,13,9,18,19,17,16,18,17,15,12,14,15,13,16,18,19,17,16,18,15,13,20,21,19,16,18,13,9,16,18,19,17,22,17,15,14,16,19,17,16,18,22,20,21,1,20,18,19,21,2,1,21,22,20,15,17,22,20,1,3,22,17,19,22,20,21,1,22,20,17,19,18,16,19,21,22,20,21,1,20,15,17,22,20,21,1,3,21,20,22,1,21,20,22,17,15,20,1,21,20,22,21,19,16,18,19,17,20,22,1,21,20,22,19,17,22,3,1,20,22,17,15,20,22,21,1,2,21,19,18,20,1,21,20,22,4,2,3,5,22,4,2,1,4,3,5,1,3,19,21,4,2,5,7,3,5,21,4,2,3,5,4,2,1,21,22,20,1,3,4,2,3,5,22,19,21,4,2,3,5,5,1,2,4,5,3,2,4,21,19,22,5,3,2,4,3,1,20,22,21,1,2,4,5,3,2,4,21,5,3,7,5,2,4,21,19,3,1,5,3,4,1,2,4,22,5,3,2,4,8,6,7,9,8,6,3,5,8,6,7,4,2,5,7,8,6,9,11,2,1,7,9,8,6,7,9,8,6,3,5,4,2,5,7,8,6,7,9,4,2,1,8,6,7,9,9,7,6,8,9,7,6,8,1,2,4,9,7,6,8,7,5,2,4,5,3,6,8,9,7,6,8,9,7,1,2,11,9,6,8,7,5,2,4,7,6,8,5,3,6,8,9,7,6,8,12,10,11,13,12,10,7,9,10,9,11,8,6,9,11,12,10,13,15,6,4,11,13,12,10,11,13,12,10,7,9,8,6,9,11,12,10,11,13,6,3,5,12,10,11,13,11,13,10,12,13,11,10,12,5,3,6,13,11,10,12,11,9,6,8,9,7,10,12,13,11,10,12,13,11,4,6,15,13,10,12,11,9,6,8,11,9,10,9,7,10,12,13,11,10,12,16,14,15,17,16,14,11,13,12,13,15,12,10,13,15,16,14,17,19,10,8,15,17,16,14,15,17,16,14,11,13,12,10,13,15,16,14,15,17,8,7,9,16,14,15,17,15,17,14,16,17,15,14,16,9,7,8,17,15,14,16,15,13,10,12,13,11,14,16,17,15,14,16,17,15,8,10,19,17,14,16,15,13,10,12,15,13,12,13,11,14,16,17,15,14,16,20,18,19,21,20,18,15,17,16,14,17,19,16,14,17,19,20,18,21,16,14,12,19,21,20,18,19,20,18,15,17,16,14,17,19,20,18,19,21,12,10,11,13,20,18,19,21,19,21,18,20,21,19,18,20,13,11,10,12,21,19,18,20,19,17,14,16,17,15,18,20,19,18,20,21,19,12,14,16,21,18,20,19,17,14,16,19,17,14,16,17,15,18,20,21,19,18,20,4,2,1,3,1,3,19,21,20,18,21,1,20,18,21,1,2,1,3,20,18,2,1,3,2,1,21,1,3,19,21,20,18,21,1,4,2,1,3,16,14,15,17,4,2,1,3,3,1,2,4,3,1,2,4,17,15,14,16,3,1,2,4,1,21,18,20,21,19,3,1,21,1,2,3,1,2,18,20,3,1,2,1,21,18,20,1,21,18,20,21,19,3,1,3,1,2,4,8,6,5,7,4,2,5,7,4,2,3,5,4,2,3,5,4,5,7,8,6,4,5,7,4,3,5,4,2,5,7,4,2,3,5,8,6,5,7,20,18,19,21,8,6,5,7,7,5,6,8,7,5,6,8,21,19,18,20,7,5,6,8,5,3,2,4,7,5,2,4,5,3,4,7,5,4,6,8,7,5,4,5,3,2,4,5,3,2,4,7,5,2,4,7,5,6,8,12,10,9,11,8,6,9,11,8,6,7,9,8,6,7,9,8,6,9,11,12,10,9,11,8,6,7,9,8,6,9,11,8,6,7,9,12,10,9,11,4,2,1,3,12,10,9,11,9,11,10,12,11,9,10,12,3,1,2,4,11,9,10,12,9,7,6,8,11,9,6,8,9,7,6,8,11,9,10,12,11,9,6,8,9,7,6,8,9,7,6,8,11,9,6,8,11,9,10,12,16,14,13,15,12,10,13,15,12,10,11,13,12,10,11,13,12,10,13,15,16,14,13,15,12,10,11,13,12,10,13,15,12,10,11,13,16,14,13,15,8,6,5,7,16,14,13,15,13,15,14,16,15,13,14,16,7,5,6,8,15,13,14,16,13,11,10,12,15,13,10,12,13,11,10,12,15,13,14,16,15,13,10,12,13,11,10,12,13,11,10,12,15,13,10,12,15,13,14,16,20,18,17,19,16,14,17,19,16,14,15,17,16,14,15,17,16,14,17,19,20,18,17,19,16,14,15,17,16,14,17,19,16,14,15,17,20,18,17,19,12,10,9,11,20,18,17,19,17,19,18,20,19,17,18,20,11,9,10,12,19,17,18,20,17,15,14,16,19,17,14,16,17,15,14,16,19,17,18,20,19,17,14,16,17,15,14,16,17,15,14,16,19,17,14,16,19,17,18,20,4,2,0,21,20,18,21,2,20,18,19,21,20,18,19,21,20,18,21,0,4,2,0,21,20,18,19,21,0,20,18,21,20,18,19,21,1,2,0,1,21,16,14,13,15,2,0,1,21,21,1,0,2,21,1,0,2,15,13,14,16,21,1,0,2,1,21,19,18,20,21,18,20,0,21,19,18,20,21,0,2,4,0,21,18,20,21,19,18,20,21,19,18,20,2,21,18,20,21,0,2,4,8,6,1,3,6,4,0,1,6,4,2,0,2,0,1,3,6,4,2,1,8,6,1,3,6,4,2,0,4,2,1,3,4,2,0,3,5,6,4,3,5,20,18,17,19,6,4,3,5,5,3,4,6,5,3,4,6,19,17,18,20,5,3,4,6,5,3,0,2,4,3,1,2,4,0,2,4,6,3,1,6,8,1,2,4,6,3,1,0,2,0,2,4,6,1,0,4,6,3,1,6,8,12,10,5,7,10,8,3,5,10,8,1,3,6,4,5,7,10,8,3,5,12,10,5,7,10,8,1,3,8,6,5,7,10,8,6,7,9,10,8,7,9,0,1,3,21,10,8,7,9,7,9,8,10,9,7,8,10,21,3,1,0,9,7,8,10,9,7,6,8,10,7,5,6,8,3,1,8,10,7,5,10,12,5,3,8,10,7,5,4,6,3,1,8,10,5,3,8,10,7,5,10,12,16,14,9,13,14,12,7,9,14,12,5,7,12,10,8,9,13,14,12,7,9,16,14,9,13,14,12,5,7,12,10,9,13,14,12,13,15,14,12,13,15,6,4,2,5,7,14,12,13,15,13,15,12,14,15,13,12,14,7,5,2,4,6,15,13,12,14,15,13,12,14,13,9,10,12,7,5,12,14,13,9,14,16,9,7,12,14,13,9,8,10,12,7,5,12,14,9,7,12,14,13,9,14,16,20,18,15,17,18,16,13,15,18,16,9,13,18,16,14,15,17,18,16,13,15,20,18,15,17,18,16,9,13,16,14,15,17,18,16,17,19,18,16,17,19,12,10,8,9,13,18,16,17,19,17,19,16,18,19,17,16,18,13,9,8,10,12,19,17,16,18,19,17,16,18,17,15,14,16,13,9,16,18,17,15,18,20,15,13,16,18,17,15,14,16,18,13,9,16,18,15,13,16,18,17,15,18,20,2,22,19,21,22,20,17,19,22,20,15,17,2,22,20,19,21,22,20,17,19,1,22,19,21,22,20,15,17,20,18,19,21,22,20,21,1,22,20,21,1,18,16,14,15,17,22,20,21,1,3,21,20,22,1,21,20,22,17,15,14,16,18,1,21,20,22,1,21,20,22,21,19,18,20,17,15,20,22,21,19,22,1,19,17,20,22,21,19,20,22,2,17,15,20,22,19,17,20,22,21,19,22,2,4,1,3,5,1,3,5,21,2,1,3,19,21,4,1,3,5,1,3,5,21,4,2,3,5,2,1,3,19,21,22,1,3,5,4,2,3,5,4,2,3,5,22,20,19,21,5,4,2,3,5,5,1,2,4,5,3,2,4,5,21,19,20,22,5,3,2,4,5,3,2,4,5,3,1,22,21,19,3,1,2,5,3,2,4,21,5,3,1,5,3,1,4,21,19,3,1,2,21,5,3,1,5,3,1,4,8,6,7,9,4,2,7,9,6,4,5,7,9,8,6,7,9,4,2,7,9,8,6,7,9,6,4,5,7,9,4,2,7,9,8,6,7,9,8,6,7,9,2,1,3,7,9,8,6,7,9,9,7,6,8,9,7,6,8,9,7,3,1,2,9,7,6,8,9,7,6,8,9,7,2,4,9,7,5,4,6,9,7,6,8,9,7,2,4,9,7,6,8,9,7,5,4,6,9,7,2,4,9,7,6,8,12,10,11,13,8,6,11,13,12,10,8,11,13,12,10,11,13,8,6,11,13,12,10,11,13,12,10,8,11,13,8,6,11,13,12,10,11,13,12,10,11,13,8,6,4,11,13,12,10,11,13,11,13,10,12,13,11,10,12,13,11,4,6,8,13,11,10,12,13,11,10,12,13,11,6,8,13,11,8,10,12,13,11,10,12,13,11,6,8,13,11,10,12,13,11,8,10,12,13,11,6,8,13,11,10,12,16,14,15,17,14,12,10,15,17,16,14,15,17,16,14,15,17,14,12,10,15,17,16,14,15,17,16,14,15,17,14,12,10,15,17,16,14,15,17,16,14,15,17,14,12,10,15,17,16,14,15,17,15,17,14,16,17,15,14,16,17,15,10,12,14,17,15,14,16,17,15,14,16,17,15,10,12,14,17,15,14,16,17,15,14,16,17,15,10,12,14,17,15,14,16,17,15,14,16,17,15,10,12,14,17,15,14,16,20,18,19,21,20,18,16,19,21,20,18,19,21,20,18,19,21,20,18,16,19,21,20,18,19,21,20,18,19,21,20,18,16,19,21,20,18,19,21,20,18,19,21,20,18,16,19,21,20,18,19,21,19,21,18,20,21,19,18,20,21,19,16,18,20,21,19,18,20,21,19,18,20,21,19,16,18,20,21,19,18,20,21,19,18,20,21,19,16,18,20,21,19,18,20,21,19,18,20,21,19,16,18,20,21,19,18,20};
+const Int_t AliHLTTPCMapping::fgkIFec[fgkNIROC] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,18,18,18,19,19,19,19,20,20,20,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,26,26,26,27,27,27,28,28,28,28,8,8,8,8,8,8,9,9,9,9,9,9,32,32,32,32,33,33,33,34,34,34,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,40,40,40,41,41,41,41,42,42,42,18,18,18,19,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,26,26,26,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,34,34,34,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,41,42,42,42,18,18,18,19,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,26,26,26,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,34,34,34,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,41,42,42,42,18,18,18,19,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,34,34,34,35,35,35,35,36,36,36,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,41,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,35,35,35,35,36,36,36,37,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,35,35,35,35,36,36,36,37,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,35,35,35,35,36,36,36,37,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,36,36,36,36,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,36,36,36,36,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,36,36,36,36,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,23,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,37,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,23,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,37,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,23,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,37,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,41,42,42,42,42};
+const Int_t AliHLTTPCMapping::fgkIFecChannel[fgkNIROC] = {1,0,2,4,1,0,2,4,1,0,2,4,1,3,0,1,0,2,4,1,0,2,4,1,0,2,4,1,3,0,1,0,2,4,4,2,0,1,0,3,1,4,2,0,1,4,2,0,1,4,2,0,1,0,3,1,4,2,0,1,4,2,0,1,4,2,0,1,3,5,6,8,3,5,6,8,3,5,6,8,5,2,4,3,5,6,8,3,5,6,8,3,5,6,8,5,2,4,3,5,6,8,8,6,5,3,4,2,5,8,6,5,3,8,6,5,3,8,6,5,3,4,2,5,8,6,5,3,8,6,5,3,8,6,5,3,7,9,10,12,7,9,10,12,7,9,10,12,7,6,8,7,9,10,12,7,9,10,12,7,9,10,12,7,6,8,7,9,10,12,12,10,9,7,8,6,7,12,10,9,7,12,10,9,7,12,10,9,7,8,6,7,12,10,9,7,12,10,9,7,12,10,9,7,11,13,14,16,11,13,14,16,11,13,14,16,9,10,12,11,13,14,16,11,13,14,16,11,13,14,16,9,10,12,11,13,14,16,16,14,13,11,12,10,9,16,14,13,11,16,14,13,11,16,14,13,11,12,10,9,16,14,13,11,16,14,13,11,16,14,13,11,15,17,18,20,15,17,20,18,15,17,20,18,11,13,14,16,15,17,20,18,15,17,18,15,17,20,18,11,13,14,16,15,17,20,18,18,20,17,15,16,14,13,11,18,20,17,15,18,17,15,18,20,17,15,16,14,13,11,18,20,17,15,18,20,17,15,20,18,17,15,19,21,23,22,19,23,21,22,19,23,21,22,15,17,20,18,19,25,23,21,21,19,20,19,25,23,21,15,17,20,18,19,25,23,21,21,23,25,19,18,20,17,15,21,23,25,19,20,19,21,21,23,25,19,18,20,17,15,22,21,23,19,22,21,23,19,22,23,21,19,25,27,24,26,27,25,24,26,27,25,24,26,19,21,22,24,29,27,22,24,23,22,24,29,27,22,24,19,25,23,21,29,27,22,24,24,22,27,29,21,23,25,19,24,22,27,29,24,22,23,24,22,27,29,24,22,21,19,26,24,25,27,26,24,25,27,26,24,27,25,29,31,28,30,31,29,28,30,31,29,28,30,25,23,26,28,32,31,26,28,27,25,26,28,32,31,26,28,29,27,22,24,32,31,26,28,28,26,31,32,24,22,27,29,28,26,31,32,28,26,25,27,28,26,31,32,28,26,23,25,30,28,29,31,30,28,29,31,30,28,31,29,32,34,33,35,34,32,33,35,34,32,33,35,29,27,30,33,36,34,30,33,31,29,30,33,36,34,30,33,32,31,26,28,36,34,30,33,33,30,34,36,28,26,31,32,33,30,34,36,33,30,29,31,33,30,34,36,33,30,27,29,35,33,32,34,35,33,32,34,35,33,34,32,36,38,37,39,38,36,37,39,38,36,37,39,32,31,35,37,40,38,35,37,34,32,35,37,40,38,35,37,36,34,30,33,40,38,35,37,37,35,38,40,33,30,34,36,37,35,38,40,37,35,32,34,37,35,38,40,37,35,31,32,39,37,36,38,39,37,36,38,39,37,38,36,40,42,41,43,44,42,40,41,44,42,40,41,38,36,34,39,41,43,42,39,41,38,36,39,41,47,42,39,41,40,38,35,37,43,42,39,41,41,39,42,43,37,35,38,40,41,39,42,47,41,39,36,38,41,39,42,43,41,39,34,36,38,41,40,42,44,41,40,42,44,43,41,42,40,46,44,45,47,46,43,45,47,46,43,45,47,42,40,43,45,47,46,44,45,47,42,40,43,45,43,45,49,51,43,42,39,41,46,44,45,47,47,45,44,46,41,39,42,43,51,49,45,43,45,43,40,42,47,45,44,46,47,45,43,40,42,47,45,43,46,47,45,43,46,47,45,44,46,50,48,49,51,50,48,49,51,50,48,49,51,48,46,44,49,51,50,48,49,51,46,44,47,49,46,44,53,55,46,44,45,47,50,48,49,51,51,49,48,50,47,45,44,46,55,53,44,46,49,47,44,46,51,49,48,50,51,49,44,46,48,51,49,48,50,51,49,48,50,51,49,48,50,54,52,53,55,54,52,53,55,54,52,53,55,54,52,50,53,55,54,52,53,55,50,48,51,53,52,50,48,57,59,50,48,49,51,54,52,53,55,55,53,52,54,51,49,48,50,59,57,48,50,52,53,51,48,50,55,53,52,54,55,53,50,52,54,55,53,52,54,55,53,52,54,55,53,52,54,60,58,57,59,58,56,57,59,58,56,57,59,60,58,56,57,59,58,56,57,59,54,52,55,57,58,56,54,61,63,54,52,53,55,58,56,57,59,59,57,56,58,55,53,52,54,63,61,54,56,58,57,55,52,54,59,57,56,58,59,57,56,58,60,59,57,56,58,59,57,56,58,59,57,58,60,56,62,61,63,62,60,61,63,62,60,61,63,64,66,62,61,63,62,60,61,63,58,56,59,61,62,60,66,68,70,58,56,57,59,62,60,61,63,63,61,60,62,59,57,56,58,70,68,66,60,62,61,59,56,58,63,61,60,62,63,61,62,66,64,63,61,60,62,63,61,60,62,63,61,62,56,65,64,66,68,64,66,68,70,72,65,64,66,68,67,65,68,70,64,66,68,70,72,62,60,63,68,67,65,64,72,64,62,60,61,63,65,64,66,68,68,66,64,65,63,61,60,62,64,72,64,65,67,68,63,60,62,72,70,68,66,64,70,68,65,67,68,66,64,65,72,70,68,66,64,68,66,64,65,69,67,70,72,69,67,65,74,76,69,67,70,72,71,69,72,74,69,67,65,74,76,64,66,70,72,71,69,74,76,65,66,68,70,72,69,67,70,72,72,70,67,69,72,70,68,66,65,76,74,69,71,72,70,66,64,76,74,65,67,69,74,72,69,71,72,70,67,69,76,74,65,67,69,72,70,67,69,73,71,74,76,75,73,71,78,80,73,71,74,76,75,73,76,78,75,73,71,78,80,67,65,74,76,75,73,78,80,71,69,67,74,76,73,71,74,76,76,74,71,73,76,74,67,69,71,80,78,73,75,76,74,65,67,80,78,71,73,75,78,76,73,75,76,74,71,73,80,78,71,73,75,76,74,71,73,77,75,78,80,81,79,77,82,84,79,77,75,78,80,79,77,80,82,79,77,82,84,73,71,69,78,80,79,77,82,84,77,75,73,78,80,77,75,78,80,80,78,75,77,80,78,73,75,77,84,82,77,79,80,78,69,71,73,84,82,77,79,82,80,77,79,80,78,75,77,79,84,82,77,79,81,80,78,75,77,81,79,82,84,83,89,87,85,86,85,83,81,82,84,83,81,84,88,83,81,86,88,79,77,75,82,84,83,81,87,85,83,81,79,82,84,81,79,82,84,84,82,79,81,84,82,79,81,83,85,87,81,83,84,82,75,77,79,88,86,81,83,88,84,81,83,84,82,81,83,85,86,85,87,89,83,84,82,79,81,83,85,86,88,95,93,91,88,90,91,89,87,86,88,85,86,90,92,87,85,90,92,83,81,85,86,88,91,89,86,88,85,86,88,90,92,83,87,85,86,86,85,87,83,92,90,88,86,85,88,86,89,91,88,86,85,81,83,92,90,85,87,92,90,86,85,88,86,87,89,91,90,88,91,93,95,88,86,85,83,91,89,87,90,92,98,96,92,94,95,93,90,92,91,89,87,94,97,93,91,89,94,97,91,89,87,90,92,95,93,90,92,91,89,87,94,97,91,89,88,90,90,88,89,91,97,94,87,89,91,92,90,93,95,92,90,87,89,91,97,94,89,91,93,97,94,87,89,91,92,90,93,95,94,92,96,98,92,90,87,89,91,96,95,93,94,97,102,100,97,99,98,96,94,97,96,95,93,99,101,98,96,95,99,101,96,95,93,94,97,98,96,94,97,96,95,93,99,101,95,93,92,94,94,92,93,95,101,99,93,95,96,97,94,96,98,97,94,93,95,96,101,99,95,96,98,101,99,93,95,96,97,94,96,98,99,97,100,102,97,94,93,95,96,102,100,98,99,101,106,104,101,103,102,100,99,101,102,100,98,103,105,104,102,100,103,105,102,100,98,99,101,102,100,99,101,102,100,98,103,105,98,96,97,99,99,97,96,98,105,103,98,100,102,101,99,100,102,101,99,98,100,102,105,103,100,102,104,105,103,98,100,102,101,99,100,102,103,101,104,106,101,99,98,100,102,106,104,103,105,111,107,109,111,105,106,104,103,105,111,106,104,107,109,111,106,107,109,111,106,104,103,105,111,107,106,104,103,105,106,104,107,109,111,102,100,101,103,103,101,100,102,111,109,107,104,106,105,103,104,106,107,111,105,103,104,106,111,109,107,106,111,109,107,104,106,111,105,103,104,106,105,111,109,107,111,105,103,104,106,108,107,109,113,115,110,108,113,115,108,107,109,113,115,112,110,108,113,115,110,108,113,115,108,107,109,113,115,108,109,111,113,115,112,110,108,113,115,106,104,105,111,111,105,104,106,115,113,108,110,112,115,113,111,109,108,115,113,109,107,108,115,113,108,110,115,113,108,110,112,115,113,109,107,108,115,113,108,110,115,113,109,107,108,114,112,110,117,119,114,112,117,119,114,112,110,117,119,118,116,114,117,119,114,112,117,119,114,112,110,117,119,114,112,110,117,119,118,116,114,117,119,107,109,113,115,115,113,109,107,119,117,114,116,118,119,117,110,112,114,119,117,110,112,114,119,117,112,114,119,117,114,116,118,119,117,110,112,114,119,117,112,114,119,117,110,112,114,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,122,120,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,122,120,121,123,112,110,108,117,119,119,117,108,110,112,123,121,120,122,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,120,122,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,125,127,118,116,114,121,123,123,121,114,116,118,127,125,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,3,1,0,3,1,0,2,0,2,4,7,5,3,1,0,2,4,5,3,1,5,3,1,0,3,1,0,5,3,1,5,3,1,3,1,0,2,126,124,122,120,125,127,127,125,120,122,124,126,2,0,1,3,1,3,5,1,3,5,0,1,3,0,1,3,5,1,3,5,4,2,0,1,3,5,7,4,2,0,2,0,1,3,0,1,3,5,2,4,7,5,4,6,3,1,6,8,9,1,0,5,3,6,8,7,0,2,9,7,2,4,5,2,4,9,7,0,7,0,2,7,5,4,6,3,1,0,2,2,0,1,3,2,0,1,3,6,4,5,7,2,0,7,0,7,9,4,2,5,4,2,7,9,2,0,7,8,6,3,5,0,1,9,8,6,1,3,6,4,5,7,4,2,5,7,6,8,11,9,8,10,7,5,10,12,11,2,4,9,7,10,12,9,4,6,13,11,6,8,7,6,8,11,2,4,9,4,6,11,9,8,10,7,5,4,6,6,4,5,7,6,4,5,7,10,8,9,11,6,4,9,4,2,11,8,6,7,8,6,11,13,6,4,9,12,10,7,9,4,2,11,12,10,5,7,10,8,9,11,8,6,7,9,10,12,15,13,12,14,11,9,14,16,13,6,8,13,11,14,16,11,8,10,15,10,12,11,9,10,12,13,6,8,11,8,10,15,13,12,14,11,9,8,10,8,10,9,11,10,8,9,11,14,12,13,15,10,8,11,8,6,13,12,10,9,11,12,10,15,10,8,11,16,14,11,13,8,6,13,16,14,9,11,14,12,13,15,12,10,9,13,11,14,16,17,16,18,15,13,18,20,15,10,12,17,15,18,20,15,13,12,14,17,14,16,15,13,14,16,15,10,12,15,13,12,14,17,16,18,15,13,12,14,12,14,13,15,14,12,13,15,18,16,17,14,12,13,15,12,10,15,16,14,13,15,16,14,17,14,12,13,15,20,18,15,17,12,10,15,20,18,13,15,18,16,17,16,14,11,13,17,15,18,20,19,20,21,19,17,21,22,17,14,16,19,21,22,24,19,17,16,18,19,18,20,19,17,18,20,17,14,16,19,17,16,18,19,20,21,19,17,16,18,16,18,17,19,18,16,17,19,21,20,19,18,16,17,19,16,14,17,20,18,17,19,20,18,19,18,16,17,19,24,22,21,19,16,14,17,22,21,17,19,21,20,19,20,18,15,17,19,23,21,22,25,23,22,27,25,23,24,19,18,20,27,25,23,26,23,21,22,20,23,21,22,25,23,21,22,19,18,20,23,21,22,20,25,23,22,23,21,22,20,20,22,21,23,20,22,21,23,22,23,25,20,22,21,23,20,18,19,22,21,23,25,22,21,23,20,22,21,23,26,23,25,27,20,18,19,24,23,25,27,22,23,25,22,21,23,19,27,25,24,26,29,27,24,32,31,29,26,27,25,23,21,31,29,28,29,27,25,24,27,25,24,26,29,27,24,23,21,22,24,27,25,24,26,29,27,24,27,25,24,26,26,24,25,27,26,24,25,27,24,27,29,26,24,25,27,24,22,21,23,24,27,29,26,24,25,27,24,25,27,29,28,29,31,21,23,25,27,26,29,31,32,24,27,29,26,24,25,27,31,29,28,30,31,26,28,36,34,28,30,31,29,22,24,32,30,33,34,32,31,26,31,29,28,30,32,31,26,27,25,26,28,31,29,28,30,32,31,26,31,29,28,30,28,30,29,31,30,28,29,31,26,31,32,30,28,29,31,28,26,25,27,26,31,32,30,28,29,31,26,31,32,34,33,30,32,24,22,29,31,30,28,34,36,28,26,31,30,28,29,31,34,32,33,35,32,30,33,40,38,33,35,34,32,26,28,34,35,37,38,36,28,30,34,32,33,35,34,28,30,31,29,30,33,34,32,33,35,36,34,28,34,32,33,35,33,35,32,34,35,33,32,34,28,34,36,35,33,32,34,33,30,29,31,30,28,34,35,33,32,34,30,28,36,38,37,35,34,28,26,32,34,35,33,38,40,33,30,32,35,33,32,34,38,36,37,39,36,34,35,37,42,37,39,38,36,30,33,38,36,39,41,40,33,35,38,36,37,39,38,36,33,35,34,32,35,37,38,36,37,39,38,30,33,38,36,37,39,37,39,36,38,39,37,36,38,33,30,38,39,37,36,38,37,35,32,34,35,33,36,38,39,37,36,38,35,33,40,41,39,36,38,33,30,36,38,39,37,42,37,35,34,36,39,37,36,38,42,40,41,43,40,38,39,41,44,43,41,42,40,35,37,42,40,43,45,42,37,39,42,40,41,43,42,40,37,39,38,36,39,41,42,40,41,43,40,35,37,42,40,41,43,45,41,40,42,43,41,40,42,37,35,40,43,41,40,42,41,39,36,38,39,37,40,42,43,41,40,42,39,37,42,45,43,40,42,37,35,40,42,41,43,44,41,39,38,40,43,41,40,42,46,44,45,47,42,46,44,43,46,45,47,43,45,39,41,46,44,47,49,45,47,41,46,44,45,47,46,44,43,41,42,40,43,45,46,44,45,47,42,39,41,46,44,45,47,47,43,44,46,47,45,44,46,41,39,42,47,45,44,46,45,43,40,42,41,43,44,46,47,45,44,46,41,47,45,49,47,44,46,41,39,45,43,47,45,46,43,44,46,42,47,45,44,46,50,48,49,51,50,48,45,47,50,48,49,46,44,47,49,50,48,51,53,44,43,49,51,50,48,49,51,50,48,45,47,46,44,47,49,50,48,49,51,46,44,43,50,48,49,51,51,49,48,50,51,49,48,50,43,44,46,51,49,48,50,49,47,44,46,47,45,48,50,51,49,48,50,51,49,43,44,53,51,48,50,49,47,44,46,49,48,50,47,45,48,50,51,49,48,50,54,52,53,55,54,52,49,51,52,51,53,50,48,51,53,54,52,55,57,48,46,53,55,54,52,53,55,54,52,49,51,50,48,51,53,54,52,53,55,48,45,47,54,52,53,55,53,55,52,54,55,53,52,54,47,45,48,55,53,52,54,53,51,48,50,51,49,52,54,55,53,52,54,55,53,46,48,57,55,52,54,53,51,48,50,53,51,52,51,49,52,54,55,53,52,54,58,56,57,59,58,56,53,55,54,55,57,54,52,55,57,58,56,59,61,52,50,57,59,58,56,57,59,58,56,53,55,54,52,55,57,58,56,57,59,50,49,51,58,56,57,59,57,59,56,58,59,57,56,58,51,49,50,59,57,56,58,57,55,52,54,55,53,56,58,59,57,56,58,59,57,50,52,61,59,56,58,57,55,52,54,57,55,54,55,53,56,58,59,57,56,58,62,60,61,63,62,60,57,59,58,56,59,61,58,56,59,61,62,60,63,58,56,54,61,63,62,60,61,62,60,57,59,58,56,59,61,62,60,61,63,54,52,53,55,62,60,61,63,61,63,60,62,63,61,60,62,55,53,52,54,63,61,60,62,61,59,56,58,59,57,60,62,61,60,62,63,61,54,56,58,63,60,62,61,59,56,58,61,59,56,58,59,57,60,62,63,61,60,62,67,65,64,66,64,66,61,63,62,60,63,64,62,60,63,64,65,64,66,62,60,65,64,66,65,64,63,64,66,61,63,62,60,63,64,67,65,64,66,58,56,57,59,67,65,64,66,66,64,65,67,66,64,65,67,59,57,56,58,66,64,65,67,64,63,60,62,63,61,66,64,63,64,65,66,64,65,60,62,66,64,65,64,63,60,62,64,63,60,62,63,61,66,64,66,64,65,67,71,69,68,70,67,65,68,70,67,65,66,68,67,65,66,68,67,68,70,71,69,67,68,70,67,66,68,67,65,68,70,67,65,66,68,71,69,68,70,62,60,61,63,71,69,68,70,70,68,69,71,70,68,69,71,63,61,60,62,70,68,69,71,68,66,65,67,70,68,65,67,68,66,67,70,68,67,69,71,70,68,67,68,66,65,67,68,66,65,67,70,68,65,67,70,68,69,71,75,73,72,74,71,69,72,74,71,69,70,72,71,69,70,72,71,69,72,74,75,73,72,74,71,69,70,72,71,69,72,74,71,69,70,72,75,73,72,74,67,65,64,66,75,73,72,74,72,74,73,75,74,72,73,75,66,64,65,67,74,72,73,75,72,70,69,71,74,72,69,71,72,70,69,71,74,72,73,75,74,72,69,71,72,70,69,71,72,70,69,71,74,72,69,71,74,72,73,75,79,77,76,78,75,73,76,78,75,73,74,76,75,73,74,76,75,73,76,78,79,77,76,78,75,73,74,76,75,73,76,78,75,73,74,76,79,77,76,78,71,69,68,70,79,77,76,78,76,78,77,79,78,76,77,79,70,68,69,71,78,76,77,79,76,74,73,75,78,76,73,75,76,74,73,75,78,76,77,79,78,76,73,75,76,74,73,75,76,74,73,75,78,76,73,75,78,76,77,79,83,81,80,82,79,77,80,82,79,77,78,80,79,77,78,80,79,77,80,82,83,81,80,82,79,77,78,80,79,77,80,82,79,77,78,80,83,81,80,82,75,73,72,74,83,81,80,82,80,82,81,83,82,80,81,83,74,72,73,75,82,80,81,83,80,78,77,79,82,80,77,79,80,78,77,79,82,80,81,83,82,80,77,79,80,78,77,79,80,78,77,79,82,80,77,79,82,80,81,83,89,87,85,84,83,81,84,87,83,81,82,84,83,81,82,84,83,81,84,85,89,87,85,84,83,81,82,84,85,83,81,84,83,81,82,84,86,87,85,86,84,79,77,76,78,87,85,86,84,84,86,85,87,84,86,85,87,78,76,77,79,84,86,85,87,86,84,82,81,83,84,81,83,85,84,82,81,83,84,85,87,89,85,84,81,83,84,82,81,83,84,82,81,83,87,84,81,83,84,85,87,89,93,91,86,88,91,89,85,86,91,89,87,85,87,85,86,88,91,89,87,86,93,91,86,88,91,89,87,85,89,87,86,88,89,87,85,88,90,91,89,88,90,83,81,80,82,91,89,88,90,90,88,89,91,90,88,89,91,82,80,81,83,90,88,89,91,90,88,85,87,89,88,86,87,89,85,87,89,91,88,86,91,93,86,87,89,91,88,86,85,87,85,87,89,91,86,85,89,91,88,86,91,93,96,95,90,92,95,93,88,90,95,93,86,88,91,89,90,92,95,93,88,90,96,95,90,92,95,93,86,88,93,91,90,92,95,93,91,92,94,95,93,92,94,85,86,88,84,95,93,92,94,92,94,93,95,94,92,93,95,84,88,86,85,94,92,93,95,94,92,91,93,95,92,90,91,93,88,86,93,95,92,90,95,96,90,88,93,95,92,90,89,91,88,86,93,95,90,88,93,95,92,90,95,96,100,98,94,97,98,96,92,94,98,96,90,92,96,95,93,94,97,98,96,92,94,100,98,94,97,98,96,90,92,96,95,94,97,98,96,97,99,98,96,97,99,91,89,87,90,92,98,96,97,99,97,99,96,98,99,97,96,98,92,90,87,89,91,99,97,96,98,99,97,96,98,97,94,95,96,92,90,96,98,97,94,98,100,94,92,96,98,97,94,93,95,96,92,90,96,98,94,92,96,98,97,94,98,100,104,102,99,101,102,100,97,99,102,100,94,97,102,100,98,99,101,102,100,97,99,104,102,99,101,102,100,94,97,100,98,99,101,102,100,101,103,102,100,101,103,96,95,93,94,97,102,100,101,103,101,103,100,102,103,101,100,102,97,94,93,95,96,103,101,100,102,103,101,100,102,101,99,98,100,97,94,100,102,101,99,102,104,99,97,100,102,101,99,98,100,102,97,94,100,102,99,97,100,102,101,99,102,104,108,106,103,105,106,104,101,103,106,104,99,101,108,106,104,103,105,106,104,101,103,107,106,103,105,106,104,99,101,104,102,103,105,106,104,105,107,106,104,105,107,102,100,98,99,101,106,104,105,107,109,105,104,106,107,105,104,106,101,99,98,100,102,107,105,104,106,107,105,104,106,105,103,102,104,101,99,104,106,105,103,106,107,103,101,104,106,105,103,104,106,108,101,99,104,106,103,101,104,106,105,103,106,108,110,107,109,111,107,109,111,105,108,107,109,103,105,110,107,109,111,107,109,111,105,110,108,109,111,108,107,109,103,105,106,107,109,111,110,108,109,111,110,108,109,111,106,104,103,105,111,110,108,109,111,111,107,108,110,111,109,108,110,111,105,103,104,106,111,109,108,110,111,109,108,110,111,109,107,106,105,103,109,107,108,111,109,108,110,105,111,109,107,111,109,107,110,105,103,109,107,108,105,111,109,107,111,109,107,110,114,112,113,115,110,108,113,115,112,110,111,113,115,114,112,113,115,110,108,113,115,114,112,113,115,112,110,111,113,115,110,108,113,115,114,112,113,115,114,112,113,115,108,107,109,113,115,114,112,113,115,115,113,112,114,115,113,112,114,115,113,109,107,108,115,113,112,114,115,113,112,114,115,113,108,110,115,113,111,110,112,115,113,112,114,115,113,108,110,115,113,112,114,115,113,111,110,112,115,113,108,110,115,113,112,114,118,116,117,119,114,112,117,119,118,116,114,117,119,118,116,117,119,114,112,117,119,118,116,117,119,118,116,114,117,119,114,112,117,119,118,116,117,119,118,116,117,119,114,112,110,117,119,118,116,117,119,117,119,116,118,119,117,116,118,119,117,110,112,114,119,117,116,118,119,117,116,118,119,117,112,114,119,117,114,116,118,119,117,116,118,119,117,112,114,119,117,116,118,119,117,114,116,118,119,117,112,114,119,117,116,118,122,120,121,123,120,118,116,121,123,122,120,121,123,122,120,121,123,120,118,116,121,123,122,120,121,123,122,120,121,123,120,118,116,121,123,122,120,121,123,122,120,121,123,120,118,116,121,123,122,120,121,123,121,123,120,122,123,121,120,122,123,121,116,118,120,123,121,120,122,123,121,120,122,123,121,116,118,120,123,121,120,122,123,121,120,122,123,121,116,118,120,123,121,120,122,123,121,120,122,123,121,116,118,120,123,121,120,122,126,124,125,127,126,124,122,125,127,126,124,125,127,126,124,125,127,126,124,122,125,127,126,124,125,127,126,124,125,127,126,124,122,125,127,126,124,125,127,126,124,125,127,126,124,122,125,127,126,124,125,127,125,127,124,126,127,125,124,126,127,125,122,124,126,127,125,124,126,127,125,124,126,127,125,122,124,126,127,125,124,126,127,125,124,126,127,125,122,124,126,127,125,124,126,127,125,124,126,127,125,122,124,126,127,125,124,126};
+const Int_t AliHLTTPCMapping::fgkIFecCon[fgkNIROC] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,4,3,3,4,4,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,4,4,3,3,4,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,4,5,4,4,5,5,5,4,5,5,5,4,4,4,4,5,5,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,5,5,4,4,4,4,5,5,5,4,5,5,5,4,4,5,4,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,5,5,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,2,1,1,1,2,2,2,2,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,2,2,2,2,2,3,2,2,2,3,3,3,3,2,2,3,3,3,3,3,2,3,3,2,2,2,2,2,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,2,2,2,2,2,3,3,2,3,3,3,3,3,2,2,3,3,3,3,2,2,2,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,3,3,3,3,3,4,3,3,3,3,3,3,3,4,4,4,4,3,3,3,3,3,4,4,4,3,3,4,4,4,3,4,4,4,3,3,3,3,3,4,4,4,4,3,3,3,3,3,3,3,4,3,3,3,3,3,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,5,4,4,4,4,4,4,4,4,5,5,4,4,4,5,4,4,4,4,4,4,4,4,5,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,4,5,5,5,4,4,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,4,4,4,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,4,4,4,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,4,4,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5};
--- /dev/null
+const Int_t AliHLTTPCMapping::fgkNOROC = 9984;
+const Int_t AliHLTTPCMapping::fgkORows[fgkNOROC] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95};
+const Int_t AliHLTTPCMapping::fgkOPad[fgkNOROC] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139};
+const Int_t AliHLTTPCMapping::fgkOCon[fgkNOROC] = {235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,239,239,239,239,239,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,5,4,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,239,239,239,239,240,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,3,2,2,2,2,1,1,1,1,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,239,239,239,239,240,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,3,2,2,2,2,1,1,1,1,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,239,239,239,239,240,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,3,2,2,2,2,1,1,1,1,235,235,235,235,236,236,236,236,246,246,246,237,237,238,238,238,238,239,239,239,239,249,249,249,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,15,15,15,5,5,5,5,4,4,4,4,3,3,12,12,12,2,2,2,2,1,1,1,1,244,244,244,235,245,245,245,245,236,246,246,246,246,247,247,247,238,248,248,248,248,248,249,249,249,249,250,250,250,250,241,251,251,251,242,243,252,252,252,18,18,18,9,8,17,17,17,7,16,16,16,16,15,15,15,15,14,14,14,14,14,4,13,13,13,12,12,12,12,2,11,11,11,11,1,10,10,10,244,244,244,244,245,245,245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,248,249,249,249,249,250,250,250,250,250,251,251,251,251,252,252,252,252,18,18,18,18,17,17,17,17,16,16,16,16,16,15,15,15,15,14,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,11,10,10,10,10,244,244,244,244,245,245,245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,248,249,249,249,249,250,250,250,250,250,251,251,251,251,252,252,252,252,18,18,18,18,17,17,17,17,16,16,16,16,16,15,15,15,15,14,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,11,10,10,10,10,244,244,244,244,245,245,245,245,245,246,246,246,246,246,247,247,247,247,248,248,248,248,249,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,18,18,18,18,17,17,17,17,17,16,16,16,16,15,15,15,15,15,14,14,14,14,13,13,13,13,12,12,12,12,12,11,11,11,11,11,10,10,10,10,244,244,244,244,245,245,245,254,254,255,255,255,246,246,247,247,247,247,248,248,248,257,258,258,258,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,18,18,18,18,17,17,17,17,17,16,16,16,16,15,15,24,24,24,23,14,14,14,13,13,13,13,12,12,21,21,21,20,20,11,11,11,10,10,10,10,253,244,244,244,254,254,254,254,254,255,255,255,255,256,247,247,247,257,257,257,257,257,258,258,258,258,258,259,259,259,259,260,260,260,251,261,261,252,252,252,18,18,18,27,27,17,26,26,26,25,25,25,25,24,24,24,24,24,23,23,23,23,23,13,13,13,22,21,21,21,21,20,20,20,20,20,10,10,10,19,253,253,253,253,254,254,254,254,255,255,255,255,255,256,256,256,256,257,257,257,257,257,258,258,258,258,259,259,259,259,259,260,260,260,260,261,261,261,261,261,27,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,23,22,22,22,22,21,21,21,21,21,20,20,20,20,19,19,19,19,253,253,253,253,253,254,254,254,254,255,255,255,255,256,256,256,256,256,257,257,257,257,257,258,258,258,258,259,259,259,259,259,260,260,260,260,261,261,261,261,261,27,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,19,253,253,253,253,253,254,254,254,254,255,255,255,255,256,256,256,256,256,257,257,257,257,257,258,258,258,258,259,259,259,259,259,260,260,260,260,261,261,261,261,261,27,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,19,253,253,253,253,253,254,254,263,263,264,264,264,255,256,256,256,256,256,266,266,266,266,266,258,267,267,267,259,259,268,268,260,260,260,260,260,261,261,261,261,270,36,27,27,27,27,26,26,26,26,26,34,34,25,25,33,33,33,24,32,32,32,32,32,22,22,22,22,22,21,30,30,30,29,29,20,20,19,19,19,19,19,262,262,262,262,253,263,263,263,263,264,264,264,264,264,256,265,265,265,265,266,266,266,266,267,267,267,267,267,268,268,268,268,269,269,269,269,260,270,270,270,270,270,36,36,36,36,36,26,35,35,35,35,34,34,34,34,33,33,33,33,33,32,32,32,32,31,31,31,31,22,30,30,30,30,30,29,29,29,29,19,28,28,28,28,262,262,262,262,262,263,263,263,263,264,264,264,264,264,265,265,265,265,265,266,266,266,266,267,267,267,267,267,268,268,268,268,269,269,269,269,269,270,270,270,270,270,36,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,33,32,32,32,32,31,31,31,31,31,30,30,30,30,30,29,29,29,29,28,28,28,28,28,262,262,262,262,262,263,263,263,263,264,264,264,264,264,265,265,265,265,265,266,266,266,266,267,267,267,267,267,268,268,268,268,269,269,269,269,269,270,270,270,270,270,36,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,33,32,32,32,32,31,31,31,31,31,30,30,30,30,30,29,29,29,29,28,28,28,28,28,262,262,262,262,262,263,263,263,263,263,264,264,264,273,265,265,265,265,265,275,266,266,266,266,267,267,267,276,268,268,268,268,268,269,269,269,269,269,270,270,270,270,270,36,36,36,36,36,35,35,35,35,35,34,34,34,34,34,42,33,33,33,32,32,32,32,41,31,31,31,31,31,39,30,30,30,29,29,29,29,29,28,28,28,28,28,271,271,271,262,262,263,263,272,272,272,273,273,273,273,265,265,274,274,274,275,275,275,275,275,276,276,276,276,277,277,277,268,268,269,269,278,278,278,279,279,279,279,279,45,45,45,45,45,44,44,44,35,35,34,34,43,43,43,42,42,42,42,41,41,41,41,41,40,40,40,31,31,39,39,39,39,38,38,38,29,29,28,28,37,37,37,271,271,271,271,271,272,272,272,272,272,273,273,273,273,274,274,274,274,274,275,275,275,275,275,276,276,276,276,277,277,277,277,277,278,278,278,278,278,279,279,279,279,279,45,45,45,45,45,44,44,44,44,44,43,43,43,43,43,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,38,37,37,37,37,37,271,271,271,271,271,272,272,272,272,272,273,273,273,273,274,274,274,274,274,275,275,275,275,275,276,276,276,276,277,277,277,277,277,278,278,278,278,278,279,279,279,279,279,45,45,45,45,45,44,44,44,44,44,43,43,43,43,43,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,38,37,37,37,37,37,271,271,271,271,271,272,272,272,272,272,273,273,273,273,273,274,274,274,274,274,275,275,275,275,276,276,276,276,276,277,277,277,277,277,278,278,278,278,278,279,279,279,279,279,45,45,45,45,45,44,44,44,44,44,43,43,43,43,43,42,42,42,42,42,41,41,41,41,40,40,40,40,40,39,39,39,39,39,38,38,38,38,38,37,37,37,37,37,271,271,271,271,280,281,272,272,272,272,273,273,273,273,282,283,274,274,274,274,275,275,284,284,285,276,276,276,276,277,277,277,277,286,287,278,278,278,278,279,279,288,288,288,54,54,54,45,45,44,44,44,44,53,52,43,43,43,43,42,42,42,42,51,50,50,41,41,40,40,40,40,49,48,39,39,39,39,38,38,38,38,47,46,37,37,37,37,280,280,280,280,280,281,281,281,281,281,282,282,282,282,282,283,283,283,283,283,284,284,284,284,285,285,285,285,285,286,286,286,286,286,287,287,287,287,287,288,288,288,288,288,54,54,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,280,280,280,280,280,281,281,281,281,281,282,282,282,282,282,283,283,283,283,283,284,284,284,284,284,285,285,285,285,285,286,286,286,286,286,287,287,287,287,287,288,288,288,288,288,54,54,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,280,280,280,280,280,281,281,281,281,281,282,282,282,282,282,283,283,283,283,283,284,284,284,284,284,285,285,285,285,285,286,286,286,286,286,287,287,287,287,287,288,288,288,288,288,54,54,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,280,280,280,280,280,281,281,281,281,281,282,282,282,282,282,283,283,283,283,283,284,284,284,284,284,285,285,285,285,285,286,286,286,286,286,287,287,287,287,287,288,288,288,298,298,64,64,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,289,289,289,289,290,290,290,290,290,291,291,291,291,291,292,292,292,292,293,293,293,293,293,294,294,294,294,295,295,295,295,295,296,296,296,296,297,297,297,297,297,298,298,298,298,64,64,64,64,63,63,63,63,63,62,62,62,62,61,61,61,61,61,60,60,60,60,59,59,59,59,59,58,58,58,58,57,57,57,57,57,56,56,56,56,56,55,55,55,55,289,289,289,289,289,290,290,290,290,291,291,291,291,291,292,292,292,292,292,293,293,293,293,294,294,294,294,294,295,295,295,295,295,296,296,296,296,297,297,297,297,297,298,298,298,298,64,64,64,64,63,63,63,63,63,62,62,62,62,61,61,61,61,61,60,60,60,60,60,59,59,59,59,58,58,58,58,58,57,57,57,57,57,56,56,56,56,55,55,55,55,55,289,289,289,289,289,290,290,290,290,291,291,291,291,291,292,292,292,292,292,293,293,293,293,294,294,294,294,294,295,295,295,295,295,296,296,296,296,297,297,297,297,297,298,298,298,298,64,64,64,64,63,63,63,63,63,62,62,62,62,61,61,61,61,61,60,60,60,60,60,59,59,59,59,58,58,58,58,58,57,57,57,57,57,56,56,56,56,55,55,55,55,55,289,289,289,289,290,290,290,290,290,291,291,291,291,291,292,292,292,292,293,293,293,293,293,294,294,294,294,294,295,295,295,295,295,296,296,296,296,297,297,297,297,297,298,298,298,298,64,64,64,64,63,63,63,63,63,62,62,62,62,61,61,61,61,61,60,60,60,60,60,59,59,59,59,59,58,58,58,58,57,57,57,57,57,56,56,56,56,56,55,55,55,55,289,289,289,299,299,300,300,290,290,290,301,301,301,291,292,292,292,302,302,303,303,293,293,293,294,294,304,304,305,305,305,305,295,296,296,296,296,296,297,307,307,307,308,308,298,298,298,64,64,64,74,74,73,73,73,63,62,62,62,62,62,61,71,71,71,71,70,70,60,60,59,59,59,69,69,68,68,58,58,58,57,67,67,67,56,56,56,66,66,65,65,55,55,55,299,299,299,299,299,300,300,300,300,301,301,301,301,301,302,302,302,302,302,303,303,303,303,304,304,304,304,304,305,305,305,305,305,306,306,306,306,306,307,307,307,307,308,308,308,308,308,74,74,74,74,74,73,73,73,73,72,72,72,72,72,71,71,71,71,71,70,70,70,70,70,69,69,69,69,68,68,68,68,68,67,67,67,67,67,66,66,66,66,65,65,65,65,65,299,299,299,299,299,300,300,300,300,301,301,301,301,301,302,302,302,302,302,303,303,303,303,304,304,304,304,304,305,305,305,305,306,306,306,306,306,307,307,307,307,307,308,308,308,308,308,74,74,74,74,74,73,73,73,73,73,72,72,72,72,72,71,71,71,71,70,70,70,70,70,69,69,69,69,68,68,68,68,68,67,67,67,67,67,66,66,66,66,65,65,65,65,65,299,299,299,299,299,300,300,300,300,300,301,301,301,301,302,302,302,302,302,303,303,303,303,303,304,304,304,304,304,305,305,305,305,306,306,306,306,306,307,307,307,307,307,308,308,308,308,308,74,74,74,74,74,73,73,73,73,73,72,72,72,72,72,71,71,71,71,70,70,70,70,70,69,69,69,69,69,68,68,68,68,68,67,67,67,67,66,66,66,66,66,65,65,65,65,65,299,299,299,299,299,300,300,300,300,300,301,301,301,301,302,302,302,302,302,303,303,303,303,303,304,304,304,304,304,305,305,305,305,306,306,306,306,306,307,307,307,307,307,308,308,308,308,308,74,74,74,74,74,73,73,73,73,73,72,72,72,72,72,71,71,71,71,70,70,70,70,70,69,69,69,69,69,68,68,68,68,68,67,67,67,67,66,66,66,66,66,65,65,65,65,65,309,309,309,309,309,310,310,310,300,300,301,311,311,311,312,312,312,312,312,303,303,313,313,313,314,314,314,314,314,315,315,315,305,306,306,316,316,316,317,317,317,317,317,318,318,318,318,318,84,84,84,84,84,83,83,83,83,83,82,82,82,72,72,71,81,81,81,80,80,80,80,80,79,79,79,69,69,78,78,78,78,78,77,77,77,67,66,66,76,76,76,75,75,75,75,75,309,309,309,309,309,310,310,310,310,310,311,311,311,311,312,312,312,312,312,313,313,313,313,313,314,314,314,314,314,315,315,315,315,316,316,316,316,316,317,317,317,317,317,318,318,318,318,318,84,84,84,84,84,83,83,83,83,83,82,82,82,82,82,81,81,81,81,80,80,80,80,80,79,79,79,79,79,78,78,78,78,78,77,77,77,77,76,76,76,76,76,75,75,75,75,75,309,309,309,309,309,310,310,310,310,310,311,311,311,311,311,312,312,312,312,312,313,313,313,313,314,314,314,314,314,315,315,315,315,315,316,316,316,316,316,317,317,317,317,317,318,318,318,318,318,84,84,84,84,84,83,83,83,83,83,82,82,82,82,82,81,81,81,81,81,80,80,80,80,80,79,79,79,79,78,78,78,78,78,77,77,77,77,77,76,76,76,76,76,75,75,75,75,75,309,309,309,309,309,310,310,310,310,310,311,311,311,311,311,312,312,312,312,312,313,313,313,313,314,314,314,314,314,315,315,315,315,315,316,316,316,316,316,317,317,317,317,317,318,318,318,318,318,84,84,84,84,84,83,83,83,83,83,82,82,82,82,82,81,81,81,81,81,80,80,80,80,80,79,79,79,79,78,78,78,78,78,77,77,77,77,77,76,76,76,76,76,75,75,75,75,75,319,319,319,319,309,320,320,310,310,310,321,311,311,311,311,322,322,322,322,312,313,313,313,313,314,324,324,324,324,325,315,315,315,315,316,316,316,326,326,327,327,327,327,317,318,328,328,328,328,94,94,94,94,84,83,93,93,93,93,92,92,82,82,82,81,81,81,81,91,90,90,90,90,80,79,79,79,79,78,88,88,88,88,77,77,77,77,87,76,76,76,86,86,75,85,85,85,85,319,319,319,319,319,320,320,320,320,320,321,321,321,321,321,322,322,322,322,322,323,323,323,323,313,324,324,324,324,324,325,325,325,325,325,326,326,326,326,326,327,327,327,327,327,328,328,328,328,328,94,94,94,94,94,93,93,93,93,93,92,92,92,92,92,91,91,91,91,91,90,90,90,90,90,79,89,89,89,89,88,88,88,88,88,87,87,87,87,87,86,86,86,86,86,85,85,85,85,85,319,319,319,319,319,320,320,320,320,320,321,321,321,321,321,322,322,322,322,322,323,323,323,323,323,324,324,324,324,324,325,325,325,325,325,326,326,326,326,326,327,327,327,327,327,328,328,328,328,328,94,94,94,94,94,93,93,93,93,93,92,92,92,92,92,91,91,91,91,91,90,90,90,90,90,89,89,89,89,89,88,88,88,88,88,87,87,87,87,87,86,86,86,86,86,85,85,85,85,85,319,319,319,319,319,320,320,320,320,320,321,321,321,321,321,322,322,322,322,322,323,323,323,323,323,324,324,324,324,324,325,325,325,325,325,326,326,326,326,326,327,327,327,327,327,328,328,328,328,328,94,94,94,94,94,93,93,93,93,93,92,92,92,92,92,91,91,91,91,91,90,90,90,90,90,89,89,89,89,89,88,88,88,88,88,87,87,87,87,87,86,86,86,86,86,85,85,85,85,85,329,329,329,319,319,330,320,320,320,320,321,321,321,321,321,332,332,332,322,322,323,323,323,323,323,334,334,334,324,324,325,325,325,325,325,336,326,326,326,326,327,327,337,337,337,338,338,338,328,328,94,94,104,104,104,103,103,103,93,93,92,92,92,92,102,91,91,91,91,91,90,90,100,100,100,89,89,89,89,89,88,88,98,98,98,87,87,87,87,87,86,86,86,86,96,85,85,95,95,95,329,329,329,329,329,330,330,330,330,330,331,331,331,331,331,332,332,332,332,332,333,333,333,333,323,323,334,334,334,334,334,335,335,335,335,335,336,336,336,336,336,337,337,337,337,337,338,338,338,338,338,104,104,104,104,104,103,103,103,103,103,102,102,102,102,102,101,101,101,101,101,100,100,100,100,100,89,89,99,99,99,99,98,98,98,98,98,97,97,97,97,97,96,96,96,96,96,95,95,95,95,95,329,329,329,329,329,330,330,330,330,330,331,331,331,331,331,332,332,332,332,332,333,333,333,333,333,333,334,334,334,334,334,335,335,335,335,335,336,336,336,336,336,337,337,337,337,337,338,338,338,338,338,104,104,104,104,104,103,103,103,103,103,102,102,102,102,102,101,101,101,101,101,100,100,100,100,100,99,99,99,99,99,99,98,98,98,98,98,97,97,97,97,97,96,96,96,96,96,95,95,95,95,95,329,329,329,329,329,330,330,330,330,330,331,331,331,331,331,332,332,332,332,332,333,333,333,333,333,333,334,334,334,334,334,335,335,335,335,335,336,336,336,336,336,337,337,337,337,337,338,338,338,338,338,104,104,104,104,104,103,103,103,103,103,102,102,102,102,102,101,101,101,101,101,100,100,100,100,100,99,99,99,99,99,99,98,98,98,98,98,97,97,97,97,97,96,96,96,96,96,95,95,95,95,95,329,329,329,329,339,330,330,330,330,330,331,331,331,331,331,331,332,332,332,332,342,333,333,333,333,333,344,334,334,334,334,335,335,335,335,335,335,336,336,336,336,336,337,337,337,337,347,348,338,338,338,338,104,104,104,104,114,113,103,103,103,103,102,102,102,102,102,101,101,101,101,101,101,100,100,100,100,110,99,99,99,99,99,108,98,98,98,98,97,97,97,97,97,97,96,96,96,96,96,105,95,95,95,95,339,339,339,339,339,340,340,340,340,330,331,341,341,341,341,341,342,342,342,342,342,333,343,343,343,343,344,344,344,344,344,345,345,345,345,345,335,336,346,346,346,346,347,347,347,347,347,348,348,348,348,348,114,114,114,114,114,113,113,113,113,113,112,112,112,112,102,101,111,111,111,111,111,110,110,110,110,110,109,109,109,109,99,108,108,108,108,108,107,107,107,107,107,97,96,106,106,106,106,105,105,105,105,105,339,339,339,339,339,340,340,340,340,340,341,341,341,341,341,341,342,342,342,342,342,343,343,343,343,343,344,344,344,344,344,345,345,345,345,345,345,346,346,346,346,346,347,347,347,347,347,348,348,348,348,348,114,114,114,114,114,113,113,113,113,113,112,112,112,112,112,111,111,111,111,111,111,110,110,110,110,110,109,109,109,109,109,108,108,108,108,108,107,107,107,107,107,107,106,106,106,106,106,105,105,105,105,105,339,339,339,339,339,340,340,340,340,340,340,341,341,341,341,341,342,342,342,342,342,343,343,343,343,343,343,344,344,344,344,344,345,345,345,345,345,346,346,346,346,346,346,347,347,347,347,347,348,348,348,348,348,114,114,114,114,114,113,113,113,113,113,112,112,112,112,112,112,111,111,111,111,111,110,110,110,110,110,109,109,109,109,109,109,108,108,108,108,108,107,107,107,107,107,106,106,106,106,106,106,105,105,105,105,105,339,339,339,339,339,340,340,340,340,340,340,341,341,341,341,341,342,342,342,342,342,343,343,343,343,343,343,344,344,344,344,344,345,345,345,345,345,346,346,346,346,346,346,347,347,347,347,347,348,348,348,348,348,114,114,114,114,114,113,113,113,113,113,112,112,112,112,112,112,111,111,111,111,111,110,110,110,110,110,109,109,109,109,109,109,108,108,108,108,108,107,107,107,107,107,106,106,106,106,106,106,105,105,105,105,105,349,349,349,349,349,350,350,350,350,350,351,351,351,351,351,352,352,352,352,352,353,353,353,353,353,354,354,354,354,354,354,355,355,355,355,355,356,356,356,356,356,356,357,357,357,357,357,357,358,358,358,358,358,124,124,124,124,124,123,123,123,123,123,123,122,122,122,122,122,122,121,121,121,121,121,120,120,120,120,120,120,119,119,119,119,119,118,118,118,118,118,117,117,117,117,117,116,116,116,116,116,115,115,115,115,115,349,349,349,349,349,350,350,350,350,350,351,351,351,351,351,352,352,352,352,352,353,353,353,353,353,354,354,354,354,354,354,355,355,355,355,355,356,356,356,356,356,356,357,357,357,357,357,357,358,358,358,358,358,124,124,124,124,124,123,123,123,123,123,123,122,122,122,122,122,122,121,121,121,121,121,120,120,120,120,120,120,119,119,119,119,119,118,118,118,118,118,117,117,117,117,117,116,116,116,116,116,115,115,115,115,115,349,349,349,349,349,350,350,350,350,350,350,351,351,351,351,351,352,352,352,352,352,353,353,353,353,353,354,354,354,354,354,354,355,355,355,355,355,356,356,356,356,356,356,357,357,357,357,357,357,358,358,358,358,358,124,124,124,124,124,123,123,123,123,123,123,122,122,122,122,122,122,121,121,121,121,121,120,120,120,120,120,120,119,119,119,119,119,118,118,118,118,118,117,117,117,117,117,116,116,116,116,116,116,115,115,115,115,115,349,349,349,349,349,350,350,350,350,350,351,351,351,351,351,351,352,352,352,352,352,353,353,353,353,353,364,364,364,354,354,354,355,355,355,355,355,356,356,356,366,366,366,367,367,367,357,357,357,358,358,358,358,358,124,124,124,124,124,123,123,123,133,133,133,132,132,132,122,122,122,121,121,121,121,121,120,120,120,130,130,130,119,119,119,119,119,118,118,118,118,118,117,117,117,117,117,117,116,116,116,116,116,115,115,115,115,115,349,359,359,359,359,360,360,360,360,360,361,361,361,361,361,361,362,362,362,362,352,353,363,363,363,363,364,364,364,364,364,365,365,365,365,365,355,366,366,366,366,366,366,367,367,367,367,367,368,368,368,368,368,358,124,134,134,134,134,134,133,133,133,133,133,132,132,132,132,132,132,121,131,131,131,131,131,130,130,130,130,130,129,129,129,129,119,118,128,128,128,128,127,127,127,127,127,127,126,126,126,126,126,125,125,125,125,115,359,359,359,359,359,359,360,360,360,360,360,361,361,361,361,361,361,362,362,362,362,362,363,363,363,363,363,364,364,364,364,364,365,365,365,365,365,365,366,366,366,366,366,366,367,367,367,367,367,368,368,368,368,368,368,134,134,134,134,134,134,133,133,133,133,133,132,132,132,132,132,132,131,131,131,131,131,131,130,130,130,130,130,129,129,129,129,129,128,128,128,128,128,127,127,127,127,127,127,126,126,126,126,126,125,125,125,125,125,125,359,359,359,359,359,360,360,360,360,360,360,361,361,361,361,361,362,362,362,362,362,362,363,363,363,363,363,364,364,364,364,364,365,365,365,365,365,365,366,366,366,366,366,366,367,367,367,367,367,368,368,368,368,368,368,134,134,134,134,134,134,133,133,133,133,133,132,132,132,132,132,132,131,131,131,131,131,131,130,130,130,130,130,129,129,129,129,129,128,128,128,128,128,128,127,127,127,127,127,126,126,126,126,126,126,125,125,125,125,125,359,359,359,359,359,360,360,360,360,360,360,361,361,361,361,361,362,362,362,362,362,362,363,363,363,363,363,374,364,364,364,364,365,365,365,365,365,375,376,376,376,376,376,366,367,367,367,367,377,378,368,368,368,368,368,134,134,134,134,134,144,143,133,133,133,133,132,142,142,142,142,142,141,131,131,131,131,131,130,130,130,130,140,129,129,129,129,129,128,128,128,128,128,128,127,127,127,127,127,126,126,126,126,126,126,125,125,125,125,125,359,359,369,369,369,370,370,370,370,370,371,371,371,371,371,371,362,372,372,372,372,373,373,373,363,363,363,374,374,374,374,374,375,375,375,375,375,375,376,376,376,376,376,377,377,377,377,377,377,378,378,378,378,378,378,144,144,144,144,144,144,143,143,143,143,143,143,142,142,142,142,142,141,141,141,141,141,141,140,140,140,140,140,129,129,129,139,139,139,138,138,138,138,128,137,137,137,137,137,137,136,136,136,136,136,135,135,135,125,125,369,369,369,369,369,369,370,370,370,370,370,371,371,371,371,371,371,372,372,372,372,372,373,373,373,373,373,374,374,374,374,374,374,375,375,375,375,375,375,376,376,376,376,376,377,377,377,377,377,377,378,378,378,378,378,378,144,144,144,144,144,144,143,143,143,143,143,143,142,142,142,142,142,141,141,141,141,141,141,140,140,140,140,140,140,139,139,139,139,139,138,138,138,138,138,137,137,137,137,137,137,136,136,136,136,136,135,135,135,135,135,135,369,369,369,369,369,370,370,370,370,370,370,371,371,371,371,371,372,372,372,372,372,372,373,373,373,373,373,374,374,374,374,374,374,375,375,375,375,375,375,376,376,376,376,376,377,377,377,377,377,377,378,378,378,378,378,378,144,144,144,144,144,144,143,143,143,143,143,143,142,142,142,142,142,141,141,141,141,141,141,140,140,140,140,140,140,139,139,139,139,139,138,138,138,138,138,138,137,137,137,137,137,136,136,136,136,136,136,135,135,135,135,135,369,369,369,369,369,369,369,370,370,370,370,370,381,371,371,371,371,372,372,372,372,372,372,373,373,373,373,373,384,384,384,374,374,374,375,375,385,385,385,385,386,386,386,386,376,377,377,387,387,387,387,388,388,388,388,378,378,144,144,154,154,154,154,153,153,153,153,143,143,142,152,152,152,152,151,151,151,151,141,141,140,140,140,150,150,150,139,139,139,139,139,138,138,138,138,138,138,137,137,137,137,147,136,136,136,136,136,135,135,135,135,135,135,135,379,379,379,379,379,380,380,380,380,380,380,381,381,381,381,381,381,382,382,382,382,382,383,383,383,373,373,373,384,384,384,384,384,385,385,385,385,385,385,386,386,386,386,386,386,387,387,387,387,387,387,388,388,388,388,388,388,154,154,154,154,154,154,153,153,153,153,153,153,152,152,152,152,152,152,151,151,151,151,151,151,150,150,150,150,150,139,139,139,149,149,149,148,148,148,148,148,147,147,147,147,147,147,146,146,146,146,146,146,145,145,145,145,145,379,379,379,379,379,380,380,380,380,380,380,381,381,381,381,381,382,382,382,382,382,382,383,383,383,383,383,384,384,384,384,384,384,385,385,385,385,385,385,386,386,386,386,386,386,387,387,387,387,387,387,388,388,388,388,388,388,154,154,154,154,154,154,153,153,153,153,153,153,152,152,152,152,152,152,151,151,151,151,151,151,150,150,150,150,150,150,149,149,149,149,149,148,148,148,148,148,148,147,147,147,147,147,146,146,146,146,146,146,145,145,145,145,145,379,379,379,379,379,379,380,380,380,380,380,381,381,381,381,381,381,382,382,382,382,382,382,383,383,383,383,383,384,384,384,384,384,384,385,385,385,385,385,395,396,386,386,386,386,386,387,387,387,387,387,397,398,388,388,388,388,388,154,154,154,154,154,164,163,153,153,153,153,153,152,152,152,152,152,162,161,151,151,151,151,151,150,150,150,150,150,150,149,149,149,149,149,148,148,148,148,148,148,147,147,147,147,147,147,146,146,146,146,146,145,145,145,145,145,145,389,379,379,379,379,379,390,380,380,380,380,381,381,381,391,391,391,392,392,382,382,382,382,383,383,383,383,383,384,394,394,394,394,394,395,395,395,395,395,395,396,396,396,396,396,396,397,397,397,397,397,397,398,398,398,398,398,398,164,164,164,164,164,164,163,163,163,163,163,163,162,162,162,162,162,162,161,161,161,161,161,161,160,160,160,160,160,150,149,149,149,149,149,148,148,148,148,158,158,157,157,157,147,147,147,146,146,146,146,156,145,145,145,145,145,155,389,389,389,389,389,389,390,390,390,390,390,390,391,391,391,391,391,392,392,392,392,392,392,383,383,383,393,393,393,394,394,394,394,394,394,395,395,395,395,395,395,396,396,396,396,396,396,397,397,397,397,397,397,398,398,398,398,398,398,164,164,164,164,164,164,163,163,163,163,163,163,162,162,162,162,162,162,161,161,161,161,161,161,160,160,160,160,160,160,159,159,159,149,149,149,158,158,158,158,158,158,157,157,157,157,157,156,156,156,156,156,156,155,155,155,155,155,155,389,389,389,389,389,389,390,390,390,390,390,390,391,391,391,391,391,392,392,392,392,392,392,393,393,393,393,393,393,394,394,394,394,394,394,395,395,395,395,395,395,396,396,396,396,396,396,397,397,397,397,397,397,398,398,398,398,398,398,164,164,164,164,164,164,163,163,163,163,163,163,162,162,162,162,162,162,161,161,161,161,161,161,160,160,160,160,160,160,159,159,159,159,159,159,158,158,158,158,158,158,157,157,157,157,157,156,156,156,156,156,156,155,155,155,155,155,155,389,389,389,389,389,389,390,390,390,390,390,390,391,391,391,391,391,391,392,392,392,392,392,392,393,393,393,393,393,393,394,394,394,394,394,404,405,405,405,395,395,395,396,396,396,406,406,406,407,407,407,397,397,397,398,398,398,408,408,408,174,174,174,164,164,164,163,163,163,173,173,173,172,172,172,162,162,162,161,161,161,171,171,171,170,160,160,160,160,160,159,159,159,159,159,159,158,158,158,158,158,158,157,157,157,157,157,157,156,156,156,156,156,156,155,155,155,155,155,155,389,389,389,399,399,399,400,400,400,390,390,390,391,391,391,401,401,401,402,402,402,392,392,393,393,393,393,393,393,393,404,404,404,404,404,404,405,405,405,405,405,405,406,406,406,406,406,406,407,407,407,407,407,407,408,408,408,408,408,408,174,174,174,174,174,174,173,173,173,173,173,173,172,172,172,172,172,172,171,171,171,171,171,171,170,170,170,170,170,170,159,159,159,159,159,159,159,158,158,168,168,168,167,167,167,157,157,157,156,156,156,166,166,166,165,165,165,155,155,155,399,399,399,399,399,399,400,400,400,400,400,400,401,401,401,401,401,401,402,402,402,402,402,402,403,403,403,403,403,403,403,404,404,404,404,404,404,405,405,405,405,405,405,406,406,406,406,406,406,407,407,407,407,407,407,408,408,408,408,408,408,174,174,174,174,174,174,173,173,173,173,173,173,172,172,172,172,172,172,171,171,171,171,171,171,170,170,170,170,170,170,169,169,169,169,169,169,169,168,168,168,168,168,168,167,167,167,167,167,167,166,166,166,166,166,166,165,165,165,165,165,165,399,399,399,399,399,399,400,400,400,400,400,400,401,401,401,401,401,401,402,402,402,402,402,402,403,403,403,403,403,403,403,404,404,404,404,404,404,405,405,405,405,405,405,406,406,406,406,406,406,407,407,407,407,407,407,408,408,408,408,408,408,174,174,174,174,174,174,173,173,173,173,173,173,172,172,172,172,172,172,171,171,171,171,171,171,170,170,170,170,170,170,169,169,169,169,169,169,169,168,168,168,168,168,168,167,167,167,167,167,167,166,166,166,166,166,166,165,165,165,165,165,165,399,399,399,399,399,399,400,400,400,400,400,400,401,401,401,401,401,401,402,402,402,402,402,402,403,403,403,403,403,403,403,404,404,414,414,414,414,415,415,415,415,415,415,416,416,416,416,416,416,417,417,417,417,417,417,418,418,418,418,418,418,184,184,184,184,184,184,183,183,183,183,183,183,182,182,182,182,182,182,181,181,181,181,181,181,180,180,180,180,170,170,169,169,169,169,169,169,169,168,168,168,168,168,168,167,167,167,167,167,167,166,166,166,166,166,166,165,165,165,165,165,165,409,409,409,409,409,409,410,410,410,410,410,410,410,411,411,411,411,411,411,412,412,412,412,412,412,413,413,413,413,413,413,413,414,414,414,414,414,414,415,415,415,415,415,415,416,416,416,416,416,416,417,417,417,417,417,417,418,418,418,418,418,418,184,184,184,184,184,184,183,183,183,183,183,183,182,182,182,182,182,182,181,181,181,181,181,181,180,180,180,180,180,180,179,179,179,179,179,179,179,178,178,178,178,178,178,177,177,177,177,177,177,176,176,176,176,176,176,176,175,175,175,175,175,175,409,409,409,409,409,409,410,410,410,410,410,410,411,411,411,411,411,411,411,412,412,412,412,412,412,413,413,413,413,413,413,413,414,414,414,414,414,414,415,415,415,415,415,415,416,416,416,416,416,416,417,417,417,417,417,417,418,418,418,418,418,418,184,184,184,184,184,184,183,183,183,183,183,183,182,182,182,182,182,182,181,181,181,181,181,181,180,180,180,180,180,180,179,179,179,179,179,179,179,178,178,178,178,178,178,177,177,177,177,177,177,177,176,176,176,176,176,176,175,175,175,175,175,175,409,409,409,409,409,409,410,410,410,410,410,410,410,411,411,411,411,411,411,412,412,412,412,412,412,412,413,413,413,413,413,413,413,424,414,414,414,414,414,415,415,415,425,425,425,426,426,426,416,416,416,417,417,417,427,427,427,428,428,428,418,418,418,184,184,184,194,194,194,193,193,193,183,183,183,182,182,182,192,192,192,191,191,191,181,181,181,180,180,180,180,180,190,179,179,179,179,179,179,179,178,178,178,178,178,178,178,177,177,177,177,177,177,176,176,176,176,176,176,176,175,175,175,175,175,175,419,419,419,409,409,409,410,420,420,420,420,420,420,411,411,421,421,421,421,412,412,422,422,422,422,422,423,423,423,423,423,423,424,424,424,424,424,424,425,425,425,425,425,425,425,426,426,426,426,426,426,427,427,427,427,427,427,428,428,428,428,428,428,194,194,194,194,194,194,193,193,193,193,193,193,192,192,192,192,192,192,191,191,191,191,191,191,191,190,190,190,190,190,190,189,189,189,189,189,189,188,188,188,188,188,178,178,187,187,187,187,177,177,186,186,186,186,186,186,176,175,175,175,185,185,185,419,419,419,419,419,419,420,420,420,420,420,420,420,421,421,421,421,421,421,421,422,422,422,422,422,422,423,423,423,423,423,423,423,424,424,424,424,424,424,425,425,425,425,425,425,426,426,426,426,426,426,426,427,427,427,427,427,427,428,428,428,428,428,428,194,194,194,194,194,194,193,193,193,193,193,193,192,192,192,192,192,192,192,191,191,191,191,191,191,190,190,190,190,190,190,189,189,189,189,189,189,189,188,188,188,188,188,188,187,187,187,187,187,187,187,186,186,186,186,186,186,186,185,185,185,185,185,185,419,419,419,419,419,419,420,420,420,420,420,420,420,421,421,421,421,421,421,421,422,422,422,422,422,422,423,423,423,423,423,423,423,424,424,424,424,424,424,425,425,425,425,425,425,436,426,426,426,426,426,426,427,427,427,427,427,427,428,428,428,428,428,428,194,194,194,194,194,194,193,193,193,193,193,193,192,192,192,192,192,192,202,191,191,191,191,191,191,190,190,190,190,190,190,189,189,189,189,189,189,189,188,188,188,188,188,188,187,187,187,187,187,187,187,186,186,186,186,186,186,186,185,185,185,185,185,185,419,419,419,419,419,419,419,420,420,430,430,430,430,430,431,431,421,421,421,421,422,422,422,422,422,432,432,433,433,433,433,423,423,424,424,424,434,434,434,434,435,435,435,435,435,435,436,436,436,436,436,436,437,437,437,437,437,437,427,428,438,438,438,438,438,204,204,204,204,204,194,193,203,203,203,203,203,203,202,202,202,202,202,202,201,201,201,201,201,201,200,200,200,200,190,190,190,189,189,199,199,199,199,198,198,188,188,188,188,188,187,187,187,187,197,197,196,196,196,196,196,186,186,185,185,185,185,185,185,185,429,429,429,429,429,429,429,430,430,430,430,430,430,431,431,431,431,431,431,431,432,432,432,432,432,432,432,433,433,433,433,433,433,434,434,434,434,434,434,435,435,435,435,435,435,435,436,436,436,436,436,436,437,437,437,437,437,437,437,438,438,438,438,438,438,204,204,204,204,204,204,203,203,203,203,203,203,203,202,202,202,202,202,202,201,201,201,201,201,201,201,200,200,200,200,200,200,199,199,199,199,199,199,198,198,198,198,198,198,198,197,197,197,197,197,197,197,196,196,196,196,196,196,195,195,195,195,195,195,195,429,429,429,429,429,429,429,430,430,430,430,430,430,431,431,431,431,431,431,431,432,432,432,432,432,432,433,433,433,433,433,433,433,434,434,434,434,434,434,435,435,435,435,435,435,435,436,436,436,436,436,436,437,437,437,437,437,437,437,438,438,438,438,438,438,204,204,204,204,204,204,203,203,203,203,203,203,203,202,202,202,202,202,202,201,201,201,201,201,201,201,200,200,200,200,200,200,199,199,199,199,199,199,199,198,198,198,198,198,198,197,197,197,197,197,197,197,196,196,196,196,196,196,195,195,195,195,195,195,195,429,429,429,429,429,429,429,440,440,430,430,430,430,431,431,431,431,431,441,441,442,432,432,432,432,432,432,433,433,433,433,443,443,443,444,434,434,434,434,434,435,445,445,445,445,445,445,446,446,446,446,436,436,437,447,447,447,447,447,447,448,448,438,438,438,438,204,204,204,204,214,214,213,213,213,213,213,213,203,202,202,212,212,212,212,211,211,211,211,211,211,201,200,200,200,200,200,210,209,209,209,199,199,199,199,198,198,198,198,198,198,208,207,207,197,197,197,197,197,196,196,196,196,206,206,195,195,195,195,195,195,195,439,439,439,439,439,439,439,440,440,440,440,440,440,441,441,441,441,441,441,441,442,442,442,442,442,442,442,443,443,443,443,443,443,444,444,444,444,444,444,444,445,445,445,445,445,445,446,446,446,446,446,446,446,447,447,447,447,447,447,447,448,448,448,448,448,448,214,214,214,214,214,214,213,213,213,213,213,213,213,212,212,212,212,212,212,212,211,211,211,211,211,211,210,210,210,210,210,210,210,209,209,209,209,209,209,208,208,208,208,208,208,208,207,207,207,207,207,207,207,206,206,206,206,206,206,205,205,205,205,205,205,205,439,439,439,439,439,439,439,440,440,440,440,440,440,440,441,441,441,441,441,441,441,442,442,442,442,442,442,442,443,443,443,443,443,443,444,444,444,444,444,444,444,445,445,445,445,445,445,446,446,446,446,446,446,446,447,447,447,447,447,447,448,448,448,448,448,448,448,214,214,214,214,214,214,214,213,213,213,213,213,213,212,212,212,212,212,212,212,211,211,211,211,211,211,210,210,210,210,210,210,210,209,209,209,209,209,209,208,208,208,208,208,208,208,207,207,207,207,207,207,207,206,206,206,206,206,206,206,205,205,205,205,205,205,205,439,439,439,439,439,439,439,450,440,440,440,440,440,440,441,441,441,441,441,451,452,442,442,442,442,442,442,443,443,443,443,443,443,453,454,444,444,444,444,444,444,445,445,445,455,455,455,456,456,456,456,446,446,446,447,447,457,457,457,457,458,448,448,448,448,448,448,214,214,214,214,214,214,224,223,223,223,223,213,213,212,212,212,222,222,222,222,221,221,221,211,211,211,210,210,210,210,210,210,220,219,209,209,209,209,209,209,208,208,208,208,208,208,218,217,207,207,207,207,207,206,206,206,206,206,206,216,205,205,205,205,205,205,205,449,449,449,449,449,449,449,450,450,450,450,450,450,450,451,451,451,451,451,451,451,452,452,452,452,452,452,452,453,453,453,453,453,453,453,454,454,454,454,454,454,454,455,455,455,455,455,455,456,456,456,456,456,456,456,457,457,457,457,457,457,458,458,458,458,458,458,458,224,224,224,224,224,224,224,223,223,223,223,223,223,222,222,222,222,222,222,222,221,221,221,221,221,221,220,220,220,220,220,220,220,219,219,219,219,219,219,219,218,218,218,218,218,218,218,217,217,217,217,217,217,217,216,216,216,216,216,216,216,215,215,215,215,215,215,215,449,449,449,449,449,449,449,450,450,450,450,450,450,450,451,451,451,451,451,451,451,452,452,452,452,452,452,452,453,453,453,453,453,453,453,454,454,454,454,454,454,454,455,455,455,455,455,455,456,456,456,456,456,456,456,457,457,457,457,457,457,458,458,458,458,458,458,458,224,224,224,224,224,224,224,223,223,223,223,223,223,222,222,222,222,222,222,222,221,221,221,221,221,221,220,220,220,220,220,220,220,219,219,219,219,219,219,219,218,218,218,218,218,218,218,217,217,217,217,217,217,217,216,216,216,216,216,216,216,215,215,215,215,215,215,215,449,449,449,449,449,449,449,450,450,450,450,450,450,450,451,451,451,451,451,451,451,452,452,452,452,452,452,452,453,453,453,453,453,453,453,454,454,454,454,454,454,454,455,455,455,455,455,455,455,466,466,466,456,456,456,456,457,457,457,457,457,457,458,458,458,458,458,458,458,224,224,224,224,224,224,224,223,223,223,223,223,223,222,222,222,222,232,232,232,221,221,221,221,221,221,221,220,220,220,220,220,220,220,219,219,219,219,219,219,219,218,218,218,218,218,218,218,217,217,217,217,217,217,217,216,216,216,216,216,216,216,215,215,215,215,215,215,215,449,459,459,459,459,459,459,460,460,460,460,460,460,460,461,461,461,461,461,461,461,462,462,462,462,462,462,462,463,463,463,463,463,463,463,464,464,464,464,464,464,464,465,465,465,465,465,465,465,466,466,466,466,466,466,467,467,467,467,467,467,467,468,468,468,468,468,468,468,234,234,234,234,234,234,234,233,233,233,233,233,233,233,232,232,232,232,232,232,231,231,231,231,231,231,231,230,230,230,230,230,230,230,229,229,229,229,229,229,229,228,228,228,228,228,228,228,227,227,227,227,227,227,227,226,226,226,226,226,226,226,225,225,225,225,225,225,215,459,459,459,459,459,459,459,460,460,460,460,460,460,460,461,461,461,461,461,461,461,462,462,462,462,462,462,462,463,463,463,463,463,463,463,464,464,464,464,464,464,464,465,465,465,465,465,465,465,466,466,466,466,466,466,467,467,467,467,467,467,467,468,468,468,468,468,468,468,234,234,234,234,234,234,234,233,233,233,233,233,233,233,232,232,232,232,232,232,231,231,231,231,231,231,231,230,230,230,230,230,230,230,229,229,229,229,229,229,229,228,228,228,228,228,228,228,227,227,227,227,227,227,227,226,226,226,226,226,226,226,225,225,225,225,225,225,225,459,459,459,459,459,459,459,459,460,460,460,460,460,460,460,461,461,461,461,461,461,461,462,462,462,462,462,462,462,463,463,463,463,463,463,463,464,464,464,464,464,464,464,465,465,465,465,465,465,465,466,466,466,466,466,466,467,467,467,467,467,467,467,468,468,468,468,468,468,468,234,234,234,234,234,234,234,233,233,233,233,233,233,233,232,232,232,232,232,232,231,231,231,231,231,231,231,230,230,230,230,230,230,230,229,229,229,229,229,229,229,228,228,228,228,228,228,228,227,227,227,227,227,227,227,226,226,226,226,226,226,226,225,225,225,225,225,225,225,225};
+const Int_t AliHLTTPCMapping::fgkOPin[fgkNOROC] = {2,4,1,3,4,2,1,3,2,1,3,5,2,4,1,3,2,4,1,3,5,2,1,3,5,2,4,1,3,2,4,1,3,2,1,3,5,5,3,1,2,3,1,4,2,3,1,4,2,5,3,1,2,5,3,1,4,2,3,1,4,2,5,3,1,2,3,1,2,4,3,1,4,2,6,8,5,7,8,6,5,7,4,6,8,7,9,6,8,5,7,6,8,7,9,4,6,8,7,9,6,8,5,7,6,8,5,7,4,6,7,9,9,7,6,4,7,5,8,6,7,5,8,6,9,7,8,6,4,9,7,8,6,7,5,8,6,9,7,8,6,4,7,5,6,8,7,5,8,6,10,12,11,9,10,12,11,9,10,12,14,13,11,10,12,11,9,10,12,13,11,10,12,14,13,11,10,12,11,9,10,12,11,9,8,10,13,11,11,13,10,8,9,11,12,10,9,11,12,10,11,13,14,12,10,11,13,12,10,9,11,12,10,11,13,14,12,10,9,11,12,10,9,11,12,10,14,16,15,13,14,16,15,13,16,18,20,17,15,14,16,15,13,14,16,17,15,16,18,20,17,15,14,16,15,13,14,16,15,13,12,14,17,15,15,17,14,12,13,15,16,14,13,15,16,14,15,17,20,18,16,15,17,16,14,13,15,16,14,15,17,20,18,16,13,15,16,14,13,15,16,14,18,20,19,17,18,20,19,17,4,2,0,21,19,18,20,19,17,18,20,21,19,0,2,4,21,19,18,20,19,17,18,20,19,17,16,18,21,19,19,21,18,16,17,19,20,18,17,19,20,18,19,21,4,2,0,19,21,20,18,17,19,20,18,19,21,0,2,4,17,19,20,18,17,19,20,18,4,2,0,21,4,2,0,1,21,8,6,1,3,2,0,1,21,6,4,2,0,1,6,8,1,3,2,0,1,3,21,2,0,1,21,20,0,2,4,4,2,0,20,21,1,0,2,21,3,1,0,2,3,1,8,6,1,0,2,4,6,21,1,0,2,3,1,6,8,21,1,0,2,4,21,0,2,4,8,6,3,1,8,6,3,5,7,12,10,5,7,6,4,3,5,8,10,3,5,7,12,10,7,5,8,6,4,5,7,6,4,3,5,6,8,1,3,3,1,8,6,5,3,4,6,7,5,4,6,8,5,7,10,12,7,5,3,10,8,5,3,4,6,7,5,10,12,7,5,3,6,8,1,3,6,8,12,10,7,5,10,12,13,9,15,14,16,13,9,10,8,7,9,12,14,13,9,15,16,14,13,9,10,12,14,13,9,10,8,9,7,10,12,7,5,5,7,12,10,7,9,8,10,9,13,14,12,10,9,13,14,16,15,9,13,14,12,9,7,8,10,9,13,16,14,15,9,13,12,10,5,7,10,12,14,16,13,9,14,16,18,19,17,18,20,22,17,15,14,12,15,13,16,18,19,17,22,20,18,17,15,16,18,17,15,14,16,12,15,13,14,16,13,9,9,13,16,14,13,15,12,16,14,15,17,18,16,15,17,18,20,22,17,19,18,16,13,15,12,14,15,17,22,20,18,17,19,18,16,14,9,13,16,14,18,20,17,15,20,22,21,3,5,2,1,3,21,19,18,16,19,17,20,22,21,5,2,1,3,21,19,20,22,21,19,18,20,22,19,17,18,20,17,15,15,17,20,18,17,19,22,20,18,19,21,22,20,19,21,3,1,2,5,21,22,20,17,19,16,18,19,21,3,1,2,5,3,21,22,20,15,17,20,18,1,22,21,19,4,2,1,7,9,6,4,5,7,3,22,20,21,2,3,1,7,9,6,4,5,7,9,3,1,7,9,2,1,3,21,1,3,22,21,19,19,21,22,3,1,21,3,1,2,9,7,1,3,9,7,5,4,6,9,7,1,3,2,21,20,22,3,7,5,4,6,9,7,1,2,4,19,21,22,1,2,3,5,7,8,6,11,13,8,10,12,9,11,1,5,7,9,4,6,8,11,13,8,10,11,13,2,4,5,11,13,6,4,5,7,4,2,5,7,9,9,7,5,2,4,7,5,4,6,13,11,5,4,2,13,11,10,8,13,11,8,6,4,9,7,5,1,11,9,12,10,8,13,11,6,8,7,5,3,2,4,6,8,9,11,10,12,17,15,14,16,13,15,2,4,6,11,13,10,12,14,17,15,12,14,17,15,6,8,10,15,17,10,8,11,9,6,8,10,11,13,13,11,10,8,6,9,11,8,10,17,15,10,8,6,15,17,14,12,15,17,14,12,10,13,11,6,4,2,15,13,16,14,15,17,12,10,11,9,8,6,4,10,12,14,15,13,14,16,21,19,18,20,17,19,8,10,12,17,15,16,18,20,21,19,16,20,21,19,12,14,16,21,19,14,12,15,13,12,14,16,17,15,15,17,16,14,12,13,15,12,14,19,21,16,14,12,19,21,20,16,19,21,20,18,16,15,17,12,10,8,19,17,20,18,19,21,16,14,13,15,14,12,10,16,18,20,19,17,18,20,5,7,3,5,7,21,14,18,20,21,19,4,2,1,3,7,18,1,5,9,18,20,2,3,20,18,16,19,17,18,20,21,19,7,7,19,21,20,18,17,19,16,18,20,3,2,20,18,9,5,1,18,7,3,1,2,4,19,21,20,18,14,21,7,5,3,7,5,20,18,17,19,20,18,16,2,3,1,5,21,2,1,3,9,4,2,1,9,11,16,3,1,7,11,8,6,5,9,4,2,3,7,11,6,4,1,5,1,5,7,9,21,2,1,3,5,9,9,5,3,1,2,21,9,7,5,1,5,1,4,6,11,7,3,2,4,9,5,6,8,11,7,1,3,16,11,9,1,2,4,9,3,1,2,21,5,1,3,2,8,6,4,7,9,4,6,11,13,6,8,10,13,15,2,4,5,9,13,10,12,13,11,6,8,10,13,15,8,10,7,9,2,4,3,11,13,4,6,8,11,13,13,11,8,6,4,13,11,3,4,2,9,7,10,8,15,13,10,8,6,11,13,12,10,13,9,5,4,2,15,13,10,8,6,13,11,6,4,9,7,4,6,8,10,12,14,13,11,8,10,17,15,12,14,16,19,17,6,8,10,15,17,14,16,17,15,12,14,16,19,17,12,14,13,11,6,10,8,15,17,10,12,14,17,15,15,17,14,12,10,17,15,8,10,6,11,13,14,12,17,19,16,14,12,15,17,16,14,17,15,10,8,6,17,19,16,14,12,15,17,10,8,11,13,14,12,10,16,18,20,17,15,12,14,20,21,19,18,20,21,3,12,16,20,21,19,0,18,20,21,19,18,20,21,1,16,18,20,17,15,12,16,14,21,19,16,18,20,21,19,19,21,20,18,16,19,21,14,16,12,15,17,20,18,16,1,21,20,18,19,21,20,18,0,19,21,20,16,12,3,21,20,18,19,21,20,14,12,15,17,20,18,16,2,0,1,21,19,16,18,0,1,3,2,0,1,7,14,18,0,1,3,2,1,3,5,7,0,2,4,3,0,1,3,21,19,20,18,0,1,3,0,3,1,5,7,7,5,1,3,0,3,1,0,18,20,19,21,3,1,0,3,4,2,0,7,5,3,1,2,3,1,0,18,14,7,1,0,2,3,1,0,18,16,19,21,1,0,2,4,6,3,5,7,6,4,2,5,7,6,4,5,9,6,4,2,5,7,4,6,8,9,13,8,6,5,7,6,2,4,5,7,6,4,2,5,7,2,4,6,9,13,13,9,6,4,2,7,5,2,4,6,7,5,4,2,6,7,5,6,8,13,9,8,6,4,7,5,2,4,6,9,5,4,6,7,5,2,4,6,7,5,3,6,4,8,10,9,13,15,8,10,12,13,9,10,8,13,15,8,10,12,13,9,10,12,14,15,17,10,12,13,9,8,10,12,9,13,8,10,12,13,9,8,10,12,17,15,15,17,12,10,8,9,13,12,10,8,13,9,12,10,8,9,13,12,10,17,15,14,12,10,9,13,12,10,8,15,13,8,10,9,13,12,10,8,15,13,9,10,8,12,14,16,19,17,14,16,18,17,15,14,16,12,19,17,14,16,18,17,15,16,20,21,19,14,16,18,17,15,14,16,18,17,15,14,16,18,17,15,14,18,22,21,19,19,21,22,18,14,15,17,18,16,14,15,17,18,16,14,15,17,18,16,14,19,21,20,16,15,17,18,16,14,17,19,12,16,14,15,17,18,16,14,17,19,16,14,12,18,20,22,21,7,1,20,22,21,19,18,20,22,21,5,1,22,20,21,19,18,22,3,7,3,20,22,21,19,20,22,21,19,7,3,20,22,21,19,16,20,1,5,9,9,5,1,20,16,19,21,22,20,3,7,19,21,22,20,19,21,22,20,3,7,3,22,18,19,21,20,22,1,5,21,22,20,18,19,21,22,20,1,7,21,22,20,18,2,1,3,5,9,2,3,5,7,11,2,1,3,7,11,2,3,5,7,11,2,1,5,9,2,5,1,7,9,2,3,1,5,9,2,5,1,7,9,4,2,3,7,11,11,7,3,2,4,9,7,1,5,2,9,5,1,3,2,9,7,1,5,2,9,5,1,2,11,7,5,3,2,11,7,3,1,2,11,7,5,3,2,9,5,3,1,2,4,6,8,11,13,4,6,8,9,13,4,6,8,9,13,4,6,8,9,13,4,6,8,11,13,4,6,8,11,13,4,6,8,11,13,4,6,8,11,13,6,8,10,13,15,15,13,10,8,6,13,11,8,6,4,13,11,8,6,4,13,11,8,6,4,13,11,8,6,4,13,9,8,6,4,13,9,8,6,4,13,9,8,6,4,13,11,8,6,4,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,12,14,16,19,17,17,19,16,14,12,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,18,20,21,2,3,3,2,21,20,18,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,3,1,7,11,4,2,1,3,5,2,1,3,5,7,2,1,3,5,4,2,1,3,5,3,1,7,11,2,1,3,5,7,2,1,3,5,5,3,1,7,9,6,4,1,5,5,1,4,6,9,7,1,3,5,5,3,1,2,7,5,3,1,2,11,7,1,3,5,3,1,2,4,5,3,1,2,7,5,3,1,2,5,3,1,2,4,11,7,1,3,2,4,5,9,13,8,6,9,7,4,6,8,9,11,4,6,7,9,11,8,6,7,9,2,4,5,9,13,4,8,6,9,11,4,6,7,9,2,4,6,11,13,8,10,7,9,9,7,10,8,13,11,6,4,2,9,7,6,4,11,9,6,8,4,13,9,5,4,2,9,7,6,8,11,9,7,6,4,11,9,8,6,4,7,9,6,8,13,9,5,4,2,6,8,10,15,17,10,12,13,11,10,12,14,15,13,8,10,17,15,13,10,12,13,11,6,8,10,15,17,10,14,12,15,13,8,10,13,11,8,10,12,17,15,12,14,15,11,11,15,14,12,15,17,12,10,8,11,13,10,8,13,15,12,14,10,17,15,10,8,6,11,13,12,10,13,15,17,10,8,13,15,14,12,10,11,13,12,10,17,15,10,8,6,12,18,21,19,14,16,18,17,15,16,18,20,19,17,12,18,21,19,14,16,18,17,15,12,16,20,21,19,16,20,18,19,17,12,14,17,15,14,18,20,21,19,16,18,19,13,13,19,18,16,19,21,20,18,14,15,17,14,12,17,19,18,20,16,19,21,20,16,12,15,17,18,16,14,19,21,18,12,17,19,20,18,16,15,17,18,16,14,19,21,18,12,14,16,20,1,3,0,2,20,21,19,0,1,3,21,14,16,20,0,1,0,1,20,21,19,14,18,1,3,2,4,8,10,21,16,18,20,21,19,16,0,1,5,0,3,20,21,17,17,21,20,3,0,5,1,0,16,19,21,20,18,16,21,10,8,4,2,3,1,18,14,19,21,20,1,0,1,0,20,16,14,21,3,1,0,19,21,20,2,0,3,1,20,16,14,4,2,0,5,7,4,6,1,3,2,4,6,5,7,2,4,6,3,5,2,4,3,5,4,2,0,5,7,0,6,1,3,5,0,1,3,5,7,4,2,3,7,4,2,1,5,7,7,5,1,2,4,7,3,2,4,7,5,3,1,0,5,3,1,6,0,7,5,0,2,4,5,3,4,2,5,3,6,4,2,7,5,6,4,2,3,1,6,4,7,5,0,2,4,6,8,10,9,13,8,10,9,5,8,10,12,13,9,8,10,7,9,13,6,8,7,9,6,8,10,9,13,12,14,7,9,2,4,6,9,13,6,8,10,9,13,6,8,10,9,13,13,9,10,8,6,13,9,10,8,6,13,9,6,4,2,9,7,14,12,13,9,10,8,6,9,7,8,6,13,9,7,10,8,9,13,12,10,8,5,9,10,8,13,9,10,8,6,12,14,20,17,15,12,16,20,15,7,14,20,17,15,12,14,16,17,15,10,14,16,15,13,12,14,16,17,15,16,18,15,13,8,12,14,17,15,12,14,16,17,15,12,14,16,17,15,15,17,16,14,12,15,17,16,14,12,15,17,14,12,8,13,15,18,16,15,17,16,14,12,13,15,16,14,10,15,17,16,14,12,15,17,20,14,7,15,20,16,12,15,17,20,14,12,16,18,22,21,19,14,18,22,19,13,16,22,21,19,18,20,22,21,19,12,20,21,19,17,18,20,22,21,19,20,22,21,17,10,18,22,21,19,18,20,22,21,19,18,20,22,21,19,19,21,22,20,18,19,21,22,20,18,19,21,22,18,10,17,21,22,20,19,21,22,20,18,17,19,21,20,12,19,21,22,20,18,19,21,22,16,13,19,22,18,14,19,21,22,18,16,4,2,1,3,5,4,2,1,21,17,18,1,3,5,2,3,1,5,7,18,22,2,4,3,4,2,1,3,5,3,1,5,19,16,20,1,3,5,2,3,1,5,7,2,3,1,5,7,7,5,1,3,2,7,5,1,3,2,5,3,1,20,16,19,5,1,3,5,3,1,2,4,3,4,2,22,18,7,5,1,3,2,5,3,1,18,17,21,1,2,4,5,3,1,2,4,6,8,7,9,11,6,8,3,5,7,4,2,7,9,4,6,8,9,11,6,8,1,5,7,6,8,9,7,11,2,4,7,9,6,4,2,7,9,4,6,8,9,11,4,6,8,9,11,11,9,8,6,4,11,9,8,6,4,9,7,2,4,6,9,7,4,2,11,7,9,8,6,7,5,1,8,6,11,9,8,6,4,9,7,2,4,7,5,3,8,6,11,9,7,8,6,10,12,14,15,13,10,12,14,11,9,6,8,10,11,13,10,12,14,15,13,10,12,9,11,10,12,14,15,13,6,8,10,11,13,8,10,12,11,13,10,12,14,15,13,10,12,14,15,13,13,15,14,12,10,13,15,14,12,10,13,11,12,10,8,13,11,10,8,6,13,15,14,12,10,11,9,12,10,13,15,14,12,10,13,11,10,8,6,9,11,14,12,10,13,15,14,12,10,16,18,20,21,17,16,18,20,17,13,12,14,16,17,15,16,18,20,21,17,14,16,15,13,16,20,21,19,17,12,14,16,17,15,14,18,19,17,15,16,18,20,21,17,16,20,21,19,17,17,19,21,20,16,17,21,20,18,16,15,17,19,18,14,15,17,16,14,12,17,19,21,20,16,13,15,16,14,17,21,20,18,16,15,17,16,14,12,13,17,20,18,16,17,21,20,18,16,2,1,3,5,19,3,1,21,19,15,1,18,20,21,19,2,1,3,5,19,18,20,21,17,18,2,1,3,5,5,18,20,21,19,16,20,21,3,7,5,3,1,9,19,18,2,1,3,5,5,3,1,2,18,19,9,1,3,5,7,3,21,20,16,19,21,20,18,5,5,3,1,2,18,17,21,20,18,19,5,3,1,2,19,21,20,18,1,15,19,21,1,3,19,5,3,1,2,4,6,8,7,9,4,2,5,7,9,2,5,3,7,9,8,6,4,7,9,2,1,3,5,19,4,6,8,7,9,2,3,1,7,9,4,2,1,5,9,2,4,7,11,13,4,6,8,7,9,9,7,8,6,4,13,11,7,4,2,9,5,1,2,4,9,7,1,3,2,9,7,8,6,4,19,5,3,1,2,9,7,4,6,8,9,7,3,5,2,9,7,5,2,4,9,7,8,6,4,10,12,14,13,11,6,8,10,11,13,4,6,8,11,13,10,12,14,13,11,8,6,4,7,9,10,12,14,13,11,4,6,8,11,13,6,8,10,11,13,6,8,10,15,17,10,12,14,13,11,11,13,14,12,10,17,15,10,8,6,13,11,10,8,6,13,11,8,6,4,11,13,14,12,10,9,7,4,6,8,11,13,14,12,10,13,11,8,6,4,13,11,10,8,6,11,13,14,12,10,16,18,20,17,15,12,14,18,17,15,10,12,14,17,15,16,18,20,17,15,10,12,14,13,11,16,18,20,19,15,10,12,14,17,15,12,14,16,17,15,12,16,20,21,19,16,18,20,17,15,15,17,20,18,16,19,21,20,16,12,15,17,16,14,12,15,17,14,12,10,15,19,20,18,16,11,13,14,12,10,15,17,20,18,16,15,17,14,12,10,15,17,18,14,12,15,17,20,18,16,4,2,0,21,19,2,16,20,21,19,16,18,20,21,19,0,1,3,21,19,20,18,16,17,15,8,4,0,21,17,16,18,20,21,19,0,18,20,21,19,14,18,0,2,4,0,3,1,21,19,19,21,1,3,0,4,2,0,18,14,19,21,20,18,0,19,21,20,18,16,17,21,0,4,8,15,17,16,18,20,19,21,3,1,0,19,21,20,18,16,19,21,20,16,2,19,21,0,2,4,10,8,6,1,3,4,0,1,3,5,0,3,1,5,7,6,4,2,5,7,2,0,1,3,21,19,10,6,2,1,3,4,2,0,1,3,2,3,1,5,7,10,8,6,1,3,2,4,6,5,7,7,5,6,4,2,3,1,6,8,10,7,5,1,3,2,3,1,0,2,4,3,1,2,6,10,19,21,3,1,0,2,7,5,2,4,6,7,5,1,3,0,5,3,1,0,4,3,1,6,8,10,14,12,9,7,5,6,8,10,7,9,2,4,6,9,13,8,10,12,9,13,4,6,8,5,7,9,14,12,9,7,5,6,8,10,5,7,4,6,8,9,13,14,12,9,7,5,12,10,8,9,13,13,9,8,10,12,5,7,9,12,14,13,9,8,6,4,7,5,10,8,6,5,7,9,12,14,9,7,5,8,6,4,13,9,12,10,8,13,9,6,4,2,9,7,10,8,6,5,7,9,12,14,16,20,17,15,13,12,14,16,15,13,8,10,12,17,15,14,16,18,17,15,10,16,18,17,15,13,16,20,17,15,13,12,14,16,13,9,16,12,10,17,15,16,20,17,15,13,14,16,18,17,15,15,17,18,16,14,13,15,17,20,16,15,17,10,12,16,9,13,16,14,12,13,15,17,20,16,13,15,17,18,16,10,15,17,18,16,14,15,17,12,10,8,13,15,16,14,12,13,15,17,20,16,18,22,21,19,5,18,20,22,21,17,14,18,20,22,21,19,20,22,21,19,7,12,20,22,21,19,5,18,22,21,19,18,20,22,21,19,15,18,14,22,21,19,18,22,21,19,7,5,20,22,21,19,19,21,22,20,5,7,19,21,22,18,19,21,22,14,18,15,19,21,22,20,18,19,21,22,18,5,19,21,22,20,12,7,19,21,22,20,19,21,22,20,18,14,17,21,22,20,18,5,19,21,22,18,4,2,1,3,7,1,3,5,7,19,16,2,1,3,5,7,2,1,3,5,9,14,1,3,7,9,2,3,1,7,11,2,1,3,5,7,17,20,3,1,7,9,2,1,3,5,9,2,3,1,7,9,9,7,1,3,2,9,5,3,1,2,9,7,1,3,20,17,7,5,3,1,2,11,7,1,3,2,9,7,3,1,14,9,5,3,1,2,7,5,3,1,2,16,19,7,5,3,1,7,3,1,2,4,8,6,13,9,11,2,4,6,9,11,8,6,4,9,11,13,4,6,8,11,13,2,4,5,11,13,4,6,8,9,13,4,6,8,9,11,13,2,4,5,11,13,4,6,8,11,13,4,6,8,11,13,13,11,8,6,4,13,11,8,6,4,13,11,5,4,2,13,11,9,8,6,4,13,9,8,6,4,13,11,5,4,2,13,11,8,6,4,13,11,9,4,6,8,11,9,6,4,2,11,9,13,6,8,10,12,14,15,17,8,10,12,14,15,13,10,12,14,15,17,14,12,10,15,17,6,8,10,12,15,17,14,12,10,15,17,14,12,10,17,15,6,8,10,12,15,17,14,12,10,15,17,14,12,10,17,15,15,17,10,12,14,17,15,10,12,14,17,15,12,10,8,6,15,17,10,12,14,17,15,10,12,14,17,15,12,10,8,6,17,15,10,12,14,17,15,14,12,10,13,15,14,12,10,8,17,15,14,12,10,16,18,20,21,19,16,18,20,21,19,17,16,18,20,21,19,16,18,20,21,19,14,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,20,18,16,14,21,19,16,18,20,21,19,16,18,20,21,19,19,21,20,18,16,19,21,20,18,16,19,21,14,16,18,20,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,14,19,21,20,18,16,19,21,20,18,16,17,19,21,20,18,16,19,21,20,18,16,3,1,5,7,9,5,3,1,7,9,5,3,1,7,11,2,3,1,5,9,5,3,1,7,11,2,5,3,1,7,9,2,3,1,5,7,2,3,1,5,9,11,2,5,3,1,7,9,2,3,1,5,7,7,5,1,3,2,9,7,1,3,5,2,11,9,5,1,3,2,7,5,1,3,2,9,7,1,3,5,2,11,7,1,3,5,9,5,1,3,2,11,7,1,3,5,9,7,1,3,5,9,7,5,1,3,2,4,6,11,13,2,4,6,11,13,2,4,6,9,13,4,6,8,7,11,2,4,6,9,13,4,6,10,12,11,13,4,6,8,9,11,4,6,8,7,13,15,4,6,8,10,11,13,4,6,8,9,11,11,9,8,6,4,13,11,10,8,6,4,15,13,7,8,6,4,11,9,8,6,4,13,11,12,10,6,4,13,9,6,4,2,11,7,8,6,4,13,9,6,4,2,13,11,6,4,2,13,11,6,4,2,8,10,12,17,15,8,10,16,18,17,15,8,12,16,17,15,10,12,14,15,13,8,10,12,17,15,8,14,16,18,17,15,10,12,14,15,13,10,12,14,17,19,21,12,14,16,18,17,15,10,12,14,15,13,13,15,14,12,10,15,17,18,16,14,12,21,19,17,14,12,10,13,15,14,12,10,15,17,18,16,14,8,15,17,12,10,8,13,15,14,12,10,15,17,16,12,8,15,17,18,16,10,8,15,17,12,10,8,14,18,20,21,19,12,14,20,21,19,10,14,18,20,21,19,16,18,20,21,17,14,18,20,21,19,4,0,1,20,21,19,16,18,20,21,17,16,18,20,1,3,5,4,0,1,20,21,19,16,18,20,21,17,17,21,20,18,16,19,21,20,1,0,4,5,3,1,20,18,16,17,21,20,18,16,19,21,20,1,0,4,19,21,20,18,14,17,21,20,18,16,19,21,20,18,14,10,19,21,20,14,12,19,21,20,18,14,16,0,1,3,7,0,1,3,5,7,2,0,1,3,5,7,5,3,1,7,19,16,2,0,1,3,6,2,3,5,7,4,2,0,1,3,19,0,2,4,6,7,9,6,2,3,5,7,6,4,2,0,1,19,19,1,0,2,4,6,7,5,3,2,6,9,7,6,4,2,0,19,3,1,0,2,4,7,5,3,2,6,3,1,0,2,16,19,7,1,3,5,7,5,3,1,0,2,7,5,3,1,0,7,3,1,0,16,2,4,6,5,9,13,2,6,4,9,13,4,6,8,10,9,13,0,2,4,9,13,4,6,8,5,7,8,10,12,9,13,6,8,10,5,7,9,8,10,12,14,13,15,8,10,12,9,13,8,10,12,7,5,3,3,5,7,12,10,8,13,9,12,10,8,15,13,14,12,10,8,9,7,5,10,8,6,13,9,12,10,8,7,5,8,6,4,13,9,4,2,0,13,9,10,8,6,4,13,9,4,6,2,13,9,5,6,4,2,8,10,12,15,17,8,10,14,12,17,15,12,14,16,17,15,6,8,14,16,17,15,10,12,14,13,9,14,16,18,17,15,12,14,16,15,13,17,16,18,22,20,19,17,14,18,20,17,15,14,16,18,17,13,9,9,13,17,18,16,14,15,17,20,18,14,17,19,20,22,18,16,17,13,15,16,14,12,15,17,18,16,14,9,13,14,12,10,15,17,16,14,8,6,15,17,16,14,12,15,17,12,14,10,8,17,15,12,10,8,14,18,22,21,19,16,18,22,20,21,19,18,20,22,21,19,10,12,20,22,21,19,16,18,20,17,15,3,20,22,21,19,18,20,22,21,19,5,6,2,1,5,9,21,16,22,21,19,5,6,20,22,21,19,15,15,19,21,22,20,6,5,19,21,22,16,21,9,5,1,2,6,5,19,21,22,20,18,19,21,22,20,3,15,17,20,18,16,19,21,22,20,12,10,19,21,22,20,18,19,21,20,22,18,16,19,21,22,18,14,16,20,1,5,7,5,3,1,7,11,4,2,1,3,5,7,18,3,1,7,11,4,5,1,22,21,19,2,5,1,7,11,4,2,1,3,7,9,8,4,3,7,11,4,2,1,3,7,9,8,4,2,1,3,5,5,3,1,2,4,8,9,7,3,1,2,4,11,7,3,4,8,9,7,3,1,2,4,11,7,1,5,2,19,21,22,1,5,4,11,7,1,3,18,7,5,3,1,2,4,11,7,1,3,5,7,5,1,20,16,6,4,2,3,9,11,6,4,2,9,13,6,8,10,9,11,13,4,2,5,9,13,6,2,3,7,9,4,6,8,10,9,13,6,8,10,11,13,15,10,12,14,13,15,6,8,10,11,13,15,10,12,14,7,9,11,11,9,7,14,12,10,15,13,11,10,8,6,15,13,14,12,10,15,13,11,10,8,6,13,9,10,8,6,4,9,7,3,2,6,13,9,5,2,4,13,11,9,10,8,6,13,9,2,4,6,11,9,3,2,4,6,8,10,12,13,15,8,10,12,14,15,17,12,14,16,17,15,6,8,10,12,15,17,8,10,12,11,13,12,14,16,18,17,15,12,16,20,21,19,17,16,18,20,19,17,12,16,18,21,19,17,16,18,20,17,15,13,13,15,17,20,18,16,17,19,21,18,16,12,17,19,20,18,16,17,19,21,20,16,12,15,17,18,16,14,12,13,11,12,10,8,17,15,12,10,8,6,15,17,16,14,12,17,15,14,12,10,8,15,13,12,10,8,14,16,18,20,21,19,17,16,18,20,21,19,2,18,20,21,19,14,16,18,20,21,19,14,16,18,19,15,2,3,1,20,21,19,14,18,2,3,5,9,4,2,1,3,21,14,20,2,1,5,9,4,2,1,3,21,19,19,21,3,1,2,4,9,5,1,2,20,14,21,3,1,2,4,9,5,3,2,18,14,19,21,20,1,3,2,15,19,18,16,14,19,21,20,18,16,14,19,21,20,18,2,19,21,20,18,16,17,19,21,20,18,16,14,5,3,1,7,11,2,5,3,1,7,9,6,4,1,3,5,7,2,3,1,5,7,2,1,3,20,21,17,4,6,5,7,9,8,6,4,1,7,11,10,8,6,5,7,9,8,6,4,3,7,11,10,8,6,5,7,9,9,7,5,6,8,10,11,7,3,4,6,8,9,7,5,6,8,10,11,7,1,4,6,8,9,7,5,6,4,17,21,20,3,1,2,7,5,1,3,2,7,5,3,1,4,6,9,7,1,3,5,2,11,7,1,3,5,2,4,6,9,13,4,6,8,10,11,13,8,10,9,11,13,4,6,8,10,9,11,4,6,8,5,7,8,10,12,15,13,11,10,12,14,13,15,17,12,14,16,15,13,11,10,12,18,17,15,13,12,14,16,15,13,11,11,13,15,16,14,12,13,15,17,18,12,10,11,13,15,16,14,12,17,15,13,14,12,10,11,13,15,12,10,8,7,5,8,6,4,11,9,10,8,6,4,13,11,9,10,8,13,11,10,8,6,4,13,9,6,4,2,8,10,12,14,17,15,12,14,16,17,15,12,14,20,19,17,15,12,14,16,20,17,13,10,12,13,11,9,14,18,20,21,19,17,16,18,20,21,19,5,0,18,20,21,19,17,14,16,20,21,19,3,2,18,20,21,19,17,17,19,21,20,18,2,3,19,21,20,16,14,17,19,21,20,18,0,5,19,21,20,18,16,17,19,21,20,18,14,9,11,13,12,10,13,17,20,16,14,12,15,17,19,20,14,12,15,17,16,14,12,15,17,14,12,10,8,2,16,18,20,21,19,4,18,20,21,19,16,18,21,3,7,9,6,4,18,21,19,15,14,20,19,17,15,16,0,3,1,5,7,4,2,0,1,3,7,4,2,1,3,5,7,6,4,2,0,1,5,4,0,1,3,5,7,7,5,3,1,0,4,5,1,0,2,4,6,7,5,3,1,2,4,7,3,1,0,2,4,7,5,1,3,0,16,15,17,19,20,14,15,19,21,18,4,6,9,7,3,21,18,16,19,21,20,18,4,19,21,20,18,16,2,6,4,0,1,3,5,8,6,2,0,1,3,2,0,1,5,13,10,8,2,0,1,3,16,18,21,0,2,1,2,4,6,8,9,13,6,8,10,12,9,13,6,8,10,9,13,15,8,10,12,14,9,7,6,8,10,9,13,15,15,13,9,10,8,6,7,9,14,12,10,8,15,13,9,10,8,6,13,9,12,10,8,6,13,9,8,6,4,2,1,2,0,21,18,16,3,1,0,2,8,10,13,5,1,0,2,3,1,0,2,6,8,5,3,1,0,4,6,8,10,12,13,9,7,10,12,14,16,7,5,4,6,8,15,17,12,14,16,9,7,5,8,6,4,3,5,7,10,12,14,16,17,15,14,16,18,20,17,15,12,14,22,21,19,17,16,18,20,22,15,13,12,18,20,21,19,17,17,19,21,20,18,12,13,15,22,20,18,16,17,19,21,22,14,12,15,17,20,18,16,14,15,17,16,14,12,10,7,5,3,4,6,8,5,7,9,16,14,12,17,15,8,6,4,5,7,16,14,12,10,7,9,13,12,10,8,14,18,22,19,17,15,18,20,22,15,13,9,10,12,18,22,21,19,18,20,22,17,15,13,10,12,14,15,13,9,18,20,22,21,19,7,4,2,3,22,21,19,16,18,20,1,3,7,6,2,1,21,19,17,14,16,22,1,3,7,7,3,1,22,16,14,17,19,21,1,2,6,7,3,1,20,18,16,19,21,22,3,2,4,7,19,21,22,20,18,9,13,15,14,12,10,13,15,17,22,20,18,19,21,22,18,12,10,9,13,15,22,20,18,15,17,19,22,18,14,16,20,21,1,5,7,4,1,5,21,19,17,14,16,20,1,5,7,4,1,3,21,19,16,18,20,22,21,19,17,4,2,1,3,5,9,8,6,1,5,7,9,8,6,4,2,5,9,8,4,3,5,7,9,8,6,4,2,5,9,9,5,2,4,6,8,9,7,5,3,4,8,9,5,2,4,6,8,9,7,5,1,6,8,9,5,3,1,2,4,17,19,21,22,20,18,16,19,21,3,1,4,7,5,1,20,16,14,17,19,21,5,1,4,7,5,1,21,20,16,8,6,4,2,3,9,8,6,2,3,7,9,8,6,4,2,3,9,8,6,2,5,7,9,4,2,1,3,5,7,9,6,8,10,11,13,15,10,12,14,11,13,15,10,12,14,11,13,15,10,12,14,15,13,11,10,12,14,11,13,15,15,13,11,14,12,10,11,13,15,14,12,10,15,13,11,14,12,10,15,13,11,14,12,10,15,13,11,10,8,6,9,7,5,3,1,2,4,9,7,5,2,6,8,9,3,2,4,6,8,9,7,3,2,6,8,9,3,2,4,6,8,10,12,14,11,13,15,10,12,14,11,13,15,10,12,14,11,13,15,10,12,14,15,13,11,6,8,10,12,11,13,15,12,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,12,15,13,11,12,10,8,6,11,13,15,14,12,10,15,13,11,14,12,10,15,13,11,14,12,10,15,13,11,14,12,10,16,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,14,16,18,20,21,19,17,14,16,6,1,3,5,6,4,2,1,3,5,8,6,4,2,1,3,6,4,2,1,3,5,8,6,4,2,1,3,3,1,2,4,6,8,5,3,1,2,4,6,3,1,2,4,6,8,5,3,1,2,4,6,5,3,1,6,16,14,17,19,21,20,18,16,14,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,16,8,6,4,2,1,3,8,6,4,2,1,3,5,2,1,3,5,7,9,6,4,2,1,3,5,8,6,4,2,1,3,5,10,8,4,2,7,9,8,10,13,11,9,7,14,12,10,9,7,5,8,10,7,9,11,13,14,12,10,9,7,5,5,7,9,10,12,14,13,11,9,7,10,8,5,7,9,10,12,14,7,9,11,13,10,8,9,7,2,4,8,10,5,3,1,2,4,6,8,5,3,1,2,4,6,9,7,5,3,1,2,5,3,1,2,4,6,8,3,1,2,4,6,8,14,12,10,9,7,5,10,12,13,11,9,7,10,8,6,4,11,13,15,8,10,13,11,9,7,14,12,10,13,11,9,7,12,14,16,15,13,11,12,16,21,19,17,15,16,18,20,15,13,11,12,16,21,19,17,15,16,18,20,15,13,11,11,13,15,20,18,16,15,17,19,21,16,12,11,13,15,20,18,16,15,17,19,21,16,12,11,13,15,16,14,12,7,9,11,13,10,12,14,7,9,11,13,10,8,15,13,11,4,6,8,10,7,9,11,13,12,10,5,7,9,10,12,14,16,18,20,15,13,11,14,18,20,21,19,17,15,12,16,20,21,19,17,12,16,20,21,19,17,15,16,18,20,21,19,17,15,0,18,20,21,19,17,14,18,20,2,0,1,4,2,0,21,19,17,14,18,20,4,2,0,4,2,0,21,19,17,17,19,21,0,2,4,0,2,4,20,18,14,17,19,21,0,2,4,1,0,2,20,18,14,17,19,21,20,18,0,15,17,19,21,20,18,16,15,17,19,21,20,16,12,17,19,21,20,16,12,15,17,19,21,20,18,14,11,13,15,20,18,16,2,0,1,21,19,17,16,6,4,2,0,1,3,14,18,4,2,0,1,14,18,4,2,0,1,3,8,6,4,2,0,1,4,2,1,3,5,7,10,8,6,4,3,5,7,8,6,1,3,5,7,10,8,6,1,3,5,8,6,1,3,5,7,7,5,3,1,6,8,5,3,1,6,8,10,7,5,3,1,6,8,7,5,3,4,6,8,10,7,5,3,1,2,4,1,0,2,4,6,8,3,1,0,2,4,18,14,1,0,2,4,18,14,3,1,0,2,4,6,16,17,19,21,1,0,2,8,6,4,3,5,7,8,10,12,5,7,9,13,10,8,6,12,3,5,7,10,8,6,5,7,9,16,14,12,10,7,5,3,10,8,6,9,13,15,12,14,16,9,13,15,16,14,12,10,9,13,15,16,14,12,13,9,7,14,12,10,15,13,9,9,13,15,10,12,14,7,9,13,12,14,16,15,13,9,10,12,14,16,15,13,9,16,14,12,15,13,9,6,8,10,3,5,7,10,12,14,16,9,7,5,6,8,10,7,5,3,12,6,8,10,13,9,7,5,12,10,8,7,5,3,4,6,8,10,12,14,15,13,9,14,18,22,21,19,17,15,14,16,18,22,15,13,9,12,18,20,17,15,13,18,20,22,17,15,13,9,12,18,22,21,19,17,18,20,22,21,19,17,6,18,20,22,21,19,17,18,20,22,21,19,15,16,20,22,21,19,17,17,19,21,22,20,16,15,19,21,22,20,18,17,19,21,22,20,18,6,17,19,21,22,20,18,17,19,21,22,18,12,9,13,15,17,22,20,18,13,15,17,20,18,12,9,13,15,22,18,16,14,15,17,19,21,22,18,14,9,13,15,14,12,10,16,18,20,22,21,19,17,16,20,6,4,2,1,3,2,1,20,21,19,17,14,16,22,21,19,3,5,2,1,3,5,21,19,14,16,20,2,1,5,7,6,4,2,1,3,5,8,4,2,1,3,5,6,4,2,1,3,5,17,18,6,4,2,1,3,3,1,2,4,6,18,17,5,3,1,2,4,6,5,3,1,2,4,8,5,3,1,2,4,6,7,5,1,2,20,16,14,19,21,5,3,1,2,5,3,19,21,22,16,14,17,19,21,20,1,2,3,1,2,4,6,20,16,17,19,21,22,20,18,16,8,6,4,2,1,3,5,14,12,10,8,5,7,6,4,3,5,7,9,11,8,6,4,2,1,7,9,4,6,8,7,9,11,10,8,6,4,3,9,8,10,12,13,11,9,7,10,12,14,11,9,7,12,10,8,7,9,11,13,8,10,12,9,7,5,5,7,9,12,10,8,13,11,9,7,8,10,12,7,9,11,14,12,10,7,9,11,13,12,10,8,9,3,4,6,8,10,11,9,7,8,6,4,9,7,1,2,4,6,8,11,9,7,5,3,4,6,7,5,8,10,12,14,5,3,1,2,4,6,8,14,12,10,7,9,11,13,16,18,20,13,11,9,14,12,10,8,17,15,13,10,12,14,15,13,11,10,12,18,19,17,15,13,12,14,16,15,13,11,14,18,20,21,19,17,15,16,18,20,17,15,13,14,18,20,21,19,17,15,14,16,18,15,13,11,11,13,15,18,16,14,15,17,19,21,20,18,14,13,15,17,20,18,16,15,17,19,21,20,18,14,11,13,15,16,14,12,13,15,17,19,18,12,10,11,13,15,14,12,10,13,15,17,8,10,12,14,9,11,13,20,18,16,13,11,9,7,10,12,14,16,18,20,21,19,17,15,4,2,21,19,17,15,16,18,20,21,19,3,7,4,16,18,20,21,19,17,14,16,20,21,3,5,7,6,18,20,21,19,17,16,4,2,1,3,5,7,4,2,1,3,21,19,16,6,4,2,1,3,5,6,4,20,21,19,17,17,19,21,20,4,6,5,3,1,2,4,6,16,19,21,3,1,2,4,7,5,3,1,2,4,16,17,19,21,20,18,6,7,5,3,21,20,16,14,17,19,21,20,18,16,4,7,3,19,21,20,18,16,15,17,19,21,2,4,15,17,19,21,20,18,16,4,2,1,3,5,7,9,6,1,3,5,7,9,8,6,4,2,1,5,9,6,2,1,3,5,7,9,8,6,4,2,1,9,10,8,4,2,1,3,5,10,8,6,9,11,13,12,10,8,6,5,7,9,12,10,8,7,9,11,13,10,8,2,1,3,5,5,3,1,2,8,10,13,11,9,7,8,10,12,9,7,5,6,8,10,12,13,11,9,6,8,10,5,3,1,2,4,8,10,9,1,2,4,6,8,9,7,5,3,1,2,6,9,5,1,2,4,6,8,9,7,5,3,1,6,9,7,5,3,1,2,4,12,10,8,6,11,13,15,8,10,12,14,11,13,15,16,14,12,10,11,13,15,8,10,12,14,11,13,15,14,12,10,15,13,11,16,14,12,7,9,11,13,16,14,12,19,17,15,14,16,18,20,15,13,11,14,18,21,19,17,15,16,14,12,13,11,9,7,7,9,11,13,12,14,16,15,17,19,21,18,14,11,13,15,20,18,16,14,15,17,19,12,14,16,13,11,9,7,12,14,16,11,13,15,10,12,14,15,13,11,14,12,10,8,15,13,11,10,12,14,16,15,13,11,14,12,10,8,15,13,11,6,8,10,12,14,16,18,20,21,19,17,6,16,18,20,21,19,17,18,20,21,19,17,5,8,16,18,20,21,19,17,16,18,20,21,19,17,3,8,18,20,21,19,17,15,18,20,21,0,1,3,10,8,6,4,21,19,17,16,20,6,2,1,5,8,18,20,21,19,17,15,15,17,19,21,20,18,8,5,1,2,6,20,16,17,19,21,4,6,8,10,3,1,0,21,20,18,15,17,19,21,20,18,8,3,17,19,21,20,18,16,17,19,21,20,18,16,8,5,17,19,21,20,18,17,19,21,20,18,16,6,17,19,21,20,18,16,14,8,6,4,2,0,1,3,10,8,4,2,0,1,3,6,4,2,0,1,3,7,10,6,4,2,0,1,3,8,6,4,2,0,1,5,10,6,4,2,0,1,3,8,6,4,2,5,7,16,14,12,2,0,1,3,10,8,4,0,3,7,10,6,4,0,2,1,3,3,1,2,0,4,6,10,7,3,0,4,8,10,3,1,0,2,12,14,16,7,5,2,4,6,8,3,1,0,2,4,6,10,5,1,0,2,4,6,8,3,1,0,2,4,6,10,7,3,1,0,2,4,6,3,1,0,2,4,8,10,3,1,0,2,4,6,8,14,12,10,13,9,7,5,16,14,12,13,9,7,5,14,12,10,8,9,13,15,16,14,12,13,9,7,5,14,12,10,15,13,9,7,16,14,12,13,9,7,5,14,12,10,15,13,9,18,20,22,13,9,7,5,16,14,12,15,13,9,16,14,12,13,9,7,5,5,7,9,13,12,14,16,9,13,15,12,14,16,5,7,9,13,22,20,18,9,13,15,10,12,14,5,7,9,13,12,14,16,7,9,13,15,10,12,14,5,7,9,13,12,14,16,15,13,9,8,10,12,14,5,7,9,13,12,14,16,5,7,9,13,10,12,14,16,20,22,21,19,17,15,18,20,22,21,19,17,15,16,18,20,22,21,19,17,18,20,22,21,19,17,15,16,18,20,22,21,19,17,18,20,22,21,19,17,15,16,18,20,22,21,19,17,6,2,1,21,19,17,15,18,20,22,21,19,17,18,20,22,21,19,17,15,15,17,19,21,22,20,18,17,19,21,22,20,18,15,17,19,21,1,2,6,17,19,21,22,20,18,16,15,17,19,21,22,20,18,17,19,21,22,20,18,16,15,17,19,21,22,20,18,17,19,21,22,20,18,16,15,17,19,21,22,20,18,15,17,19,21,22,20,16,18,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,4,3,5,7,9,8,6,4,2,1,3,5,8,6,4,2,1,3,5,5,3,1,2,4,6,8,5,3,1,2,4,6,8,9,7,5,3,4,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,18,12,10,8,13,11,9,7,14,12,10,13,11,9,7,14,12,10,13,11,9,7,10,12,14,13,11,9,7,14,12,10,13,11,9,7,14,12,10,13,11,9,7,14,12,10,13,11,9,7,14,12,10,15,13,11,14,12,10,13,11,9,7,14,12,10,13,11,9,7,7,9,11,13,10,12,14,7,9,11,13,10,12,14,11,13,15,10,12,14,7,9,11,13,10,12,14,7,9,11,13,10,12,14,7,9,11,13,10,12,14,7,9,11,13,14,12,10,7,9,11,13,10,12,14,7,9,11,13,10,12,14,7,9,11,13,8,10,12,14,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,16,18,20,21,19,17,15,16,18,20,21,19,17,15,15,17,19,21,20,18,16,15,17,19,21,20,18,16,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,14};
+const Int_t AliHLTTPCMapping::fgkOFec[fgkNOROC] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,27,27,28,28,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31,31,31,31,31,32,32,32,32,33,33,33,33,33,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,18,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,37,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,36,37,37,37,37,37,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,42,43,43,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,52,52,53,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77};
+const Int_t AliHLTTPCMapping::fgkOFecChannel[fgkNOROC] = {1,3,0,2,3,1,0,2,1,0,2,4,1,3,0,2,1,3,0,2,4,1,0,2,4,1,3,0,2,1,3,0,2,1,0,2,4,4,2,0,1,2,0,3,1,2,0,3,1,4,2,0,1,4,2,0,3,1,2,0,3,1,4,2,0,1,2,0,1,3,2,0,3,1,5,7,4,6,7,5,4,6,3,5,7,6,8,5,7,4,6,5,7,6,8,3,5,7,6,8,5,7,4,6,5,7,4,6,3,5,6,8,8,6,5,3,6,4,7,5,6,4,7,5,8,6,7,5,3,8,6,7,5,6,4,7,5,8,6,7,5,3,6,4,5,7,6,4,7,5,9,11,10,8,9,11,10,8,9,11,13,12,10,9,11,10,8,9,11,12,10,9,11,13,12,10,9,11,10,8,9,11,10,8,7,9,12,10,10,12,9,7,8,10,11,9,8,10,11,9,10,12,13,11,9,10,12,11,9,8,10,11,9,10,12,13,11,9,8,10,11,9,8,10,11,9,13,15,14,12,13,15,14,12,15,17,19,16,14,13,15,14,12,13,15,16,14,15,17,19,16,14,13,15,14,12,13,15,14,12,11,13,16,14,14,16,13,11,12,14,15,13,12,14,15,13,14,16,19,17,15,14,16,15,13,12,14,15,13,14,16,19,17,15,12,14,15,13,12,14,15,13,17,19,18,16,17,19,18,16,25,23,21,20,18,17,19,18,16,17,19,20,18,21,23,25,20,18,17,19,18,16,17,19,18,16,15,17,20,18,18,20,17,15,16,18,19,17,16,18,19,17,18,20,25,23,21,18,20,19,17,16,18,19,17,18,20,21,23,25,16,18,19,17,16,18,19,17,25,23,21,20,25,23,21,22,20,29,27,22,24,23,21,22,20,27,25,23,21,22,27,29,22,24,23,21,22,24,20,23,21,22,20,19,21,23,25,25,23,21,19,20,22,21,23,20,24,22,21,23,24,22,29,27,22,21,23,25,27,20,22,21,23,24,22,27,29,20,22,21,23,25,20,21,23,25,29,27,24,22,29,27,24,26,28,32,31,26,28,27,25,24,26,29,31,24,26,28,32,31,28,26,29,27,25,26,28,27,25,24,26,27,29,22,24,24,22,29,27,26,24,25,27,28,26,25,27,29,26,28,31,32,28,26,24,31,29,26,24,25,27,28,26,31,32,28,26,24,27,29,22,24,27,29,32,31,28,26,31,32,33,30,35,34,36,33,30,31,29,28,30,32,34,33,30,35,36,34,33,30,31,32,34,33,30,31,29,30,28,31,32,28,26,26,28,32,31,28,30,29,31,30,33,34,32,31,30,33,34,36,35,30,33,34,32,30,28,29,31,30,33,36,34,35,30,33,32,31,26,28,31,32,34,36,33,30,34,36,38,39,37,38,40,42,37,35,34,32,35,33,36,38,39,37,42,40,38,37,35,36,38,37,35,34,36,32,35,33,34,36,33,30,30,33,36,34,33,35,32,36,34,35,37,38,36,35,37,38,40,42,37,39,38,36,33,35,32,34,35,37,42,40,38,37,39,38,36,34,30,33,36,34,38,40,37,35,40,42,41,45,47,44,43,45,41,39,38,36,39,37,40,42,41,47,44,43,45,41,39,40,42,41,39,38,40,42,39,37,38,40,37,35,35,37,40,38,37,39,42,40,38,39,41,42,40,39,41,45,43,44,47,41,42,40,37,39,36,38,39,41,45,43,44,47,45,41,42,40,35,37,40,38,43,42,41,39,46,44,43,49,51,48,46,47,49,45,42,40,41,44,45,43,49,51,48,46,47,49,51,45,43,49,51,44,43,45,41,43,45,42,41,39,39,41,42,45,43,41,45,43,44,51,49,43,45,51,49,47,46,48,51,49,43,45,44,41,40,42,45,49,47,46,48,51,49,43,44,46,39,41,42,43,44,45,47,49,50,48,53,55,50,52,54,51,53,43,47,49,51,46,48,50,53,55,50,52,53,55,44,46,47,53,55,48,46,47,49,46,44,47,49,51,51,49,47,44,46,49,47,46,48,55,53,47,46,44,55,53,52,50,55,53,50,48,46,51,49,47,43,53,51,54,52,50,55,53,48,50,49,47,45,44,46,48,50,51,53,52,54,59,57,56,58,55,57,44,46,48,53,55,52,54,56,59,57,54,56,59,57,48,50,52,57,59,52,50,53,51,48,50,52,53,55,55,53,52,50,48,51,53,50,52,59,57,52,50,48,57,59,56,54,57,59,56,54,52,55,53,48,46,44,57,55,58,56,57,59,54,52,53,51,50,48,46,52,54,56,57,55,56,58,63,61,60,62,59,61,50,52,54,59,57,58,60,62,63,61,58,62,63,61,54,56,58,63,61,56,54,57,55,54,56,58,59,57,57,59,58,56,54,55,57,54,56,61,63,58,56,54,61,63,62,58,61,63,62,60,58,57,59,54,52,50,61,59,62,60,61,63,58,56,55,57,56,54,52,58,60,62,61,59,60,62,68,70,66,68,70,63,56,60,62,63,61,67,65,64,66,70,60,64,68,72,60,62,65,66,62,60,58,61,59,60,62,63,61,70,70,61,63,62,60,59,61,58,60,62,66,65,62,60,72,68,64,60,70,66,64,65,67,61,63,62,60,56,63,70,68,66,70,68,62,60,59,61,62,60,58,65,66,64,68,63,65,64,66,72,67,65,64,72,74,58,66,64,70,74,71,69,68,72,67,65,66,70,74,69,67,64,68,64,68,70,72,63,65,64,66,68,72,72,68,66,64,65,63,72,70,68,64,68,64,67,69,74,70,66,65,67,72,68,69,71,74,70,64,66,58,74,72,64,65,67,72,66,64,65,63,68,64,66,65,71,69,67,70,72,67,69,74,76,69,71,73,76,78,65,67,68,72,76,73,75,76,74,69,71,73,76,78,71,73,70,72,65,67,66,74,76,67,69,71,74,76,76,74,71,69,67,76,74,66,67,65,72,70,73,71,78,76,73,71,69,74,76,75,73,76,72,68,67,65,78,76,73,71,69,76,74,69,67,72,70,67,69,71,73,75,77,76,74,71,73,80,78,75,77,79,82,80,69,71,73,78,80,77,79,80,78,75,77,79,82,80,75,77,76,74,69,73,71,78,80,73,75,77,80,78,78,80,77,75,73,80,78,71,73,69,74,76,77,75,80,82,79,77,75,78,80,79,77,80,78,73,71,69,80,82,79,77,75,78,80,73,71,74,76,77,75,73,79,81,83,80,78,75,77,83,84,82,81,83,84,88,75,79,83,84,82,85,81,83,84,82,81,83,84,86,79,81,83,80,78,75,79,77,84,82,79,81,83,84,82,82,84,83,81,79,82,84,77,79,75,78,80,83,81,79,86,84,83,81,82,84,83,81,85,82,84,83,79,75,88,84,83,81,82,84,83,77,75,78,80,83,81,79,87,85,86,84,82,79,81,85,86,88,87,85,86,92,77,81,85,86,88,87,86,88,90,92,85,87,89,88,85,86,88,84,82,83,81,85,86,88,85,88,86,90,92,92,90,86,88,85,88,86,85,81,83,82,84,88,86,85,88,89,87,85,92,90,88,86,87,88,86,85,81,77,92,86,85,87,88,86,85,81,79,82,84,86,85,87,89,91,88,90,92,91,89,87,90,92,91,89,90,94,91,89,87,90,92,89,91,93,94,97,93,91,90,92,91,87,89,90,92,91,89,87,90,92,87,89,91,94,97,97,94,91,89,87,92,90,87,89,91,92,90,89,87,91,92,90,91,93,97,94,93,91,89,92,90,87,89,91,94,90,89,91,92,90,87,89,91,92,90,88,91,89,93,95,94,97,99,93,95,96,97,94,95,93,97,99,93,95,96,97,94,95,96,98,99,101,95,96,97,94,93,95,96,94,97,93,95,96,97,94,93,95,96,101,99,99,101,96,95,93,94,97,96,95,93,97,94,96,95,93,94,97,96,95,101,99,98,96,95,94,97,96,95,93,99,97,93,95,94,97,96,95,93,99,97,94,95,93,96,98,100,103,101,98,100,102,101,99,98,100,96,103,101,98,100,102,101,99,100,104,105,103,98,100,102,101,99,98,100,102,101,99,98,100,102,101,99,98,102,106,105,103,103,105,106,102,98,99,101,102,100,98,99,101,102,100,98,99,101,102,100,98,103,105,104,100,99,101,102,100,98,101,103,96,100,98,99,101,102,100,98,101,103,100,98,96,102,104,106,105,113,107,104,106,105,103,102,104,106,105,111,107,106,104,105,103,102,106,109,113,109,104,106,105,103,104,106,105,103,113,109,104,106,105,103,100,104,107,111,115,115,111,107,104,100,103,105,106,104,109,113,103,105,106,104,103,105,106,104,109,113,109,106,102,103,105,104,106,107,111,105,106,104,102,103,105,106,104,107,113,105,106,104,102,108,107,109,111,115,108,109,111,113,117,108,107,109,113,117,108,109,111,113,117,108,107,111,115,108,111,107,113,115,108,109,107,111,115,108,111,107,113,115,110,108,109,113,117,117,113,109,108,110,115,113,107,111,108,115,111,107,109,108,115,113,107,111,108,115,111,107,108,117,113,111,109,108,117,113,109,107,108,117,113,111,109,108,115,111,109,107,108,110,112,114,117,119,110,112,114,115,119,110,112,114,115,119,110,112,114,115,119,110,112,114,117,119,110,112,114,117,119,110,112,114,117,119,110,112,114,117,119,112,114,116,119,121,121,119,116,114,112,119,117,114,112,110,119,117,114,112,110,119,117,114,112,110,119,117,114,112,110,119,115,114,112,110,119,115,114,112,110,119,115,114,112,110,119,117,114,112,110,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,118,120,122,125,123,123,125,122,120,118,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,124,126,127,1,2,2,1,127,126,124,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,2,0,6,10,3,1,0,2,4,1,0,2,4,6,1,0,2,4,3,1,0,2,4,2,0,6,10,1,0,2,4,6,1,0,2,4,4,2,0,6,8,5,3,0,4,4,0,3,5,8,6,0,2,4,4,2,0,1,6,4,2,0,1,10,6,0,2,4,2,0,1,3,4,2,0,1,6,4,2,0,1,4,2,0,1,3,10,6,0,2,1,3,4,8,12,7,5,8,6,3,5,7,8,10,3,5,6,8,10,7,5,6,8,1,3,4,8,12,3,7,5,8,10,3,5,6,8,1,3,5,10,12,7,9,6,8,8,6,9,7,12,10,5,3,1,8,6,5,3,10,8,5,7,3,12,8,4,3,1,8,6,5,7,10,8,6,5,3,10,8,7,5,3,6,8,5,7,12,8,4,3,1,5,7,9,14,16,9,11,12,10,9,11,13,14,12,7,9,16,14,12,9,11,12,10,5,7,9,14,16,9,13,11,14,12,7,9,12,10,7,9,11,16,14,11,13,14,10,10,14,13,11,14,16,11,9,7,10,12,9,7,12,14,11,13,9,16,14,9,7,5,10,12,11,9,12,14,16,9,7,12,14,13,11,9,10,12,11,9,16,14,9,7,5,11,17,20,18,13,15,17,16,14,15,17,19,18,16,11,17,20,18,13,15,17,16,14,11,15,19,20,18,15,19,17,18,16,11,13,16,14,13,17,19,20,18,15,17,18,12,12,18,17,15,18,20,19,17,13,14,16,13,11,16,18,17,19,15,18,20,19,15,11,14,16,17,15,13,18,20,17,11,16,18,19,17,15,14,16,17,15,13,18,20,17,11,13,15,19,22,24,21,23,19,20,18,21,22,24,20,13,15,19,21,22,21,22,19,20,18,13,17,22,24,23,25,29,31,20,15,17,19,20,18,15,21,22,26,21,24,19,20,16,16,20,19,24,21,26,22,21,15,18,20,19,17,15,20,31,29,25,23,24,22,17,13,18,20,19,22,21,22,21,19,15,13,20,24,22,21,18,20,19,23,21,24,22,19,15,13,25,23,21,26,28,25,27,22,24,23,25,27,26,28,23,25,27,24,26,23,25,24,26,25,23,21,26,28,21,27,22,24,26,21,22,24,26,28,25,23,24,28,25,23,22,26,28,28,26,22,23,25,28,24,23,25,28,26,24,22,21,26,24,22,27,21,28,26,21,23,25,26,24,25,23,26,24,27,25,23,28,26,27,25,23,24,22,27,25,28,26,21,23,25,27,29,31,30,33,29,31,30,26,29,31,32,33,30,29,31,28,30,33,27,29,28,30,27,29,31,30,33,32,34,28,30,23,25,27,30,33,27,29,31,30,33,27,29,31,30,33,33,30,31,29,27,33,30,31,29,27,33,30,27,25,23,30,28,34,32,33,30,31,29,27,30,28,29,27,33,30,28,31,29,30,33,32,31,29,26,30,31,29,33,30,31,29,27,32,34,40,37,35,32,36,40,35,28,34,40,37,35,32,34,36,37,35,31,34,36,35,33,32,34,36,37,35,36,38,35,33,29,32,34,37,35,32,34,36,37,35,32,34,36,37,35,35,37,36,34,32,35,37,36,34,32,35,37,34,32,29,33,35,38,36,35,37,36,34,32,33,35,36,34,31,35,37,36,34,32,35,37,40,34,28,35,40,36,32,35,37,40,34,32,36,38,42,41,39,34,38,42,39,33,36,42,41,39,38,40,42,41,39,32,40,41,39,37,38,40,42,41,39,40,42,41,37,31,38,42,41,39,38,40,42,41,39,38,40,42,41,39,39,41,42,40,38,39,41,42,40,38,39,41,42,38,31,37,41,42,40,39,41,42,40,38,37,39,41,40,32,39,41,42,40,38,39,41,42,36,33,39,42,38,34,39,41,42,38,36,46,44,43,45,47,46,44,43,41,37,38,43,45,47,44,45,43,47,49,38,42,44,46,45,46,44,43,45,47,45,43,47,39,36,40,43,45,47,44,45,43,47,49,44,45,43,47,49,49,47,43,45,44,49,47,43,45,44,47,45,43,40,36,39,47,43,45,47,45,43,44,46,45,46,44,42,38,49,47,43,45,44,47,45,43,38,37,41,43,44,46,47,45,43,44,46,48,50,49,51,53,48,50,45,47,49,46,44,49,51,46,48,50,51,53,48,50,43,47,49,48,50,51,49,53,44,46,49,51,48,46,44,49,51,46,48,50,51,53,46,48,50,51,53,53,51,50,48,46,53,51,50,48,46,51,49,44,46,48,51,49,46,44,53,49,51,50,48,49,47,43,50,48,53,51,50,48,46,51,49,44,46,49,47,45,50,48,53,51,49,50,48,52,54,56,57,55,52,54,56,53,51,48,50,52,53,55,52,54,56,57,55,52,54,51,53,52,54,56,57,55,48,50,52,53,55,50,52,54,53,55,52,54,56,57,55,52,54,56,57,55,55,57,56,54,52,55,57,56,54,52,55,53,54,52,50,55,53,52,50,48,55,57,56,54,52,53,51,54,52,55,57,56,54,52,55,53,52,50,48,51,53,56,54,52,55,57,56,54,52,58,60,62,63,59,58,60,62,59,55,54,56,58,59,57,58,60,62,63,59,56,58,57,55,58,62,63,61,59,54,56,58,59,57,56,60,61,59,57,58,60,62,63,59,58,62,63,61,59,59,61,63,62,58,59,63,62,60,58,57,59,61,60,56,57,59,58,56,54,59,61,63,62,58,55,57,58,56,59,63,62,60,58,57,59,58,56,54,55,59,62,60,58,59,63,62,60,58,65,64,66,68,61,66,64,63,61,57,64,60,62,63,61,65,64,66,68,61,60,62,63,59,60,65,64,66,68,68,60,62,63,61,58,62,63,66,70,68,66,64,72,61,60,65,64,66,68,68,66,64,65,60,61,72,64,66,68,70,66,63,62,58,61,63,62,60,68,68,66,64,65,60,59,63,62,60,61,68,66,64,65,61,63,62,60,64,57,61,63,64,66,61,68,66,64,65,67,69,71,70,72,67,65,68,70,72,65,68,66,70,72,71,69,67,70,72,65,64,66,68,61,67,69,71,70,72,65,66,64,70,72,67,65,64,68,72,65,67,70,74,76,67,69,71,70,72,72,70,71,69,67,76,74,70,67,65,72,68,64,65,67,72,70,64,66,65,72,70,71,69,67,61,68,66,64,65,72,70,67,69,71,72,70,66,68,65,72,70,68,65,67,72,70,71,69,67,73,75,77,76,74,69,71,73,74,76,67,69,71,74,76,73,75,77,76,74,71,69,67,70,72,73,75,77,76,74,67,69,71,74,76,69,71,73,74,76,69,71,73,78,80,73,75,77,76,74,74,76,77,75,73,80,78,73,71,69,76,74,73,71,69,76,74,71,69,67,74,76,77,75,73,72,70,67,69,71,74,76,77,75,73,76,74,71,69,67,76,74,73,71,69,74,76,77,75,73,79,81,83,80,78,75,77,81,80,78,73,75,77,80,78,79,81,83,80,78,73,75,77,76,74,79,81,83,82,78,73,75,77,80,78,75,77,79,80,78,75,79,83,84,82,79,81,83,80,78,78,80,83,81,79,82,84,83,79,75,78,80,79,77,75,78,80,77,75,73,78,82,83,81,79,74,76,77,75,73,78,80,83,81,79,78,80,77,75,73,78,80,81,77,75,78,80,83,81,79,89,87,85,84,82,87,79,83,84,82,79,81,83,84,82,85,86,88,84,82,83,81,79,80,78,93,89,85,84,80,79,81,83,84,82,85,81,83,84,82,77,81,85,87,89,85,88,86,84,82,82,84,86,88,85,89,87,85,81,77,82,84,83,81,85,82,84,83,81,79,80,84,85,89,93,78,80,79,81,83,82,84,88,86,85,82,84,83,81,79,82,84,83,79,87,82,84,85,87,89,95,93,91,86,88,89,85,86,88,90,85,88,86,90,92,91,89,87,90,92,87,85,86,88,84,82,95,91,87,86,88,89,87,85,86,88,87,88,86,90,92,95,93,91,86,88,87,89,91,90,92,92,90,91,89,87,88,86,91,93,95,92,90,86,88,87,88,86,85,87,89,88,86,87,91,95,82,84,88,86,85,87,92,90,87,89,91,92,90,86,88,85,90,88,86,85,89,88,86,91,93,95,98,96,94,92,90,91,93,95,92,94,87,89,91,94,97,93,95,96,94,97,89,91,93,90,92,94,98,96,94,92,90,91,93,95,90,92,89,91,93,94,97,98,96,94,92,90,96,95,93,94,97,97,94,93,95,96,90,92,94,96,98,97,94,93,91,89,92,90,95,93,91,90,92,94,96,98,94,92,90,93,91,89,97,94,96,95,93,97,94,91,89,87,94,92,95,93,91,90,92,94,96,98,100,104,101,99,97,96,98,100,99,97,93,95,96,101,99,98,100,102,101,99,95,100,102,101,99,97,100,104,101,99,97,96,98,100,97,94,100,96,95,101,99,100,104,101,99,97,98,100,102,101,99,99,101,102,100,98,97,99,101,104,100,99,101,95,96,100,94,97,100,98,96,97,99,101,104,100,97,99,101,102,100,95,99,101,102,100,98,99,101,96,95,93,97,99,100,98,96,97,99,101,104,100,102,106,105,103,111,102,104,106,105,101,98,102,104,106,105,103,104,106,105,103,113,96,104,106,105,103,111,102,106,105,103,102,104,106,105,103,99,102,98,106,105,103,102,106,105,103,113,111,104,106,105,103,103,105,106,104,111,113,103,105,106,102,103,105,106,98,102,99,103,105,106,104,102,103,105,106,102,111,103,105,106,104,96,113,103,105,106,104,103,105,106,104,102,98,101,105,106,104,102,111,103,105,106,102,110,108,107,109,113,107,109,111,113,103,100,108,107,109,111,113,108,107,109,111,115,98,107,109,113,115,108,109,107,113,117,108,107,109,111,113,101,104,109,107,113,115,108,107,109,111,115,108,109,107,113,115,115,113,107,109,108,115,111,109,107,108,115,113,107,109,104,101,113,111,109,107,108,117,113,107,109,108,115,113,109,107,98,115,111,109,107,108,113,111,109,107,108,100,103,113,111,109,107,113,109,107,108,110,114,112,119,115,117,108,110,112,115,117,114,112,110,115,117,119,110,112,114,117,119,108,110,111,117,119,110,112,114,115,119,110,112,114,115,117,119,108,110,111,117,119,110,112,114,117,119,110,112,114,117,119,119,117,114,112,110,119,117,114,112,110,119,117,111,110,108,119,117,115,114,112,110,119,115,114,112,110,119,117,111,110,108,119,117,114,112,110,119,117,115,110,112,114,117,115,112,110,108,117,115,119,112,114,116,118,120,121,123,114,116,118,120,121,119,116,118,120,121,123,120,118,116,121,123,112,114,116,118,121,123,120,118,116,121,123,120,118,116,123,121,112,114,116,118,121,123,120,118,116,121,123,120,118,116,123,121,121,123,116,118,120,123,121,116,118,120,123,121,118,116,114,112,121,123,116,118,120,123,121,116,118,120,123,121,118,116,114,112,123,121,116,118,120,123,121,120,118,116,119,121,120,118,116,114,123,121,120,118,116,122,124,126,127,125,122,124,126,127,125,123,122,124,126,127,125,122,124,126,127,125,120,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,126,124,122,120,127,125,122,124,126,127,125,122,124,126,127,125,125,127,126,124,122,125,127,126,124,122,125,127,120,122,124,126,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,120,125,127,126,124,122,125,127,126,124,122,123,125,127,126,124,122,125,127,126,124,122,2,0,4,6,8,4,2,0,6,8,4,2,0,6,10,1,2,0,4,8,4,2,0,6,10,1,4,2,0,6,8,1,2,0,4,6,1,2,0,4,8,10,1,4,2,0,6,8,1,2,0,4,6,6,4,0,2,1,8,6,0,2,4,1,10,8,4,0,2,1,6,4,0,2,1,8,6,0,2,4,1,10,6,0,2,4,8,4,0,2,1,10,6,0,2,4,8,6,0,2,4,8,6,4,0,2,1,3,5,10,12,1,3,5,10,12,1,3,5,8,12,3,5,7,6,10,1,3,5,8,12,3,5,9,11,10,12,3,5,7,8,10,3,5,7,6,12,14,3,5,7,9,10,12,3,5,7,8,10,10,8,7,5,3,12,10,9,7,5,3,14,12,6,7,5,3,10,8,7,5,3,12,10,11,9,5,3,12,8,5,3,1,10,6,7,5,3,12,8,5,3,1,12,10,5,3,1,12,10,5,3,1,7,9,11,16,14,7,9,15,17,16,14,7,11,15,16,14,9,11,13,14,12,7,9,11,16,14,7,13,15,17,16,14,9,11,13,14,12,9,11,13,16,18,20,11,13,15,17,16,14,9,11,13,14,12,12,14,13,11,9,14,16,17,15,13,11,20,18,16,13,11,9,12,14,13,11,9,14,16,17,15,13,7,14,16,11,9,7,12,14,13,11,9,14,16,15,11,7,14,16,17,15,9,7,14,16,11,9,7,13,17,19,20,18,11,13,19,20,18,9,13,17,19,20,18,15,17,19,20,16,13,17,19,20,18,25,21,22,19,20,18,15,17,19,20,16,15,17,19,22,24,26,25,21,22,19,20,18,15,17,19,20,16,16,20,19,17,15,18,20,19,22,21,25,26,24,22,19,17,15,16,20,19,17,15,18,20,19,22,21,25,18,20,19,17,13,16,20,19,17,15,18,20,19,17,13,9,18,20,19,13,11,18,20,19,17,13,15,21,22,24,28,21,22,24,26,28,23,21,22,24,26,28,26,24,22,28,18,15,23,21,22,24,27,23,24,26,28,25,23,21,22,24,18,21,23,25,27,28,30,27,23,24,26,28,27,25,23,21,22,18,18,22,21,23,25,27,28,26,24,23,27,30,28,27,25,23,21,18,24,22,21,23,25,28,26,24,23,27,24,22,21,23,15,18,28,22,24,26,28,26,24,22,21,23,28,26,24,22,21,28,24,22,21,15,23,25,27,26,30,33,23,27,25,30,33,25,27,29,31,30,33,21,23,25,30,33,25,27,29,26,28,29,31,32,30,33,27,29,31,26,28,30,29,31,32,34,33,35,29,31,32,30,33,29,31,32,28,26,24,24,26,28,32,31,29,33,30,32,31,29,35,33,34,32,31,29,30,28,26,31,29,27,33,30,32,31,29,28,26,29,27,25,33,30,25,23,21,33,30,31,29,27,25,33,30,25,27,23,33,30,26,27,25,23,29,31,32,35,37,29,31,34,32,37,35,32,34,36,37,35,27,29,34,36,37,35,31,32,34,33,30,34,36,38,37,35,32,34,36,35,33,37,36,38,42,40,39,37,34,38,40,37,35,34,36,38,37,33,30,30,33,37,38,36,34,35,37,40,38,34,37,39,40,42,38,36,37,33,35,36,34,32,35,37,38,36,34,30,33,34,32,31,35,37,36,34,29,27,35,37,36,34,32,35,37,32,34,31,29,37,35,32,31,29,34,38,42,41,39,36,38,42,40,41,39,38,40,42,41,39,31,32,40,42,41,39,36,38,40,37,35,45,40,42,41,39,38,40,42,41,39,47,48,44,43,47,51,41,36,42,41,39,47,48,40,42,41,39,35,35,39,41,42,40,48,47,39,41,42,36,41,51,47,43,44,48,47,39,41,42,40,38,39,41,42,40,45,35,37,40,38,36,39,41,42,40,32,31,39,41,42,40,38,39,41,40,42,38,36,39,41,42,38,34,36,40,43,47,49,47,45,43,49,53,46,44,43,45,47,49,38,45,43,49,53,46,47,43,42,41,39,44,47,43,49,53,46,44,43,45,49,51,50,46,45,49,53,46,44,43,45,49,51,50,46,44,43,45,47,47,45,43,44,46,50,51,49,45,43,44,46,53,49,45,46,50,51,49,45,43,44,46,53,49,43,47,44,39,41,42,43,47,46,53,49,43,45,38,49,47,45,43,44,46,53,49,43,45,47,49,47,43,40,36,48,46,44,45,51,53,48,46,44,51,55,48,50,52,51,53,55,46,44,47,51,55,48,44,45,49,51,46,48,50,52,51,55,48,50,52,53,55,57,52,54,56,55,57,48,50,52,53,55,57,52,54,56,49,51,53,53,51,49,56,54,52,57,55,53,52,50,48,57,55,56,54,52,57,55,53,52,50,48,55,51,52,50,48,46,51,49,45,44,48,55,51,47,44,46,55,53,51,52,50,48,55,51,44,46,48,53,51,45,44,46,48,50,52,54,55,57,50,52,54,56,57,59,54,56,58,59,57,48,50,52,54,57,59,50,52,54,53,55,54,56,58,60,59,57,54,58,62,63,61,59,58,60,62,61,59,54,58,60,63,61,59,58,60,62,59,57,55,55,57,59,62,60,58,59,61,63,60,58,54,59,61,62,60,58,59,61,63,62,58,54,57,59,60,58,56,54,55,53,54,52,50,59,57,54,52,50,48,57,59,58,56,54,59,57,56,54,52,50,57,55,54,52,50,56,58,60,62,63,61,59,58,60,62,63,61,65,60,62,63,61,56,58,60,62,63,61,56,58,60,61,57,65,66,64,62,63,61,56,60,65,66,68,72,67,65,64,66,63,56,62,65,64,68,72,67,65,64,66,63,61,61,63,66,64,65,67,72,68,64,65,62,56,63,66,64,65,67,72,68,66,65,60,56,61,63,62,64,66,65,57,61,60,58,56,61,63,62,60,58,56,61,63,62,60,65,61,63,62,60,58,59,61,63,62,60,58,56,68,66,64,70,74,65,68,66,64,70,72,69,67,64,66,68,70,65,66,64,68,70,65,64,66,62,63,59,67,69,68,70,72,71,69,67,64,70,74,73,71,69,68,70,72,71,69,67,66,70,74,73,71,69,68,70,72,72,70,68,69,71,73,74,70,66,67,69,71,72,70,68,69,71,73,74,70,64,67,69,71,72,70,68,69,67,59,63,62,66,64,65,70,68,64,66,65,70,68,66,64,67,69,72,70,64,66,68,65,74,70,64,66,68,65,67,69,72,76,67,69,71,73,74,76,71,73,72,74,76,67,69,71,73,72,74,67,69,71,68,70,71,73,75,78,76,74,73,75,77,76,78,80,75,77,79,78,76,74,73,75,81,80,78,76,75,77,79,78,76,74,74,76,78,79,77,75,76,78,80,81,75,73,74,76,78,79,77,75,80,78,76,77,75,73,74,76,78,75,73,71,70,68,71,69,67,74,72,73,71,69,67,76,74,72,73,71,76,74,73,71,69,67,76,72,69,67,65,71,73,75,77,80,78,75,77,79,80,78,75,77,83,82,80,78,75,77,79,83,80,76,73,75,76,74,72,77,81,83,84,82,80,79,81,83,84,82,90,85,81,83,84,82,80,77,79,83,84,82,88,87,81,83,84,82,80,80,82,84,83,81,87,88,82,84,83,79,77,80,82,84,83,81,85,90,82,84,83,81,79,80,82,84,83,81,77,72,74,76,75,73,76,80,83,79,77,75,78,80,82,83,77,75,78,80,79,77,75,78,80,77,75,73,71,87,79,81,83,84,82,89,81,83,84,82,79,81,84,88,92,94,91,89,81,84,82,78,77,83,82,80,78,79,85,88,86,90,92,89,87,85,86,88,92,89,87,86,88,90,92,91,89,87,85,86,90,89,85,86,88,90,92,92,90,88,86,85,89,90,86,85,87,89,91,92,90,88,86,87,89,92,88,86,85,87,89,92,90,86,88,85,79,78,80,82,83,77,78,82,84,81,89,91,94,92,88,84,81,79,82,84,83,81,89,82,84,83,81,79,87,91,89,85,86,88,90,93,91,87,85,86,88,87,85,86,90,97,95,93,87,85,86,88,79,81,84,85,87,86,87,89,91,93,94,97,91,93,95,96,94,97,91,93,95,94,97,99,93,95,96,98,94,92,91,93,95,94,97,99,99,97,94,95,93,91,92,94,98,96,95,93,99,97,94,95,93,91,97,94,96,95,93,91,97,94,93,91,89,87,86,87,85,84,81,79,88,86,85,87,93,95,97,90,86,85,87,88,86,85,87,91,93,90,88,86,85,89,91,93,95,96,97,94,92,95,96,98,100,92,90,89,91,93,99,101,96,98,100,94,92,90,93,91,89,88,90,92,95,96,98,100,101,99,98,100,102,104,101,99,96,98,106,105,103,101,100,102,104,106,99,97,96,102,104,105,103,101,101,103,105,104,102,96,97,99,106,104,102,100,101,103,105,106,98,96,99,101,104,102,100,98,99,101,100,98,96,95,92,90,88,89,91,93,90,92,94,100,98,96,101,99,93,91,89,90,92,100,98,96,95,92,94,97,96,95,93,98,102,106,103,101,99,102,104,106,99,97,94,95,96,102,106,105,103,102,104,106,101,99,97,95,96,98,99,97,94,102,104,106,105,103,113,110,108,109,106,105,103,100,102,104,107,109,113,112,108,107,105,103,101,98,100,106,107,109,113,113,109,107,106,100,98,101,103,105,107,108,112,113,109,107,104,102,100,103,105,106,109,108,110,113,103,105,106,104,102,94,97,99,98,96,95,97,99,101,106,104,102,103,105,106,102,96,95,94,97,99,106,104,102,99,101,103,106,102,98,100,104,105,107,111,113,110,107,111,105,103,101,98,100,104,107,111,113,110,107,109,105,103,100,102,104,106,105,103,101,110,108,107,109,111,115,114,112,107,111,113,115,114,112,110,108,111,115,114,110,109,111,113,115,114,112,110,108,111,115,115,111,108,110,112,114,115,113,111,109,110,114,115,111,108,110,112,114,115,113,111,107,112,114,115,111,109,107,108,110,101,103,105,106,104,102,100,103,105,109,107,110,113,111,107,104,100,98,101,103,105,111,107,110,113,111,107,105,104,100,114,112,110,108,109,115,114,112,108,109,113,115,114,112,110,108,109,115,114,112,108,111,113,115,110,108,107,109,111,113,115,112,114,116,117,119,121,116,118,120,117,119,121,116,118,120,117,119,121,116,118,120,121,119,117,116,118,120,117,119,121,121,119,117,120,118,116,117,119,121,120,118,116,121,119,117,120,118,116,121,119,117,120,118,116,121,119,117,116,114,112,115,113,111,109,107,108,110,115,113,111,108,112,114,115,109,108,110,112,114,115,113,109,108,112,114,115,109,108,110,112,114,116,118,120,117,119,121,116,118,120,117,119,121,116,118,120,117,119,121,116,118,120,121,119,117,112,114,116,118,117,119,121,118,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,118,121,119,117,118,116,114,112,117,119,121,120,118,116,121,119,117,120,118,116,121,119,117,120,118,116,121,119,117,120,118,116,122,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,120,122,124,126,127,125,123,120,122,5,0,2,4,5,3,1,0,2,4,7,5,3,1,0,2,5,3,1,0,2,4,7,5,3,1,0,2,2,0,1,3,5,7,4,2,0,1,3,5,2,0,1,3,5,7,4,2,0,1,3,5,4,2,0,5,122,120,123,125,127,126,124,122,120,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,122,7,5,3,1,0,2,7,5,3,1,0,2,4,1,0,2,4,6,8,5,3,1,0,2,4,7,5,3,1,0,2,4,9,7,3,1,6,8,7,9,12,10,8,6,13,11,9,8,6,4,7,9,6,8,10,12,13,11,9,8,6,4,4,6,8,9,11,13,12,10,8,6,9,7,4,6,8,9,11,13,6,8,10,12,9,7,8,6,1,3,7,9,4,2,0,1,3,5,7,4,2,0,1,3,5,8,6,4,2,0,1,4,2,0,1,3,5,7,2,0,1,3,5,7,13,11,9,8,6,4,9,11,12,10,8,6,9,7,5,3,10,12,14,7,9,12,10,8,6,13,11,9,12,10,8,6,11,13,15,14,12,10,11,15,20,18,16,14,15,17,19,14,12,10,11,15,20,18,16,14,15,17,19,14,12,10,10,12,14,19,17,15,14,16,18,20,15,11,10,12,14,19,17,15,14,16,18,20,15,11,10,12,14,15,13,11,6,8,10,12,9,11,13,6,8,10,12,9,7,14,12,10,3,5,7,9,6,8,10,12,11,9,4,6,8,9,11,13,15,17,19,14,12,10,13,17,19,20,18,16,14,11,15,19,20,18,16,11,15,19,20,18,16,14,15,17,19,20,18,16,14,21,17,19,20,18,16,13,17,19,23,21,22,25,23,21,20,18,16,13,17,19,25,23,21,25,23,21,20,18,16,16,18,20,21,23,25,21,23,25,19,17,13,16,18,20,21,23,25,22,21,23,19,17,13,16,18,20,19,17,21,14,16,18,20,19,17,15,14,16,18,20,19,15,11,16,18,20,19,15,11,14,16,18,20,19,17,13,10,12,14,19,17,15,23,21,22,20,18,16,15,27,25,23,21,22,24,13,17,25,23,21,22,13,17,25,23,21,22,24,29,27,25,23,21,22,25,23,22,24,26,28,31,29,27,25,24,26,28,29,27,22,24,26,28,31,29,27,22,24,26,29,27,22,24,26,28,28,26,24,22,27,29,26,24,22,27,29,31,28,26,24,22,27,29,28,26,24,25,27,29,31,28,26,24,22,23,25,22,21,23,25,27,29,24,22,21,23,25,17,13,22,21,23,25,17,13,24,22,21,23,25,27,15,16,18,20,22,21,23,29,27,25,24,26,28,29,31,32,26,28,30,33,31,29,27,32,24,26,28,31,29,27,26,28,30,36,34,32,31,28,26,24,31,29,27,30,33,35,32,34,36,30,33,35,36,34,32,31,30,33,35,36,34,32,33,30,28,34,32,31,35,33,30,30,33,35,31,32,34,28,30,33,32,34,36,35,33,30,31,32,34,36,35,33,30,36,34,32,35,33,30,27,29,31,24,26,28,31,32,34,36,30,28,26,27,29,31,28,26,24,32,27,29,31,33,30,28,26,32,31,29,28,26,24,25,27,29,31,32,34,35,33,30,34,38,42,41,39,37,35,34,36,38,42,35,33,30,32,38,40,37,35,33,38,40,42,37,35,33,30,32,38,42,41,39,37,38,40,42,41,39,37,48,38,40,42,41,39,37,38,40,42,41,39,35,36,40,42,41,39,37,37,39,41,42,40,36,35,39,41,42,40,38,37,39,41,42,40,38,48,37,39,41,42,40,38,37,39,41,42,38,32,30,33,35,37,42,40,38,33,35,37,40,38,32,30,33,35,42,38,36,34,35,37,39,41,42,38,34,30,33,35,34,32,31,36,38,40,42,41,39,37,36,40,48,46,44,43,45,44,43,40,41,39,37,34,36,42,41,39,45,47,44,43,45,47,41,39,34,36,40,44,43,47,49,48,46,44,43,45,47,50,46,44,43,45,47,48,46,44,43,45,47,37,38,48,46,44,43,45,45,43,44,46,48,38,37,47,45,43,44,46,48,47,45,43,44,46,50,47,45,43,44,46,48,49,47,43,44,40,36,34,39,41,47,45,43,44,47,45,39,41,42,36,34,37,39,41,40,43,44,45,43,44,46,48,40,36,37,39,41,42,40,38,36,50,48,46,44,43,45,47,56,54,52,50,47,49,48,46,45,47,49,51,53,50,48,46,44,43,49,51,46,48,50,49,51,53,52,50,48,46,45,51,50,52,54,55,53,51,49,52,54,56,53,51,49,54,52,50,49,51,53,55,50,52,54,51,49,47,47,49,51,54,52,50,55,53,51,49,50,52,54,49,51,53,56,54,52,49,51,53,55,54,52,50,51,45,46,48,50,52,53,51,49,50,48,46,51,49,43,44,46,48,50,53,51,49,47,45,46,48,49,47,50,52,54,56,47,45,43,44,46,48,50,56,54,52,49,51,53,55,58,60,62,55,53,51,56,54,52,50,59,57,55,52,54,56,57,55,53,52,54,60,61,59,57,55,54,56,58,57,55,53,56,60,62,63,61,59,57,58,60,62,59,57,55,56,60,62,63,61,59,57,56,58,60,57,55,53,53,55,57,60,58,56,57,59,61,63,62,60,56,55,57,59,62,60,58,57,59,61,63,62,60,56,53,55,57,58,56,54,55,57,59,61,60,54,52,53,55,57,56,54,52,55,57,59,50,52,54,56,51,53,55,62,60,58,55,53,51,49,52,54,56,58,60,62,63,61,59,57,67,65,63,61,59,57,58,60,62,63,61,66,70,67,58,60,62,63,61,59,56,58,62,63,66,68,70,69,60,62,63,61,59,58,67,65,64,66,68,70,67,65,64,66,63,61,58,69,67,65,64,66,68,69,67,62,63,61,59,59,61,63,62,67,69,68,66,64,65,67,69,58,61,63,66,64,65,67,70,68,66,64,65,67,58,59,61,63,62,60,69,70,68,66,63,62,58,56,59,61,63,62,60,58,67,70,66,61,63,62,60,58,57,59,61,63,65,67,57,59,61,63,62,60,58,67,65,64,66,68,70,72,69,64,66,68,70,72,71,69,67,65,64,68,72,69,65,64,66,68,70,72,71,69,67,65,64,72,73,71,67,65,64,66,68,73,71,69,72,74,76,75,73,71,69,68,70,72,75,73,71,70,72,74,76,73,71,65,64,66,68,68,66,64,65,71,73,76,74,72,70,71,73,75,72,70,68,69,71,73,75,76,74,72,69,71,73,68,66,64,65,67,71,73,72,64,65,67,69,71,72,70,68,66,64,65,69,72,68,64,65,67,69,71,72,70,68,66,64,69,72,70,68,66,64,65,67,75,73,71,69,74,76,78,71,73,75,77,74,76,78,79,77,75,73,74,76,78,71,73,75,77,74,76,78,77,75,73,78,76,74,79,77,75,70,72,74,76,79,77,75,82,80,78,77,79,81,83,78,76,74,77,81,84,82,80,78,79,77,75,76,74,72,70,70,72,74,76,75,77,79,78,80,82,84,81,77,74,76,78,83,81,79,77,78,80,82,75,77,79,76,74,72,70,75,77,79,74,76,78,73,75,77,78,76,74,77,75,73,71,78,76,74,73,75,77,79,78,76,74,77,75,73,71,78,76,74,69,71,73,75,77,79,81,83,84,82,80,91,79,81,83,84,82,80,81,83,84,82,80,90,93,79,81,83,84,82,80,79,81,83,84,82,80,88,93,81,83,84,82,80,78,81,83,84,85,86,88,95,93,91,89,84,82,80,79,83,91,87,86,90,93,81,83,84,82,80,78,78,80,82,84,83,81,93,90,86,87,91,83,79,80,82,84,89,91,93,95,88,86,85,84,83,81,78,80,82,84,83,81,93,88,80,82,84,83,81,79,80,82,84,83,81,79,93,90,80,82,84,83,81,80,82,84,83,81,79,91,80,82,84,83,81,79,77,93,91,89,87,85,86,88,95,93,89,87,85,86,88,91,89,87,85,86,88,92,95,91,89,87,85,86,88,93,91,89,87,85,86,90,95,91,89,87,85,86,88,93,91,89,87,90,92,100,98,96,87,85,86,88,95,93,89,85,88,92,95,91,89,85,87,86,88,88,86,87,85,89,91,95,92,88,85,89,93,95,88,86,85,87,96,98,100,92,90,87,89,91,93,88,86,85,87,89,91,95,90,86,85,87,89,91,93,88,86,85,87,89,91,95,92,88,86,85,87,89,91,88,86,85,87,89,93,95,88,86,85,87,89,91,93,98,96,95,97,94,92,90,100,98,96,97,94,92,90,98,96,95,93,94,97,99,100,98,96,97,94,92,90,98,96,95,99,97,94,92,100,98,96,97,94,92,90,98,96,95,99,97,94,102,104,106,97,94,92,90,100,98,96,99,97,94,100,98,96,97,94,92,90,90,92,94,97,96,98,100,94,97,99,96,98,100,90,92,94,97,106,104,102,94,97,99,95,96,98,90,92,94,97,96,98,100,92,94,97,99,95,96,98,90,92,94,97,96,98,100,99,97,94,93,95,96,98,90,92,94,97,96,98,100,90,92,94,97,95,96,98,100,104,106,105,103,101,99,102,104,106,105,103,101,99,100,102,104,106,105,103,101,102,104,106,105,103,101,99,100,102,104,106,105,103,101,102,104,106,105,103,101,99,100,102,104,106,105,103,101,112,108,107,105,103,101,99,102,104,106,105,103,101,102,104,106,105,103,101,99,99,101,103,105,106,104,102,101,103,105,106,104,102,99,101,103,105,107,108,112,101,103,105,106,104,102,100,99,101,103,105,106,104,102,101,103,105,106,104,102,100,99,101,103,105,106,104,102,101,103,105,106,104,102,100,99,101,103,105,106,104,102,99,101,103,105,106,104,100,102,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,110,109,111,113,115,114,112,110,108,107,109,111,114,112,110,108,107,109,111,111,109,107,108,110,112,114,111,109,107,108,110,112,114,115,113,111,109,110,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,102,118,116,114,119,117,115,113,120,118,116,119,117,115,113,120,118,116,119,117,115,113,116,118,120,119,117,115,113,120,118,116,119,117,115,113,120,118,116,119,117,115,113,120,118,116,119,117,115,113,120,118,116,121,119,117,120,118,116,119,117,115,113,120,118,116,119,117,115,113,113,115,117,119,116,118,120,113,115,117,119,116,118,120,117,119,121,116,118,120,113,115,117,119,116,118,120,113,115,117,119,116,118,120,113,115,117,119,116,118,120,113,115,117,119,120,118,116,113,115,117,119,116,118,120,113,115,117,119,116,118,120,113,115,117,119,114,116,118,120,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,122,124,126,127,125,123,121,122,124,126,127,125,123,121,121,123,125,127,126,124,122,121,123,125,127,126,124,122,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,120};
+const Int_t AliHLTTPCMapping::fgkOFecCon[fgkNOROC] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,2,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,1,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,2,2,2,2,2,2,3,3,3,3,3,2,3,3,3,2,2,3,3,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,3,3,2,2,3,3,3,2,3,3,3,3,3,2,2,2,2,2,2,3,3,3,3,3,2,2,2,2,2,2,2,3,3,3,3,2,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,3,3,3,3,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,2,3,3,2,2,2,3,2,2,2,2,3,3,3,3,2,2,2,2,2,2,3,3,3,3,3,2,2,2,2,2,2,2,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,3,3,3,2,2,2,2,2,2,3,3,3,3,2,2,2,2,3,2,2,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,3,3,4,3,3,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,4,3,3,3,3,3,3,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,3,3,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,4,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,4,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,3,3,3,3,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,3,3,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5};
// Author: Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3TPCMapping.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTPCMapping.h"
#if __GNUC__ >= 3
using namespace std;
#endif
//generated from Ulis txt file with read-roc.sh
-#include "AliL3TPCMapping-iroc.generated"
-#include "AliL3TPCMapping-oroc.generated"
+#include "AliHLTTPCMapping-iroc.generated"
+#include "AliHLTTPCMapping-oroc.generated"
-Int_t AliL3TPCMapping::GetRealNPads(Int_t slicerow)
+Int_t AliHLTTPCMapping::GetRealNPads(Int_t slicerow)
{
//see tpc numbering doc
- if(slicerow<0 || slicerow >= AliL3Transform::GetNRows()){
- LOG(AliL3Log::kError,"AliL3TPCMapping::GetRealNPads","Slicerow")
+ if(slicerow<0 || slicerow >= AliHLTTransform::GetNRows()){
+ LOG(AliHLTLog::kError,"AliHLTTPCMapping::GetRealNPads","Slicerow")
<<"Wrong slicerow "<<slicerow<<ENDLOG;
return -1;
}
const Float_t k1=0.293878;// == 10/6*tan(10)
const Float_t k2=0.440817;// == 15/6*tan(10)
- const Int_t knRowLow=AliL3Transform::GetNRowLow();
- const Int_t knRowUp1=AliL3Transform::GetNRowUp1();
+ const Int_t knRowLow=AliHLTTransform::GetNRowLow();
+ const Int_t knRowUp1=AliHLTTransform::GetNRowUp1();
if(slicerow==0) return 68;
else if(slicerow<knRowLow){
}
}
-Double_t AliL3TPCMapping::GetRealX(Int_t slicerow)
+Double_t AliHLTTPCMapping::GetRealX(Int_t slicerow)
{
//see tpc numbering doc
- if(slicerow<0 || slicerow >= AliL3Transform::GetNRows()){
- LOG(AliL3Log::kError,"AliL3TPCMapping::GetRealX","Slicerow")
+ if(slicerow<0 || slicerow >= AliHLTTransform::GetNRows()){
+ LOG(AliHLTLog::kError,"AliHLTTPCMapping::GetRealX","Slicerow")
<<"Wrong slicerow "<<slicerow<<ENDLOG;
return -1;
}
- const Int_t knRowLow=AliL3Transform::GetNRowLow();
- const Int_t knRowUp1=AliL3Transform::GetNRowUp1();
+ const Int_t knRowLow=AliHLTTransform::GetNRowLow();
+ const Int_t knRowUp1=AliHLTTransform::GetNRowUp1();
if(slicerow<knRowLow){
return (85.225+0.75*slicerow);
}
}
-Double_t AliL3TPCMapping::GetRealY(Int_t slicerow, Int_t pad)
+Double_t AliHLTTPCMapping::GetRealY(Int_t slicerow, Int_t pad)
{
//see tpc numbering doc
- if(slicerow<0 || slicerow >= AliL3Transform::GetNRows()){
- LOG(AliL3Log::kError,"AliL3Transform::GetRealY","Slicerow")
+ if(slicerow<0 || slicerow >= AliHLTTransform::GetNRows()){
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetRealY","Slicerow")
<<"Wrong slicerow "<<slicerow<<ENDLOG;
return -1;
}
Int_t npads=GetRealNPads(slicerow);
if(pad<0 || pad >= npads){
- LOG(AliL3Log::kError,"AliL3Transform::GetRealY","pad")
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetRealY","pad")
<<"Wrong pad "<<pad<<" npads " <<npads<<ENDLOG;
return 0.;
}
- const Int_t knRowLow=AliL3Transform::GetNRowLow();
+ const Int_t knRowLow=AliHLTTransform::GetNRowLow();
if(slicerow<knRowLow){
return (0.4*pad+0.2-0.2*npads);
#ifndef ALIL3TPCMAPPING_H
#define ALIL3TPCMAPPING_H
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
#define fNIROC_def 5504 //see ulis file
#define fNOROC_def 9984 //see ulis file
-class AliL3TPCMapping {
+class AliHLTTPCMapping {
public:
- virtual ~AliL3TPCMapping() {}
+ virtual ~AliHLTTPCMapping() {}
//taken from GSI TPC numbering document
static Int_t GetRealNPads(Int_t slicerow); //Number of pads per row
static Double_t GetRealX(Int_t slicerow); //Local X in cm for modules 0,36
static const Int_t fgkOFecChannel[fNOROC_def]; // Outer fec(?) channel
static const Int_t fgkOFecCon[fNOROC_def]; // Outer fec(?) con(?)
- ClassDef(AliL3TPCMapping,1)
+ ClassDef(AliHLTTPCMapping,1)
};
+
+typedef AliHLTTPCMapping AliL3TPCMapping; // for backward compatibility
+
#endif
short fIRORC [5504][8];
int fsizeoffIRORC;
};
-
-
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright & copy ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3TransBit.h"
+#include "AliHLTTransBit.h"
#if __GNUC__ == 3
using namespace std;
**************************************************************************/
-/** \class AliL3Transbit
+/** \class AliHLTTransbit
<pre>
//_____________________________________________________________
-// AliL3Transbit (taken from the offline AliROOT code,
+// AliHLTTransbit (taken from the offline AliROOT code,
// original author: Marian Ivanov, GSI Darmstadt for AliROOT)
//
// Time Projection Chamber ADC bit compresion lookup table
</pre>
*/
-ClassImp(AliL3TransBit)
-ClassImp(AliL3TransBitV1)
-ClassImp(AliL3TransBitV2)
+ClassImp(AliHLTTransBit)
+ClassImp(AliHLTTransBitV1)
+ClassImp(AliHLTTransBitV2)
-AliL3TransBit::AliL3TransBit()
+AliHLTTransBit::AliHLTTransBit()
{
// default constructor
fTable0 = 0;
fX0 = 0;
}
-AliL3TransBit::~AliL3TransBit()
+AliHLTTransBit::~AliHLTTransBit()
{
// destructor
if (fTable0!=0) delete [] fTable0;
if (fTable1!=0) delete [] fTable1;
}
-Double_t AliL3TransBitV1::FindOptimumX0()
+Double_t AliHLTTransBitV1::FindOptimumX0()
{
//find x0 for which derivation at xder1 is equal 1
Int_t x0=(Int_t)rint(exp(fBit0*log(2.)));
return fX0;
}
-void AliL3TransBitV1::Update()
+void AliHLTTransBitV1::Update()
{
//construct lookup tables for loosy compression from
if (fX0<1) fX0 = FindOptimumX0();
return;
}
-Double_t AliL3TransBitV2::FindOptimumX0()
+Double_t AliHLTTransBitV2::FindOptimumX0()
{
//find x0 for which derivation at xder1 is equal 1
const Float_t kxder1=1;
return fX0;
}
-void AliL3TransBitV2::Update()
+void AliHLTTransBitV2::Update()
{
//construct lookup tables for loosy compresion from
if (fX0<1) fX0 = FindOptimumX0();
#ifndef ALIL3TRANSBIT_H
#define ALIL3TRANSBIT_H
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3TransBit {
+class AliHLTTransBit {
public:
- AliL3TransBit();
- virtual ~AliL3TransBit();
+ AliHLTTransBit();
+ virtual ~AliHLTTransBit();
inline Int_t Get0to1(Int_t val0) const;
inline Int_t Get1to0(Int_t val1) const;
Int_t GetBit0() const {return fBit0;}
Int_t fBit1; // bit 1
Double_t fX0; // optimal X value(?)
- ClassDef(AliL3TransBit,1)
+ ClassDef(AliHLTTransBit,1)
};
-class AliL3TransBitV1 : public AliL3TransBit {
+typedef AliHLTTransBit AliL3TransBit; // for backward compatibility
+
+class AliHLTTransBitV1 : public AliHLTTransBit {
public:
- virtual ~AliL3TransBitV1(){}
+ virtual ~AliHLTTransBitV1(){}
virtual void Update();
virtual Double_t FindOptimumX0();
protected:
- ClassDef(AliL3TransBitV1,1)
+ ClassDef(AliHLTTransBitV1,1)
};
-class AliL3TransBitV2 : public AliL3TransBit {
+typedef AliHLTTransBitV1 AliL3TransBitV1; // for backward compatibility
+
+class AliHLTTransBitV2 : public AliHLTTransBit {
public:
- virtual ~AliL3TransBitV2(){}
+ virtual ~AliHLTTransBitV2(){}
virtual void Update();
virtual Double_t FindOptimumX0();
protected:
- ClassDef(AliL3TransBitV2,1)
+ ClassDef(AliHLTTransBitV2,1)
};
-Int_t AliL3TransBit::Get0to1(Int_t val0) const
+typedef AliHLTTransBitV2 AliL3TransBitV2; // for backward compatibility
+
+Int_t AliHLTTransBit::Get0to1(Int_t val0) const
{
//return compressed bit values
return fTable0[val0];
}
-Int_t AliL3TransBit::Get1to0(Int_t val1) const
+Int_t AliHLTTransBit::Get1to0(Int_t val1) const
{
//return uncompressed bit value
return fTable1[val1];
// Author: Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright & copy ALICE HLT Group
-/** \class AliL3VHDLClusterFinder
+/** \class AliHLTVHDLClusterFinder
<pre>
//____________________________________________________
-// AliL3VHDLClusterFinder
+// AliHLTVHDLClusterFinder
//
// The current VHDL cluster finder for HLT
// Based on STAR L3
</pre>
*/
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3AltroMemHandler.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTAltroMemHandler.h"
//#define VHDLDEBUG
-#include "AliL3VHDLClusterFinder.h"
+#include "AliHLTVHDLClusterFinder.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3VHDLClusterFinder)
+ClassImp(AliHLTVHDLClusterFinder)
-AliL3VHDLClusterFinder::AliL3VHDLClusterFinder()
+AliHLTVHDLClusterFinder::AliHLTVHDLClusterFinder()
{
// default constructor
fMatch = 4;
#endif
}
-AliL3VHDLClusterFinder::~AliL3VHDLClusterFinder()
+AliHLTVHDLClusterFinder::~AliHLTVHDLClusterFinder()
{
// destructor
#ifdef VHDLDEBUG
#endif
}
-void AliL3VHDLClusterFinder::ProcessDigits()
+void AliHLTVHDLClusterFinder::ProcessDigits()
{
//Loop over data like the analyzer of the VHDL code
const UChar_t kn=255;
while(fOP!=fFP) OutputMemory();
}
-void AliL3VHDLClusterFinder::MakeSequence(){
+void AliHLTVHDLClusterFinder::MakeSequence(){
// makes the sequence
if(!fTC) return;
else fSeq.fLastCharge=0;
}
-void AliL3VHDLClusterFinder::ProcessSequence()
+void AliHLTVHDLClusterFinder::ProcessSequence()
{
// processes the sequence
if(fNRow!=fRow) FlushMemory();
CompareSeq(); //merge or insert
}
-void AliL3VHDLClusterFinder::PrepareMemory()
+void AliHLTVHDLClusterFinder::PrepareMemory()
{
// prepares the memory
#ifdef VHDLDEBUG
fEP=fWP;
}
-void AliL3VHDLClusterFinder::FlushMemory()
+void AliHLTVHDLClusterFinder::FlushMemory()
{
// flushes the memory
#ifdef VHDLDEBUG
fEP=fWP;
}
-void AliL3VHDLClusterFinder::CompareSeq()
+void AliHLTVHDLClusterFinder::CompareSeq()
{
// compares sequences
while(fRP!=fEP){
InsertSeq(); //start new cluster
}
-void AliL3VHDLClusterFinder::MergeSeq()
+void AliHLTVHDLClusterFinder::MergeSeq()
{
// merges sequences
#ifdef VHDLDEBUG
fprintf(fdeb,"merged with Mean=%d TC=%d (new Merge=%d) %d %d\n",fSeqs[fPList[fRP]].fMean,fSeqs[fPList[fRP]].fTotalCharge,fSeqs[fPList[fRP]].fMerge+1,fRow,fPad);
#endif
if(fSeqs[fPList[fRP]].fRow!=fSeq.fRow){
- LOG(AliL3Log::kWarning,"AliL3VHDLClusterFinder::","Memory Check")
+ LOG(AliHLTLog::kWarning,"AliHLTVHDLClusterFinder::","Memory Check")
<<"Sequences can be merged on the same rows only."<<ENDLOG;
}
if(fSeqs[fPList[fRP]].fLastPad+1!=fSeq.fLastPad){
- LOG(AliL3Log::kWarning,"AliL3VHDLClusterFinder::","Memory Check")
+ LOG(AliHLTLog::kWarning,"AliHLTVHDLClusterFinder::","Memory Check")
<<"Sequences can be merged on consecutive pads only."<<ENDLOG;
}
IncWPointer();
}
-void AliL3VHDLClusterFinder::InsertSeq()
+void AliHLTVHDLClusterFinder::InsertSeq()
{
// inserts sequence
#ifdef VHDLDEBUG
IncWPointer();
}
-void AliL3VHDLClusterFinder::OutputMemory()
+void AliHLTVHDLClusterFinder::OutputMemory()
{
// output memory?
Float_t mtime=0,mpad=0;
}
}
-void AliL3VHDLClusterFinder::FreeSeq(UShort_t i)
+void AliHLTVHDLClusterFinder::FreeSeq(UShort_t i)
{
// frees the sequence
ClearSeq(i);
IncPointer(fLast,1,N_clmem);
}
-void AliL3VHDLClusterFinder::Clear()
+void AliHLTVHDLClusterFinder::Clear()
{
// clears everything
fFirst=0; //first list pointer
for(UInt_t i=0;i<N_clmem;i++) ClearSeq(i);
}
-void AliL3VHDLClusterFinder::ClearSeq(UShort_t i){
+void AliHLTVHDLClusterFinder::ClearSeq(UShort_t i){
// clears a sequence
fSeqs[i].fRow=0;
fSeqs[i].fLastPad=0;
fSeqs[i].fMerge=0;
}
-void AliL3VHDLClusterFinder::IncPointer(UShort_t &p, Short_t add, UShort_t N){
+void AliHLTVHDLClusterFinder::IncPointer(UShort_t &p, Short_t add, UShort_t N){
// increments pointer by 'add' in a circular buffer
Short_t pp=p;
pp+=add;
else p=UShort_t(pp);
}
-void AliL3VHDLClusterFinder::IncRPointer(){
+void AliHLTVHDLClusterFinder::IncRPointer(){
// increments pointer fRP
IncPointer(fRP);
}
-void AliL3VHDLClusterFinder::IncWPointer(){
+void AliHLTVHDLClusterFinder::IncWPointer(){
// increments pointer fWP
IncPointer(fWP);
if(fWP==fOP){
- LOG(AliL3Log::kWarning,"AliL3VHDLClusterFinder::IncWPointer","Memory Check")
+ LOG(AliHLTLog::kWarning,"AliHLTVHDLClusterFinder::IncWPointer","Memory Check")
<<"Write pointer overwrites output pointer."<<ENDLOG;
}
}
-void AliL3VHDLClusterFinder::NextFreeIndex(){
+void AliHLTVHDLClusterFinder::NextFreeIndex(){
// finds next free index
IncPointer(fFirst,1,N_clmem);
if(fFirst==fLast) {
- LOG(AliL3Log::kFatal,"AliL3VHDLClusterFinder::GetFreeIndex","Memory Check")
+ LOG(AliHLTLog::kFatal,"AliHLTVHDLClusterFinder::GetFreeIndex","Memory Check")
<<"No space left in sequence list: "<<fFirst<<"=="<<fLast<<ENDLOG;
}
}
#if 0
-void AliL3ClustFinderNew::WriteClusters(Int_t n_clusters,ClusterData *list)
+void AliHLTClustFinderNew::WriteClusters(Int_t n_clusters,ClusterData *list)
{
// writes clusters
Int_t thisrow,thissector;
if(fstdout==kTRUE)
cout<<"WriteCluster: padrow "<<fCurrentRow<<" pad "<<fpad << "+-"<<fpad2<<" time "<<ftime<<"+-"<<ftime2<<" charge "<<list[j].fTotalCharge<<endl;
- AliL3Transform::Slice2Sector(fCurrentSlice,fCurrentRow,thissector,thisrow);
- AliL3Transform::Raw2Local(xyz,thissector,thisrow,fpad,ftime);
- if(xyz[0]==0) LOG(AliL3Log::kError,"AliL3ClustFinder","Cluster Finder")
- <<AliL3Log::kDec<<"Zero cluster"<<ENDLOG;
+ AliHLTTransform::Slice2Sector(fCurrentSlice,fCurrentRow,thissector,thisrow);
+ AliHLTTransform::Raw2Local(xyz,thissector,thisrow,fpad,ftime);
+ if(xyz[0]==0) LOG(AliHLTLog::kError,"AliHLTClustFinder","Cluster Finder")
+ <<AliHLTLog::kDec<<"Zero cluster"<<ENDLOG;
if(fNClusters >= fMaxNClusters)
{
- LOG(AliL3Log::kError,"AliL3ClustFinder::WriteClusters","Cluster Finder")
- <<AliL3Log::kDec<<"Too many clusters"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTClustFinder::WriteClusters","Cluster Finder")
+ <<AliHLTLog::kDec<<"Too many clusters"<<ENDLOG;
return;
}
fSpacePointData[counter].fCharge = list[j].fTotalCharge;
//- Copyright & copy ALICE HLT Group
// See the implementation file for the detailed description
-#ifndef AliL3VHDLClusterFinder_H
-#define AliL3VHDLClusterFinder_H
+#ifndef AliHLTVHDLClusterFinder_H
+#define AliHLTVHDLClusterFinder_H
-#include "AliL3AltroMemHandler.h"
+#include "AliHLTAltroMemHandler.h"
struct VHDLClusterData
{
#define N_clmem 5000
-class AliL3VHDLClusterFinder
+class AliHLTVHDLClusterFinder
{
public:
- AliL3VHDLClusterFinder();
- virtual ~AliL3VHDLClusterFinder();
+ AliHLTVHDLClusterFinder();
+ virtual ~AliHLTVHDLClusterFinder();
void ProcessDigits();
Int_t GetNumberOfClusters() const {return fNClusters;}
private:
- AliL3AltroMemHandler fAltromem; //! pointer to the ALTRO memory?
+ AliHLTAltroMemHandler fAltromem; //! pointer to the ALTRO memory?
VCData fSeq; //! C-structure containing the data sequence
VCData fSeqs[N_clmem]; //! array of C-structures containg the data sequence
UShort_t fPList[N_mem]; // pad list
void ProcessSequence();
//void WriteClusters(Int_t n_clusters,ClusterData *list);
- ClassDef(AliL3VHDLClusterFinder,1)
+ ClassDef(AliHLTVHDLClusterFinder,1)
};
+typedef AliHLTVHDLClusterFinder AliL3VHDLClusterFinder; // for backward compatibility
+
#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3DATAHANDLER_H
-#define ALIL3DATAHANDLER_H
-
-#include "AliL3MemHandler.h"
-
-class AliL3TransBit;
-
-class AliL3DataHandler : public AliL3MemHandler {
-
- public:
- AliL3DataHandler();
- ~AliL3DataHandler();
-
- void Convert10to8Bit();
- Bool_t Memory2CompBinary(UInt_t nrow,AliL3DigitRowData *data);
- AliL3DigitRowData *CompBinary2Memory(UInt_t &nrows);
-
- private:
-
- AliL3TransBit *fBitTransformer; //! bit transsformer
-
- void Write(Byte_t *comp,UInt_t &index,UShort_t value);
- Short_t Read(Byte_t *comp,UInt_t &index);
- Short_t Test(Byte_t *comp,UInt_t index);
- Bool_t Memory2CompMemory(UInt_t nrow,AliL3DigitRowData *data,Byte_t *comp);
- UInt_t GetCompMemorySize(UInt_t row,AliL3DigitRowData *data);
- UInt_t GetMemorySize(UInt_t nrow,Byte_t *comp);
- Bool_t CompMemory2CompBinary(UInt_t nrow,Byte_t *comp,UInt_t size);
- Bool_t CompBinary2CompMemory(UInt_t &nrow,Byte_t *comp);
- UInt_t CompMemory2Memory(UInt_t nrow,AliL3DigitRowData *data,Byte_t *comp);
-
- ClassDef(AliL3DataHandler,1) //Data handler class
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3FFLOAT_H
-#define ALIL3FFLOAT_H
-
-#include "AliL3RootTypes.h"
-
-#ifndef USEFFLOAT
-typedef Float_t AliL3FFloat;
-#else
-
-//use Ints times Digits instead of Floats
-#define USEINTS
-
-#define DEFDIG 100
-#define DEFMIN -1000000
-#define DEFMAX 1000000
-
-#ifdef USEINTS
-
-//ROOT does not know about 64 bit integer
-#ifdef no_root
-typedef long long int Fnt_t;
-#else
-typedef Int_t Fnt_t;
-#endif
-
-class AliL3FFloat {
- public:
- AliL3FFloat(const Double_t val=0) {Set(val);}
- AliL3FFloat(const AliL3FFloat &f) {Set(f);}
- virtual ~AliL3FFloat();
-
- AliL3FFloat& operator = (const AliL3FFloat &f) {Set(f); return *this;}
- AliL3FFloat& operator = (const Double_t f) {Set(f); return *this;}
-
- operator const Double_t () const {return fVal;}
- operator const Float_t () const {return (Float_t)fVal;}
-#ifdef no_root
- operator const Fnt_t () const {return (Fnt_t)fVal;}
-#endif
- operator const Int_t () const {return (Int_t)fVal;}
-
-
- friend ostream& operator<<(ostream &os, const AliL3FFloat &f);
-
- friend AliL3FFloat operator + (const AliL3FFloat &f1,const AliL3FFloat &f2);
- friend AliL3FFloat operator + (const AliL3FFloat &f1,const Double_t f2);
- friend AliL3FFloat operator + (const Double_t f1, const AliL3FFloat &f2);
- friend AliL3FFloat operator + (const AliL3FFloat &f1);
- friend AliL3FFloat operator - (const AliL3FFloat &f1,const AliL3FFloat &f2);
- friend AliL3FFloat operator - (const AliL3FFloat &f1,const Double_t f2);
- friend AliL3FFloat operator - (const Double_t f1, const AliL3FFloat &f2);
- friend AliL3FFloat operator - (const AliL3FFloat &f1);
- friend AliL3FFloat operator * (const AliL3FFloat &f1,const AliL3FFloat &f2);
- friend AliL3FFloat operator * (const AliL3FFloat &f1,const Double_t f2);
- friend AliL3FFloat operator * (const Double_t f1, const AliL3FFloat &f2);
- friend AliL3FFloat operator / (const AliL3FFloat &f1,const AliL3FFloat &f2);
- friend AliL3FFloat operator / (const AliL3FFloat &f1,const Double_t f2);
- friend AliL3FFloat operator / (const Double_t f1, const AliL3FFloat &f2);
-
- AliL3FFloat& operator += (const AliL3FFloat &f);
- AliL3FFloat& operator += (const Double_t f);
- AliL3FFloat& operator -= (const AliL3FFloat &f);
- AliL3FFloat& operator -= (const Double_t f);
- AliL3FFloat& operator *= (const AliL3FFloat &f);
- AliL3FFloat& operator *= (const Double_t f);
- AliL3FFloat& operator /= (const AliL3FFloat &f);
- AliL3FFloat& operator /= (const Double_t f);
- //==,!=,>=, ...
- //++,--
-
- static void PrintStat();
- static void SetParams(Int_t dig=DEFDIG,Int_t min=DEFMIN,Int_t max=DEFMAX);
- void Set(const Double_t f=0);
- void Set(const AliL3FFloat &f);
- inline Double_t GetVal() const {return fVal;}
- inline Double_t GetExactVal() const {return fExactVal;}
- inline Fnt_t GetValInt() const {return fVali;}
-
- private:
-
- void Round(Double_t f);
- Bool_t CheckUpperBound();
- Bool_t CheckLowerBound();
- Bool_t CheckBounds() {return (CheckUpperBound() && CheckLowerBound());}
-
- Fnt_t fVali;
- Double_t fVal;
- Double_t fExactVal;
-
- static Int_t fDigits;
- static Int_t fMax;
- static Int_t fMin;
-
-#ifdef CALCSTATS
- static Int_t fN;
- static Int_t fNRounded;
- static Int_t fNOpAdds;
- static Int_t fNOpMults;
- static Int_t fNOpDivs;
- static Int_t fNOpSubs;
- static Int_t fNOverFlow;
- static Int_t fNUnderFlow;
- static Double_t fNDiff;
-#endif
-
- ClassDef(AliL3FFloat,1)
-};
-
-#else
-
-class AliL3FFloat {
- public:
- AliL3FFloat(const Double_t val=0) {Set(val);}
- AliL3FFloat(const AliL3FFloat &f) {Set(f);}
- virtual ~AliL3FFloat();
-
- AliL3FFloat& operator = (const AliL3FFloat &f) {Set(f); return *this;}
- AliL3FFloat& operator = (const Double_t f) {Set(f); return *this;}
-
- operator const Double_t () const {return fVal;}
- operator const Float_t () const {return (Float_t)fVal;}
- operator const Int_t () const {return (Int_t)fVal;}
-
- friend ostream& operator<<(ostream &os, const AliL3FFloat &f);
-
- friend AliL3FFloat operator + (const AliL3FFloat &f1,const AliL3FFloat &f2);
- friend AliL3FFloat operator + (const AliL3FFloat &f1,const Double_t f2);
- friend AliL3FFloat operator + (const Double_t f1, const AliL3FFloat &f2);
- friend AliL3FFloat operator + (const AliL3FFloat &f1);
- friend AliL3FFloat operator - (const AliL3FFloat &f1,const AliL3FFloat &f2);
- friend AliL3FFloat operator - (const AliL3FFloat &f1,const Double_t f2);
- friend AliL3FFloat operator - (const Double_t f1, const AliL3FFloat &f2);
- friend AliL3FFloat operator - (const AliL3FFloat &f1);
- friend AliL3FFloat operator * (const AliL3FFloat &f1,const AliL3FFloat &f2);
- friend AliL3FFloat operator * (const AliL3FFloat &f1,const Double_t f2);
- friend AliL3FFloat operator * (const Double_t f1, const AliL3FFloat &f2);
- friend AliL3FFloat operator / (const AliL3FFloat &f1,const AliL3FFloat &f2);
- friend AliL3FFloat operator / (const AliL3FFloat &f1,const Double_t f2);
- friend AliL3FFloat operator / (const Double_t f1, const AliL3FFloat &f2);
-
- AliL3FFloat& operator += (const AliL3FFloat &f);
- AliL3FFloat& operator += (const Double_t f);
- AliL3FFloat& operator -= (const AliL3FFloat &f);
- AliL3FFloat& operator -= (const Double_t f);
- AliL3FFloat& operator *= (const AliL3FFloat &f);
- AliL3FFloat& operator *= (const Double_t f);
- AliL3FFloat& operator /= (const AliL3FFloat &f);
- AliL3FFloat& operator /= (const Double_t f);
- //==,!=,>=, ...
- //++,--
-
- static void PrintStat();
- static void SetParams(Int_t dig=DEFDIG,Int_t min=DEFMIN,Int_t max=DEFMAX);
- void Set(const Double_t f=0);
- void Set(const AliL3FFloat &f);
- inline Double_t GetVal() const {return fVal;}
- inline Double_t GetExactVal() const {return fExactVal;}
-
- private:
-
- Double_t Round(Double_t f);
- Bool_t CheckUpperBound();
- Bool_t CheckLowerBound();
- Bool_t CheckBounds() {return (CheckUpperBound() && CheckLowerBound());}
-
- Double_t fVal;
- Double_t fExactVal;
-
- static Int_t fDigits;
- static Char_t fQuery[10];
- static Int_t fMax;
- static Int_t fMin;
-
-#ifdef CALCSTATS
- static Int_t fN;
- static Int_t fNRounded;
- static Int_t fNOpAdds;
- static Int_t fNOpMults;
- static Int_t fNOpDivs;
- static Int_t fNOpSubs;
- static Int_t fNOverFlow;
- static Int_t fNUnderFlow;
- static Double_t fNDiff;
-#endif
-
- ClassDef(AliL3FFloat,1)
-};
-
-#endif
-#endif
-#endif
-
-
-
-
+++ /dev/null
-// @(#) $Id$
-
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#ifndef macosx
-#pragma link C++ class AliL3TransBit;
-#pragma link C++ class AliL3TransBitV1;
-#pragma link C++ class AliL3TransBitV2;
-#pragma link C++ class AliL3DataHandler;
-#endif
-#pragma link C++ class AliL3AltroMemHandler;
-#pragma link C++ class AliL3VHDLClusterFinder;
-#pragma link C++ class AliL3TPCMapping;
-#pragma link C++ class AliL3DDLRawReader;
-#pragma link C++ class AliL3DDLRawReaderFile;
-#pragma link C++ class AliL3DDLTPCRawStream;
-#ifndef macosx
-#pragma link C++ class AliL3DDLDataFileHandler;
-#endif
-
-#ifdef USEFFLOAT
-#pragma link C++ class AliL3FFloat;
-#endif
-
-#endif
-
+++ /dev/null
-const Int_t AliL3TPCMapping::fgkNIROC = 5504;
-const Int_t AliL3TPCMapping::fgkIRows[fgkNIROC] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62};
-const Int_t AliL3TPCMapping::fgkIPad[fgkNIROC] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107};
-const Int_t AliL3TPCMapping::fgkICon[fgkNIROC] = {127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,132,133,133,133,133,134,134,134,135,135,135,135,9,9,9,9,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,132,133,133,133,133,134,134,134,135,135,135,135,9,9,9,9,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,132,133,133,133,133,134,134,134,135,135,135,135,9,9,9,9,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,131,131,131,131,132,132,132,132,133,133,133,133,134,134,134,135,135,135,135,9,9,9,9,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,127,127,127,128,128,128,128,129,129,129,129,130,130,130,130,131,131,131,131,132,132,132,133,133,133,133,134,134,134,134,135,135,135,135,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,127,136,136,136,128,137,137,137,129,138,138,138,130,130,130,130,131,140,140,140,141,132,132,133,142,142,142,134,134,134,134,135,144,144,144,18,18,18,9,8,8,8,8,16,16,16,7,6,6,15,14,14,14,5,4,4,4,4,12,12,12,3,11,11,11,2,10,10,10,1,136,136,136,136,137,137,137,137,138,138,138,138,130,139,139,139,140,140,140,140,141,141,141,142,142,142,142,134,143,143,143,144,144,144,144,18,18,18,18,17,17,17,8,16,16,16,16,15,15,15,14,14,14,14,13,13,13,4,12,12,12,12,11,11,11,11,10,10,10,10,136,136,136,136,137,137,137,137,138,138,138,138,139,139,139,139,140,140,140,140,141,141,141,141,142,142,142,142,143,143,143,143,144,144,144,144,18,18,18,18,17,17,17,17,16,16,16,16,15,15,15,15,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,10,10,10,10,136,136,136,136,137,137,137,137,138,138,138,138,139,139,139,139,140,140,140,140,141,141,141,141,142,142,142,142,143,143,143,143,144,144,144,144,18,18,18,18,17,17,17,17,16,16,16,16,15,15,15,15,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,10,10,10,10,136,136,136,136,137,137,137,137,138,138,138,138,139,139,139,139,140,140,140,140,141,141,141,141,142,142,142,142,143,143,143,143,144,144,144,144,18,18,18,18,17,17,17,17,16,16,16,16,15,15,15,15,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,10,10,10,10,136,136,136,145,146,137,137,137,147,138,138,138,139,139,139,139,139,149,140,140,140,141,141,141,141,151,142,142,142,143,143,143,143,153,144,144,144,18,18,18,27,17,17,17,17,16,16,16,25,15,15,15,15,14,14,14,23,13,13,13,13,13,12,12,12,21,11,11,11,20,19,10,10,10,145,145,145,145,146,146,146,146,147,147,147,147,139,139,148,148,148,149,149,149,149,141,141,150,150,151,151,151,151,152,143,143,143,153,153,153,153,27,27,27,27,17,17,17,26,25,25,25,25,24,24,15,15,23,23,23,23,22,22,22,13,13,21,21,21,21,20,20,20,20,19,19,19,19,145,145,145,145,146,146,146,146,147,147,147,147,148,148,148,148,148,149,149,149,149,150,150,150,150,151,151,151,151,152,152,152,152,153,153,153,153,27,27,27,27,26,26,26,26,25,25,25,25,24,24,24,24,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,145,145,145,145,146,146,146,146,147,147,147,147,148,148,148,148,148,149,149,149,149,150,150,150,150,151,151,151,151,151,152,152,152,152,153,153,153,153,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,145,145,145,145,146,146,146,146,147,147,147,147,148,148,148,148,148,149,149,149,149,150,150,150,150,151,151,151,151,151,152,152,152,152,153,153,153,153,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,145,145,145,145,146,146,146,146,147,147,147,147,157,157,148,148,148,149,149,149,149,150,150,150,150,151,151,160,160,160,152,152,152,152,153,153,153,153,27,27,27,27,26,26,26,26,34,34,34,25,25,24,24,24,24,23,23,23,23,22,22,22,31,31,21,21,21,21,20,20,20,20,19,19,19,19,154,154,154,154,155,155,155,155,155,156,156,156,156,157,157,157,157,158,158,158,158,158,150,150,150,159,160,160,160,160,161,152,152,152,152,162,162,162,162,36,36,36,36,26,26,26,26,35,34,34,34,34,33,24,24,24,32,32,32,32,32,31,31,31,31,30,30,30,30,29,29,29,29,29,28,28,28,28,154,154,154,154,155,155,155,155,155,156,156,156,156,157,157,157,157,158,158,158,158,158,159,159,159,159,160,160,160,160,161,161,161,161,161,162,162,162,162,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,32,32,32,32,32,31,31,31,31,30,30,30,30,29,29,29,29,29,28,28,28,28,154,154,154,154,155,155,155,155,155,156,156,156,156,157,157,157,157,158,158,158,158,158,159,159,159,159,160,160,160,160,161,161,161,161,161,162,162,162,162,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,32,32,32,32,32,31,31,31,31,30,30,30,30,29,29,29,29,29,28,28,28,28,154,154,154,154,155,155,155,155,155,156,156,156,156,156,157,157,157,157,158,158,158,158,159,159,159,159,159,160,160,160,160,161,161,161,161,161,162,162,162,162,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,33,32,32,32,32,31,31,31,31,30,30,30,30,30,29,29,29,29,29,28,28,28,28,154,154,154,154,155,164,164,164,164,165,156,156,156,156,157,157,157,166,158,158,167,167,159,159,159,159,159,160,160,169,169,161,161,161,161,161,162,162,162,162,36,36,36,36,35,35,35,35,35,43,43,34,34,33,33,33,33,33,41,41,32,32,40,31,31,31,30,30,30,30,39,38,38,38,38,29,28,28,28,28,154,163,163,163,164,164,164,164,164,165,165,165,165,165,166,166,166,166,167,167,167,167,159,159,168,168,168,169,169,169,169,170,170,170,170,170,162,171,171,171,45,45,45,36,44,44,44,44,44,43,43,43,43,42,42,42,33,33,41,41,41,41,40,40,40,40,39,39,39,39,39,38,38,38,38,38,37,37,37,28,163,163,163,163,163,164,164,164,164,165,165,165,165,166,166,166,166,166,167,167,167,167,167,168,168,168,168,168,169,169,169,169,170,170,170,170,170,171,171,171,171,45,45,45,45,44,44,44,44,44,43,43,43,43,42,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,37,37,37,37,37,163,163,163,163,163,164,164,164,164,165,165,165,165,166,166,166,166,166,167,167,167,167,167,168,168,168,168,168,169,169,169,169,170,170,170,170,170,171,171,171,171,45,45,45,45,44,44,44,44,44,43,43,43,43,42,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,37,37,37,37,37,163,163,163,163,163,164,164,164,164,165,165,165,165,166,166,166,166,166,167,167,167,167,167,168,168,168,168,168,169,169,169,169,170,170,170,170,170,171,171,171,171,45,45,45,45,44,44,44,44,44,43,43,43,43,42,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,37,37,37,37,37,163,163,163,163,172,173,173,173,164,165,165,165,165,174,166,166,175,175,175,167,176,176,176,168,168,168,168,177,178,169,169,169,169,170,170,179,179,179,171,171,171,171,45,45,45,45,53,53,53,44,44,43,43,43,43,52,51,42,42,42,42,50,50,50,41,49,49,49,40,40,48,39,39,39,39,38,47,47,47,46,37,37,37,37,172,172,172,172,172,173,173,173,173,174,174,174,174,174,175,175,175,175,175,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,179,171,171,171,180,54,45,45,45,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,46,46,46,46,46,172,172,172,172,172,173,173,173,173,174,174,174,174,174,175,175,175,175,175,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,179,180,180,180,180,54,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,46,46,46,46,46,172,172,172,172,172,173,173,173,173,173,174,174,174,174,174,175,175,175,175,176,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,180,180,180,180,180,54,54,54,54,54,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,172,172,172,172,172,173,173,173,173,173,174,174,174,174,174,175,175,175,175,176,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,180,180,180,180,180,54,54,54,54,54,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,181,181,181,182,182,182,182,183,183,183,184,184,184,185,185,185,185,186,186,186,187,187,187,187,188,188,188,189,189,189,190,190,190,191,191,191,191,180,180,180,180,180,180,54,54,54,54,54,54,65,65,65,65,64,64,64,63,63,63,62,62,62,61,61,61,61,60,60,60,59,59,59,59,58,58,58,57,57,57,56,56,56,56,55,55,55,181,181,181,182,182,182,182,183,183,183,183,184,184,184,185,185,185,185,186,186,186,187,187,187,187,188,188,188,189,189,189,190,190,190,191,191,191,191,192,192,192,192,253,253,253,253,66,66,66,66,65,65,65,65,64,64,64,63,63,63,62,62,62,61,61,61,61,60,60,60,59,59,59,59,58,58,58,57,57,57,57,56,56,56,56,55,55,55,181,181,181,182,182,182,182,183,183,183,183,184,184,184,185,185,185,185,186,186,186,187,187,187,187,188,188,188,189,189,189,190,190,190,191,191,191,191,192,192,192,192,253,253,253,253,66,66,66,66,65,65,65,65,64,64,64,63,63,63,62,62,62,61,61,61,61,60,60,60,59,59,59,59,58,58,58,57,57,57,57,56,56,56,56,55,55,55,181,181,181,182,182,182,182,183,183,183,183,184,184,184,185,185,185,185,186,186,186,187,187,187,188,188,188,188,189,189,189,190,190,190,191,191,191,191,192,192,192,192,253,253,253,253,66,66,66,66,65,65,65,65,64,64,64,63,63,63,62,62,62,62,61,61,61,60,60,60,59,59,59,59,58,58,58,57,57,57,57,56,56,56,56,55,55,55,181,181,181,181,182,182,182,183,183,183,183,184,184,184,185,185,185,185,186,186,186,186,187,187,187,188,188,188,188,189,189,189,190,190,190,190,191,191,191,192,192,192,192,253,253,253,253,66,66,66,66,65,65,65,64,64,64,64,63,63,63,62,62,62,62,61,61,61,60,60,60,60,59,59,59,59,58,58,58,57,57,57,57,56,56,56,55,55,55,55,181,181,181,181,182,182,194,183,183,195,195,184,184,184,185,197,197,197,186,186,186,186,187,187,187,188,188,188,188,189,189,189,190,190,190,190,191,191,203,192,192,192,192,253,253,253,253,66,66,66,66,77,65,65,64,64,64,64,63,63,63,62,62,62,62,61,61,61,60,60,60,60,71,71,71,59,58,58,58,69,69,57,57,68,56,56,55,55,55,55,181,193,193,193,194,194,194,195,195,195,195,184,184,184,197,197,197,197,198,198,198,186,199,199,199,200,200,200,200,189,189,189,202,202,202,190,203,203,203,204,204,204,192,253,254,254,254,66,78,78,78,77,77,77,64,76,76,76,63,63,63,74,74,74,74,73,73,73,60,72,72,72,71,71,71,71,58,58,58,69,69,69,69,68,68,68,67,67,67,55,193,193,193,193,194,194,194,195,195,195,195,196,196,196,196,197,197,197,198,198,198,198,199,199,199,199,200,200,200,201,201,201,201,202,202,202,202,203,203,203,204,204,204,204,254,254,254,254,78,78,78,78,77,77,77,76,76,76,76,75,75,75,75,74,74,74,73,73,73,73,72,72,72,72,71,71,71,70,70,70,70,69,69,69,69,68,68,68,67,67,67,67,193,193,193,193,194,194,194,195,195,195,195,196,196,196,196,197,197,197,198,198,198,198,199,199,199,199,200,200,200,201,201,201,201,202,202,202,202,203,203,203,204,204,204,204,254,254,254,254,78,78,78,78,77,77,77,76,76,76,76,75,75,75,75,74,74,74,73,73,73,73,72,72,72,72,71,71,71,70,70,70,70,69,69,69,69,68,68,68,67,67,67,67,193,193,193,193,194,194,194,195,195,195,195,196,196,196,196,197,197,197,198,198,198,198,199,199,199,199,200,200,200,201,201,201,201,202,202,202,202,203,203,203,204,204,204,204,254,254,254,254,78,78,78,78,77,77,77,76,76,76,76,75,75,75,75,74,74,74,73,73,73,73,72,72,72,72,71,71,71,70,70,70,70,69,69,69,69,68,68,68,67,67,67,67,193,193,193,193,194,194,194,194,195,195,195,196,196,196,196,197,197,197,197,198,198,198,199,199,199,199,200,200,200,200,201,201,201,201,202,202,202,202,203,203,203,204,204,204,204,254,254,254,254,78,78,78,78,77,77,77,76,76,76,76,75,75,75,75,74,74,74,74,73,73,73,73,72,72,72,71,71,71,71,70,70,70,70,69,69,69,68,68,68,68,67,67,67,67,193,193,193,205,194,194,194,194,207,207,195,196,196,196,196,197,197,209,209,198,198,198,199,199,199,211,200,200,200,200,201,201,201,201,202,202,202,214,203,203,203,204,204,204,216,255,254,254,254,90,78,78,78,77,77,77,88,76,76,76,75,75,75,75,74,74,74,74,85,73,73,73,72,72,72,83,83,71,71,70,70,70,70,69,81,81,68,68,68,68,79,67,67,67,205,205,205,205,194,206,206,206,207,207,207,208,208,196,196,209,209,209,209,210,210,198,211,211,211,211,212,212,212,200,201,201,213,213,214,214,214,214,203,203,203,216,216,216,216,255,255,255,255,90,90,90,90,77,77,77,88,88,88,88,87,87,75,75,74,86,86,86,85,85,85,85,72,84,84,83,83,83,83,70,70,82,82,81,81,81,80,80,80,68,79,79,79,79,205,205,205,205,206,206,206,206,207,207,207,208,208,208,208,209,209,209,209,210,210,210,210,211,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215,215,215,216,216,216,216,255,255,255,255,90,90,90,90,89,89,89,88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,85,84,84,84,84,83,83,83,83,82,82,82,82,81,81,81,80,80,80,80,79,79,79,79,205,205,205,205,206,206,206,206,207,207,207,208,208,208,208,209,209,209,209,210,210,210,210,211,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215,215,215,216,216,216,216,255,255,255,255,90,90,90,90,89,89,89,88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,85,84,84,84,84,83,83,83,83,82,82,82,82,81,81,81,80,80,80,80,79,79,79,79,205,205,205,205,206,206,206,206,207,207,207,208,208,208,208,209,209,209,209,210,210,210,210,211,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215,215,215,216,216,216,216,255,255,255,255,90,90,90,90,89,89,89,88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,85,84,84,84,84,83,83,83,83,82,82,82,82,81,81,81,80,80,80,80,79,79,79,79,205,205,205,205,206,206,206,206,207,207,207,207,208,208,208,208,209,209,209,210,210,210,210,210,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215,215,215,215,216,216,216,216,255,255,255,255,90,90,90,90,89,89,89,89,88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,84,84,84,84,84,83,83,83,82,82,82,82,81,81,81,81,80,80,80,80,79,79,79,79,217,217,217,217,218,218,206,206,207,207,207,219,208,208,208,220,221,221,221,210,210,222,222,222,223,223,211,224,224,212,212,213,213,213,225,226,226,226,226,215,215,215,215,228,228,228,228,256,256,256,256,102,102,102,102,89,89,89,89,100,100,100,100,99,87,87,87,86,86,98,98,85,97,97,96,96,96,84,84,95,95,95,94,82,82,82,93,81,81,81,80,80,92,92,91,91,91,91,217,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,221,221,221,222,222,222,222,222,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,215,215,215,215,228,228,228,228,256,256,256,256,102,102,102,102,89,89,89,89,100,100,100,100,99,99,99,99,98,98,98,98,97,97,97,96,96,96,96,96,95,95,95,94,94,94,94,93,93,93,93,92,92,92,92,91,91,91,91,217,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227,227,227,227,228,228,228,228,256,256,256,256,102,102,102,102,101,101,101,101,100,100,100,100,99,99,99,99,98,98,98,98,97,97,97,97,96,96,96,96,95,95,95,95,94,94,94,94,93,93,93,93,92,92,92,92,91,91,91,91,217,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227,227,227,227,228,228,228,228,256,256,256,256,102,102,102,102,101,101,101,101,100,100,100,100,99,99,99,99,98,98,98,98,97,97,97,97,96,96,96,96,95,95,95,95,94,94,94,94,93,93,93,93,92,92,92,92,91,91,91,91,217,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227,227,227,227,228,228,228,228,256,256,256,256,102,102,102,102,101,101,101,101,100,100,100,100,99,99,99,99,98,98,98,98,97,97,97,97,96,96,96,96,95,95,95,95,94,94,94,94,93,93,93,93,92,92,92,92,91,91,91,91,229,229,229,217,218,218,218,230,219,219,219,219,220,220,220,220,221,221,221,233,234,234,234,222,223,223,223,223,236,224,224,224,225,225,225,225,237,238,238,238,226,227,227,227,227,240,240,240,228,256,257,257,257,102,114,114,114,101,101,101,101,100,112,112,112,111,99,99,99,99,98,98,98,110,97,97,97,97,96,108,108,108,107,95,95,95,94,94,94,94,93,93,93,93,104,92,92,92,91,103,103,103,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,227,227,227,227,240,240,240,240,257,257,257,257,114,114,114,114,101,101,101,101,112,112,112,112,111,111,111,111,111,110,110,110,110,109,109,109,109,108,108,108,108,107,107,107,107,106,106,106,106,105,105,105,105,104,104,104,104,103,103,103,103,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,239,239,239,227,240,240,240,240,257,257,257,257,114,114,114,114,101,113,113,113,112,112,112,112,111,111,111,111,111,110,110,110,110,109,109,109,109,108,108,108,108,107,107,107,107,106,106,106,106,105,105,105,105,104,104,104,104,103,103,103,103,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,239,239,239,239,239,240,240,240,240,257,257,257,257,114,114,114,114,113,113,113,113,113,112,112,112,112,111,111,111,111,110,110,110,110,109,109,109,109,108,108,108,108,107,107,107,107,106,106,106,106,106,105,105,105,105,104,104,104,104,103,103,103,103,229,229,229,229,230,230,230,230,231,231,231,231,232,232,232,232,232,233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,239,239,239,239,239,240,240,240,240,257,257,257,257,114,114,114,114,113,113,113,113,113,112,112,112,112,111,111,111,111,110,110,110,110,109,109,109,109,108,108,108,108,107,107,107,107,106,106,106,106,106,105,105,105,105,104,104,104,104,103,103,103,103,241,229,229,229,230,230,230,230,231,231,231,231,244,232,232,232,232,233,233,233,233,246,234,234,234,235,235,235,235,236,236,236,236,237,237,237,249,238,238,238,250,239,239,239,239,239,240,240,240,252,258,257,257,257,126,114,114,114,113,113,113,113,113,124,112,112,112,123,111,111,111,110,110,110,110,109,109,109,109,108,108,108,120,107,107,107,107,106,106,106,106,118,105,105,105,105,104,104,104,104,103,103,103,115,241,241,241,241,242,242,242,230,243,243,243,231,231,244,244,244,244,245,245,245,233,246,246,246,246,247,247,247,235,235,236,248,248,248,249,249,249,249,250,250,250,250,239,239,239,239,251,252,252,252,252,258,258,258,258,126,126,126,126,125,113,113,113,113,124,124,124,124,123,123,123,123,122,122,122,110,109,109,121,121,121,120,120,120,120,107,119,119,119,118,118,118,118,105,105,117,117,117,104,116,116,116,115,115,115,115,241,241,241,241,242,242,242,242,243,243,243,243,243,244,244,244,244,245,245,245,245,246,246,246,246,247,247,247,247,247,248,248,248,248,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,258,258,258,258,126,126,126,126,125,125,125,125,125,124,124,124,124,123,123,123,123,122,122,122,122,121,121,121,121,121,120,120,120,120,119,119,119,119,118,118,118,118,117,117,117,117,117,116,116,116,116,115,115,115,115,241,241,241,241,242,242,242,242,243,243,243,243,243,244,244,244,244,245,245,245,245,246,246,246,246,247,247,247,247,247,248,248,248,248,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,258,258,258,258,126,126,126,126,125,125,125,125,125,124,124,124,124,123,123,123,123,122,122,122,122,121,121,121,121,121,120,120,120,120,119,119,119,119,118,118,118,118,117,117,117,117,117,116,116,116,116,115,115,115,115,241,241,241,241,242,242,242,242,242,243,243,243,243,244,244,244,244,245,245,245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,248,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,258,258,258,258,126,126,126,126,125,125,125,125,125,124,124,124,124,123,123,123,123,122,122,122,122,122,121,121,121,121,120,120,120,120,119,119,119,119,119,118,118,118,118,117,117,117,117,116,116,116,116,116,115,115,115,115,241,241,241,241,242,242,242,242,242,243,243,243,243,244,244,244,244,245,245,245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,248,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,258,258,258,258,126,126,126,126,125,125,125,125,125,124,124,124,124,123,123,123,123,122,122,122,122,122,121,121,121,121,120,120,120,120,119,119,119,119,119,118,118,118,118,117,117,117,117,116,116,116,116,116,115,115,115,115};
-const Int_t AliL3TPCMapping::fgkIPin[fgkNIROC] = {2,1,3,5,2,1,3,5,2,1,3,5,2,4,1,2,1,3,5,2,1,3,5,2,1,3,5,2,4,1,2,1,3,5,5,3,1,2,1,4,2,5,3,1,2,5,3,1,2,5,3,1,2,1,4,2,5,3,1,2,5,3,1,2,5,3,1,2,4,6,7,9,4,6,7,9,4,6,7,9,6,3,5,4,6,7,9,4,6,7,9,4,6,7,9,6,3,5,4,6,7,9,9,7,6,4,5,3,6,9,7,6,4,9,7,6,4,9,7,6,4,5,3,6,9,7,6,4,9,7,6,4,9,7,6,4,8,10,11,13,8,10,11,13,8,10,11,13,8,7,9,8,10,11,13,8,10,11,13,8,10,11,13,8,7,9,8,10,11,13,13,11,10,8,9,7,8,13,11,10,8,13,11,10,8,13,11,10,8,9,7,8,13,11,10,8,13,11,10,8,13,11,10,8,12,14,15,17,12,14,15,17,12,14,15,17,10,11,13,12,14,15,17,12,14,15,17,12,14,15,17,10,11,13,12,14,15,17,17,15,14,12,13,11,10,17,15,14,12,17,15,14,12,17,15,14,12,13,11,10,17,15,14,12,17,15,14,12,17,15,14,12,16,18,19,21,16,18,21,19,16,18,21,19,12,14,15,17,16,18,21,19,16,18,19,16,18,21,19,12,14,15,17,16,18,21,19,19,21,18,16,17,15,14,12,19,21,18,16,19,18,16,19,21,18,16,17,15,14,12,19,21,18,16,19,21,18,16,21,19,18,16,20,0,2,1,20,2,0,1,20,2,0,1,16,18,21,19,20,4,2,0,0,20,21,20,4,2,0,16,18,21,19,20,4,2,0,0,2,4,20,19,21,18,16,0,2,4,20,21,20,0,0,2,4,20,19,21,18,16,1,0,2,20,1,0,2,20,1,2,0,20,4,6,3,5,6,4,3,5,6,4,3,5,20,0,1,3,8,6,1,3,2,1,3,8,6,1,3,20,4,2,0,8,6,1,3,3,1,6,8,0,2,4,20,3,1,6,8,3,1,2,3,1,6,8,3,1,0,20,5,3,4,6,5,3,4,6,5,3,6,4,8,10,7,9,10,8,7,9,10,8,7,9,4,2,5,7,12,10,5,7,6,4,5,7,12,10,5,7,8,6,1,3,12,10,5,7,7,5,10,12,3,1,6,8,7,5,10,12,7,5,4,6,7,5,10,12,7,5,2,4,9,7,8,10,9,7,8,10,9,7,10,8,12,14,13,15,14,12,13,15,14,12,13,15,8,6,9,13,16,14,9,13,10,8,9,13,16,14,9,13,12,10,5,7,16,14,9,13,13,9,14,16,7,5,10,12,13,9,14,16,13,9,8,10,13,9,14,16,13,9,6,8,15,13,12,14,15,13,12,14,15,13,14,12,16,18,17,19,18,16,17,19,18,16,17,19,12,10,15,17,20,18,15,17,14,12,15,17,20,18,15,17,16,14,9,13,20,18,15,17,17,15,18,20,13,9,14,16,17,15,18,20,17,15,12,14,17,15,18,20,17,15,10,12,19,17,16,18,19,17,16,18,19,17,18,16,20,22,21,1,2,22,20,21,2,22,20,21,18,16,14,19,21,1,22,19,21,18,16,19,21,5,22,19,21,20,18,15,17,1,22,19,21,21,19,22,1,17,15,18,20,21,19,22,5,21,19,16,18,21,19,22,1,21,19,14,16,18,21,20,22,2,21,20,22,2,1,21,22,20,4,2,3,5,4,1,3,5,4,1,3,5,22,20,1,3,5,4,2,3,5,22,20,1,3,1,3,7,9,1,22,19,21,4,2,3,5,5,3,2,4,21,19,22,1,9,7,3,1,3,1,20,22,5,3,2,4,5,3,1,20,22,5,3,1,4,5,3,1,4,5,3,2,4,8,6,7,9,8,6,7,9,8,6,7,9,6,4,2,7,9,8,6,7,9,4,2,5,7,4,2,11,13,4,2,3,5,8,6,7,9,9,7,6,8,5,3,2,4,13,11,2,4,7,5,2,4,9,7,6,8,9,7,2,4,6,9,7,6,8,9,7,6,8,9,7,6,8,12,10,11,13,12,10,11,13,12,10,11,13,12,10,8,11,13,12,10,11,13,8,6,9,11,10,8,6,15,17,8,6,7,9,12,10,11,13,13,11,10,12,9,7,6,8,17,15,6,8,10,11,9,6,8,13,11,10,12,13,11,8,10,12,13,11,10,12,13,11,10,12,13,11,10,12,18,16,15,17,16,14,15,17,16,14,15,17,18,16,14,15,17,16,14,15,17,12,10,13,15,16,14,12,19,21,12,10,11,13,16,14,15,17,17,15,14,16,13,11,10,12,21,19,12,14,16,15,13,10,12,17,15,14,16,17,15,14,16,18,17,15,14,16,17,15,14,16,17,15,16,18,14,20,19,21,20,18,19,21,20,18,19,21,1,3,20,19,21,20,18,19,21,16,14,17,19,20,18,3,5,7,16,14,15,17,20,18,19,21,21,19,18,20,17,15,14,16,7,5,3,18,20,19,17,14,16,21,19,18,20,21,19,20,3,1,21,19,18,20,21,19,18,20,21,19,20,14,2,1,3,5,1,3,5,7,9,2,1,3,5,4,2,5,7,1,3,5,7,9,20,18,21,5,4,2,1,9,1,20,18,19,21,2,1,3,5,5,3,1,2,21,19,18,20,1,9,1,2,4,5,21,18,20,9,7,5,3,1,7,5,2,4,5,3,1,2,9,7,5,3,1,5,3,1,2,6,4,7,9,6,4,2,11,13,6,4,7,9,8,6,9,11,6,4,2,11,13,1,3,7,9,8,6,11,13,2,3,5,7,9,6,4,7,9,9,7,4,6,9,7,5,3,2,13,11,6,8,9,7,3,1,13,11,2,4,6,11,9,6,8,9,7,4,6,13,11,2,4,6,9,7,4,6,10,8,11,13,12,10,8,15,17,10,8,11,13,12,10,13,15,12,10,8,15,17,4,2,11,13,12,10,15,17,8,6,4,11,13,10,8,11,13,13,11,8,10,13,11,4,6,8,17,15,10,12,13,11,2,4,17,15,8,10,12,15,13,10,12,13,11,8,10,17,15,8,10,12,13,11,8,10,14,12,15,17,18,16,14,19,21,16,14,12,15,17,16,14,17,19,16,14,19,21,10,8,6,15,17,16,14,19,21,14,12,10,15,17,14,12,15,17,17,15,12,14,17,15,10,12,14,21,19,14,16,17,15,6,8,10,21,19,14,16,19,17,14,16,17,15,12,14,16,21,19,14,16,18,17,15,12,14,18,16,19,21,20,4,2,0,1,0,20,18,19,21,20,18,21,3,20,18,1,3,16,14,12,19,21,20,18,2,0,20,18,16,19,21,18,16,19,21,21,19,16,18,21,19,16,18,20,0,2,18,20,21,19,12,14,16,3,1,18,20,3,21,18,20,21,19,18,20,0,1,0,2,4,20,21,19,16,18,20,0,1,3,10,8,6,3,5,6,4,2,1,3,0,1,5,7,2,0,5,7,20,18,0,1,3,6,4,1,3,0,1,3,5,7,20,2,0,1,1,0,2,20,7,5,3,1,0,3,1,4,6,3,1,0,18,20,7,5,0,2,7,5,1,0,3,1,2,4,6,5,3,6,8,10,3,1,0,20,6,4,2,5,7,14,12,7,9,10,8,5,7,6,4,2,9,13,8,6,4,9,13,6,4,2,5,7,10,8,5,7,6,4,2,9,13,6,4,3,5,5,3,4,6,13,9,2,4,6,7,5,8,10,7,5,2,4,6,13,9,4,6,8,13,9,2,4,6,7,5,8,10,9,7,12,14,7,5,2,4,6,12,10,8,9,13,18,16,13,15,14,12,9,13,12,10,8,15,17,14,12,10,15,17,12,10,8,9,13,14,12,9,13,12,10,8,15,17,10,8,7,9,9,7,8,10,17,15,8,10,12,13,9,12,14,13,9,8,10,12,17,15,10,12,14,17,15,8,10,12,13,9,12,14,15,13,16,18,13,9,8,10,12,18,16,14,15,17,22,20,17,19,18,16,15,17,18,16,14,19,21,20,18,16,19,21,18,16,14,15,17,18,16,15,17,18,16,14,19,21,14,12,13,15,15,13,12,14,21,19,14,16,18,17,15,16,18,17,15,14,16,18,21,19,16,18,20,21,19,14,16,18,17,15,16,18,19,17,20,22,17,15,14,16,18,22,20,19,21,5,1,3,5,21,22,20,19,21,5,22,20,1,3,5,22,1,3,5,22,20,19,21,5,1,22,20,19,21,22,20,1,3,5,18,16,17,19,19,17,16,18,5,3,1,20,22,21,19,20,22,1,5,21,19,20,22,5,3,1,22,5,3,1,20,22,5,21,19,20,22,21,5,3,1,5,21,19,20,22,2,1,3,7,9,4,2,7,9,2,1,3,7,9,6,4,2,7,9,4,2,7,9,2,1,3,7,9,2,3,5,7,9,6,4,2,7,9,22,20,21,5,5,21,20,22,9,7,2,4,6,9,7,5,3,2,9,7,3,1,2,9,7,2,4,9,7,2,4,6,9,7,3,1,2,9,7,2,4,9,7,3,1,2,8,6,4,11,13,8,6,11,13,8,6,4,11,13,12,10,8,11,13,8,6,11,13,8,6,4,11,13,8,6,4,11,13,12,10,8,11,13,1,3,7,9,9,7,3,1,13,11,8,10,12,13,11,4,6,8,13,11,4,6,8,13,11,6,8,13,11,8,10,12,13,11,4,6,8,13,11,6,8,13,11,4,6,8,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,16,14,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,16,14,15,17,6,4,2,11,13,13,11,2,4,6,17,15,14,16,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,14,16,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,19,21,12,10,8,15,17,17,15,8,10,12,21,19,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,4,2,1,4,2,1,3,1,3,5,8,6,4,2,1,3,5,6,4,2,6,4,2,1,4,2,1,6,4,2,6,4,2,4,2,1,3,20,18,16,14,19,21,21,19,14,16,18,20,3,1,2,4,2,4,6,2,4,6,1,2,4,1,2,4,6,2,4,6,5,3,1,2,4,6,8,5,3,1,3,1,2,4,1,2,4,6,3,5,8,6,5,7,4,2,7,9,10,2,1,6,4,7,9,8,1,3,10,8,3,5,6,3,5,10,8,1,8,1,3,8,6,5,7,4,2,1,3,3,1,2,4,3,1,2,4,7,5,6,8,3,1,8,1,8,10,5,3,6,5,3,8,10,3,1,8,9,7,4,6,1,2,10,9,7,2,4,7,5,6,8,5,3,6,8,7,9,12,10,9,11,8,6,11,13,12,3,5,10,8,11,13,10,5,7,14,12,7,9,8,7,9,12,3,5,10,5,7,12,10,9,11,8,6,5,7,7,5,6,8,7,5,6,8,11,9,10,12,7,5,10,5,3,12,9,7,8,9,7,12,14,7,5,10,13,11,8,10,5,3,12,13,11,6,8,11,9,10,12,9,7,8,10,11,13,16,14,13,15,12,10,15,17,14,7,9,14,12,15,17,12,9,11,16,11,13,12,10,11,13,14,7,9,12,9,11,16,14,13,15,12,10,9,11,9,11,10,12,11,9,10,12,15,13,14,16,11,9,12,9,7,14,13,11,10,12,13,11,16,11,9,12,17,15,12,14,9,7,14,17,15,10,12,15,13,14,16,13,11,10,14,12,15,17,18,17,19,16,14,19,21,16,11,13,18,16,19,21,16,14,13,15,18,15,17,16,14,15,17,16,11,13,16,14,13,15,18,17,19,16,14,13,15,13,15,14,16,15,13,14,16,19,17,18,15,13,14,16,13,11,16,17,15,14,16,17,15,18,15,13,14,16,21,19,16,18,13,11,16,21,19,14,16,19,17,18,17,15,12,14,18,16,19,21,20,21,0,20,18,0,1,18,15,17,20,0,1,3,20,18,17,19,20,19,21,20,18,19,21,18,15,17,20,18,17,19,20,21,0,20,18,17,19,17,19,18,20,19,17,18,20,0,21,20,19,17,18,20,17,15,18,21,19,18,20,21,19,20,19,17,18,20,3,1,0,20,17,15,18,1,0,18,20,0,21,20,21,19,16,18,20,2,0,1,4,2,1,6,4,2,3,20,19,21,6,4,2,5,2,0,1,21,2,0,1,4,2,0,1,20,19,21,2,0,1,21,4,2,1,2,0,1,21,21,1,0,2,21,1,0,2,1,2,4,21,1,0,2,21,19,20,1,0,2,4,1,0,2,21,1,0,2,5,2,4,6,21,19,20,3,2,4,6,1,2,4,1,0,2,20,6,4,3,5,8,6,3,12,10,8,5,6,4,2,0,10,8,7,8,6,4,3,6,4,3,5,8,6,3,2,0,1,3,6,4,3,5,8,6,3,6,4,3,5,5,3,4,6,5,3,4,6,3,6,8,5,3,4,6,3,1,0,2,3,6,8,5,3,4,6,3,4,6,8,7,8,10,0,2,4,6,5,8,10,12,3,6,8,5,3,4,6,10,8,7,9,10,5,7,16,14,7,9,10,8,1,3,12,9,13,14,12,10,5,10,8,7,9,12,10,5,6,4,5,7,10,8,7,9,12,10,5,10,8,7,9,7,9,8,10,9,7,8,10,5,10,12,9,7,8,10,7,5,4,6,5,10,12,9,7,8,10,5,10,12,14,13,9,12,3,1,8,10,9,7,14,16,7,5,10,9,7,8,10,14,12,13,15,12,9,13,20,18,13,15,14,12,5,7,14,15,17,18,16,7,9,14,12,13,15,14,7,9,10,8,9,13,14,12,13,15,16,14,7,14,12,13,15,13,15,12,14,15,13,12,14,7,14,16,15,13,12,14,13,9,8,10,9,7,14,15,13,12,14,9,7,16,18,17,15,14,7,5,12,14,15,13,18,20,13,9,12,15,13,12,14,18,16,17,19,16,14,15,17,22,17,19,18,16,9,13,18,16,19,21,20,13,15,18,16,17,19,18,16,13,15,14,12,15,17,18,16,17,19,18,9,13,18,16,17,19,17,19,16,18,19,17,16,18,13,9,18,19,17,16,18,17,15,12,14,15,13,16,18,19,17,16,18,15,13,20,21,19,16,18,13,9,16,18,19,17,22,17,15,14,16,19,17,16,18,22,20,21,1,20,18,19,21,2,1,21,22,20,15,17,22,20,1,3,22,17,19,22,20,21,1,22,20,17,19,18,16,19,21,22,20,21,1,20,15,17,22,20,21,1,3,21,20,22,1,21,20,22,17,15,20,1,21,20,22,21,19,16,18,19,17,20,22,1,21,20,22,19,17,22,3,1,20,22,17,15,20,22,21,1,2,21,19,18,20,1,21,20,22,4,2,3,5,22,4,2,1,4,3,5,1,3,19,21,4,2,5,7,3,5,21,4,2,3,5,4,2,1,21,22,20,1,3,4,2,3,5,22,19,21,4,2,3,5,5,1,2,4,5,3,2,4,21,19,22,5,3,2,4,3,1,20,22,21,1,2,4,5,3,2,4,21,5,3,7,5,2,4,21,19,3,1,5,3,4,1,2,4,22,5,3,2,4,8,6,7,9,8,6,3,5,8,6,7,4,2,5,7,8,6,9,11,2,1,7,9,8,6,7,9,8,6,3,5,4,2,5,7,8,6,7,9,4,2,1,8,6,7,9,9,7,6,8,9,7,6,8,1,2,4,9,7,6,8,7,5,2,4,5,3,6,8,9,7,6,8,9,7,1,2,11,9,6,8,7,5,2,4,7,6,8,5,3,6,8,9,7,6,8,12,10,11,13,12,10,7,9,10,9,11,8,6,9,11,12,10,13,15,6,4,11,13,12,10,11,13,12,10,7,9,8,6,9,11,12,10,11,13,6,3,5,12,10,11,13,11,13,10,12,13,11,10,12,5,3,6,13,11,10,12,11,9,6,8,9,7,10,12,13,11,10,12,13,11,4,6,15,13,10,12,11,9,6,8,11,9,10,9,7,10,12,13,11,10,12,16,14,15,17,16,14,11,13,12,13,15,12,10,13,15,16,14,17,19,10,8,15,17,16,14,15,17,16,14,11,13,12,10,13,15,16,14,15,17,8,7,9,16,14,15,17,15,17,14,16,17,15,14,16,9,7,8,17,15,14,16,15,13,10,12,13,11,14,16,17,15,14,16,17,15,8,10,19,17,14,16,15,13,10,12,15,13,12,13,11,14,16,17,15,14,16,20,18,19,21,20,18,15,17,16,14,17,19,16,14,17,19,20,18,21,16,14,12,19,21,20,18,19,20,18,15,17,16,14,17,19,20,18,19,21,12,10,11,13,20,18,19,21,19,21,18,20,21,19,18,20,13,11,10,12,21,19,18,20,19,17,14,16,17,15,18,20,19,18,20,21,19,12,14,16,21,18,20,19,17,14,16,19,17,14,16,17,15,18,20,21,19,18,20,4,2,1,3,1,3,19,21,20,18,21,1,20,18,21,1,2,1,3,20,18,2,1,3,2,1,21,1,3,19,21,20,18,21,1,4,2,1,3,16,14,15,17,4,2,1,3,3,1,2,4,3,1,2,4,17,15,14,16,3,1,2,4,1,21,18,20,21,19,3,1,21,1,2,3,1,2,18,20,3,1,2,1,21,18,20,1,21,18,20,21,19,3,1,3,1,2,4,8,6,5,7,4,2,5,7,4,2,3,5,4,2,3,5,4,5,7,8,6,4,5,7,4,3,5,4,2,5,7,4,2,3,5,8,6,5,7,20,18,19,21,8,6,5,7,7,5,6,8,7,5,6,8,21,19,18,20,7,5,6,8,5,3,2,4,7,5,2,4,5,3,4,7,5,4,6,8,7,5,4,5,3,2,4,5,3,2,4,7,5,2,4,7,5,6,8,12,10,9,11,8,6,9,11,8,6,7,9,8,6,7,9,8,6,9,11,12,10,9,11,8,6,7,9,8,6,9,11,8,6,7,9,12,10,9,11,4,2,1,3,12,10,9,11,9,11,10,12,11,9,10,12,3,1,2,4,11,9,10,12,9,7,6,8,11,9,6,8,9,7,6,8,11,9,10,12,11,9,6,8,9,7,6,8,9,7,6,8,11,9,6,8,11,9,10,12,16,14,13,15,12,10,13,15,12,10,11,13,12,10,11,13,12,10,13,15,16,14,13,15,12,10,11,13,12,10,13,15,12,10,11,13,16,14,13,15,8,6,5,7,16,14,13,15,13,15,14,16,15,13,14,16,7,5,6,8,15,13,14,16,13,11,10,12,15,13,10,12,13,11,10,12,15,13,14,16,15,13,10,12,13,11,10,12,13,11,10,12,15,13,10,12,15,13,14,16,20,18,17,19,16,14,17,19,16,14,15,17,16,14,15,17,16,14,17,19,20,18,17,19,16,14,15,17,16,14,17,19,16,14,15,17,20,18,17,19,12,10,9,11,20,18,17,19,17,19,18,20,19,17,18,20,11,9,10,12,19,17,18,20,17,15,14,16,19,17,14,16,17,15,14,16,19,17,18,20,19,17,14,16,17,15,14,16,17,15,14,16,19,17,14,16,19,17,18,20,4,2,0,21,20,18,21,2,20,18,19,21,20,18,19,21,20,18,21,0,4,2,0,21,20,18,19,21,0,20,18,21,20,18,19,21,1,2,0,1,21,16,14,13,15,2,0,1,21,21,1,0,2,21,1,0,2,15,13,14,16,21,1,0,2,1,21,19,18,20,21,18,20,0,21,19,18,20,21,0,2,4,0,21,18,20,21,19,18,20,21,19,18,20,2,21,18,20,21,0,2,4,8,6,1,3,6,4,0,1,6,4,2,0,2,0,1,3,6,4,2,1,8,6,1,3,6,4,2,0,4,2,1,3,4,2,0,3,5,6,4,3,5,20,18,17,19,6,4,3,5,5,3,4,6,5,3,4,6,19,17,18,20,5,3,4,6,5,3,0,2,4,3,1,2,4,0,2,4,6,3,1,6,8,1,2,4,6,3,1,0,2,0,2,4,6,1,0,4,6,3,1,6,8,12,10,5,7,10,8,3,5,10,8,1,3,6,4,5,7,10,8,3,5,12,10,5,7,10,8,1,3,8,6,5,7,10,8,6,7,9,10,8,7,9,0,1,3,21,10,8,7,9,7,9,8,10,9,7,8,10,21,3,1,0,9,7,8,10,9,7,6,8,10,7,5,6,8,3,1,8,10,7,5,10,12,5,3,8,10,7,5,4,6,3,1,8,10,5,3,8,10,7,5,10,12,16,14,9,13,14,12,7,9,14,12,5,7,12,10,8,9,13,14,12,7,9,16,14,9,13,14,12,5,7,12,10,9,13,14,12,13,15,14,12,13,15,6,4,2,5,7,14,12,13,15,13,15,12,14,15,13,12,14,7,5,2,4,6,15,13,12,14,15,13,12,14,13,9,10,12,7,5,12,14,13,9,14,16,9,7,12,14,13,9,8,10,12,7,5,12,14,9,7,12,14,13,9,14,16,20,18,15,17,18,16,13,15,18,16,9,13,18,16,14,15,17,18,16,13,15,20,18,15,17,18,16,9,13,16,14,15,17,18,16,17,19,18,16,17,19,12,10,8,9,13,18,16,17,19,17,19,16,18,19,17,16,18,13,9,8,10,12,19,17,16,18,19,17,16,18,17,15,14,16,13,9,16,18,17,15,18,20,15,13,16,18,17,15,14,16,18,13,9,16,18,15,13,16,18,17,15,18,20,2,22,19,21,22,20,17,19,22,20,15,17,2,22,20,19,21,22,20,17,19,1,22,19,21,22,20,15,17,20,18,19,21,22,20,21,1,22,20,21,1,18,16,14,15,17,22,20,21,1,3,21,20,22,1,21,20,22,17,15,14,16,18,1,21,20,22,1,21,20,22,21,19,18,20,17,15,20,22,21,19,22,1,19,17,20,22,21,19,20,22,2,17,15,20,22,19,17,20,22,21,19,22,2,4,1,3,5,1,3,5,21,2,1,3,19,21,4,1,3,5,1,3,5,21,4,2,3,5,2,1,3,19,21,22,1,3,5,4,2,3,5,4,2,3,5,22,20,19,21,5,4,2,3,5,5,1,2,4,5,3,2,4,5,21,19,20,22,5,3,2,4,5,3,2,4,5,3,1,22,21,19,3,1,2,5,3,2,4,21,5,3,1,5,3,1,4,21,19,3,1,2,21,5,3,1,5,3,1,4,8,6,7,9,4,2,7,9,6,4,5,7,9,8,6,7,9,4,2,7,9,8,6,7,9,6,4,5,7,9,4,2,7,9,8,6,7,9,8,6,7,9,2,1,3,7,9,8,6,7,9,9,7,6,8,9,7,6,8,9,7,3,1,2,9,7,6,8,9,7,6,8,9,7,2,4,9,7,5,4,6,9,7,6,8,9,7,2,4,9,7,6,8,9,7,5,4,6,9,7,2,4,9,7,6,8,12,10,11,13,8,6,11,13,12,10,8,11,13,12,10,11,13,8,6,11,13,12,10,11,13,12,10,8,11,13,8,6,11,13,12,10,11,13,12,10,11,13,8,6,4,11,13,12,10,11,13,11,13,10,12,13,11,10,12,13,11,4,6,8,13,11,10,12,13,11,10,12,13,11,6,8,13,11,8,10,12,13,11,10,12,13,11,6,8,13,11,10,12,13,11,8,10,12,13,11,6,8,13,11,10,12,16,14,15,17,14,12,10,15,17,16,14,15,17,16,14,15,17,14,12,10,15,17,16,14,15,17,16,14,15,17,14,12,10,15,17,16,14,15,17,16,14,15,17,14,12,10,15,17,16,14,15,17,15,17,14,16,17,15,14,16,17,15,10,12,14,17,15,14,16,17,15,14,16,17,15,10,12,14,17,15,14,16,17,15,14,16,17,15,10,12,14,17,15,14,16,17,15,14,16,17,15,10,12,14,17,15,14,16,20,18,19,21,20,18,16,19,21,20,18,19,21,20,18,19,21,20,18,16,19,21,20,18,19,21,20,18,19,21,20,18,16,19,21,20,18,19,21,20,18,19,21,20,18,16,19,21,20,18,19,21,19,21,18,20,21,19,18,20,21,19,16,18,20,21,19,18,20,21,19,18,20,21,19,16,18,20,21,19,18,20,21,19,18,20,21,19,16,18,20,21,19,18,20,21,19,18,20,21,19,16,18,20,21,19,18,20};
-const Int_t AliL3TPCMapping::fgkIFec[fgkNIROC] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,18,18,18,19,19,19,19,20,20,20,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,26,26,26,27,27,27,28,28,28,28,8,8,8,8,8,8,9,9,9,9,9,9,32,32,32,32,33,33,33,34,34,34,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,40,40,40,41,41,41,41,42,42,42,18,18,18,19,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,26,26,26,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,34,34,34,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,41,42,42,42,18,18,18,19,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,26,26,26,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,34,34,34,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,41,42,42,42,18,18,18,19,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,34,34,34,35,35,35,35,36,36,36,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,41,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,35,35,35,35,36,36,36,37,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,35,35,35,35,36,36,36,37,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,22,22,22,22,23,23,23,23,24,24,24,25,25,25,25,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,35,35,35,35,36,36,36,37,37,37,37,38,38,38,38,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,36,36,36,36,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,36,36,36,36,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,36,36,36,36,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,23,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,37,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,23,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,37,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,23,23,23,23,23,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,37,37,37,37,37,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,40,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,41,42,42,42,42,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,41,42,42,42,42};
-const Int_t AliL3TPCMapping::fgkIFecChannel[fgkNIROC] = {1,0,2,4,1,0,2,4,1,0,2,4,1,3,0,1,0,2,4,1,0,2,4,1,0,2,4,1,3,0,1,0,2,4,4,2,0,1,0,3,1,4,2,0,1,4,2,0,1,4,2,0,1,0,3,1,4,2,0,1,4,2,0,1,4,2,0,1,3,5,6,8,3,5,6,8,3,5,6,8,5,2,4,3,5,6,8,3,5,6,8,3,5,6,8,5,2,4,3,5,6,8,8,6,5,3,4,2,5,8,6,5,3,8,6,5,3,8,6,5,3,4,2,5,8,6,5,3,8,6,5,3,8,6,5,3,7,9,10,12,7,9,10,12,7,9,10,12,7,6,8,7,9,10,12,7,9,10,12,7,9,10,12,7,6,8,7,9,10,12,12,10,9,7,8,6,7,12,10,9,7,12,10,9,7,12,10,9,7,8,6,7,12,10,9,7,12,10,9,7,12,10,9,7,11,13,14,16,11,13,14,16,11,13,14,16,9,10,12,11,13,14,16,11,13,14,16,11,13,14,16,9,10,12,11,13,14,16,16,14,13,11,12,10,9,16,14,13,11,16,14,13,11,16,14,13,11,12,10,9,16,14,13,11,16,14,13,11,16,14,13,11,15,17,18,20,15,17,20,18,15,17,20,18,11,13,14,16,15,17,20,18,15,17,18,15,17,20,18,11,13,14,16,15,17,20,18,18,20,17,15,16,14,13,11,18,20,17,15,18,17,15,18,20,17,15,16,14,13,11,18,20,17,15,18,20,17,15,20,18,17,15,19,21,23,22,19,23,21,22,19,23,21,22,15,17,20,18,19,25,23,21,21,19,20,19,25,23,21,15,17,20,18,19,25,23,21,21,23,25,19,18,20,17,15,21,23,25,19,20,19,21,21,23,25,19,18,20,17,15,22,21,23,19,22,21,23,19,22,23,21,19,25,27,24,26,27,25,24,26,27,25,24,26,19,21,22,24,29,27,22,24,23,22,24,29,27,22,24,19,25,23,21,29,27,22,24,24,22,27,29,21,23,25,19,24,22,27,29,24,22,23,24,22,27,29,24,22,21,19,26,24,25,27,26,24,25,27,26,24,27,25,29,31,28,30,31,29,28,30,31,29,28,30,25,23,26,28,32,31,26,28,27,25,26,28,32,31,26,28,29,27,22,24,32,31,26,28,28,26,31,32,24,22,27,29,28,26,31,32,28,26,25,27,28,26,31,32,28,26,23,25,30,28,29,31,30,28,29,31,30,28,31,29,32,34,33,35,34,32,33,35,34,32,33,35,29,27,30,33,36,34,30,33,31,29,30,33,36,34,30,33,32,31,26,28,36,34,30,33,33,30,34,36,28,26,31,32,33,30,34,36,33,30,29,31,33,30,34,36,33,30,27,29,35,33,32,34,35,33,32,34,35,33,34,32,36,38,37,39,38,36,37,39,38,36,37,39,32,31,35,37,40,38,35,37,34,32,35,37,40,38,35,37,36,34,30,33,40,38,35,37,37,35,38,40,33,30,34,36,37,35,38,40,37,35,32,34,37,35,38,40,37,35,31,32,39,37,36,38,39,37,36,38,39,37,38,36,40,42,41,43,44,42,40,41,44,42,40,41,38,36,34,39,41,43,42,39,41,38,36,39,41,47,42,39,41,40,38,35,37,43,42,39,41,41,39,42,43,37,35,38,40,41,39,42,47,41,39,36,38,41,39,42,43,41,39,34,36,38,41,40,42,44,41,40,42,44,43,41,42,40,46,44,45,47,46,43,45,47,46,43,45,47,42,40,43,45,47,46,44,45,47,42,40,43,45,43,45,49,51,43,42,39,41,46,44,45,47,47,45,44,46,41,39,42,43,51,49,45,43,45,43,40,42,47,45,44,46,47,45,43,40,42,47,45,43,46,47,45,43,46,47,45,44,46,50,48,49,51,50,48,49,51,50,48,49,51,48,46,44,49,51,50,48,49,51,46,44,47,49,46,44,53,55,46,44,45,47,50,48,49,51,51,49,48,50,47,45,44,46,55,53,44,46,49,47,44,46,51,49,48,50,51,49,44,46,48,51,49,48,50,51,49,48,50,51,49,48,50,54,52,53,55,54,52,53,55,54,52,53,55,54,52,50,53,55,54,52,53,55,50,48,51,53,52,50,48,57,59,50,48,49,51,54,52,53,55,55,53,52,54,51,49,48,50,59,57,48,50,52,53,51,48,50,55,53,52,54,55,53,50,52,54,55,53,52,54,55,53,52,54,55,53,52,54,60,58,57,59,58,56,57,59,58,56,57,59,60,58,56,57,59,58,56,57,59,54,52,55,57,58,56,54,61,63,54,52,53,55,58,56,57,59,59,57,56,58,55,53,52,54,63,61,54,56,58,57,55,52,54,59,57,56,58,59,57,56,58,60,59,57,56,58,59,57,56,58,59,57,58,60,56,62,61,63,62,60,61,63,62,60,61,63,64,66,62,61,63,62,60,61,63,58,56,59,61,62,60,66,68,70,58,56,57,59,62,60,61,63,63,61,60,62,59,57,56,58,70,68,66,60,62,61,59,56,58,63,61,60,62,63,61,62,66,64,63,61,60,62,63,61,60,62,63,61,62,56,65,64,66,68,64,66,68,70,72,65,64,66,68,67,65,68,70,64,66,68,70,72,62,60,63,68,67,65,64,72,64,62,60,61,63,65,64,66,68,68,66,64,65,63,61,60,62,64,72,64,65,67,68,63,60,62,72,70,68,66,64,70,68,65,67,68,66,64,65,72,70,68,66,64,68,66,64,65,69,67,70,72,69,67,65,74,76,69,67,70,72,71,69,72,74,69,67,65,74,76,64,66,70,72,71,69,74,76,65,66,68,70,72,69,67,70,72,72,70,67,69,72,70,68,66,65,76,74,69,71,72,70,66,64,76,74,65,67,69,74,72,69,71,72,70,67,69,76,74,65,67,69,72,70,67,69,73,71,74,76,75,73,71,78,80,73,71,74,76,75,73,76,78,75,73,71,78,80,67,65,74,76,75,73,78,80,71,69,67,74,76,73,71,74,76,76,74,71,73,76,74,67,69,71,80,78,73,75,76,74,65,67,80,78,71,73,75,78,76,73,75,76,74,71,73,80,78,71,73,75,76,74,71,73,77,75,78,80,81,79,77,82,84,79,77,75,78,80,79,77,80,82,79,77,82,84,73,71,69,78,80,79,77,82,84,77,75,73,78,80,77,75,78,80,80,78,75,77,80,78,73,75,77,84,82,77,79,80,78,69,71,73,84,82,77,79,82,80,77,79,80,78,75,77,79,84,82,77,79,81,80,78,75,77,81,79,82,84,83,89,87,85,86,85,83,81,82,84,83,81,84,88,83,81,86,88,79,77,75,82,84,83,81,87,85,83,81,79,82,84,81,79,82,84,84,82,79,81,84,82,79,81,83,85,87,81,83,84,82,75,77,79,88,86,81,83,88,84,81,83,84,82,81,83,85,86,85,87,89,83,84,82,79,81,83,85,86,88,95,93,91,88,90,91,89,87,86,88,85,86,90,92,87,85,90,92,83,81,85,86,88,91,89,86,88,85,86,88,90,92,83,87,85,86,86,85,87,83,92,90,88,86,85,88,86,89,91,88,86,85,81,83,92,90,85,87,92,90,86,85,88,86,87,89,91,90,88,91,93,95,88,86,85,83,91,89,87,90,92,98,96,92,94,95,93,90,92,91,89,87,94,97,93,91,89,94,97,91,89,87,90,92,95,93,90,92,91,89,87,94,97,91,89,88,90,90,88,89,91,97,94,87,89,91,92,90,93,95,92,90,87,89,91,97,94,89,91,93,97,94,87,89,91,92,90,93,95,94,92,96,98,92,90,87,89,91,96,95,93,94,97,102,100,97,99,98,96,94,97,96,95,93,99,101,98,96,95,99,101,96,95,93,94,97,98,96,94,97,96,95,93,99,101,95,93,92,94,94,92,93,95,101,99,93,95,96,97,94,96,98,97,94,93,95,96,101,99,95,96,98,101,99,93,95,96,97,94,96,98,99,97,100,102,97,94,93,95,96,102,100,98,99,101,106,104,101,103,102,100,99,101,102,100,98,103,105,104,102,100,103,105,102,100,98,99,101,102,100,99,101,102,100,98,103,105,98,96,97,99,99,97,96,98,105,103,98,100,102,101,99,100,102,101,99,98,100,102,105,103,100,102,104,105,103,98,100,102,101,99,100,102,103,101,104,106,101,99,98,100,102,106,104,103,105,111,107,109,111,105,106,104,103,105,111,106,104,107,109,111,106,107,109,111,106,104,103,105,111,107,106,104,103,105,106,104,107,109,111,102,100,101,103,103,101,100,102,111,109,107,104,106,105,103,104,106,107,111,105,103,104,106,111,109,107,106,111,109,107,104,106,111,105,103,104,106,105,111,109,107,111,105,103,104,106,108,107,109,113,115,110,108,113,115,108,107,109,113,115,112,110,108,113,115,110,108,113,115,108,107,109,113,115,108,109,111,113,115,112,110,108,113,115,106,104,105,111,111,105,104,106,115,113,108,110,112,115,113,111,109,108,115,113,109,107,108,115,113,108,110,115,113,108,110,112,115,113,109,107,108,115,113,108,110,115,113,109,107,108,114,112,110,117,119,114,112,117,119,114,112,110,117,119,118,116,114,117,119,114,112,117,119,114,112,110,117,119,114,112,110,117,119,118,116,114,117,119,107,109,113,115,115,113,109,107,119,117,114,116,118,119,117,110,112,114,119,117,110,112,114,119,117,112,114,119,117,114,116,118,119,117,110,112,114,119,117,112,114,119,117,110,112,114,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,122,120,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,122,120,121,123,112,110,108,117,119,119,117,108,110,112,123,121,120,122,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,120,122,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,125,127,118,116,114,121,123,123,121,114,116,118,127,125,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,3,1,0,3,1,0,2,0,2,4,7,5,3,1,0,2,4,5,3,1,5,3,1,0,3,1,0,5,3,1,5,3,1,3,1,0,2,126,124,122,120,125,127,127,125,120,122,124,126,2,0,1,3,1,3,5,1,3,5,0,1,3,0,1,3,5,1,3,5,4,2,0,1,3,5,7,4,2,0,2,0,1,3,0,1,3,5,2,4,7,5,4,6,3,1,6,8,9,1,0,5,3,6,8,7,0,2,9,7,2,4,5,2,4,9,7,0,7,0,2,7,5,4,6,3,1,0,2,2,0,1,3,2,0,1,3,6,4,5,7,2,0,7,0,7,9,4,2,5,4,2,7,9,2,0,7,8,6,3,5,0,1,9,8,6,1,3,6,4,5,7,4,2,5,7,6,8,11,9,8,10,7,5,10,12,11,2,4,9,7,10,12,9,4,6,13,11,6,8,7,6,8,11,2,4,9,4,6,11,9,8,10,7,5,4,6,6,4,5,7,6,4,5,7,10,8,9,11,6,4,9,4,2,11,8,6,7,8,6,11,13,6,4,9,12,10,7,9,4,2,11,12,10,5,7,10,8,9,11,8,6,7,9,10,12,15,13,12,14,11,9,14,16,13,6,8,13,11,14,16,11,8,10,15,10,12,11,9,10,12,13,6,8,11,8,10,15,13,12,14,11,9,8,10,8,10,9,11,10,8,9,11,14,12,13,15,10,8,11,8,6,13,12,10,9,11,12,10,15,10,8,11,16,14,11,13,8,6,13,16,14,9,11,14,12,13,15,12,10,9,13,11,14,16,17,16,18,15,13,18,20,15,10,12,17,15,18,20,15,13,12,14,17,14,16,15,13,14,16,15,10,12,15,13,12,14,17,16,18,15,13,12,14,12,14,13,15,14,12,13,15,18,16,17,14,12,13,15,12,10,15,16,14,13,15,16,14,17,14,12,13,15,20,18,15,17,12,10,15,20,18,13,15,18,16,17,16,14,11,13,17,15,18,20,19,20,21,19,17,21,22,17,14,16,19,21,22,24,19,17,16,18,19,18,20,19,17,18,20,17,14,16,19,17,16,18,19,20,21,19,17,16,18,16,18,17,19,18,16,17,19,21,20,19,18,16,17,19,16,14,17,20,18,17,19,20,18,19,18,16,17,19,24,22,21,19,16,14,17,22,21,17,19,21,20,19,20,18,15,17,19,23,21,22,25,23,22,27,25,23,24,19,18,20,27,25,23,26,23,21,22,20,23,21,22,25,23,21,22,19,18,20,23,21,22,20,25,23,22,23,21,22,20,20,22,21,23,20,22,21,23,22,23,25,20,22,21,23,20,18,19,22,21,23,25,22,21,23,20,22,21,23,26,23,25,27,20,18,19,24,23,25,27,22,23,25,22,21,23,19,27,25,24,26,29,27,24,32,31,29,26,27,25,23,21,31,29,28,29,27,25,24,27,25,24,26,29,27,24,23,21,22,24,27,25,24,26,29,27,24,27,25,24,26,26,24,25,27,26,24,25,27,24,27,29,26,24,25,27,24,22,21,23,24,27,29,26,24,25,27,24,25,27,29,28,29,31,21,23,25,27,26,29,31,32,24,27,29,26,24,25,27,31,29,28,30,31,26,28,36,34,28,30,31,29,22,24,32,30,33,34,32,31,26,31,29,28,30,32,31,26,27,25,26,28,31,29,28,30,32,31,26,31,29,28,30,28,30,29,31,30,28,29,31,26,31,32,30,28,29,31,28,26,25,27,26,31,32,30,28,29,31,26,31,32,34,33,30,32,24,22,29,31,30,28,34,36,28,26,31,30,28,29,31,34,32,33,35,32,30,33,40,38,33,35,34,32,26,28,34,35,37,38,36,28,30,34,32,33,35,34,28,30,31,29,30,33,34,32,33,35,36,34,28,34,32,33,35,33,35,32,34,35,33,32,34,28,34,36,35,33,32,34,33,30,29,31,30,28,34,35,33,32,34,30,28,36,38,37,35,34,28,26,32,34,35,33,38,40,33,30,32,35,33,32,34,38,36,37,39,36,34,35,37,42,37,39,38,36,30,33,38,36,39,41,40,33,35,38,36,37,39,38,36,33,35,34,32,35,37,38,36,37,39,38,30,33,38,36,37,39,37,39,36,38,39,37,36,38,33,30,38,39,37,36,38,37,35,32,34,35,33,36,38,39,37,36,38,35,33,40,41,39,36,38,33,30,36,38,39,37,42,37,35,34,36,39,37,36,38,42,40,41,43,40,38,39,41,44,43,41,42,40,35,37,42,40,43,45,42,37,39,42,40,41,43,42,40,37,39,38,36,39,41,42,40,41,43,40,35,37,42,40,41,43,45,41,40,42,43,41,40,42,37,35,40,43,41,40,42,41,39,36,38,39,37,40,42,43,41,40,42,39,37,42,45,43,40,42,37,35,40,42,41,43,44,41,39,38,40,43,41,40,42,46,44,45,47,42,46,44,43,46,45,47,43,45,39,41,46,44,47,49,45,47,41,46,44,45,47,46,44,43,41,42,40,43,45,46,44,45,47,42,39,41,46,44,45,47,47,43,44,46,47,45,44,46,41,39,42,47,45,44,46,45,43,40,42,41,43,44,46,47,45,44,46,41,47,45,49,47,44,46,41,39,45,43,47,45,46,43,44,46,42,47,45,44,46,50,48,49,51,50,48,45,47,50,48,49,46,44,47,49,50,48,51,53,44,43,49,51,50,48,49,51,50,48,45,47,46,44,47,49,50,48,49,51,46,44,43,50,48,49,51,51,49,48,50,51,49,48,50,43,44,46,51,49,48,50,49,47,44,46,47,45,48,50,51,49,48,50,51,49,43,44,53,51,48,50,49,47,44,46,49,48,50,47,45,48,50,51,49,48,50,54,52,53,55,54,52,49,51,52,51,53,50,48,51,53,54,52,55,57,48,46,53,55,54,52,53,55,54,52,49,51,50,48,51,53,54,52,53,55,48,45,47,54,52,53,55,53,55,52,54,55,53,52,54,47,45,48,55,53,52,54,53,51,48,50,51,49,52,54,55,53,52,54,55,53,46,48,57,55,52,54,53,51,48,50,53,51,52,51,49,52,54,55,53,52,54,58,56,57,59,58,56,53,55,54,55,57,54,52,55,57,58,56,59,61,52,50,57,59,58,56,57,59,58,56,53,55,54,52,55,57,58,56,57,59,50,49,51,58,56,57,59,57,59,56,58,59,57,56,58,51,49,50,59,57,56,58,57,55,52,54,55,53,56,58,59,57,56,58,59,57,50,52,61,59,56,58,57,55,52,54,57,55,54,55,53,56,58,59,57,56,58,62,60,61,63,62,60,57,59,58,56,59,61,58,56,59,61,62,60,63,58,56,54,61,63,62,60,61,62,60,57,59,58,56,59,61,62,60,61,63,54,52,53,55,62,60,61,63,61,63,60,62,63,61,60,62,55,53,52,54,63,61,60,62,61,59,56,58,59,57,60,62,61,60,62,63,61,54,56,58,63,60,62,61,59,56,58,61,59,56,58,59,57,60,62,63,61,60,62,67,65,64,66,64,66,61,63,62,60,63,64,62,60,63,64,65,64,66,62,60,65,64,66,65,64,63,64,66,61,63,62,60,63,64,67,65,64,66,58,56,57,59,67,65,64,66,66,64,65,67,66,64,65,67,59,57,56,58,66,64,65,67,64,63,60,62,63,61,66,64,63,64,65,66,64,65,60,62,66,64,65,64,63,60,62,64,63,60,62,63,61,66,64,66,64,65,67,71,69,68,70,67,65,68,70,67,65,66,68,67,65,66,68,67,68,70,71,69,67,68,70,67,66,68,67,65,68,70,67,65,66,68,71,69,68,70,62,60,61,63,71,69,68,70,70,68,69,71,70,68,69,71,63,61,60,62,70,68,69,71,68,66,65,67,70,68,65,67,68,66,67,70,68,67,69,71,70,68,67,68,66,65,67,68,66,65,67,70,68,65,67,70,68,69,71,75,73,72,74,71,69,72,74,71,69,70,72,71,69,70,72,71,69,72,74,75,73,72,74,71,69,70,72,71,69,72,74,71,69,70,72,75,73,72,74,67,65,64,66,75,73,72,74,72,74,73,75,74,72,73,75,66,64,65,67,74,72,73,75,72,70,69,71,74,72,69,71,72,70,69,71,74,72,73,75,74,72,69,71,72,70,69,71,72,70,69,71,74,72,69,71,74,72,73,75,79,77,76,78,75,73,76,78,75,73,74,76,75,73,74,76,75,73,76,78,79,77,76,78,75,73,74,76,75,73,76,78,75,73,74,76,79,77,76,78,71,69,68,70,79,77,76,78,76,78,77,79,78,76,77,79,70,68,69,71,78,76,77,79,76,74,73,75,78,76,73,75,76,74,73,75,78,76,77,79,78,76,73,75,76,74,73,75,76,74,73,75,78,76,73,75,78,76,77,79,83,81,80,82,79,77,80,82,79,77,78,80,79,77,78,80,79,77,80,82,83,81,80,82,79,77,78,80,79,77,80,82,79,77,78,80,83,81,80,82,75,73,72,74,83,81,80,82,80,82,81,83,82,80,81,83,74,72,73,75,82,80,81,83,80,78,77,79,82,80,77,79,80,78,77,79,82,80,81,83,82,80,77,79,80,78,77,79,80,78,77,79,82,80,77,79,82,80,81,83,89,87,85,84,83,81,84,87,83,81,82,84,83,81,82,84,83,81,84,85,89,87,85,84,83,81,82,84,85,83,81,84,83,81,82,84,86,87,85,86,84,79,77,76,78,87,85,86,84,84,86,85,87,84,86,85,87,78,76,77,79,84,86,85,87,86,84,82,81,83,84,81,83,85,84,82,81,83,84,85,87,89,85,84,81,83,84,82,81,83,84,82,81,83,87,84,81,83,84,85,87,89,93,91,86,88,91,89,85,86,91,89,87,85,87,85,86,88,91,89,87,86,93,91,86,88,91,89,87,85,89,87,86,88,89,87,85,88,90,91,89,88,90,83,81,80,82,91,89,88,90,90,88,89,91,90,88,89,91,82,80,81,83,90,88,89,91,90,88,85,87,89,88,86,87,89,85,87,89,91,88,86,91,93,86,87,89,91,88,86,85,87,85,87,89,91,86,85,89,91,88,86,91,93,96,95,90,92,95,93,88,90,95,93,86,88,91,89,90,92,95,93,88,90,96,95,90,92,95,93,86,88,93,91,90,92,95,93,91,92,94,95,93,92,94,85,86,88,84,95,93,92,94,92,94,93,95,94,92,93,95,84,88,86,85,94,92,93,95,94,92,91,93,95,92,90,91,93,88,86,93,95,92,90,95,96,90,88,93,95,92,90,89,91,88,86,93,95,90,88,93,95,92,90,95,96,100,98,94,97,98,96,92,94,98,96,90,92,96,95,93,94,97,98,96,92,94,100,98,94,97,98,96,90,92,96,95,94,97,98,96,97,99,98,96,97,99,91,89,87,90,92,98,96,97,99,97,99,96,98,99,97,96,98,92,90,87,89,91,99,97,96,98,99,97,96,98,97,94,95,96,92,90,96,98,97,94,98,100,94,92,96,98,97,94,93,95,96,92,90,96,98,94,92,96,98,97,94,98,100,104,102,99,101,102,100,97,99,102,100,94,97,102,100,98,99,101,102,100,97,99,104,102,99,101,102,100,94,97,100,98,99,101,102,100,101,103,102,100,101,103,96,95,93,94,97,102,100,101,103,101,103,100,102,103,101,100,102,97,94,93,95,96,103,101,100,102,103,101,100,102,101,99,98,100,97,94,100,102,101,99,102,104,99,97,100,102,101,99,98,100,102,97,94,100,102,99,97,100,102,101,99,102,104,108,106,103,105,106,104,101,103,106,104,99,101,108,106,104,103,105,106,104,101,103,107,106,103,105,106,104,99,101,104,102,103,105,106,104,105,107,106,104,105,107,102,100,98,99,101,106,104,105,107,109,105,104,106,107,105,104,106,101,99,98,100,102,107,105,104,106,107,105,104,106,105,103,102,104,101,99,104,106,105,103,106,107,103,101,104,106,105,103,104,106,108,101,99,104,106,103,101,104,106,105,103,106,108,110,107,109,111,107,109,111,105,108,107,109,103,105,110,107,109,111,107,109,111,105,110,108,109,111,108,107,109,103,105,106,107,109,111,110,108,109,111,110,108,109,111,106,104,103,105,111,110,108,109,111,111,107,108,110,111,109,108,110,111,105,103,104,106,111,109,108,110,111,109,108,110,111,109,107,106,105,103,109,107,108,111,109,108,110,105,111,109,107,111,109,107,110,105,103,109,107,108,105,111,109,107,111,109,107,110,114,112,113,115,110,108,113,115,112,110,111,113,115,114,112,113,115,110,108,113,115,114,112,113,115,112,110,111,113,115,110,108,113,115,114,112,113,115,114,112,113,115,108,107,109,113,115,114,112,113,115,115,113,112,114,115,113,112,114,115,113,109,107,108,115,113,112,114,115,113,112,114,115,113,108,110,115,113,111,110,112,115,113,112,114,115,113,108,110,115,113,112,114,115,113,111,110,112,115,113,108,110,115,113,112,114,118,116,117,119,114,112,117,119,118,116,114,117,119,118,116,117,119,114,112,117,119,118,116,117,119,118,116,114,117,119,114,112,117,119,118,116,117,119,118,116,117,119,114,112,110,117,119,118,116,117,119,117,119,116,118,119,117,116,118,119,117,110,112,114,119,117,116,118,119,117,116,118,119,117,112,114,119,117,114,116,118,119,117,116,118,119,117,112,114,119,117,116,118,119,117,114,116,118,119,117,112,114,119,117,116,118,122,120,121,123,120,118,116,121,123,122,120,121,123,122,120,121,123,120,118,116,121,123,122,120,121,123,122,120,121,123,120,118,116,121,123,122,120,121,123,122,120,121,123,120,118,116,121,123,122,120,121,123,121,123,120,122,123,121,120,122,123,121,116,118,120,123,121,120,122,123,121,120,122,123,121,116,118,120,123,121,120,122,123,121,120,122,123,121,116,118,120,123,121,120,122,123,121,120,122,123,121,116,118,120,123,121,120,122,126,124,125,127,126,124,122,125,127,126,124,125,127,126,124,125,127,126,124,122,125,127,126,124,125,127,126,124,125,127,126,124,122,125,127,126,124,125,127,126,124,125,127,126,124,122,125,127,126,124,125,127,125,127,124,126,127,125,124,126,127,125,122,124,126,127,125,124,126,127,125,124,126,127,125,122,124,126,127,125,124,126,127,125,124,126,127,125,122,124,126,127,125,124,126,127,125,124,126,127,125,122,124,126,127,125,124,126};
-const Int_t AliL3TPCMapping::fgkIFecCon[fgkNIROC] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,4,3,3,4,4,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,4,4,3,3,4,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,4,5,4,4,5,5,5,4,5,5,5,4,4,4,4,5,5,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,5,5,4,4,4,4,5,5,5,4,5,5,5,4,4,5,4,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,5,5,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,2,2,1,1,1,1,2,1,1,1,2,2,2,2,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,2,2,2,2,2,3,2,2,2,3,3,3,3,2,2,3,3,3,3,3,2,3,3,2,2,2,2,2,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,2,2,2,2,2,3,3,2,3,3,3,3,3,2,2,3,3,3,3,2,2,2,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,3,3,3,3,3,4,3,3,3,3,3,3,3,4,4,4,4,3,3,3,3,3,4,4,4,3,3,4,4,4,3,4,4,4,3,3,3,3,3,4,4,4,4,3,3,3,3,3,3,3,4,3,3,3,3,3,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,5,4,4,4,4,4,4,4,4,5,5,4,4,4,5,4,4,4,4,4,4,4,4,5,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,4,5,5,5,4,4,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,4,4,4,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,4,4,4,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,4,4,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5};
+++ /dev/null
-const Int_t AliL3TPCMapping::fgkNOROC = 9984;
-const Int_t AliL3TPCMapping::fgkORows[fgkNOROC] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,91,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95};
-const Int_t AliL3TPCMapping::fgkOPad[fgkNOROC] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139};
-const Int_t AliL3TPCMapping::fgkOCon[fgkNOROC] = {235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238,239,239,239,239,239,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,5,4,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,239,239,239,239,240,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,3,2,2,2,2,1,1,1,1,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,239,239,239,239,240,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,3,2,2,2,2,1,1,1,1,235,235,235,235,236,236,236,236,237,237,237,237,237,238,238,238,238,239,239,239,239,240,240,240,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,3,2,2,2,2,1,1,1,1,235,235,235,235,236,236,236,236,246,246,246,237,237,238,238,238,238,239,239,239,239,249,249,249,240,240,241,241,241,241,242,242,242,242,243,243,243,243,9,9,9,9,8,8,8,8,7,7,7,7,6,6,15,15,15,5,5,5,5,4,4,4,4,3,3,12,12,12,2,2,2,2,1,1,1,1,244,244,244,235,245,245,245,245,236,246,246,246,246,247,247,247,238,248,248,248,248,248,249,249,249,249,250,250,250,250,241,251,251,251,242,243,252,252,252,18,18,18,9,8,17,17,17,7,16,16,16,16,15,15,15,15,14,14,14,14,14,4,13,13,13,12,12,12,12,2,11,11,11,11,1,10,10,10,244,244,244,244,245,245,245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,248,249,249,249,249,250,250,250,250,250,251,251,251,251,252,252,252,252,18,18,18,18,17,17,17,17,16,16,16,16,16,15,15,15,15,14,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,11,10,10,10,10,244,244,244,244,245,245,245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,248,249,249,249,249,250,250,250,250,250,251,251,251,251,252,252,252,252,18,18,18,18,17,17,17,17,16,16,16,16,16,15,15,15,15,14,14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,11,10,10,10,10,244,244,244,244,245,245,245,245,245,246,246,246,246,246,247,247,247,247,248,248,248,248,249,249,249,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,18,18,18,18,17,17,17,17,17,16,16,16,16,15,15,15,15,15,14,14,14,14,13,13,13,13,12,12,12,12,12,11,11,11,11,11,10,10,10,10,244,244,244,244,245,245,245,254,254,255,255,255,246,246,247,247,247,247,248,248,248,257,258,258,258,249,249,250,250,250,250,251,251,251,251,251,252,252,252,252,18,18,18,18,17,17,17,17,17,16,16,16,16,15,15,24,24,24,23,14,14,14,13,13,13,13,12,12,21,21,21,20,20,11,11,11,10,10,10,10,253,244,244,244,254,254,254,254,254,255,255,255,255,256,247,247,247,257,257,257,257,257,258,258,258,258,258,259,259,259,259,260,260,260,251,261,261,252,252,252,18,18,18,27,27,17,26,26,26,25,25,25,25,24,24,24,24,24,23,23,23,23,23,13,13,13,22,21,21,21,21,20,20,20,20,20,10,10,10,19,253,253,253,253,254,254,254,254,255,255,255,255,255,256,256,256,256,257,257,257,257,257,258,258,258,258,259,259,259,259,259,260,260,260,260,261,261,261,261,261,27,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,23,22,22,22,22,21,21,21,21,21,20,20,20,20,19,19,19,19,253,253,253,253,253,254,254,254,254,255,255,255,255,256,256,256,256,256,257,257,257,257,257,258,258,258,258,259,259,259,259,259,260,260,260,260,261,261,261,261,261,27,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,19,253,253,253,253,253,254,254,254,254,255,255,255,255,256,256,256,256,256,257,257,257,257,257,258,258,258,258,259,259,259,259,259,260,260,260,260,261,261,261,261,261,27,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,24,24,23,23,23,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,19,19,19,19,19,253,253,253,253,253,254,254,263,263,264,264,264,255,256,256,256,256,256,266,266,266,266,266,258,267,267,267,259,259,268,268,260,260,260,260,260,261,261,261,261,270,36,27,27,27,27,26,26,26,26,26,34,34,25,25,33,33,33,24,32,32,32,32,32,22,22,22,22,22,21,30,30,30,29,29,20,20,19,19,19,19,19,262,262,262,262,253,263,263,263,263,264,264,264,264,264,256,265,265,265,265,266,266,266,266,267,267,267,267,267,268,268,268,268,269,269,269,269,260,270,270,270,270,270,36,36,36,36,36,26,35,35,35,35,34,34,34,34,33,33,33,33,33,32,32,32,32,31,31,31,31,22,30,30,30,30,30,29,29,29,29,19,28,28,28,28,262,262,262,262,262,263,263,263,263,264,264,264,264,264,265,265,265,265,265,266,266,266,266,267,267,267,267,267,268,268,268,268,269,269,269,269,269,270,270,270,270,270,36,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,33,32,32,32,32,31,31,31,31,31,30,30,30,30,30,29,29,29,29,28,28,28,28,28,262,262,262,262,262,263,263,263,263,264,264,264,264,264,265,265,265,265,265,266,266,266,266,267,267,267,267,267,268,268,268,268,269,269,269,269,269,270,270,270,270,270,36,36,36,36,36,35,35,35,35,35,34,34,34,34,33,33,33,33,33,32,32,32,32,31,31,31,31,31,30,30,30,30,30,29,29,29,29,28,28,28,28,28,262,262,262,262,262,263,263,263,263,263,264,264,264,273,265,265,265,265,265,275,266,266,266,266,267,267,267,276,268,268,268,268,268,269,269,269,269,269,270,270,270,270,270,36,36,36,36,36,35,35,35,35,35,34,34,34,34,34,42,33,33,33,32,32,32,32,41,31,31,31,31,31,39,30,30,30,29,29,29,29,29,28,28,28,28,28,271,271,271,262,262,263,263,272,272,272,273,273,273,273,265,265,274,274,274,275,275,275,275,275,276,276,276,276,277,277,277,268,268,269,269,278,278,278,279,279,279,279,279,45,45,45,45,45,44,44,44,35,35,34,34,43,43,43,42,42,42,42,41,41,41,41,41,40,40,40,31,31,39,39,39,39,38,38,38,29,29,28,28,37,37,37,271,271,271,271,271,272,272,272,272,272,273,273,273,273,274,274,274,274,274,275,275,275,275,275,276,276,276,276,277,277,277,277,277,278,278,278,278,278,279,279,279,279,279,45,45,45,45,45,44,44,44,44,44,43,43,43,43,43,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,38,37,37,37,37,37,271,271,271,271,271,272,272,272,272,272,273,273,273,273,274,274,274,274,274,275,275,275,275,275,276,276,276,276,277,277,277,277,277,278,278,278,278,278,279,279,279,279,279,45,45,45,45,45,44,44,44,44,44,43,43,43,43,43,42,42,42,42,41,41,41,41,41,40,40,40,40,40,39,39,39,39,38,38,38,38,38,37,37,37,37,37,271,271,271,271,271,272,272,272,272,272,273,273,273,273,273,274,274,274,274,274,275,275,275,275,276,276,276,276,276,277,277,277,277,277,278,278,278,278,278,279,279,279,279,279,45,45,45,45,45,44,44,44,44,44,43,43,43,43,43,42,42,42,42,42,41,41,41,41,40,40,40,40,40,39,39,39,39,39,38,38,38,38,38,37,37,37,37,37,271,271,271,271,280,281,272,272,272,272,273,273,273,273,282,283,274,274,274,274,275,275,284,284,285,276,276,276,276,277,277,277,277,286,287,278,278,278,278,279,279,288,288,288,54,54,54,45,45,44,44,44,44,53,52,43,43,43,43,42,42,42,42,51,50,50,41,41,40,40,40,40,49,48,39,39,39,39,38,38,38,38,47,46,37,37,37,37,280,280,280,280,280,281,281,281,281,281,282,282,282,282,282,283,283,283,283,283,284,284,284,284,285,285,285,285,285,286,286,286,286,286,287,287,287,287,287,288,288,288,288,288,54,54,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,280,280,280,280,280,281,281,281,281,281,282,282,282,282,282,283,283,283,283,283,284,284,284,284,284,285,285,285,285,285,286,286,286,286,286,287,287,287,287,287,288,288,288,288,288,54,54,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,280,280,280,280,280,281,281,281,281,281,282,282,282,282,282,283,283,283,283,283,284,284,284,284,284,285,285,285,285,285,286,286,286,286,286,287,287,287,287,287,288,288,288,288,288,54,54,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,280,280,280,280,280,281,281,281,281,281,282,282,282,282,282,283,283,283,283,283,284,284,284,284,284,285,285,285,285,285,286,286,286,286,286,287,287,287,287,287,288,288,288,298,298,64,64,54,54,54,53,53,53,53,53,52,52,52,52,52,51,51,51,51,51,50,50,50,50,50,49,49,49,49,49,48,48,48,48,48,47,47,47,47,47,46,46,46,46,46,289,289,289,289,290,290,290,290,290,291,291,291,291,291,292,292,292,292,293,293,293,293,293,294,294,294,294,295,295,295,295,295,296,296,296,296,297,297,297,297,297,298,298,298,298,64,64,64,64,63,63,63,63,63,62,62,62,62,61,61,61,61,61,60,60,60,60,59,59,59,59,59,58,58,58,58,57,57,57,57,57,56,56,56,56,56,55,55,55,55,289,289,289,289,289,290,290,290,290,291,291,291,291,291,292,292,292,292,292,293,293,293,293,294,294,294,294,294,295,295,295,295,295,296,296,296,296,297,297,297,297,297,298,298,298,298,64,64,64,64,63,63,63,63,63,62,62,62,62,61,61,61,61,61,60,60,60,60,60,59,59,59,59,58,58,58,58,58,57,57,57,57,57,56,56,56,56,55,55,55,55,55,289,289,289,289,289,290,290,290,290,291,291,291,291,291,292,292,292,292,292,293,293,293,293,294,294,294,294,294,295,295,295,295,295,296,296,296,296,297,297,297,297,297,298,298,298,298,64,64,64,64,63,63,63,63,63,62,62,62,62,61,61,61,61,61,60,60,60,60,60,59,59,59,59,58,58,58,58,58,57,57,57,57,57,56,56,56,56,55,55,55,55,55,289,289,289,289,290,290,290,290,290,291,291,291,291,291,292,292,292,292,293,293,293,293,293,294,294,294,294,294,295,295,295,295,295,296,296,296,296,297,297,297,297,297,298,298,298,298,64,64,64,64,63,63,63,63,63,62,62,62,62,61,61,61,61,61,60,60,60,60,60,59,59,59,59,59,58,58,58,58,57,57,57,57,57,56,56,56,56,56,55,55,55,55,289,289,289,299,299,300,300,290,290,290,301,301,301,291,292,292,292,302,302,303,303,293,293,293,294,294,304,304,305,305,305,305,295,296,296,296,296,296,297,307,307,307,308,308,298,298,298,64,64,64,74,74,73,73,73,63,62,62,62,62,62,61,71,71,71,71,70,70,60,60,59,59,59,69,69,68,68,58,58,58,57,67,67,67,56,56,56,66,66,65,65,55,55,55,299,299,299,299,299,300,300,300,300,301,301,301,301,301,302,302,302,302,302,303,303,303,303,304,304,304,304,304,305,305,305,305,305,306,306,306,306,306,307,307,307,307,308,308,308,308,308,74,74,74,74,74,73,73,73,73,72,72,72,72,72,71,71,71,71,71,70,70,70,70,70,69,69,69,69,68,68,68,68,68,67,67,67,67,67,66,66,66,66,65,65,65,65,65,299,299,299,299,299,300,300,300,300,301,301,301,301,301,302,302,302,302,302,303,303,303,303,304,304,304,304,304,305,305,305,305,306,306,306,306,306,307,307,307,307,307,308,308,308,308,308,74,74,74,74,74,73,73,73,73,73,72,72,72,72,72,71,71,71,71,70,70,70,70,70,69,69,69,69,68,68,68,68,68,67,67,67,67,67,66,66,66,66,65,65,65,65,65,299,299,299,299,299,300,300,300,300,300,301,301,301,301,302,302,302,302,302,303,303,303,303,303,304,304,304,304,304,305,305,305,305,306,306,306,306,306,307,307,307,307,307,308,308,308,308,308,74,74,74,74,74,73,73,73,73,73,72,72,72,72,72,71,71,71,71,70,70,70,70,70,69,69,69,69,69,68,68,68,68,68,67,67,67,67,66,66,66,66,66,65,65,65,65,65,299,299,299,299,299,300,300,300,300,300,301,301,301,301,302,302,302,302,302,303,303,303,303,303,304,304,304,304,304,305,305,305,305,306,306,306,306,306,307,307,307,307,307,308,308,308,308,308,74,74,74,74,74,73,73,73,73,73,72,72,72,72,72,71,71,71,71,70,70,70,70,70,69,69,69,69,69,68,68,68,68,68,67,67,67,67,66,66,66,66,66,65,65,65,65,65,309,309,309,309,309,310,310,310,300,300,301,311,311,311,312,312,312,312,312,303,303,313,313,313,314,314,314,314,314,315,315,315,305,306,306,316,316,316,317,317,317,317,317,318,318,318,318,318,84,84,84,84,84,83,83,83,83,83,82,82,82,72,72,71,81,81,81,80,80,80,80,80,79,79,79,69,69,78,78,78,78,78,77,77,77,67,66,66,76,76,76,75,75,75,75,75,309,309,309,309,309,310,310,310,310,310,311,311,311,311,312,312,312,312,312,313,313,313,313,313,314,314,314,314,314,315,315,315,315,316,316,316,316,316,317,317,317,317,317,318,318,318,318,318,84,84,84,84,84,83,83,83,83,83,82,82,82,82,82,81,81,81,81,80,80,80,80,80,79,79,79,79,79,78,78,78,78,78,77,77,77,77,76,76,76,76,76,75,75,75,75,75,309,309,309,309,309,310,310,310,310,310,311,311,311,311,311,312,312,312,312,312,313,313,313,313,314,314,314,314,314,315,315,315,315,315,316,316,316,316,316,317,317,317,317,317,318,318,318,318,318,84,84,84,84,84,83,83,83,83,83,82,82,82,82,82,81,81,81,81,81,80,80,80,80,80,79,79,79,79,78,78,78,78,78,77,77,77,77,77,76,76,76,76,76,75,75,75,75,75,309,309,309,309,309,310,310,310,310,310,311,311,311,311,311,312,312,312,312,312,313,313,313,313,314,314,314,314,314,315,315,315,315,315,316,316,316,316,316,317,317,317,317,317,318,318,318,318,318,84,84,84,84,84,83,83,83,83,83,82,82,82,82,82,81,81,81,81,81,80,80,80,80,80,79,79,79,79,78,78,78,78,78,77,77,77,77,77,76,76,76,76,76,75,75,75,75,75,319,319,319,319,309,320,320,310,310,310,321,311,311,311,311,322,322,322,322,312,313,313,313,313,314,324,324,324,324,325,315,315,315,315,316,316,316,326,326,327,327,327,327,317,318,328,328,328,328,94,94,94,94,84,83,93,93,93,93,92,92,82,82,82,81,81,81,81,91,90,90,90,90,80,79,79,79,79,78,88,88,88,88,77,77,77,77,87,76,76,76,86,86,75,85,85,85,85,319,319,319,319,319,320,320,320,320,320,321,321,321,321,321,322,322,322,322,322,323,323,323,323,313,324,324,324,324,324,325,325,325,325,325,326,326,326,326,326,327,327,327,327,327,328,328,328,328,328,94,94,94,94,94,93,93,93,93,93,92,92,92,92,92,91,91,91,91,91,90,90,90,90,90,79,89,89,89,89,88,88,88,88,88,87,87,87,87,87,86,86,86,86,86,85,85,85,85,85,319,319,319,319,319,320,320,320,320,320,321,321,321,321,321,322,322,322,322,322,323,323,323,323,323,324,324,324,324,324,325,325,325,325,325,326,326,326,326,326,327,327,327,327,327,328,328,328,328,328,94,94,94,94,94,93,93,93,93,93,92,92,92,92,92,91,91,91,91,91,90,90,90,90,90,89,89,89,89,89,88,88,88,88,88,87,87,87,87,87,86,86,86,86,86,85,85,85,85,85,319,319,319,319,319,320,320,320,320,320,321,321,321,321,321,322,322,322,322,322,323,323,323,323,323,324,324,324,324,324,325,325,325,325,325,326,326,326,326,326,327,327,327,327,327,328,328,328,328,328,94,94,94,94,94,93,93,93,93,93,92,92,92,92,92,91,91,91,91,91,90,90,90,90,90,89,89,89,89,89,88,88,88,88,88,87,87,87,87,87,86,86,86,86,86,85,85,85,85,85,329,329,329,319,319,330,320,320,320,320,321,321,321,321,321,332,332,332,322,322,323,323,323,323,323,334,334,334,324,324,325,325,325,325,325,336,326,326,326,326,327,327,337,337,337,338,338,338,328,328,94,94,104,104,104,103,103,103,93,93,92,92,92,92,102,91,91,91,91,91,90,90,100,100,100,89,89,89,89,89,88,88,98,98,98,87,87,87,87,87,86,86,86,86,96,85,85,95,95,95,329,329,329,329,329,330,330,330,330,330,331,331,331,331,331,332,332,332,332,332,333,333,333,333,323,323,334,334,334,334,334,335,335,335,335,335,336,336,336,336,336,337,337,337,337,337,338,338,338,338,338,104,104,104,104,104,103,103,103,103,103,102,102,102,102,102,101,101,101,101,101,100,100,100,100,100,89,89,99,99,99,99,98,98,98,98,98,97,97,97,97,97,96,96,96,96,96,95,95,95,95,95,329,329,329,329,329,330,330,330,330,330,331,331,331,331,331,332,332,332,332,332,333,333,333,333,333,333,334,334,334,334,334,335,335,335,335,335,336,336,336,336,336,337,337,337,337,337,338,338,338,338,338,104,104,104,104,104,103,103,103,103,103,102,102,102,102,102,101,101,101,101,101,100,100,100,100,100,99,99,99,99,99,99,98,98,98,98,98,97,97,97,97,97,96,96,96,96,96,95,95,95,95,95,329,329,329,329,329,330,330,330,330,330,331,331,331,331,331,332,332,332,332,332,333,333,333,333,333,333,334,334,334,334,334,335,335,335,335,335,336,336,336,336,336,337,337,337,337,337,338,338,338,338,338,104,104,104,104,104,103,103,103,103,103,102,102,102,102,102,101,101,101,101,101,100,100,100,100,100,99,99,99,99,99,99,98,98,98,98,98,97,97,97,97,97,96,96,96,96,96,95,95,95,95,95,329,329,329,329,339,330,330,330,330,330,331,331,331,331,331,331,332,332,332,332,342,333,333,333,333,333,344,334,334,334,334,335,335,335,335,335,335,336,336,336,336,336,337,337,337,337,347,348,338,338,338,338,104,104,104,104,114,113,103,103,103,103,102,102,102,102,102,101,101,101,101,101,101,100,100,100,100,110,99,99,99,99,99,108,98,98,98,98,97,97,97,97,97,97,96,96,96,96,96,105,95,95,95,95,339,339,339,339,339,340,340,340,340,330,331,341,341,341,341,341,342,342,342,342,342,333,343,343,343,343,344,344,344,344,344,345,345,345,345,345,335,336,346,346,346,346,347,347,347,347,347,348,348,348,348,348,114,114,114,114,114,113,113,113,113,113,112,112,112,112,102,101,111,111,111,111,111,110,110,110,110,110,109,109,109,109,99,108,108,108,108,108,107,107,107,107,107,97,96,106,106,106,106,105,105,105,105,105,339,339,339,339,339,340,340,340,340,340,341,341,341,341,341,341,342,342,342,342,342,343,343,343,343,343,344,344,344,344,344,345,345,345,345,345,345,346,346,346,346,346,347,347,347,347,347,348,348,348,348,348,114,114,114,114,114,113,113,113,113,113,112,112,112,112,112,111,111,111,111,111,111,110,110,110,110,110,109,109,109,109,109,108,108,108,108,108,107,107,107,107,107,107,106,106,106,106,106,105,105,105,105,105,339,339,339,339,339,340,340,340,340,340,340,341,341,341,341,341,342,342,342,342,342,343,343,343,343,343,343,344,344,344,344,344,345,345,345,345,345,346,346,346,346,346,346,347,347,347,347,347,348,348,348,348,348,114,114,114,114,114,113,113,113,113,113,112,112,112,112,112,112,111,111,111,111,111,110,110,110,110,110,109,109,109,109,109,109,108,108,108,108,108,107,107,107,107,107,106,106,106,106,106,106,105,105,105,105,105,339,339,339,339,339,340,340,340,340,340,340,341,341,341,341,341,342,342,342,342,342,343,343,343,343,343,343,344,344,344,344,344,345,345,345,345,345,346,346,346,346,346,346,347,347,347,347,347,348,348,348,348,348,114,114,114,114,114,113,113,113,113,113,112,112,112,112,112,112,111,111,111,111,111,110,110,110,110,110,109,109,109,109,109,109,108,108,108,108,108,107,107,107,107,107,106,106,106,106,106,106,105,105,105,105,105,349,349,349,349,349,350,350,350,350,350,351,351,351,351,351,352,352,352,352,352,353,353,353,353,353,354,354,354,354,354,354,355,355,355,355,355,356,356,356,356,356,356,357,357,357,357,357,357,358,358,358,358,358,124,124,124,124,124,123,123,123,123,123,123,122,122,122,122,122,122,121,121,121,121,121,120,120,120,120,120,120,119,119,119,119,119,118,118,118,118,118,117,117,117,117,117,116,116,116,116,116,115,115,115,115,115,349,349,349,349,349,350,350,350,350,350,351,351,351,351,351,352,352,352,352,352,353,353,353,353,353,354,354,354,354,354,354,355,355,355,355,355,356,356,356,356,356,356,357,357,357,357,357,357,358,358,358,358,358,124,124,124,124,124,123,123,123,123,123,123,122,122,122,122,122,122,121,121,121,121,121,120,120,120,120,120,120,119,119,119,119,119,118,118,118,118,118,117,117,117,117,117,116,116,116,116,116,115,115,115,115,115,349,349,349,349,349,350,350,350,350,350,350,351,351,351,351,351,352,352,352,352,352,353,353,353,353,353,354,354,354,354,354,354,355,355,355,355,355,356,356,356,356,356,356,357,357,357,357,357,357,358,358,358,358,358,124,124,124,124,124,123,123,123,123,123,123,122,122,122,122,122,122,121,121,121,121,121,120,120,120,120,120,120,119,119,119,119,119,118,118,118,118,118,117,117,117,117,117,116,116,116,116,116,116,115,115,115,115,115,349,349,349,349,349,350,350,350,350,350,351,351,351,351,351,351,352,352,352,352,352,353,353,353,353,353,364,364,364,354,354,354,355,355,355,355,355,356,356,356,366,366,366,367,367,367,357,357,357,358,358,358,358,358,124,124,124,124,124,123,123,123,133,133,133,132,132,132,122,122,122,121,121,121,121,121,120,120,120,130,130,130,119,119,119,119,119,118,118,118,118,118,117,117,117,117,117,117,116,116,116,116,116,115,115,115,115,115,349,359,359,359,359,360,360,360,360,360,361,361,361,361,361,361,362,362,362,362,352,353,363,363,363,363,364,364,364,364,364,365,365,365,365,365,355,366,366,366,366,366,366,367,367,367,367,367,368,368,368,368,368,358,124,134,134,134,134,134,133,133,133,133,133,132,132,132,132,132,132,121,131,131,131,131,131,130,130,130,130,130,129,129,129,129,119,118,128,128,128,128,127,127,127,127,127,127,126,126,126,126,126,125,125,125,125,115,359,359,359,359,359,359,360,360,360,360,360,361,361,361,361,361,361,362,362,362,362,362,363,363,363,363,363,364,364,364,364,364,365,365,365,365,365,365,366,366,366,366,366,366,367,367,367,367,367,368,368,368,368,368,368,134,134,134,134,134,134,133,133,133,133,133,132,132,132,132,132,132,131,131,131,131,131,131,130,130,130,130,130,129,129,129,129,129,128,128,128,128,128,127,127,127,127,127,127,126,126,126,126,126,125,125,125,125,125,125,359,359,359,359,359,360,360,360,360,360,360,361,361,361,361,361,362,362,362,362,362,362,363,363,363,363,363,364,364,364,364,364,365,365,365,365,365,365,366,366,366,366,366,366,367,367,367,367,367,368,368,368,368,368,368,134,134,134,134,134,134,133,133,133,133,133,132,132,132,132,132,132,131,131,131,131,131,131,130,130,130,130,130,129,129,129,129,129,128,128,128,128,128,128,127,127,127,127,127,126,126,126,126,126,126,125,125,125,125,125,359,359,359,359,359,360,360,360,360,360,360,361,361,361,361,361,362,362,362,362,362,362,363,363,363,363,363,374,364,364,364,364,365,365,365,365,365,375,376,376,376,376,376,366,367,367,367,367,377,378,368,368,368,368,368,134,134,134,134,134,144,143,133,133,133,133,132,142,142,142,142,142,141,131,131,131,131,131,130,130,130,130,140,129,129,129,129,129,128,128,128,128,128,128,127,127,127,127,127,126,126,126,126,126,126,125,125,125,125,125,359,359,369,369,369,370,370,370,370,370,371,371,371,371,371,371,362,372,372,372,372,373,373,373,363,363,363,374,374,374,374,374,375,375,375,375,375,375,376,376,376,376,376,377,377,377,377,377,377,378,378,378,378,378,378,144,144,144,144,144,144,143,143,143,143,143,143,142,142,142,142,142,141,141,141,141,141,141,140,140,140,140,140,129,129,129,139,139,139,138,138,138,138,128,137,137,137,137,137,137,136,136,136,136,136,135,135,135,125,125,369,369,369,369,369,369,370,370,370,370,370,371,371,371,371,371,371,372,372,372,372,372,373,373,373,373,373,374,374,374,374,374,374,375,375,375,375,375,375,376,376,376,376,376,377,377,377,377,377,377,378,378,378,378,378,378,144,144,144,144,144,144,143,143,143,143,143,143,142,142,142,142,142,141,141,141,141,141,141,140,140,140,140,140,140,139,139,139,139,139,138,138,138,138,138,137,137,137,137,137,137,136,136,136,136,136,135,135,135,135,135,135,369,369,369,369,369,370,370,370,370,370,370,371,371,371,371,371,372,372,372,372,372,372,373,373,373,373,373,374,374,374,374,374,374,375,375,375,375,375,375,376,376,376,376,376,377,377,377,377,377,377,378,378,378,378,378,378,144,144,144,144,144,144,143,143,143,143,143,143,142,142,142,142,142,141,141,141,141,141,141,140,140,140,140,140,140,139,139,139,139,139,138,138,138,138,138,138,137,137,137,137,137,136,136,136,136,136,136,135,135,135,135,135,369,369,369,369,369,369,369,370,370,370,370,370,381,371,371,371,371,372,372,372,372,372,372,373,373,373,373,373,384,384,384,374,374,374,375,375,385,385,385,385,386,386,386,386,376,377,377,387,387,387,387,388,388,388,388,378,378,144,144,154,154,154,154,153,153,153,153,143,143,142,152,152,152,152,151,151,151,151,141,141,140,140,140,150,150,150,139,139,139,139,139,138,138,138,138,138,138,137,137,137,137,147,136,136,136,136,136,135,135,135,135,135,135,135,379,379,379,379,379,380,380,380,380,380,380,381,381,381,381,381,381,382,382,382,382,382,383,383,383,373,373,373,384,384,384,384,384,385,385,385,385,385,385,386,386,386,386,386,386,387,387,387,387,387,387,388,388,388,388,388,388,154,154,154,154,154,154,153,153,153,153,153,153,152,152,152,152,152,152,151,151,151,151,151,151,150,150,150,150,150,139,139,139,149,149,149,148,148,148,148,148,147,147,147,147,147,147,146,146,146,146,146,146,145,145,145,145,145,379,379,379,379,379,380,380,380,380,380,380,381,381,381,381,381,382,382,382,382,382,382,383,383,383,383,383,384,384,384,384,384,384,385,385,385,385,385,385,386,386,386,386,386,386,387,387,387,387,387,387,388,388,388,388,388,388,154,154,154,154,154,154,153,153,153,153,153,153,152,152,152,152,152,152,151,151,151,151,151,151,150,150,150,150,150,150,149,149,149,149,149,148,148,148,148,148,148,147,147,147,147,147,146,146,146,146,146,146,145,145,145,145,145,379,379,379,379,379,379,380,380,380,380,380,381,381,381,381,381,381,382,382,382,382,382,382,383,383,383,383,383,384,384,384,384,384,384,385,385,385,385,385,395,396,386,386,386,386,386,387,387,387,387,387,397,398,388,388,388,388,388,154,154,154,154,154,164,163,153,153,153,153,153,152,152,152,152,152,162,161,151,151,151,151,151,150,150,150,150,150,150,149,149,149,149,149,148,148,148,148,148,148,147,147,147,147,147,147,146,146,146,146,146,145,145,145,145,145,145,389,379,379,379,379,379,390,380,380,380,380,381,381,381,391,391,391,392,392,382,382,382,382,383,383,383,383,383,384,394,394,394,394,394,395,395,395,395,395,395,396,396,396,396,396,396,397,397,397,397,397,397,398,398,398,398,398,398,164,164,164,164,164,164,163,163,163,163,163,163,162,162,162,162,162,162,161,161,161,161,161,161,160,160,160,160,160,150,149,149,149,149,149,148,148,148,148,158,158,157,157,157,147,147,147,146,146,146,146,156,145,145,145,145,145,155,389,389,389,389,389,389,390,390,390,390,390,390,391,391,391,391,391,392,392,392,392,392,392,383,383,383,393,393,393,394,394,394,394,394,394,395,395,395,395,395,395,396,396,396,396,396,396,397,397,397,397,397,397,398,398,398,398,398,398,164,164,164,164,164,164,163,163,163,163,163,163,162,162,162,162,162,162,161,161,161,161,161,161,160,160,160,160,160,160,159,159,159,149,149,149,158,158,158,158,158,158,157,157,157,157,157,156,156,156,156,156,156,155,155,155,155,155,155,389,389,389,389,389,389,390,390,390,390,390,390,391,391,391,391,391,392,392,392,392,392,392,393,393,393,393,393,393,394,394,394,394,394,394,395,395,395,395,395,395,396,396,396,396,396,396,397,397,397,397,397,397,398,398,398,398,398,398,164,164,164,164,164,164,163,163,163,163,163,163,162,162,162,162,162,162,161,161,161,161,161,161,160,160,160,160,160,160,159,159,159,159,159,159,158,158,158,158,158,158,157,157,157,157,157,156,156,156,156,156,156,155,155,155,155,155,155,389,389,389,389,389,389,390,390,390,390,390,390,391,391,391,391,391,391,392,392,392,392,392,392,393,393,393,393,393,393,394,394,394,394,394,404,405,405,405,395,395,395,396,396,396,406,406,406,407,407,407,397,397,397,398,398,398,408,408,408,174,174,174,164,164,164,163,163,163,173,173,173,172,172,172,162,162,162,161,161,161,171,171,171,170,160,160,160,160,160,159,159,159,159,159,159,158,158,158,158,158,158,157,157,157,157,157,157,156,156,156,156,156,156,155,155,155,155,155,155,389,389,389,399,399,399,400,400,400,390,390,390,391,391,391,401,401,401,402,402,402,392,392,393,393,393,393,393,393,393,404,404,404,404,404,404,405,405,405,405,405,405,406,406,406,406,406,406,407,407,407,407,407,407,408,408,408,408,408,408,174,174,174,174,174,174,173,173,173,173,173,173,172,172,172,172,172,172,171,171,171,171,171,171,170,170,170,170,170,170,159,159,159,159,159,159,159,158,158,168,168,168,167,167,167,157,157,157,156,156,156,166,166,166,165,165,165,155,155,155,399,399,399,399,399,399,400,400,400,400,400,400,401,401,401,401,401,401,402,402,402,402,402,402,403,403,403,403,403,403,403,404,404,404,404,404,404,405,405,405,405,405,405,406,406,406,406,406,406,407,407,407,407,407,407,408,408,408,408,408,408,174,174,174,174,174,174,173,173,173,173,173,173,172,172,172,172,172,172,171,171,171,171,171,171,170,170,170,170,170,170,169,169,169,169,169,169,169,168,168,168,168,168,168,167,167,167,167,167,167,166,166,166,166,166,166,165,165,165,165,165,165,399,399,399,399,399,399,400,400,400,400,400,400,401,401,401,401,401,401,402,402,402,402,402,402,403,403,403,403,403,403,403,404,404,404,404,404,404,405,405,405,405,405,405,406,406,406,406,406,406,407,407,407,407,407,407,408,408,408,408,408,408,174,174,174,174,174,174,173,173,173,173,173,173,172,172,172,172,172,172,171,171,171,171,171,171,170,170,170,170,170,170,169,169,169,169,169,169,169,168,168,168,168,168,168,167,167,167,167,167,167,166,166,166,166,166,166,165,165,165,165,165,165,399,399,399,399,399,399,400,400,400,400,400,400,401,401,401,401,401,401,402,402,402,402,402,402,403,403,403,403,403,403,403,404,404,414,414,414,414,415,415,415,415,415,415,416,416,416,416,416,416,417,417,417,417,417,417,418,418,418,418,418,418,184,184,184,184,184,184,183,183,183,183,183,183,182,182,182,182,182,182,181,181,181,181,181,181,180,180,180,180,170,170,169,169,169,169,169,169,169,168,168,168,168,168,168,167,167,167,167,167,167,166,166,166,166,166,166,165,165,165,165,165,165,409,409,409,409,409,409,410,410,410,410,410,410,410,411,411,411,411,411,411,412,412,412,412,412,412,413,413,413,413,413,413,413,414,414,414,414,414,414,415,415,415,415,415,415,416,416,416,416,416,416,417,417,417,417,417,417,418,418,418,418,418,418,184,184,184,184,184,184,183,183,183,183,183,183,182,182,182,182,182,182,181,181,181,181,181,181,180,180,180,180,180,180,179,179,179,179,179,179,179,178,178,178,178,178,178,177,177,177,177,177,177,176,176,176,176,176,176,176,175,175,175,175,175,175,409,409,409,409,409,409,410,410,410,410,410,410,411,411,411,411,411,411,411,412,412,412,412,412,412,413,413,413,413,413,413,413,414,414,414,414,414,414,415,415,415,415,415,415,416,416,416,416,416,416,417,417,417,417,417,417,418,418,418,418,418,418,184,184,184,184,184,184,183,183,183,183,183,183,182,182,182,182,182,182,181,181,181,181,181,181,180,180,180,180,180,180,179,179,179,179,179,179,179,178,178,178,178,178,178,177,177,177,177,177,177,177,176,176,176,176,176,176,175,175,175,175,175,175,409,409,409,409,409,409,410,410,410,410,410,410,410,411,411,411,411,411,411,412,412,412,412,412,412,412,413,413,413,413,413,413,413,424,414,414,414,414,414,415,415,415,425,425,425,426,426,426,416,416,416,417,417,417,427,427,427,428,428,428,418,418,418,184,184,184,194,194,194,193,193,193,183,183,183,182,182,182,192,192,192,191,191,191,181,181,181,180,180,180,180,180,190,179,179,179,179,179,179,179,178,178,178,178,178,178,178,177,177,177,177,177,177,176,176,176,176,176,176,176,175,175,175,175,175,175,419,419,419,409,409,409,410,420,420,420,420,420,420,411,411,421,421,421,421,412,412,422,422,422,422,422,423,423,423,423,423,423,424,424,424,424,424,424,425,425,425,425,425,425,425,426,426,426,426,426,426,427,427,427,427,427,427,428,428,428,428,428,428,194,194,194,194,194,194,193,193,193,193,193,193,192,192,192,192,192,192,191,191,191,191,191,191,191,190,190,190,190,190,190,189,189,189,189,189,189,188,188,188,188,188,178,178,187,187,187,187,177,177,186,186,186,186,186,186,176,175,175,175,185,185,185,419,419,419,419,419,419,420,420,420,420,420,420,420,421,421,421,421,421,421,421,422,422,422,422,422,422,423,423,423,423,423,423,423,424,424,424,424,424,424,425,425,425,425,425,425,426,426,426,426,426,426,426,427,427,427,427,427,427,428,428,428,428,428,428,194,194,194,194,194,194,193,193,193,193,193,193,192,192,192,192,192,192,192,191,191,191,191,191,191,190,190,190,190,190,190,189,189,189,189,189,189,189,188,188,188,188,188,188,187,187,187,187,187,187,187,186,186,186,186,186,186,186,185,185,185,185,185,185,419,419,419,419,419,419,420,420,420,420,420,420,420,421,421,421,421,421,421,421,422,422,422,422,422,422,423,423,423,423,423,423,423,424,424,424,424,424,424,425,425,425,425,425,425,436,426,426,426,426,426,426,427,427,427,427,427,427,428,428,428,428,428,428,194,194,194,194,194,194,193,193,193,193,193,193,192,192,192,192,192,192,202,191,191,191,191,191,191,190,190,190,190,190,190,189,189,189,189,189,189,189,188,188,188,188,188,188,187,187,187,187,187,187,187,186,186,186,186,186,186,186,185,185,185,185,185,185,419,419,419,419,419,419,419,420,420,430,430,430,430,430,431,431,421,421,421,421,422,422,422,422,422,432,432,433,433,433,433,423,423,424,424,424,434,434,434,434,435,435,435,435,435,435,436,436,436,436,436,436,437,437,437,437,437,437,427,428,438,438,438,438,438,204,204,204,204,204,194,193,203,203,203,203,203,203,202,202,202,202,202,202,201,201,201,201,201,201,200,200,200,200,190,190,190,189,189,199,199,199,199,198,198,188,188,188,188,188,187,187,187,187,197,197,196,196,196,196,196,186,186,185,185,185,185,185,185,185,429,429,429,429,429,429,429,430,430,430,430,430,430,431,431,431,431,431,431,431,432,432,432,432,432,432,432,433,433,433,433,433,433,434,434,434,434,434,434,435,435,435,435,435,435,435,436,436,436,436,436,436,437,437,437,437,437,437,437,438,438,438,438,438,438,204,204,204,204,204,204,203,203,203,203,203,203,203,202,202,202,202,202,202,201,201,201,201,201,201,201,200,200,200,200,200,200,199,199,199,199,199,199,198,198,198,198,198,198,198,197,197,197,197,197,197,197,196,196,196,196,196,196,195,195,195,195,195,195,195,429,429,429,429,429,429,429,430,430,430,430,430,430,431,431,431,431,431,431,431,432,432,432,432,432,432,433,433,433,433,433,433,433,434,434,434,434,434,434,435,435,435,435,435,435,435,436,436,436,436,436,436,437,437,437,437,437,437,437,438,438,438,438,438,438,204,204,204,204,204,204,203,203,203,203,203,203,203,202,202,202,202,202,202,201,201,201,201,201,201,201,200,200,200,200,200,200,199,199,199,199,199,199,199,198,198,198,198,198,198,197,197,197,197,197,197,197,196,196,196,196,196,196,195,195,195,195,195,195,195,429,429,429,429,429,429,429,440,440,430,430,430,430,431,431,431,431,431,441,441,442,432,432,432,432,432,432,433,433,433,433,443,443,443,444,434,434,434,434,434,435,445,445,445,445,445,445,446,446,446,446,436,436,437,447,447,447,447,447,447,448,448,438,438,438,438,204,204,204,204,214,214,213,213,213,213,213,213,203,202,202,212,212,212,212,211,211,211,211,211,211,201,200,200,200,200,200,210,209,209,209,199,199,199,199,198,198,198,198,198,198,208,207,207,197,197,197,197,197,196,196,196,196,206,206,195,195,195,195,195,195,195,439,439,439,439,439,439,439,440,440,440,440,440,440,441,441,441,441,441,441,441,442,442,442,442,442,442,442,443,443,443,443,443,443,444,444,444,444,444,444,444,445,445,445,445,445,445,446,446,446,446,446,446,446,447,447,447,447,447,447,447,448,448,448,448,448,448,214,214,214,214,214,214,213,213,213,213,213,213,213,212,212,212,212,212,212,212,211,211,211,211,211,211,210,210,210,210,210,210,210,209,209,209,209,209,209,208,208,208,208,208,208,208,207,207,207,207,207,207,207,206,206,206,206,206,206,205,205,205,205,205,205,205,439,439,439,439,439,439,439,440,440,440,440,440,440,440,441,441,441,441,441,441,441,442,442,442,442,442,442,442,443,443,443,443,443,443,444,444,444,444,444,444,444,445,445,445,445,445,445,446,446,446,446,446,446,446,447,447,447,447,447,447,448,448,448,448,448,448,448,214,214,214,214,214,214,214,213,213,213,213,213,213,212,212,212,212,212,212,212,211,211,211,211,211,211,210,210,210,210,210,210,210,209,209,209,209,209,209,208,208,208,208,208,208,208,207,207,207,207,207,207,207,206,206,206,206,206,206,206,205,205,205,205,205,205,205,439,439,439,439,439,439,439,450,440,440,440,440,440,440,441,441,441,441,441,451,452,442,442,442,442,442,442,443,443,443,443,443,443,453,454,444,444,444,444,444,444,445,445,445,455,455,455,456,456,456,456,446,446,446,447,447,457,457,457,457,458,448,448,448,448,448,448,214,214,214,214,214,214,224,223,223,223,223,213,213,212,212,212,222,222,222,222,221,221,221,211,211,211,210,210,210,210,210,210,220,219,209,209,209,209,209,209,208,208,208,208,208,208,218,217,207,207,207,207,207,206,206,206,206,206,206,216,205,205,205,205,205,205,205,449,449,449,449,449,449,449,450,450,450,450,450,450,450,451,451,451,451,451,451,451,452,452,452,452,452,452,452,453,453,453,453,453,453,453,454,454,454,454,454,454,454,455,455,455,455,455,455,456,456,456,456,456,456,456,457,457,457,457,457,457,458,458,458,458,458,458,458,224,224,224,224,224,224,224,223,223,223,223,223,223,222,222,222,222,222,222,222,221,221,221,221,221,221,220,220,220,220,220,220,220,219,219,219,219,219,219,219,218,218,218,218,218,218,218,217,217,217,217,217,217,217,216,216,216,216,216,216,216,215,215,215,215,215,215,215,449,449,449,449,449,449,449,450,450,450,450,450,450,450,451,451,451,451,451,451,451,452,452,452,452,452,452,452,453,453,453,453,453,453,453,454,454,454,454,454,454,454,455,455,455,455,455,455,456,456,456,456,456,456,456,457,457,457,457,457,457,458,458,458,458,458,458,458,224,224,224,224,224,224,224,223,223,223,223,223,223,222,222,222,222,222,222,222,221,221,221,221,221,221,220,220,220,220,220,220,220,219,219,219,219,219,219,219,218,218,218,218,218,218,218,217,217,217,217,217,217,217,216,216,216,216,216,216,216,215,215,215,215,215,215,215,449,449,449,449,449,449,449,450,450,450,450,450,450,450,451,451,451,451,451,451,451,452,452,452,452,452,452,452,453,453,453,453,453,453,453,454,454,454,454,454,454,454,455,455,455,455,455,455,455,466,466,466,456,456,456,456,457,457,457,457,457,457,458,458,458,458,458,458,458,224,224,224,224,224,224,224,223,223,223,223,223,223,222,222,222,222,232,232,232,221,221,221,221,221,221,221,220,220,220,220,220,220,220,219,219,219,219,219,219,219,218,218,218,218,218,218,218,217,217,217,217,217,217,217,216,216,216,216,216,216,216,215,215,215,215,215,215,215,449,459,459,459,459,459,459,460,460,460,460,460,460,460,461,461,461,461,461,461,461,462,462,462,462,462,462,462,463,463,463,463,463,463,463,464,464,464,464,464,464,464,465,465,465,465,465,465,465,466,466,466,466,466,466,467,467,467,467,467,467,467,468,468,468,468,468,468,468,234,234,234,234,234,234,234,233,233,233,233,233,233,233,232,232,232,232,232,232,231,231,231,231,231,231,231,230,230,230,230,230,230,230,229,229,229,229,229,229,229,228,228,228,228,228,228,228,227,227,227,227,227,227,227,226,226,226,226,226,226,226,225,225,225,225,225,225,215,459,459,459,459,459,459,459,460,460,460,460,460,460,460,461,461,461,461,461,461,461,462,462,462,462,462,462,462,463,463,463,463,463,463,463,464,464,464,464,464,464,464,465,465,465,465,465,465,465,466,466,466,466,466,466,467,467,467,467,467,467,467,468,468,468,468,468,468,468,234,234,234,234,234,234,234,233,233,233,233,233,233,233,232,232,232,232,232,232,231,231,231,231,231,231,231,230,230,230,230,230,230,230,229,229,229,229,229,229,229,228,228,228,228,228,228,228,227,227,227,227,227,227,227,226,226,226,226,226,226,226,225,225,225,225,225,225,225,459,459,459,459,459,459,459,459,460,460,460,460,460,460,460,461,461,461,461,461,461,461,462,462,462,462,462,462,462,463,463,463,463,463,463,463,464,464,464,464,464,464,464,465,465,465,465,465,465,465,466,466,466,466,466,466,467,467,467,467,467,467,467,468,468,468,468,468,468,468,234,234,234,234,234,234,234,233,233,233,233,233,233,233,232,232,232,232,232,232,231,231,231,231,231,231,231,230,230,230,230,230,230,230,229,229,229,229,229,229,229,228,228,228,228,228,228,228,227,227,227,227,227,227,227,226,226,226,226,226,226,226,225,225,225,225,225,225,225,225};
-const Int_t AliL3TPCMapping::fgkOPin[fgkNOROC] = {2,4,1,3,4,2,1,3,2,1,3,5,2,4,1,3,2,4,1,3,5,2,1,3,5,2,4,1,3,2,4,1,3,2,1,3,5,5,3,1,2,3,1,4,2,3,1,4,2,5,3,1,2,5,3,1,4,2,3,1,4,2,5,3,1,2,3,1,2,4,3,1,4,2,6,8,5,7,8,6,5,7,4,6,8,7,9,6,8,5,7,6,8,7,9,4,6,8,7,9,6,8,5,7,6,8,5,7,4,6,7,9,9,7,6,4,7,5,8,6,7,5,8,6,9,7,8,6,4,9,7,8,6,7,5,8,6,9,7,8,6,4,7,5,6,8,7,5,8,6,10,12,11,9,10,12,11,9,10,12,14,13,11,10,12,11,9,10,12,13,11,10,12,14,13,11,10,12,11,9,10,12,11,9,8,10,13,11,11,13,10,8,9,11,12,10,9,11,12,10,11,13,14,12,10,11,13,12,10,9,11,12,10,11,13,14,12,10,9,11,12,10,9,11,12,10,14,16,15,13,14,16,15,13,16,18,20,17,15,14,16,15,13,14,16,17,15,16,18,20,17,15,14,16,15,13,14,16,15,13,12,14,17,15,15,17,14,12,13,15,16,14,13,15,16,14,15,17,20,18,16,15,17,16,14,13,15,16,14,15,17,20,18,16,13,15,16,14,13,15,16,14,18,20,19,17,18,20,19,17,4,2,0,21,19,18,20,19,17,18,20,21,19,0,2,4,21,19,18,20,19,17,18,20,19,17,16,18,21,19,19,21,18,16,17,19,20,18,17,19,20,18,19,21,4,2,0,19,21,20,18,17,19,20,18,19,21,0,2,4,17,19,20,18,17,19,20,18,4,2,0,21,4,2,0,1,21,8,6,1,3,2,0,1,21,6,4,2,0,1,6,8,1,3,2,0,1,3,21,2,0,1,21,20,0,2,4,4,2,0,20,21,1,0,2,21,3,1,0,2,3,1,8,6,1,0,2,4,6,21,1,0,2,3,1,6,8,21,1,0,2,4,21,0,2,4,8,6,3,1,8,6,3,5,7,12,10,5,7,6,4,3,5,8,10,3,5,7,12,10,7,5,8,6,4,5,7,6,4,3,5,6,8,1,3,3,1,8,6,5,3,4,6,7,5,4,6,8,5,7,10,12,7,5,3,10,8,5,3,4,6,7,5,10,12,7,5,3,6,8,1,3,6,8,12,10,7,5,10,12,13,9,15,14,16,13,9,10,8,7,9,12,14,13,9,15,16,14,13,9,10,12,14,13,9,10,8,9,7,10,12,7,5,5,7,12,10,7,9,8,10,9,13,14,12,10,9,13,14,16,15,9,13,14,12,9,7,8,10,9,13,16,14,15,9,13,12,10,5,7,10,12,14,16,13,9,14,16,18,19,17,18,20,22,17,15,14,12,15,13,16,18,19,17,22,20,18,17,15,16,18,17,15,14,16,12,15,13,14,16,13,9,9,13,16,14,13,15,12,16,14,15,17,18,16,15,17,18,20,22,17,19,18,16,13,15,12,14,15,17,22,20,18,17,19,18,16,14,9,13,16,14,18,20,17,15,20,22,21,3,5,2,1,3,21,19,18,16,19,17,20,22,21,5,2,1,3,21,19,20,22,21,19,18,20,22,19,17,18,20,17,15,15,17,20,18,17,19,22,20,18,19,21,22,20,19,21,3,1,2,5,21,22,20,17,19,16,18,19,21,3,1,2,5,3,21,22,20,15,17,20,18,1,22,21,19,4,2,1,7,9,6,4,5,7,3,22,20,21,2,3,1,7,9,6,4,5,7,9,3,1,7,9,2,1,3,21,1,3,22,21,19,19,21,22,3,1,21,3,1,2,9,7,1,3,9,7,5,4,6,9,7,1,3,2,21,20,22,3,7,5,4,6,9,7,1,2,4,19,21,22,1,2,3,5,7,8,6,11,13,8,10,12,9,11,1,5,7,9,4,6,8,11,13,8,10,11,13,2,4,5,11,13,6,4,5,7,4,2,5,7,9,9,7,5,2,4,7,5,4,6,13,11,5,4,2,13,11,10,8,13,11,8,6,4,9,7,5,1,11,9,12,10,8,13,11,6,8,7,5,3,2,4,6,8,9,11,10,12,17,15,14,16,13,15,2,4,6,11,13,10,12,14,17,15,12,14,17,15,6,8,10,15,17,10,8,11,9,6,8,10,11,13,13,11,10,8,6,9,11,8,10,17,15,10,8,6,15,17,14,12,15,17,14,12,10,13,11,6,4,2,15,13,16,14,15,17,12,10,11,9,8,6,4,10,12,14,15,13,14,16,21,19,18,20,17,19,8,10,12,17,15,16,18,20,21,19,16,20,21,19,12,14,16,21,19,14,12,15,13,12,14,16,17,15,15,17,16,14,12,13,15,12,14,19,21,16,14,12,19,21,20,16,19,21,20,18,16,15,17,12,10,8,19,17,20,18,19,21,16,14,13,15,14,12,10,16,18,20,19,17,18,20,5,7,3,5,7,21,14,18,20,21,19,4,2,1,3,7,18,1,5,9,18,20,2,3,20,18,16,19,17,18,20,21,19,7,7,19,21,20,18,17,19,16,18,20,3,2,20,18,9,5,1,18,7,3,1,2,4,19,21,20,18,14,21,7,5,3,7,5,20,18,17,19,20,18,16,2,3,1,5,21,2,1,3,9,4,2,1,9,11,16,3,1,7,11,8,6,5,9,4,2,3,7,11,6,4,1,5,1,5,7,9,21,2,1,3,5,9,9,5,3,1,2,21,9,7,5,1,5,1,4,6,11,7,3,2,4,9,5,6,8,11,7,1,3,16,11,9,1,2,4,9,3,1,2,21,5,1,3,2,8,6,4,7,9,4,6,11,13,6,8,10,13,15,2,4,5,9,13,10,12,13,11,6,8,10,13,15,8,10,7,9,2,4,3,11,13,4,6,8,11,13,13,11,8,6,4,13,11,3,4,2,9,7,10,8,15,13,10,8,6,11,13,12,10,13,9,5,4,2,15,13,10,8,6,13,11,6,4,9,7,4,6,8,10,12,14,13,11,8,10,17,15,12,14,16,19,17,6,8,10,15,17,14,16,17,15,12,14,16,19,17,12,14,13,11,6,10,8,15,17,10,12,14,17,15,15,17,14,12,10,17,15,8,10,6,11,13,14,12,17,19,16,14,12,15,17,16,14,17,15,10,8,6,17,19,16,14,12,15,17,10,8,11,13,14,12,10,16,18,20,17,15,12,14,20,21,19,18,20,21,3,12,16,20,21,19,0,18,20,21,19,18,20,21,1,16,18,20,17,15,12,16,14,21,19,16,18,20,21,19,19,21,20,18,16,19,21,14,16,12,15,17,20,18,16,1,21,20,18,19,21,20,18,0,19,21,20,16,12,3,21,20,18,19,21,20,14,12,15,17,20,18,16,2,0,1,21,19,16,18,0,1,3,2,0,1,7,14,18,0,1,3,2,1,3,5,7,0,2,4,3,0,1,3,21,19,20,18,0,1,3,0,3,1,5,7,7,5,1,3,0,3,1,0,18,20,19,21,3,1,0,3,4,2,0,7,5,3,1,2,3,1,0,18,14,7,1,0,2,3,1,0,18,16,19,21,1,0,2,4,6,3,5,7,6,4,2,5,7,6,4,5,9,6,4,2,5,7,4,6,8,9,13,8,6,5,7,6,2,4,5,7,6,4,2,5,7,2,4,6,9,13,13,9,6,4,2,7,5,2,4,6,7,5,4,2,6,7,5,6,8,13,9,8,6,4,7,5,2,4,6,9,5,4,6,7,5,2,4,6,7,5,3,6,4,8,10,9,13,15,8,10,12,13,9,10,8,13,15,8,10,12,13,9,10,12,14,15,17,10,12,13,9,8,10,12,9,13,8,10,12,13,9,8,10,12,17,15,15,17,12,10,8,9,13,12,10,8,13,9,12,10,8,9,13,12,10,17,15,14,12,10,9,13,12,10,8,15,13,8,10,9,13,12,10,8,15,13,9,10,8,12,14,16,19,17,14,16,18,17,15,14,16,12,19,17,14,16,18,17,15,16,20,21,19,14,16,18,17,15,14,16,18,17,15,14,16,18,17,15,14,18,22,21,19,19,21,22,18,14,15,17,18,16,14,15,17,18,16,14,15,17,18,16,14,19,21,20,16,15,17,18,16,14,17,19,12,16,14,15,17,18,16,14,17,19,16,14,12,18,20,22,21,7,1,20,22,21,19,18,20,22,21,5,1,22,20,21,19,18,22,3,7,3,20,22,21,19,20,22,21,19,7,3,20,22,21,19,16,20,1,5,9,9,5,1,20,16,19,21,22,20,3,7,19,21,22,20,19,21,22,20,3,7,3,22,18,19,21,20,22,1,5,21,22,20,18,19,21,22,20,1,7,21,22,20,18,2,1,3,5,9,2,3,5,7,11,2,1,3,7,11,2,3,5,7,11,2,1,5,9,2,5,1,7,9,2,3,1,5,9,2,5,1,7,9,4,2,3,7,11,11,7,3,2,4,9,7,1,5,2,9,5,1,3,2,9,7,1,5,2,9,5,1,2,11,7,5,3,2,11,7,3,1,2,11,7,5,3,2,9,5,3,1,2,4,6,8,11,13,4,6,8,9,13,4,6,8,9,13,4,6,8,9,13,4,6,8,11,13,4,6,8,11,13,4,6,8,11,13,4,6,8,11,13,6,8,10,13,15,15,13,10,8,6,13,11,8,6,4,13,11,8,6,4,13,11,8,6,4,13,11,8,6,4,13,9,8,6,4,13,9,8,6,4,13,9,8,6,4,13,11,8,6,4,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,10,12,14,17,15,12,14,16,19,17,17,19,16,14,12,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,15,17,14,12,10,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,18,20,21,2,3,3,2,21,20,18,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,3,1,7,11,4,2,1,3,5,2,1,3,5,7,2,1,3,5,4,2,1,3,5,3,1,7,11,2,1,3,5,7,2,1,3,5,5,3,1,7,9,6,4,1,5,5,1,4,6,9,7,1,3,5,5,3,1,2,7,5,3,1,2,11,7,1,3,5,3,1,2,4,5,3,1,2,7,5,3,1,2,5,3,1,2,4,11,7,1,3,2,4,5,9,13,8,6,9,7,4,6,8,9,11,4,6,7,9,11,8,6,7,9,2,4,5,9,13,4,8,6,9,11,4,6,7,9,2,4,6,11,13,8,10,7,9,9,7,10,8,13,11,6,4,2,9,7,6,4,11,9,6,8,4,13,9,5,4,2,9,7,6,8,11,9,7,6,4,11,9,8,6,4,7,9,6,8,13,9,5,4,2,6,8,10,15,17,10,12,13,11,10,12,14,15,13,8,10,17,15,13,10,12,13,11,6,8,10,15,17,10,14,12,15,13,8,10,13,11,8,10,12,17,15,12,14,15,11,11,15,14,12,15,17,12,10,8,11,13,10,8,13,15,12,14,10,17,15,10,8,6,11,13,12,10,13,15,17,10,8,13,15,14,12,10,11,13,12,10,17,15,10,8,6,12,18,21,19,14,16,18,17,15,16,18,20,19,17,12,18,21,19,14,16,18,17,15,12,16,20,21,19,16,20,18,19,17,12,14,17,15,14,18,20,21,19,16,18,19,13,13,19,18,16,19,21,20,18,14,15,17,14,12,17,19,18,20,16,19,21,20,16,12,15,17,18,16,14,19,21,18,12,17,19,20,18,16,15,17,18,16,14,19,21,18,12,14,16,20,1,3,0,2,20,21,19,0,1,3,21,14,16,20,0,1,0,1,20,21,19,14,18,1,3,2,4,8,10,21,16,18,20,21,19,16,0,1,5,0,3,20,21,17,17,21,20,3,0,5,1,0,16,19,21,20,18,16,21,10,8,4,2,3,1,18,14,19,21,20,1,0,1,0,20,16,14,21,3,1,0,19,21,20,2,0,3,1,20,16,14,4,2,0,5,7,4,6,1,3,2,4,6,5,7,2,4,6,3,5,2,4,3,5,4,2,0,5,7,0,6,1,3,5,0,1,3,5,7,4,2,3,7,4,2,1,5,7,7,5,1,2,4,7,3,2,4,7,5,3,1,0,5,3,1,6,0,7,5,0,2,4,5,3,4,2,5,3,6,4,2,7,5,6,4,2,3,1,6,4,7,5,0,2,4,6,8,10,9,13,8,10,9,5,8,10,12,13,9,8,10,7,9,13,6,8,7,9,6,8,10,9,13,12,14,7,9,2,4,6,9,13,6,8,10,9,13,6,8,10,9,13,13,9,10,8,6,13,9,10,8,6,13,9,6,4,2,9,7,14,12,13,9,10,8,6,9,7,8,6,13,9,7,10,8,9,13,12,10,8,5,9,10,8,13,9,10,8,6,12,14,20,17,15,12,16,20,15,7,14,20,17,15,12,14,16,17,15,10,14,16,15,13,12,14,16,17,15,16,18,15,13,8,12,14,17,15,12,14,16,17,15,12,14,16,17,15,15,17,16,14,12,15,17,16,14,12,15,17,14,12,8,13,15,18,16,15,17,16,14,12,13,15,16,14,10,15,17,16,14,12,15,17,20,14,7,15,20,16,12,15,17,20,14,12,16,18,22,21,19,14,18,22,19,13,16,22,21,19,18,20,22,21,19,12,20,21,19,17,18,20,22,21,19,20,22,21,17,10,18,22,21,19,18,20,22,21,19,18,20,22,21,19,19,21,22,20,18,19,21,22,20,18,19,21,22,18,10,17,21,22,20,19,21,22,20,18,17,19,21,20,12,19,21,22,20,18,19,21,22,16,13,19,22,18,14,19,21,22,18,16,4,2,1,3,5,4,2,1,21,17,18,1,3,5,2,3,1,5,7,18,22,2,4,3,4,2,1,3,5,3,1,5,19,16,20,1,3,5,2,3,1,5,7,2,3,1,5,7,7,5,1,3,2,7,5,1,3,2,5,3,1,20,16,19,5,1,3,5,3,1,2,4,3,4,2,22,18,7,5,1,3,2,5,3,1,18,17,21,1,2,4,5,3,1,2,4,6,8,7,9,11,6,8,3,5,7,4,2,7,9,4,6,8,9,11,6,8,1,5,7,6,8,9,7,11,2,4,7,9,6,4,2,7,9,4,6,8,9,11,4,6,8,9,11,11,9,8,6,4,11,9,8,6,4,9,7,2,4,6,9,7,4,2,11,7,9,8,6,7,5,1,8,6,11,9,8,6,4,9,7,2,4,7,5,3,8,6,11,9,7,8,6,10,12,14,15,13,10,12,14,11,9,6,8,10,11,13,10,12,14,15,13,10,12,9,11,10,12,14,15,13,6,8,10,11,13,8,10,12,11,13,10,12,14,15,13,10,12,14,15,13,13,15,14,12,10,13,15,14,12,10,13,11,12,10,8,13,11,10,8,6,13,15,14,12,10,11,9,12,10,13,15,14,12,10,13,11,10,8,6,9,11,14,12,10,13,15,14,12,10,16,18,20,21,17,16,18,20,17,13,12,14,16,17,15,16,18,20,21,17,14,16,15,13,16,20,21,19,17,12,14,16,17,15,14,18,19,17,15,16,18,20,21,17,16,20,21,19,17,17,19,21,20,16,17,21,20,18,16,15,17,19,18,14,15,17,16,14,12,17,19,21,20,16,13,15,16,14,17,21,20,18,16,15,17,16,14,12,13,17,20,18,16,17,21,20,18,16,2,1,3,5,19,3,1,21,19,15,1,18,20,21,19,2,1,3,5,19,18,20,21,17,18,2,1,3,5,5,18,20,21,19,16,20,21,3,7,5,3,1,9,19,18,2,1,3,5,5,3,1,2,18,19,9,1,3,5,7,3,21,20,16,19,21,20,18,5,5,3,1,2,18,17,21,20,18,19,5,3,1,2,19,21,20,18,1,15,19,21,1,3,19,5,3,1,2,4,6,8,7,9,4,2,5,7,9,2,5,3,7,9,8,6,4,7,9,2,1,3,5,19,4,6,8,7,9,2,3,1,7,9,4,2,1,5,9,2,4,7,11,13,4,6,8,7,9,9,7,8,6,4,13,11,7,4,2,9,5,1,2,4,9,7,1,3,2,9,7,8,6,4,19,5,3,1,2,9,7,4,6,8,9,7,3,5,2,9,7,5,2,4,9,7,8,6,4,10,12,14,13,11,6,8,10,11,13,4,6,8,11,13,10,12,14,13,11,8,6,4,7,9,10,12,14,13,11,4,6,8,11,13,6,8,10,11,13,6,8,10,15,17,10,12,14,13,11,11,13,14,12,10,17,15,10,8,6,13,11,10,8,6,13,11,8,6,4,11,13,14,12,10,9,7,4,6,8,11,13,14,12,10,13,11,8,6,4,13,11,10,8,6,11,13,14,12,10,16,18,20,17,15,12,14,18,17,15,10,12,14,17,15,16,18,20,17,15,10,12,14,13,11,16,18,20,19,15,10,12,14,17,15,12,14,16,17,15,12,16,20,21,19,16,18,20,17,15,15,17,20,18,16,19,21,20,16,12,15,17,16,14,12,15,17,14,12,10,15,19,20,18,16,11,13,14,12,10,15,17,20,18,16,15,17,14,12,10,15,17,18,14,12,15,17,20,18,16,4,2,0,21,19,2,16,20,21,19,16,18,20,21,19,0,1,3,21,19,20,18,16,17,15,8,4,0,21,17,16,18,20,21,19,0,18,20,21,19,14,18,0,2,4,0,3,1,21,19,19,21,1,3,0,4,2,0,18,14,19,21,20,18,0,19,21,20,18,16,17,21,0,4,8,15,17,16,18,20,19,21,3,1,0,19,21,20,18,16,19,21,20,16,2,19,21,0,2,4,10,8,6,1,3,4,0,1,3,5,0,3,1,5,7,6,4,2,5,7,2,0,1,3,21,19,10,6,2,1,3,4,2,0,1,3,2,3,1,5,7,10,8,6,1,3,2,4,6,5,7,7,5,6,4,2,3,1,6,8,10,7,5,1,3,2,3,1,0,2,4,3,1,2,6,10,19,21,3,1,0,2,7,5,2,4,6,7,5,1,3,0,5,3,1,0,4,3,1,6,8,10,14,12,9,7,5,6,8,10,7,9,2,4,6,9,13,8,10,12,9,13,4,6,8,5,7,9,14,12,9,7,5,6,8,10,5,7,4,6,8,9,13,14,12,9,7,5,12,10,8,9,13,13,9,8,10,12,5,7,9,12,14,13,9,8,6,4,7,5,10,8,6,5,7,9,12,14,9,7,5,8,6,4,13,9,12,10,8,13,9,6,4,2,9,7,10,8,6,5,7,9,12,14,16,20,17,15,13,12,14,16,15,13,8,10,12,17,15,14,16,18,17,15,10,16,18,17,15,13,16,20,17,15,13,12,14,16,13,9,16,12,10,17,15,16,20,17,15,13,14,16,18,17,15,15,17,18,16,14,13,15,17,20,16,15,17,10,12,16,9,13,16,14,12,13,15,17,20,16,13,15,17,18,16,10,15,17,18,16,14,15,17,12,10,8,13,15,16,14,12,13,15,17,20,16,18,22,21,19,5,18,20,22,21,17,14,18,20,22,21,19,20,22,21,19,7,12,20,22,21,19,5,18,22,21,19,18,20,22,21,19,15,18,14,22,21,19,18,22,21,19,7,5,20,22,21,19,19,21,22,20,5,7,19,21,22,18,19,21,22,14,18,15,19,21,22,20,18,19,21,22,18,5,19,21,22,20,12,7,19,21,22,20,19,21,22,20,18,14,17,21,22,20,18,5,19,21,22,18,4,2,1,3,7,1,3,5,7,19,16,2,1,3,5,7,2,1,3,5,9,14,1,3,7,9,2,3,1,7,11,2,1,3,5,7,17,20,3,1,7,9,2,1,3,5,9,2,3,1,7,9,9,7,1,3,2,9,5,3,1,2,9,7,1,3,20,17,7,5,3,1,2,11,7,1,3,2,9,7,3,1,14,9,5,3,1,2,7,5,3,1,2,16,19,7,5,3,1,7,3,1,2,4,8,6,13,9,11,2,4,6,9,11,8,6,4,9,11,13,4,6,8,11,13,2,4,5,11,13,4,6,8,9,13,4,6,8,9,11,13,2,4,5,11,13,4,6,8,11,13,4,6,8,11,13,13,11,8,6,4,13,11,8,6,4,13,11,5,4,2,13,11,9,8,6,4,13,9,8,6,4,13,11,5,4,2,13,11,8,6,4,13,11,9,4,6,8,11,9,6,4,2,11,9,13,6,8,10,12,14,15,17,8,10,12,14,15,13,10,12,14,15,17,14,12,10,15,17,6,8,10,12,15,17,14,12,10,15,17,14,12,10,17,15,6,8,10,12,15,17,14,12,10,15,17,14,12,10,17,15,15,17,10,12,14,17,15,10,12,14,17,15,12,10,8,6,15,17,10,12,14,17,15,10,12,14,17,15,12,10,8,6,17,15,10,12,14,17,15,14,12,10,13,15,14,12,10,8,17,15,14,12,10,16,18,20,21,19,16,18,20,21,19,17,16,18,20,21,19,16,18,20,21,19,14,16,18,20,21,19,16,18,20,21,19,16,18,20,21,19,20,18,16,14,21,19,16,18,20,21,19,16,18,20,21,19,19,21,20,18,16,19,21,20,18,16,19,21,14,16,18,20,19,21,20,18,16,19,21,20,18,16,19,21,20,18,16,14,19,21,20,18,16,19,21,20,18,16,17,19,21,20,18,16,19,21,20,18,16,3,1,5,7,9,5,3,1,7,9,5,3,1,7,11,2,3,1,5,9,5,3,1,7,11,2,5,3,1,7,9,2,3,1,5,7,2,3,1,5,9,11,2,5,3,1,7,9,2,3,1,5,7,7,5,1,3,2,9,7,1,3,5,2,11,9,5,1,3,2,7,5,1,3,2,9,7,1,3,5,2,11,7,1,3,5,9,5,1,3,2,11,7,1,3,5,9,7,1,3,5,9,7,5,1,3,2,4,6,11,13,2,4,6,11,13,2,4,6,9,13,4,6,8,7,11,2,4,6,9,13,4,6,10,12,11,13,4,6,8,9,11,4,6,8,7,13,15,4,6,8,10,11,13,4,6,8,9,11,11,9,8,6,4,13,11,10,8,6,4,15,13,7,8,6,4,11,9,8,6,4,13,11,12,10,6,4,13,9,6,4,2,11,7,8,6,4,13,9,6,4,2,13,11,6,4,2,13,11,6,4,2,8,10,12,17,15,8,10,16,18,17,15,8,12,16,17,15,10,12,14,15,13,8,10,12,17,15,8,14,16,18,17,15,10,12,14,15,13,10,12,14,17,19,21,12,14,16,18,17,15,10,12,14,15,13,13,15,14,12,10,15,17,18,16,14,12,21,19,17,14,12,10,13,15,14,12,10,15,17,18,16,14,8,15,17,12,10,8,13,15,14,12,10,15,17,16,12,8,15,17,18,16,10,8,15,17,12,10,8,14,18,20,21,19,12,14,20,21,19,10,14,18,20,21,19,16,18,20,21,17,14,18,20,21,19,4,0,1,20,21,19,16,18,20,21,17,16,18,20,1,3,5,4,0,1,20,21,19,16,18,20,21,17,17,21,20,18,16,19,21,20,1,0,4,5,3,1,20,18,16,17,21,20,18,16,19,21,20,1,0,4,19,21,20,18,14,17,21,20,18,16,19,21,20,18,14,10,19,21,20,14,12,19,21,20,18,14,16,0,1,3,7,0,1,3,5,7,2,0,1,3,5,7,5,3,1,7,19,16,2,0,1,3,6,2,3,5,7,4,2,0,1,3,19,0,2,4,6,7,9,6,2,3,5,7,6,4,2,0,1,19,19,1,0,2,4,6,7,5,3,2,6,9,7,6,4,2,0,19,3,1,0,2,4,7,5,3,2,6,3,1,0,2,16,19,7,1,3,5,7,5,3,1,0,2,7,5,3,1,0,7,3,1,0,16,2,4,6,5,9,13,2,6,4,9,13,4,6,8,10,9,13,0,2,4,9,13,4,6,8,5,7,8,10,12,9,13,6,8,10,5,7,9,8,10,12,14,13,15,8,10,12,9,13,8,10,12,7,5,3,3,5,7,12,10,8,13,9,12,10,8,15,13,14,12,10,8,9,7,5,10,8,6,13,9,12,10,8,7,5,8,6,4,13,9,4,2,0,13,9,10,8,6,4,13,9,4,6,2,13,9,5,6,4,2,8,10,12,15,17,8,10,14,12,17,15,12,14,16,17,15,6,8,14,16,17,15,10,12,14,13,9,14,16,18,17,15,12,14,16,15,13,17,16,18,22,20,19,17,14,18,20,17,15,14,16,18,17,13,9,9,13,17,18,16,14,15,17,20,18,14,17,19,20,22,18,16,17,13,15,16,14,12,15,17,18,16,14,9,13,14,12,10,15,17,16,14,8,6,15,17,16,14,12,15,17,12,14,10,8,17,15,12,10,8,14,18,22,21,19,16,18,22,20,21,19,18,20,22,21,19,10,12,20,22,21,19,16,18,20,17,15,3,20,22,21,19,18,20,22,21,19,5,6,2,1,5,9,21,16,22,21,19,5,6,20,22,21,19,15,15,19,21,22,20,6,5,19,21,22,16,21,9,5,1,2,6,5,19,21,22,20,18,19,21,22,20,3,15,17,20,18,16,19,21,22,20,12,10,19,21,22,20,18,19,21,20,22,18,16,19,21,22,18,14,16,20,1,5,7,5,3,1,7,11,4,2,1,3,5,7,18,3,1,7,11,4,5,1,22,21,19,2,5,1,7,11,4,2,1,3,7,9,8,4,3,7,11,4,2,1,3,7,9,8,4,2,1,3,5,5,3,1,2,4,8,9,7,3,1,2,4,11,7,3,4,8,9,7,3,1,2,4,11,7,1,5,2,19,21,22,1,5,4,11,7,1,3,18,7,5,3,1,2,4,11,7,1,3,5,7,5,1,20,16,6,4,2,3,9,11,6,4,2,9,13,6,8,10,9,11,13,4,2,5,9,13,6,2,3,7,9,4,6,8,10,9,13,6,8,10,11,13,15,10,12,14,13,15,6,8,10,11,13,15,10,12,14,7,9,11,11,9,7,14,12,10,15,13,11,10,8,6,15,13,14,12,10,15,13,11,10,8,6,13,9,10,8,6,4,9,7,3,2,6,13,9,5,2,4,13,11,9,10,8,6,13,9,2,4,6,11,9,3,2,4,6,8,10,12,13,15,8,10,12,14,15,17,12,14,16,17,15,6,8,10,12,15,17,8,10,12,11,13,12,14,16,18,17,15,12,16,20,21,19,17,16,18,20,19,17,12,16,18,21,19,17,16,18,20,17,15,13,13,15,17,20,18,16,17,19,21,18,16,12,17,19,20,18,16,17,19,21,20,16,12,15,17,18,16,14,12,13,11,12,10,8,17,15,12,10,8,6,15,17,16,14,12,17,15,14,12,10,8,15,13,12,10,8,14,16,18,20,21,19,17,16,18,20,21,19,2,18,20,21,19,14,16,18,20,21,19,14,16,18,19,15,2,3,1,20,21,19,14,18,2,3,5,9,4,2,1,3,21,14,20,2,1,5,9,4,2,1,3,21,19,19,21,3,1,2,4,9,5,1,2,20,14,21,3,1,2,4,9,5,3,2,18,14,19,21,20,1,3,2,15,19,18,16,14,19,21,20,18,16,14,19,21,20,18,2,19,21,20,18,16,17,19,21,20,18,16,14,5,3,1,7,11,2,5,3,1,7,9,6,4,1,3,5,7,2,3,1,5,7,2,1,3,20,21,17,4,6,5,7,9,8,6,4,1,7,11,10,8,6,5,7,9,8,6,4,3,7,11,10,8,6,5,7,9,9,7,5,6,8,10,11,7,3,4,6,8,9,7,5,6,8,10,11,7,1,4,6,8,9,7,5,6,4,17,21,20,3,1,2,7,5,1,3,2,7,5,3,1,4,6,9,7,1,3,5,2,11,7,1,3,5,2,4,6,9,13,4,6,8,10,11,13,8,10,9,11,13,4,6,8,10,9,11,4,6,8,5,7,8,10,12,15,13,11,10,12,14,13,15,17,12,14,16,15,13,11,10,12,18,17,15,13,12,14,16,15,13,11,11,13,15,16,14,12,13,15,17,18,12,10,11,13,15,16,14,12,17,15,13,14,12,10,11,13,15,12,10,8,7,5,8,6,4,11,9,10,8,6,4,13,11,9,10,8,13,11,10,8,6,4,13,9,6,4,2,8,10,12,14,17,15,12,14,16,17,15,12,14,20,19,17,15,12,14,16,20,17,13,10,12,13,11,9,14,18,20,21,19,17,16,18,20,21,19,5,0,18,20,21,19,17,14,16,20,21,19,3,2,18,20,21,19,17,17,19,21,20,18,2,3,19,21,20,16,14,17,19,21,20,18,0,5,19,21,20,18,16,17,19,21,20,18,14,9,11,13,12,10,13,17,20,16,14,12,15,17,19,20,14,12,15,17,16,14,12,15,17,14,12,10,8,2,16,18,20,21,19,4,18,20,21,19,16,18,21,3,7,9,6,4,18,21,19,15,14,20,19,17,15,16,0,3,1,5,7,4,2,0,1,3,7,4,2,1,3,5,7,6,4,2,0,1,5,4,0,1,3,5,7,7,5,3,1,0,4,5,1,0,2,4,6,7,5,3,1,2,4,7,3,1,0,2,4,7,5,1,3,0,16,15,17,19,20,14,15,19,21,18,4,6,9,7,3,21,18,16,19,21,20,18,4,19,21,20,18,16,2,6,4,0,1,3,5,8,6,2,0,1,3,2,0,1,5,13,10,8,2,0,1,3,16,18,21,0,2,1,2,4,6,8,9,13,6,8,10,12,9,13,6,8,10,9,13,15,8,10,12,14,9,7,6,8,10,9,13,15,15,13,9,10,8,6,7,9,14,12,10,8,15,13,9,10,8,6,13,9,12,10,8,6,13,9,8,6,4,2,1,2,0,21,18,16,3,1,0,2,8,10,13,5,1,0,2,3,1,0,2,6,8,5,3,1,0,4,6,8,10,12,13,9,7,10,12,14,16,7,5,4,6,8,15,17,12,14,16,9,7,5,8,6,4,3,5,7,10,12,14,16,17,15,14,16,18,20,17,15,12,14,22,21,19,17,16,18,20,22,15,13,12,18,20,21,19,17,17,19,21,20,18,12,13,15,22,20,18,16,17,19,21,22,14,12,15,17,20,18,16,14,15,17,16,14,12,10,7,5,3,4,6,8,5,7,9,16,14,12,17,15,8,6,4,5,7,16,14,12,10,7,9,13,12,10,8,14,18,22,19,17,15,18,20,22,15,13,9,10,12,18,22,21,19,18,20,22,17,15,13,10,12,14,15,13,9,18,20,22,21,19,7,4,2,3,22,21,19,16,18,20,1,3,7,6,2,1,21,19,17,14,16,22,1,3,7,7,3,1,22,16,14,17,19,21,1,2,6,7,3,1,20,18,16,19,21,22,3,2,4,7,19,21,22,20,18,9,13,15,14,12,10,13,15,17,22,20,18,19,21,22,18,12,10,9,13,15,22,20,18,15,17,19,22,18,14,16,20,21,1,5,7,4,1,5,21,19,17,14,16,20,1,5,7,4,1,3,21,19,16,18,20,22,21,19,17,4,2,1,3,5,9,8,6,1,5,7,9,8,6,4,2,5,9,8,4,3,5,7,9,8,6,4,2,5,9,9,5,2,4,6,8,9,7,5,3,4,8,9,5,2,4,6,8,9,7,5,1,6,8,9,5,3,1,2,4,17,19,21,22,20,18,16,19,21,3,1,4,7,5,1,20,16,14,17,19,21,5,1,4,7,5,1,21,20,16,8,6,4,2,3,9,8,6,2,3,7,9,8,6,4,2,3,9,8,6,2,5,7,9,4,2,1,3,5,7,9,6,8,10,11,13,15,10,12,14,11,13,15,10,12,14,11,13,15,10,12,14,15,13,11,10,12,14,11,13,15,15,13,11,14,12,10,11,13,15,14,12,10,15,13,11,14,12,10,15,13,11,14,12,10,15,13,11,10,8,6,9,7,5,3,1,2,4,9,7,5,2,6,8,9,3,2,4,6,8,9,7,3,2,6,8,9,3,2,4,6,8,10,12,14,11,13,15,10,12,14,11,13,15,10,12,14,11,13,15,10,12,14,15,13,11,6,8,10,12,11,13,15,12,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,12,15,13,11,12,10,8,6,11,13,15,14,12,10,15,13,11,14,12,10,15,13,11,14,12,10,15,13,11,14,12,10,16,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,16,18,20,21,19,17,14,16,18,20,21,19,17,14,16,6,1,3,5,6,4,2,1,3,5,8,6,4,2,1,3,6,4,2,1,3,5,8,6,4,2,1,3,3,1,2,4,6,8,5,3,1,2,4,6,3,1,2,4,6,8,5,3,1,2,4,6,5,3,1,6,16,14,17,19,21,20,18,16,14,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,16,17,19,21,20,18,16,8,6,4,2,1,3,8,6,4,2,1,3,5,2,1,3,5,7,9,6,4,2,1,3,5,8,6,4,2,1,3,5,10,8,4,2,7,9,8,10,13,11,9,7,14,12,10,9,7,5,8,10,7,9,11,13,14,12,10,9,7,5,5,7,9,10,12,14,13,11,9,7,10,8,5,7,9,10,12,14,7,9,11,13,10,8,9,7,2,4,8,10,5,3,1,2,4,6,8,5,3,1,2,4,6,9,7,5,3,1,2,5,3,1,2,4,6,8,3,1,2,4,6,8,14,12,10,9,7,5,10,12,13,11,9,7,10,8,6,4,11,13,15,8,10,13,11,9,7,14,12,10,13,11,9,7,12,14,16,15,13,11,12,16,21,19,17,15,16,18,20,15,13,11,12,16,21,19,17,15,16,18,20,15,13,11,11,13,15,20,18,16,15,17,19,21,16,12,11,13,15,20,18,16,15,17,19,21,16,12,11,13,15,16,14,12,7,9,11,13,10,12,14,7,9,11,13,10,8,15,13,11,4,6,8,10,7,9,11,13,12,10,5,7,9,10,12,14,16,18,20,15,13,11,14,18,20,21,19,17,15,12,16,20,21,19,17,12,16,20,21,19,17,15,16,18,20,21,19,17,15,0,18,20,21,19,17,14,18,20,2,0,1,4,2,0,21,19,17,14,18,20,4,2,0,4,2,0,21,19,17,17,19,21,0,2,4,0,2,4,20,18,14,17,19,21,0,2,4,1,0,2,20,18,14,17,19,21,20,18,0,15,17,19,21,20,18,16,15,17,19,21,20,16,12,17,19,21,20,16,12,15,17,19,21,20,18,14,11,13,15,20,18,16,2,0,1,21,19,17,16,6,4,2,0,1,3,14,18,4,2,0,1,14,18,4,2,0,1,3,8,6,4,2,0,1,4,2,1,3,5,7,10,8,6,4,3,5,7,8,6,1,3,5,7,10,8,6,1,3,5,8,6,1,3,5,7,7,5,3,1,6,8,5,3,1,6,8,10,7,5,3,1,6,8,7,5,3,4,6,8,10,7,5,3,1,2,4,1,0,2,4,6,8,3,1,0,2,4,18,14,1,0,2,4,18,14,3,1,0,2,4,6,16,17,19,21,1,0,2,8,6,4,3,5,7,8,10,12,5,7,9,13,10,8,6,12,3,5,7,10,8,6,5,7,9,16,14,12,10,7,5,3,10,8,6,9,13,15,12,14,16,9,13,15,16,14,12,10,9,13,15,16,14,12,13,9,7,14,12,10,15,13,9,9,13,15,10,12,14,7,9,13,12,14,16,15,13,9,10,12,14,16,15,13,9,16,14,12,15,13,9,6,8,10,3,5,7,10,12,14,16,9,7,5,6,8,10,7,5,3,12,6,8,10,13,9,7,5,12,10,8,7,5,3,4,6,8,10,12,14,15,13,9,14,18,22,21,19,17,15,14,16,18,22,15,13,9,12,18,20,17,15,13,18,20,22,17,15,13,9,12,18,22,21,19,17,18,20,22,21,19,17,6,18,20,22,21,19,17,18,20,22,21,19,15,16,20,22,21,19,17,17,19,21,22,20,16,15,19,21,22,20,18,17,19,21,22,20,18,6,17,19,21,22,20,18,17,19,21,22,18,12,9,13,15,17,22,20,18,13,15,17,20,18,12,9,13,15,22,18,16,14,15,17,19,21,22,18,14,9,13,15,14,12,10,16,18,20,22,21,19,17,16,20,6,4,2,1,3,2,1,20,21,19,17,14,16,22,21,19,3,5,2,1,3,5,21,19,14,16,20,2,1,5,7,6,4,2,1,3,5,8,4,2,1,3,5,6,4,2,1,3,5,17,18,6,4,2,1,3,3,1,2,4,6,18,17,5,3,1,2,4,6,5,3,1,2,4,8,5,3,1,2,4,6,7,5,1,2,20,16,14,19,21,5,3,1,2,5,3,19,21,22,16,14,17,19,21,20,1,2,3,1,2,4,6,20,16,17,19,21,22,20,18,16,8,6,4,2,1,3,5,14,12,10,8,5,7,6,4,3,5,7,9,11,8,6,4,2,1,7,9,4,6,8,7,9,11,10,8,6,4,3,9,8,10,12,13,11,9,7,10,12,14,11,9,7,12,10,8,7,9,11,13,8,10,12,9,7,5,5,7,9,12,10,8,13,11,9,7,8,10,12,7,9,11,14,12,10,7,9,11,13,12,10,8,9,3,4,6,8,10,11,9,7,8,6,4,9,7,1,2,4,6,8,11,9,7,5,3,4,6,7,5,8,10,12,14,5,3,1,2,4,6,8,14,12,10,7,9,11,13,16,18,20,13,11,9,14,12,10,8,17,15,13,10,12,14,15,13,11,10,12,18,19,17,15,13,12,14,16,15,13,11,14,18,20,21,19,17,15,16,18,20,17,15,13,14,18,20,21,19,17,15,14,16,18,15,13,11,11,13,15,18,16,14,15,17,19,21,20,18,14,13,15,17,20,18,16,15,17,19,21,20,18,14,11,13,15,16,14,12,13,15,17,19,18,12,10,11,13,15,14,12,10,13,15,17,8,10,12,14,9,11,13,20,18,16,13,11,9,7,10,12,14,16,18,20,21,19,17,15,4,2,21,19,17,15,16,18,20,21,19,3,7,4,16,18,20,21,19,17,14,16,20,21,3,5,7,6,18,20,21,19,17,16,4,2,1,3,5,7,4,2,1,3,21,19,16,6,4,2,1,3,5,6,4,20,21,19,17,17,19,21,20,4,6,5,3,1,2,4,6,16,19,21,3,1,2,4,7,5,3,1,2,4,16,17,19,21,20,18,6,7,5,3,21,20,16,14,17,19,21,20,18,16,4,7,3,19,21,20,18,16,15,17,19,21,2,4,15,17,19,21,20,18,16,4,2,1,3,5,7,9,6,1,3,5,7,9,8,6,4,2,1,5,9,6,2,1,3,5,7,9,8,6,4,2,1,9,10,8,4,2,1,3,5,10,8,6,9,11,13,12,10,8,6,5,7,9,12,10,8,7,9,11,13,10,8,2,1,3,5,5,3,1,2,8,10,13,11,9,7,8,10,12,9,7,5,6,8,10,12,13,11,9,6,8,10,5,3,1,2,4,8,10,9,1,2,4,6,8,9,7,5,3,1,2,6,9,5,1,2,4,6,8,9,7,5,3,1,6,9,7,5,3,1,2,4,12,10,8,6,11,13,15,8,10,12,14,11,13,15,16,14,12,10,11,13,15,8,10,12,14,11,13,15,14,12,10,15,13,11,16,14,12,7,9,11,13,16,14,12,19,17,15,14,16,18,20,15,13,11,14,18,21,19,17,15,16,14,12,13,11,9,7,7,9,11,13,12,14,16,15,17,19,21,18,14,11,13,15,20,18,16,14,15,17,19,12,14,16,13,11,9,7,12,14,16,11,13,15,10,12,14,15,13,11,14,12,10,8,15,13,11,10,12,14,16,15,13,11,14,12,10,8,15,13,11,6,8,10,12,14,16,18,20,21,19,17,6,16,18,20,21,19,17,18,20,21,19,17,5,8,16,18,20,21,19,17,16,18,20,21,19,17,3,8,18,20,21,19,17,15,18,20,21,0,1,3,10,8,6,4,21,19,17,16,20,6,2,1,5,8,18,20,21,19,17,15,15,17,19,21,20,18,8,5,1,2,6,20,16,17,19,21,4,6,8,10,3,1,0,21,20,18,15,17,19,21,20,18,8,3,17,19,21,20,18,16,17,19,21,20,18,16,8,5,17,19,21,20,18,17,19,21,20,18,16,6,17,19,21,20,18,16,14,8,6,4,2,0,1,3,10,8,4,2,0,1,3,6,4,2,0,1,3,7,10,6,4,2,0,1,3,8,6,4,2,0,1,5,10,6,4,2,0,1,3,8,6,4,2,5,7,16,14,12,2,0,1,3,10,8,4,0,3,7,10,6,4,0,2,1,3,3,1,2,0,4,6,10,7,3,0,4,8,10,3,1,0,2,12,14,16,7,5,2,4,6,8,3,1,0,2,4,6,10,5,1,0,2,4,6,8,3,1,0,2,4,6,10,7,3,1,0,2,4,6,3,1,0,2,4,8,10,3,1,0,2,4,6,8,14,12,10,13,9,7,5,16,14,12,13,9,7,5,14,12,10,8,9,13,15,16,14,12,13,9,7,5,14,12,10,15,13,9,7,16,14,12,13,9,7,5,14,12,10,15,13,9,18,20,22,13,9,7,5,16,14,12,15,13,9,16,14,12,13,9,7,5,5,7,9,13,12,14,16,9,13,15,12,14,16,5,7,9,13,22,20,18,9,13,15,10,12,14,5,7,9,13,12,14,16,7,9,13,15,10,12,14,5,7,9,13,12,14,16,15,13,9,8,10,12,14,5,7,9,13,12,14,16,5,7,9,13,10,12,14,16,20,22,21,19,17,15,18,20,22,21,19,17,15,16,18,20,22,21,19,17,18,20,22,21,19,17,15,16,18,20,22,21,19,17,18,20,22,21,19,17,15,16,18,20,22,21,19,17,6,2,1,21,19,17,15,18,20,22,21,19,17,18,20,22,21,19,17,15,15,17,19,21,22,20,18,17,19,21,22,20,18,15,17,19,21,1,2,6,17,19,21,22,20,18,16,15,17,19,21,22,20,18,17,19,21,22,20,18,16,15,17,19,21,22,20,18,17,19,21,22,20,18,16,15,17,19,21,22,20,18,15,17,19,21,22,20,16,18,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,6,4,2,1,3,5,8,4,3,5,7,9,8,6,4,2,1,3,5,8,6,4,2,1,3,5,5,3,1,2,4,6,8,5,3,1,2,4,6,8,9,7,5,3,4,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,8,5,3,1,2,4,6,18,12,10,8,13,11,9,7,14,12,10,13,11,9,7,14,12,10,13,11,9,7,10,12,14,13,11,9,7,14,12,10,13,11,9,7,14,12,10,13,11,9,7,14,12,10,13,11,9,7,14,12,10,15,13,11,14,12,10,13,11,9,7,14,12,10,13,11,9,7,7,9,11,13,10,12,14,7,9,11,13,10,12,14,11,13,15,10,12,14,7,9,11,13,10,12,14,7,9,11,13,10,12,14,7,9,11,13,10,12,14,7,9,11,13,14,12,10,7,9,11,13,10,12,14,7,9,11,13,10,12,14,7,9,11,13,8,10,12,14,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,15,16,18,20,21,19,17,16,18,20,21,19,17,15,16,18,20,21,19,17,15,15,17,19,21,20,18,16,15,17,19,21,20,18,16,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,15,17,19,21,20,18,16,14};
-const Int_t AliL3TPCMapping::fgkOFec[fgkNOROC] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,27,27,28,28,9,9,9,10,10,10,10,10,11,11,11,11,11,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,15,15,15,15,15,16,16,16,16,16,17,17,17,17,17,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31,31,31,31,31,32,32,32,32,33,33,33,33,33,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,18,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,37,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,26,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,29,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,20,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,24,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,36,37,37,37,37,37,18,18,18,18,18,19,19,19,19,19,19,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,24,24,24,24,24,25,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,36,37,37,37,37,37,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,42,43,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,45,46,46,46,46,46,46,47,47,47,47,47,47,48,48,48,48,48,48,49,49,49,49,49,49,50,50,50,50,50,50,51,51,51,51,51,51,52,52,52,52,52,52,53,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,38,38,38,38,38,38,39,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,41,42,42,42,42,42,42,42,43,43,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,52,52,53,53,53,53,53,53,53,54,54,54,54,54,54,55,55,55,55,55,55,56,56,56,56,56,56,57,57,57,57,57,57,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,65,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,70,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,58,58,58,58,58,58,58,58,59,59,59,59,59,59,59,60,60,60,60,60,60,60,61,61,61,61,61,61,61,62,62,62,62,62,62,62,63,63,63,63,63,63,63,64,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,71,71,71,71,72,72,72,72,72,72,72,73,73,73,73,73,73,73,74,74,74,74,74,74,74,75,75,75,75,75,75,75,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77};
-const Int_t AliL3TPCMapping::fgkOFecChannel[fgkNOROC] = {1,3,0,2,3,1,0,2,1,0,2,4,1,3,0,2,1,3,0,2,4,1,0,2,4,1,3,0,2,1,3,0,2,1,0,2,4,4,2,0,1,2,0,3,1,2,0,3,1,4,2,0,1,4,2,0,3,1,2,0,3,1,4,2,0,1,2,0,1,3,2,0,3,1,5,7,4,6,7,5,4,6,3,5,7,6,8,5,7,4,6,5,7,6,8,3,5,7,6,8,5,7,4,6,5,7,4,6,3,5,6,8,8,6,5,3,6,4,7,5,6,4,7,5,8,6,7,5,3,8,6,7,5,6,4,7,5,8,6,7,5,3,6,4,5,7,6,4,7,5,9,11,10,8,9,11,10,8,9,11,13,12,10,9,11,10,8,9,11,12,10,9,11,13,12,10,9,11,10,8,9,11,10,8,7,9,12,10,10,12,9,7,8,10,11,9,8,10,11,9,10,12,13,11,9,10,12,11,9,8,10,11,9,10,12,13,11,9,8,10,11,9,8,10,11,9,13,15,14,12,13,15,14,12,15,17,19,16,14,13,15,14,12,13,15,16,14,15,17,19,16,14,13,15,14,12,13,15,14,12,11,13,16,14,14,16,13,11,12,14,15,13,12,14,15,13,14,16,19,17,15,14,16,15,13,12,14,15,13,14,16,19,17,15,12,14,15,13,12,14,15,13,17,19,18,16,17,19,18,16,25,23,21,20,18,17,19,18,16,17,19,20,18,21,23,25,20,18,17,19,18,16,17,19,18,16,15,17,20,18,18,20,17,15,16,18,19,17,16,18,19,17,18,20,25,23,21,18,20,19,17,16,18,19,17,18,20,21,23,25,16,18,19,17,16,18,19,17,25,23,21,20,25,23,21,22,20,29,27,22,24,23,21,22,20,27,25,23,21,22,27,29,22,24,23,21,22,24,20,23,21,22,20,19,21,23,25,25,23,21,19,20,22,21,23,20,24,22,21,23,24,22,29,27,22,21,23,25,27,20,22,21,23,24,22,27,29,20,22,21,23,25,20,21,23,25,29,27,24,22,29,27,24,26,28,32,31,26,28,27,25,24,26,29,31,24,26,28,32,31,28,26,29,27,25,26,28,27,25,24,26,27,29,22,24,24,22,29,27,26,24,25,27,28,26,25,27,29,26,28,31,32,28,26,24,31,29,26,24,25,27,28,26,31,32,28,26,24,27,29,22,24,27,29,32,31,28,26,31,32,33,30,35,34,36,33,30,31,29,28,30,32,34,33,30,35,36,34,33,30,31,32,34,33,30,31,29,30,28,31,32,28,26,26,28,32,31,28,30,29,31,30,33,34,32,31,30,33,34,36,35,30,33,34,32,30,28,29,31,30,33,36,34,35,30,33,32,31,26,28,31,32,34,36,33,30,34,36,38,39,37,38,40,42,37,35,34,32,35,33,36,38,39,37,42,40,38,37,35,36,38,37,35,34,36,32,35,33,34,36,33,30,30,33,36,34,33,35,32,36,34,35,37,38,36,35,37,38,40,42,37,39,38,36,33,35,32,34,35,37,42,40,38,37,39,38,36,34,30,33,36,34,38,40,37,35,40,42,41,45,47,44,43,45,41,39,38,36,39,37,40,42,41,47,44,43,45,41,39,40,42,41,39,38,40,42,39,37,38,40,37,35,35,37,40,38,37,39,42,40,38,39,41,42,40,39,41,45,43,44,47,41,42,40,37,39,36,38,39,41,45,43,44,47,45,41,42,40,35,37,40,38,43,42,41,39,46,44,43,49,51,48,46,47,49,45,42,40,41,44,45,43,49,51,48,46,47,49,51,45,43,49,51,44,43,45,41,43,45,42,41,39,39,41,42,45,43,41,45,43,44,51,49,43,45,51,49,47,46,48,51,49,43,45,44,41,40,42,45,49,47,46,48,51,49,43,44,46,39,41,42,43,44,45,47,49,50,48,53,55,50,52,54,51,53,43,47,49,51,46,48,50,53,55,50,52,53,55,44,46,47,53,55,48,46,47,49,46,44,47,49,51,51,49,47,44,46,49,47,46,48,55,53,47,46,44,55,53,52,50,55,53,50,48,46,51,49,47,43,53,51,54,52,50,55,53,48,50,49,47,45,44,46,48,50,51,53,52,54,59,57,56,58,55,57,44,46,48,53,55,52,54,56,59,57,54,56,59,57,48,50,52,57,59,52,50,53,51,48,50,52,53,55,55,53,52,50,48,51,53,50,52,59,57,52,50,48,57,59,56,54,57,59,56,54,52,55,53,48,46,44,57,55,58,56,57,59,54,52,53,51,50,48,46,52,54,56,57,55,56,58,63,61,60,62,59,61,50,52,54,59,57,58,60,62,63,61,58,62,63,61,54,56,58,63,61,56,54,57,55,54,56,58,59,57,57,59,58,56,54,55,57,54,56,61,63,58,56,54,61,63,62,58,61,63,62,60,58,57,59,54,52,50,61,59,62,60,61,63,58,56,55,57,56,54,52,58,60,62,61,59,60,62,68,70,66,68,70,63,56,60,62,63,61,67,65,64,66,70,60,64,68,72,60,62,65,66,62,60,58,61,59,60,62,63,61,70,70,61,63,62,60,59,61,58,60,62,66,65,62,60,72,68,64,60,70,66,64,65,67,61,63,62,60,56,63,70,68,66,70,68,62,60,59,61,62,60,58,65,66,64,68,63,65,64,66,72,67,65,64,72,74,58,66,64,70,74,71,69,68,72,67,65,66,70,74,69,67,64,68,64,68,70,72,63,65,64,66,68,72,72,68,66,64,65,63,72,70,68,64,68,64,67,69,74,70,66,65,67,72,68,69,71,74,70,64,66,58,74,72,64,65,67,72,66,64,65,63,68,64,66,65,71,69,67,70,72,67,69,74,76,69,71,73,76,78,65,67,68,72,76,73,75,76,74,69,71,73,76,78,71,73,70,72,65,67,66,74,76,67,69,71,74,76,76,74,71,69,67,76,74,66,67,65,72,70,73,71,78,76,73,71,69,74,76,75,73,76,72,68,67,65,78,76,73,71,69,76,74,69,67,72,70,67,69,71,73,75,77,76,74,71,73,80,78,75,77,79,82,80,69,71,73,78,80,77,79,80,78,75,77,79,82,80,75,77,76,74,69,73,71,78,80,73,75,77,80,78,78,80,77,75,73,80,78,71,73,69,74,76,77,75,80,82,79,77,75,78,80,79,77,80,78,73,71,69,80,82,79,77,75,78,80,73,71,74,76,77,75,73,79,81,83,80,78,75,77,83,84,82,81,83,84,88,75,79,83,84,82,85,81,83,84,82,81,83,84,86,79,81,83,80,78,75,79,77,84,82,79,81,83,84,82,82,84,83,81,79,82,84,77,79,75,78,80,83,81,79,86,84,83,81,82,84,83,81,85,82,84,83,79,75,88,84,83,81,82,84,83,77,75,78,80,83,81,79,87,85,86,84,82,79,81,85,86,88,87,85,86,92,77,81,85,86,88,87,86,88,90,92,85,87,89,88,85,86,88,84,82,83,81,85,86,88,85,88,86,90,92,92,90,86,88,85,88,86,85,81,83,82,84,88,86,85,88,89,87,85,92,90,88,86,87,88,86,85,81,77,92,86,85,87,88,86,85,81,79,82,84,86,85,87,89,91,88,90,92,91,89,87,90,92,91,89,90,94,91,89,87,90,92,89,91,93,94,97,93,91,90,92,91,87,89,90,92,91,89,87,90,92,87,89,91,94,97,97,94,91,89,87,92,90,87,89,91,92,90,89,87,91,92,90,91,93,97,94,93,91,89,92,90,87,89,91,94,90,89,91,92,90,87,89,91,92,90,88,91,89,93,95,94,97,99,93,95,96,97,94,95,93,97,99,93,95,96,97,94,95,96,98,99,101,95,96,97,94,93,95,96,94,97,93,95,96,97,94,93,95,96,101,99,99,101,96,95,93,94,97,96,95,93,97,94,96,95,93,94,97,96,95,101,99,98,96,95,94,97,96,95,93,99,97,93,95,94,97,96,95,93,99,97,94,95,93,96,98,100,103,101,98,100,102,101,99,98,100,96,103,101,98,100,102,101,99,100,104,105,103,98,100,102,101,99,98,100,102,101,99,98,100,102,101,99,98,102,106,105,103,103,105,106,102,98,99,101,102,100,98,99,101,102,100,98,99,101,102,100,98,103,105,104,100,99,101,102,100,98,101,103,96,100,98,99,101,102,100,98,101,103,100,98,96,102,104,106,105,113,107,104,106,105,103,102,104,106,105,111,107,106,104,105,103,102,106,109,113,109,104,106,105,103,104,106,105,103,113,109,104,106,105,103,100,104,107,111,115,115,111,107,104,100,103,105,106,104,109,113,103,105,106,104,103,105,106,104,109,113,109,106,102,103,105,104,106,107,111,105,106,104,102,103,105,106,104,107,113,105,106,104,102,108,107,109,111,115,108,109,111,113,117,108,107,109,113,117,108,109,111,113,117,108,107,111,115,108,111,107,113,115,108,109,107,111,115,108,111,107,113,115,110,108,109,113,117,117,113,109,108,110,115,113,107,111,108,115,111,107,109,108,115,113,107,111,108,115,111,107,108,117,113,111,109,108,117,113,109,107,108,117,113,111,109,108,115,111,109,107,108,110,112,114,117,119,110,112,114,115,119,110,112,114,115,119,110,112,114,115,119,110,112,114,117,119,110,112,114,117,119,110,112,114,117,119,110,112,114,117,119,112,114,116,119,121,121,119,116,114,112,119,117,114,112,110,119,117,114,112,110,119,117,114,112,110,119,117,114,112,110,119,115,114,112,110,119,115,114,112,110,119,115,114,112,110,119,117,114,112,110,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,116,118,120,123,121,118,120,122,125,123,123,125,122,120,118,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,121,123,120,118,116,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,124,126,127,1,2,2,1,127,126,124,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,2,0,6,10,3,1,0,2,4,1,0,2,4,6,1,0,2,4,3,1,0,2,4,2,0,6,10,1,0,2,4,6,1,0,2,4,4,2,0,6,8,5,3,0,4,4,0,3,5,8,6,0,2,4,4,2,0,1,6,4,2,0,1,10,6,0,2,4,2,0,1,3,4,2,0,1,6,4,2,0,1,4,2,0,1,3,10,6,0,2,1,3,4,8,12,7,5,8,6,3,5,7,8,10,3,5,6,8,10,7,5,6,8,1,3,4,8,12,3,7,5,8,10,3,5,6,8,1,3,5,10,12,7,9,6,8,8,6,9,7,12,10,5,3,1,8,6,5,3,10,8,5,7,3,12,8,4,3,1,8,6,5,7,10,8,6,5,3,10,8,7,5,3,6,8,5,7,12,8,4,3,1,5,7,9,14,16,9,11,12,10,9,11,13,14,12,7,9,16,14,12,9,11,12,10,5,7,9,14,16,9,13,11,14,12,7,9,12,10,7,9,11,16,14,11,13,14,10,10,14,13,11,14,16,11,9,7,10,12,9,7,12,14,11,13,9,16,14,9,7,5,10,12,11,9,12,14,16,9,7,12,14,13,11,9,10,12,11,9,16,14,9,7,5,11,17,20,18,13,15,17,16,14,15,17,19,18,16,11,17,20,18,13,15,17,16,14,11,15,19,20,18,15,19,17,18,16,11,13,16,14,13,17,19,20,18,15,17,18,12,12,18,17,15,18,20,19,17,13,14,16,13,11,16,18,17,19,15,18,20,19,15,11,14,16,17,15,13,18,20,17,11,16,18,19,17,15,14,16,17,15,13,18,20,17,11,13,15,19,22,24,21,23,19,20,18,21,22,24,20,13,15,19,21,22,21,22,19,20,18,13,17,22,24,23,25,29,31,20,15,17,19,20,18,15,21,22,26,21,24,19,20,16,16,20,19,24,21,26,22,21,15,18,20,19,17,15,20,31,29,25,23,24,22,17,13,18,20,19,22,21,22,21,19,15,13,20,24,22,21,18,20,19,23,21,24,22,19,15,13,25,23,21,26,28,25,27,22,24,23,25,27,26,28,23,25,27,24,26,23,25,24,26,25,23,21,26,28,21,27,22,24,26,21,22,24,26,28,25,23,24,28,25,23,22,26,28,28,26,22,23,25,28,24,23,25,28,26,24,22,21,26,24,22,27,21,28,26,21,23,25,26,24,25,23,26,24,27,25,23,28,26,27,25,23,24,22,27,25,28,26,21,23,25,27,29,31,30,33,29,31,30,26,29,31,32,33,30,29,31,28,30,33,27,29,28,30,27,29,31,30,33,32,34,28,30,23,25,27,30,33,27,29,31,30,33,27,29,31,30,33,33,30,31,29,27,33,30,31,29,27,33,30,27,25,23,30,28,34,32,33,30,31,29,27,30,28,29,27,33,30,28,31,29,30,33,32,31,29,26,30,31,29,33,30,31,29,27,32,34,40,37,35,32,36,40,35,28,34,40,37,35,32,34,36,37,35,31,34,36,35,33,32,34,36,37,35,36,38,35,33,29,32,34,37,35,32,34,36,37,35,32,34,36,37,35,35,37,36,34,32,35,37,36,34,32,35,37,34,32,29,33,35,38,36,35,37,36,34,32,33,35,36,34,31,35,37,36,34,32,35,37,40,34,28,35,40,36,32,35,37,40,34,32,36,38,42,41,39,34,38,42,39,33,36,42,41,39,38,40,42,41,39,32,40,41,39,37,38,40,42,41,39,40,42,41,37,31,38,42,41,39,38,40,42,41,39,38,40,42,41,39,39,41,42,40,38,39,41,42,40,38,39,41,42,38,31,37,41,42,40,39,41,42,40,38,37,39,41,40,32,39,41,42,40,38,39,41,42,36,33,39,42,38,34,39,41,42,38,36,46,44,43,45,47,46,44,43,41,37,38,43,45,47,44,45,43,47,49,38,42,44,46,45,46,44,43,45,47,45,43,47,39,36,40,43,45,47,44,45,43,47,49,44,45,43,47,49,49,47,43,45,44,49,47,43,45,44,47,45,43,40,36,39,47,43,45,47,45,43,44,46,45,46,44,42,38,49,47,43,45,44,47,45,43,38,37,41,43,44,46,47,45,43,44,46,48,50,49,51,53,48,50,45,47,49,46,44,49,51,46,48,50,51,53,48,50,43,47,49,48,50,51,49,53,44,46,49,51,48,46,44,49,51,46,48,50,51,53,46,48,50,51,53,53,51,50,48,46,53,51,50,48,46,51,49,44,46,48,51,49,46,44,53,49,51,50,48,49,47,43,50,48,53,51,50,48,46,51,49,44,46,49,47,45,50,48,53,51,49,50,48,52,54,56,57,55,52,54,56,53,51,48,50,52,53,55,52,54,56,57,55,52,54,51,53,52,54,56,57,55,48,50,52,53,55,50,52,54,53,55,52,54,56,57,55,52,54,56,57,55,55,57,56,54,52,55,57,56,54,52,55,53,54,52,50,55,53,52,50,48,55,57,56,54,52,53,51,54,52,55,57,56,54,52,55,53,52,50,48,51,53,56,54,52,55,57,56,54,52,58,60,62,63,59,58,60,62,59,55,54,56,58,59,57,58,60,62,63,59,56,58,57,55,58,62,63,61,59,54,56,58,59,57,56,60,61,59,57,58,60,62,63,59,58,62,63,61,59,59,61,63,62,58,59,63,62,60,58,57,59,61,60,56,57,59,58,56,54,59,61,63,62,58,55,57,58,56,59,63,62,60,58,57,59,58,56,54,55,59,62,60,58,59,63,62,60,58,65,64,66,68,61,66,64,63,61,57,64,60,62,63,61,65,64,66,68,61,60,62,63,59,60,65,64,66,68,68,60,62,63,61,58,62,63,66,70,68,66,64,72,61,60,65,64,66,68,68,66,64,65,60,61,72,64,66,68,70,66,63,62,58,61,63,62,60,68,68,66,64,65,60,59,63,62,60,61,68,66,64,65,61,63,62,60,64,57,61,63,64,66,61,68,66,64,65,67,69,71,70,72,67,65,68,70,72,65,68,66,70,72,71,69,67,70,72,65,64,66,68,61,67,69,71,70,72,65,66,64,70,72,67,65,64,68,72,65,67,70,74,76,67,69,71,70,72,72,70,71,69,67,76,74,70,67,65,72,68,64,65,67,72,70,64,66,65,72,70,71,69,67,61,68,66,64,65,72,70,67,69,71,72,70,66,68,65,72,70,68,65,67,72,70,71,69,67,73,75,77,76,74,69,71,73,74,76,67,69,71,74,76,73,75,77,76,74,71,69,67,70,72,73,75,77,76,74,67,69,71,74,76,69,71,73,74,76,69,71,73,78,80,73,75,77,76,74,74,76,77,75,73,80,78,73,71,69,76,74,73,71,69,76,74,71,69,67,74,76,77,75,73,72,70,67,69,71,74,76,77,75,73,76,74,71,69,67,76,74,73,71,69,74,76,77,75,73,79,81,83,80,78,75,77,81,80,78,73,75,77,80,78,79,81,83,80,78,73,75,77,76,74,79,81,83,82,78,73,75,77,80,78,75,77,79,80,78,75,79,83,84,82,79,81,83,80,78,78,80,83,81,79,82,84,83,79,75,78,80,79,77,75,78,80,77,75,73,78,82,83,81,79,74,76,77,75,73,78,80,83,81,79,78,80,77,75,73,78,80,81,77,75,78,80,83,81,79,89,87,85,84,82,87,79,83,84,82,79,81,83,84,82,85,86,88,84,82,83,81,79,80,78,93,89,85,84,80,79,81,83,84,82,85,81,83,84,82,77,81,85,87,89,85,88,86,84,82,82,84,86,88,85,89,87,85,81,77,82,84,83,81,85,82,84,83,81,79,80,84,85,89,93,78,80,79,81,83,82,84,88,86,85,82,84,83,81,79,82,84,83,79,87,82,84,85,87,89,95,93,91,86,88,89,85,86,88,90,85,88,86,90,92,91,89,87,90,92,87,85,86,88,84,82,95,91,87,86,88,89,87,85,86,88,87,88,86,90,92,95,93,91,86,88,87,89,91,90,92,92,90,91,89,87,88,86,91,93,95,92,90,86,88,87,88,86,85,87,89,88,86,87,91,95,82,84,88,86,85,87,92,90,87,89,91,92,90,86,88,85,90,88,86,85,89,88,86,91,93,95,98,96,94,92,90,91,93,95,92,94,87,89,91,94,97,93,95,96,94,97,89,91,93,90,92,94,98,96,94,92,90,91,93,95,90,92,89,91,93,94,97,98,96,94,92,90,96,95,93,94,97,97,94,93,95,96,90,92,94,96,98,97,94,93,91,89,92,90,95,93,91,90,92,94,96,98,94,92,90,93,91,89,97,94,96,95,93,97,94,91,89,87,94,92,95,93,91,90,92,94,96,98,100,104,101,99,97,96,98,100,99,97,93,95,96,101,99,98,100,102,101,99,95,100,102,101,99,97,100,104,101,99,97,96,98,100,97,94,100,96,95,101,99,100,104,101,99,97,98,100,102,101,99,99,101,102,100,98,97,99,101,104,100,99,101,95,96,100,94,97,100,98,96,97,99,101,104,100,97,99,101,102,100,95,99,101,102,100,98,99,101,96,95,93,97,99,100,98,96,97,99,101,104,100,102,106,105,103,111,102,104,106,105,101,98,102,104,106,105,103,104,106,105,103,113,96,104,106,105,103,111,102,106,105,103,102,104,106,105,103,99,102,98,106,105,103,102,106,105,103,113,111,104,106,105,103,103,105,106,104,111,113,103,105,106,102,103,105,106,98,102,99,103,105,106,104,102,103,105,106,102,111,103,105,106,104,96,113,103,105,106,104,103,105,106,104,102,98,101,105,106,104,102,111,103,105,106,102,110,108,107,109,113,107,109,111,113,103,100,108,107,109,111,113,108,107,109,111,115,98,107,109,113,115,108,109,107,113,117,108,107,109,111,113,101,104,109,107,113,115,108,107,109,111,115,108,109,107,113,115,115,113,107,109,108,115,111,109,107,108,115,113,107,109,104,101,113,111,109,107,108,117,113,107,109,108,115,113,109,107,98,115,111,109,107,108,113,111,109,107,108,100,103,113,111,109,107,113,109,107,108,110,114,112,119,115,117,108,110,112,115,117,114,112,110,115,117,119,110,112,114,117,119,108,110,111,117,119,110,112,114,115,119,110,112,114,115,117,119,108,110,111,117,119,110,112,114,117,119,110,112,114,117,119,119,117,114,112,110,119,117,114,112,110,119,117,111,110,108,119,117,115,114,112,110,119,115,114,112,110,119,117,111,110,108,119,117,114,112,110,119,117,115,110,112,114,117,115,112,110,108,117,115,119,112,114,116,118,120,121,123,114,116,118,120,121,119,116,118,120,121,123,120,118,116,121,123,112,114,116,118,121,123,120,118,116,121,123,120,118,116,123,121,112,114,116,118,121,123,120,118,116,121,123,120,118,116,123,121,121,123,116,118,120,123,121,116,118,120,123,121,118,116,114,112,121,123,116,118,120,123,121,116,118,120,123,121,118,116,114,112,123,121,116,118,120,123,121,120,118,116,119,121,120,118,116,114,123,121,120,118,116,122,124,126,127,125,122,124,126,127,125,123,122,124,126,127,125,122,124,126,127,125,120,122,124,126,127,125,122,124,126,127,125,122,124,126,127,125,126,124,122,120,127,125,122,124,126,127,125,122,124,126,127,125,125,127,126,124,122,125,127,126,124,122,125,127,120,122,124,126,125,127,126,124,122,125,127,126,124,122,125,127,126,124,122,120,125,127,126,124,122,125,127,126,124,122,123,125,127,126,124,122,125,127,126,124,122,2,0,4,6,8,4,2,0,6,8,4,2,0,6,10,1,2,0,4,8,4,2,0,6,10,1,4,2,0,6,8,1,2,0,4,6,1,2,0,4,8,10,1,4,2,0,6,8,1,2,0,4,6,6,4,0,2,1,8,6,0,2,4,1,10,8,4,0,2,1,6,4,0,2,1,8,6,0,2,4,1,10,6,0,2,4,8,4,0,2,1,10,6,0,2,4,8,6,0,2,4,8,6,4,0,2,1,3,5,10,12,1,3,5,10,12,1,3,5,8,12,3,5,7,6,10,1,3,5,8,12,3,5,9,11,10,12,3,5,7,8,10,3,5,7,6,12,14,3,5,7,9,10,12,3,5,7,8,10,10,8,7,5,3,12,10,9,7,5,3,14,12,6,7,5,3,10,8,7,5,3,12,10,11,9,5,3,12,8,5,3,1,10,6,7,5,3,12,8,5,3,1,12,10,5,3,1,12,10,5,3,1,7,9,11,16,14,7,9,15,17,16,14,7,11,15,16,14,9,11,13,14,12,7,9,11,16,14,7,13,15,17,16,14,9,11,13,14,12,9,11,13,16,18,20,11,13,15,17,16,14,9,11,13,14,12,12,14,13,11,9,14,16,17,15,13,11,20,18,16,13,11,9,12,14,13,11,9,14,16,17,15,13,7,14,16,11,9,7,12,14,13,11,9,14,16,15,11,7,14,16,17,15,9,7,14,16,11,9,7,13,17,19,20,18,11,13,19,20,18,9,13,17,19,20,18,15,17,19,20,16,13,17,19,20,18,25,21,22,19,20,18,15,17,19,20,16,15,17,19,22,24,26,25,21,22,19,20,18,15,17,19,20,16,16,20,19,17,15,18,20,19,22,21,25,26,24,22,19,17,15,16,20,19,17,15,18,20,19,22,21,25,18,20,19,17,13,16,20,19,17,15,18,20,19,17,13,9,18,20,19,13,11,18,20,19,17,13,15,21,22,24,28,21,22,24,26,28,23,21,22,24,26,28,26,24,22,28,18,15,23,21,22,24,27,23,24,26,28,25,23,21,22,24,18,21,23,25,27,28,30,27,23,24,26,28,27,25,23,21,22,18,18,22,21,23,25,27,28,26,24,23,27,30,28,27,25,23,21,18,24,22,21,23,25,28,26,24,23,27,24,22,21,23,15,18,28,22,24,26,28,26,24,22,21,23,28,26,24,22,21,28,24,22,21,15,23,25,27,26,30,33,23,27,25,30,33,25,27,29,31,30,33,21,23,25,30,33,25,27,29,26,28,29,31,32,30,33,27,29,31,26,28,30,29,31,32,34,33,35,29,31,32,30,33,29,31,32,28,26,24,24,26,28,32,31,29,33,30,32,31,29,35,33,34,32,31,29,30,28,26,31,29,27,33,30,32,31,29,28,26,29,27,25,33,30,25,23,21,33,30,31,29,27,25,33,30,25,27,23,33,30,26,27,25,23,29,31,32,35,37,29,31,34,32,37,35,32,34,36,37,35,27,29,34,36,37,35,31,32,34,33,30,34,36,38,37,35,32,34,36,35,33,37,36,38,42,40,39,37,34,38,40,37,35,34,36,38,37,33,30,30,33,37,38,36,34,35,37,40,38,34,37,39,40,42,38,36,37,33,35,36,34,32,35,37,38,36,34,30,33,34,32,31,35,37,36,34,29,27,35,37,36,34,32,35,37,32,34,31,29,37,35,32,31,29,34,38,42,41,39,36,38,42,40,41,39,38,40,42,41,39,31,32,40,42,41,39,36,38,40,37,35,45,40,42,41,39,38,40,42,41,39,47,48,44,43,47,51,41,36,42,41,39,47,48,40,42,41,39,35,35,39,41,42,40,48,47,39,41,42,36,41,51,47,43,44,48,47,39,41,42,40,38,39,41,42,40,45,35,37,40,38,36,39,41,42,40,32,31,39,41,42,40,38,39,41,40,42,38,36,39,41,42,38,34,36,40,43,47,49,47,45,43,49,53,46,44,43,45,47,49,38,45,43,49,53,46,47,43,42,41,39,44,47,43,49,53,46,44,43,45,49,51,50,46,45,49,53,46,44,43,45,49,51,50,46,44,43,45,47,47,45,43,44,46,50,51,49,45,43,44,46,53,49,45,46,50,51,49,45,43,44,46,53,49,43,47,44,39,41,42,43,47,46,53,49,43,45,38,49,47,45,43,44,46,53,49,43,45,47,49,47,43,40,36,48,46,44,45,51,53,48,46,44,51,55,48,50,52,51,53,55,46,44,47,51,55,48,44,45,49,51,46,48,50,52,51,55,48,50,52,53,55,57,52,54,56,55,57,48,50,52,53,55,57,52,54,56,49,51,53,53,51,49,56,54,52,57,55,53,52,50,48,57,55,56,54,52,57,55,53,52,50,48,55,51,52,50,48,46,51,49,45,44,48,55,51,47,44,46,55,53,51,52,50,48,55,51,44,46,48,53,51,45,44,46,48,50,52,54,55,57,50,52,54,56,57,59,54,56,58,59,57,48,50,52,54,57,59,50,52,54,53,55,54,56,58,60,59,57,54,58,62,63,61,59,58,60,62,61,59,54,58,60,63,61,59,58,60,62,59,57,55,55,57,59,62,60,58,59,61,63,60,58,54,59,61,62,60,58,59,61,63,62,58,54,57,59,60,58,56,54,55,53,54,52,50,59,57,54,52,50,48,57,59,58,56,54,59,57,56,54,52,50,57,55,54,52,50,56,58,60,62,63,61,59,58,60,62,63,61,65,60,62,63,61,56,58,60,62,63,61,56,58,60,61,57,65,66,64,62,63,61,56,60,65,66,68,72,67,65,64,66,63,56,62,65,64,68,72,67,65,64,66,63,61,61,63,66,64,65,67,72,68,64,65,62,56,63,66,64,65,67,72,68,66,65,60,56,61,63,62,64,66,65,57,61,60,58,56,61,63,62,60,58,56,61,63,62,60,65,61,63,62,60,58,59,61,63,62,60,58,56,68,66,64,70,74,65,68,66,64,70,72,69,67,64,66,68,70,65,66,64,68,70,65,64,66,62,63,59,67,69,68,70,72,71,69,67,64,70,74,73,71,69,68,70,72,71,69,67,66,70,74,73,71,69,68,70,72,72,70,68,69,71,73,74,70,66,67,69,71,72,70,68,69,71,73,74,70,64,67,69,71,72,70,68,69,67,59,63,62,66,64,65,70,68,64,66,65,70,68,66,64,67,69,72,70,64,66,68,65,74,70,64,66,68,65,67,69,72,76,67,69,71,73,74,76,71,73,72,74,76,67,69,71,73,72,74,67,69,71,68,70,71,73,75,78,76,74,73,75,77,76,78,80,75,77,79,78,76,74,73,75,81,80,78,76,75,77,79,78,76,74,74,76,78,79,77,75,76,78,80,81,75,73,74,76,78,79,77,75,80,78,76,77,75,73,74,76,78,75,73,71,70,68,71,69,67,74,72,73,71,69,67,76,74,72,73,71,76,74,73,71,69,67,76,72,69,67,65,71,73,75,77,80,78,75,77,79,80,78,75,77,83,82,80,78,75,77,79,83,80,76,73,75,76,74,72,77,81,83,84,82,80,79,81,83,84,82,90,85,81,83,84,82,80,77,79,83,84,82,88,87,81,83,84,82,80,80,82,84,83,81,87,88,82,84,83,79,77,80,82,84,83,81,85,90,82,84,83,81,79,80,82,84,83,81,77,72,74,76,75,73,76,80,83,79,77,75,78,80,82,83,77,75,78,80,79,77,75,78,80,77,75,73,71,87,79,81,83,84,82,89,81,83,84,82,79,81,84,88,92,94,91,89,81,84,82,78,77,83,82,80,78,79,85,88,86,90,92,89,87,85,86,88,92,89,87,86,88,90,92,91,89,87,85,86,90,89,85,86,88,90,92,92,90,88,86,85,89,90,86,85,87,89,91,92,90,88,86,87,89,92,88,86,85,87,89,92,90,86,88,85,79,78,80,82,83,77,78,82,84,81,89,91,94,92,88,84,81,79,82,84,83,81,89,82,84,83,81,79,87,91,89,85,86,88,90,93,91,87,85,86,88,87,85,86,90,97,95,93,87,85,86,88,79,81,84,85,87,86,87,89,91,93,94,97,91,93,95,96,94,97,91,93,95,94,97,99,93,95,96,98,94,92,91,93,95,94,97,99,99,97,94,95,93,91,92,94,98,96,95,93,99,97,94,95,93,91,97,94,96,95,93,91,97,94,93,91,89,87,86,87,85,84,81,79,88,86,85,87,93,95,97,90,86,85,87,88,86,85,87,91,93,90,88,86,85,89,91,93,95,96,97,94,92,95,96,98,100,92,90,89,91,93,99,101,96,98,100,94,92,90,93,91,89,88,90,92,95,96,98,100,101,99,98,100,102,104,101,99,96,98,106,105,103,101,100,102,104,106,99,97,96,102,104,105,103,101,101,103,105,104,102,96,97,99,106,104,102,100,101,103,105,106,98,96,99,101,104,102,100,98,99,101,100,98,96,95,92,90,88,89,91,93,90,92,94,100,98,96,101,99,93,91,89,90,92,100,98,96,95,92,94,97,96,95,93,98,102,106,103,101,99,102,104,106,99,97,94,95,96,102,106,105,103,102,104,106,101,99,97,95,96,98,99,97,94,102,104,106,105,103,113,110,108,109,106,105,103,100,102,104,107,109,113,112,108,107,105,103,101,98,100,106,107,109,113,113,109,107,106,100,98,101,103,105,107,108,112,113,109,107,104,102,100,103,105,106,109,108,110,113,103,105,106,104,102,94,97,99,98,96,95,97,99,101,106,104,102,103,105,106,102,96,95,94,97,99,106,104,102,99,101,103,106,102,98,100,104,105,107,111,113,110,107,111,105,103,101,98,100,104,107,111,113,110,107,109,105,103,100,102,104,106,105,103,101,110,108,107,109,111,115,114,112,107,111,113,115,114,112,110,108,111,115,114,110,109,111,113,115,114,112,110,108,111,115,115,111,108,110,112,114,115,113,111,109,110,114,115,111,108,110,112,114,115,113,111,107,112,114,115,111,109,107,108,110,101,103,105,106,104,102,100,103,105,109,107,110,113,111,107,104,100,98,101,103,105,111,107,110,113,111,107,105,104,100,114,112,110,108,109,115,114,112,108,109,113,115,114,112,110,108,109,115,114,112,108,111,113,115,110,108,107,109,111,113,115,112,114,116,117,119,121,116,118,120,117,119,121,116,118,120,117,119,121,116,118,120,121,119,117,116,118,120,117,119,121,121,119,117,120,118,116,117,119,121,120,118,116,121,119,117,120,118,116,121,119,117,120,118,116,121,119,117,116,114,112,115,113,111,109,107,108,110,115,113,111,108,112,114,115,109,108,110,112,114,115,113,109,108,112,114,115,109,108,110,112,114,116,118,120,117,119,121,116,118,120,117,119,121,116,118,120,117,119,121,116,118,120,121,119,117,112,114,116,118,117,119,121,118,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,118,121,119,117,118,116,114,112,117,119,121,120,118,116,121,119,117,120,118,116,121,119,117,120,118,116,121,119,117,120,118,116,122,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,122,124,126,127,125,123,120,122,124,126,127,125,123,120,122,5,0,2,4,5,3,1,0,2,4,7,5,3,1,0,2,5,3,1,0,2,4,7,5,3,1,0,2,2,0,1,3,5,7,4,2,0,1,3,5,2,0,1,3,5,7,4,2,0,1,3,5,4,2,0,5,122,120,123,125,127,126,124,122,120,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,122,123,125,127,126,124,122,7,5,3,1,0,2,7,5,3,1,0,2,4,1,0,2,4,6,8,5,3,1,0,2,4,7,5,3,1,0,2,4,9,7,3,1,6,8,7,9,12,10,8,6,13,11,9,8,6,4,7,9,6,8,10,12,13,11,9,8,6,4,4,6,8,9,11,13,12,10,8,6,9,7,4,6,8,9,11,13,6,8,10,12,9,7,8,6,1,3,7,9,4,2,0,1,3,5,7,4,2,0,1,3,5,8,6,4,2,0,1,4,2,0,1,3,5,7,2,0,1,3,5,7,13,11,9,8,6,4,9,11,12,10,8,6,9,7,5,3,10,12,14,7,9,12,10,8,6,13,11,9,12,10,8,6,11,13,15,14,12,10,11,15,20,18,16,14,15,17,19,14,12,10,11,15,20,18,16,14,15,17,19,14,12,10,10,12,14,19,17,15,14,16,18,20,15,11,10,12,14,19,17,15,14,16,18,20,15,11,10,12,14,15,13,11,6,8,10,12,9,11,13,6,8,10,12,9,7,14,12,10,3,5,7,9,6,8,10,12,11,9,4,6,8,9,11,13,15,17,19,14,12,10,13,17,19,20,18,16,14,11,15,19,20,18,16,11,15,19,20,18,16,14,15,17,19,20,18,16,14,21,17,19,20,18,16,13,17,19,23,21,22,25,23,21,20,18,16,13,17,19,25,23,21,25,23,21,20,18,16,16,18,20,21,23,25,21,23,25,19,17,13,16,18,20,21,23,25,22,21,23,19,17,13,16,18,20,19,17,21,14,16,18,20,19,17,15,14,16,18,20,19,15,11,16,18,20,19,15,11,14,16,18,20,19,17,13,10,12,14,19,17,15,23,21,22,20,18,16,15,27,25,23,21,22,24,13,17,25,23,21,22,13,17,25,23,21,22,24,29,27,25,23,21,22,25,23,22,24,26,28,31,29,27,25,24,26,28,29,27,22,24,26,28,31,29,27,22,24,26,29,27,22,24,26,28,28,26,24,22,27,29,26,24,22,27,29,31,28,26,24,22,27,29,28,26,24,25,27,29,31,28,26,24,22,23,25,22,21,23,25,27,29,24,22,21,23,25,17,13,22,21,23,25,17,13,24,22,21,23,25,27,15,16,18,20,22,21,23,29,27,25,24,26,28,29,31,32,26,28,30,33,31,29,27,32,24,26,28,31,29,27,26,28,30,36,34,32,31,28,26,24,31,29,27,30,33,35,32,34,36,30,33,35,36,34,32,31,30,33,35,36,34,32,33,30,28,34,32,31,35,33,30,30,33,35,31,32,34,28,30,33,32,34,36,35,33,30,31,32,34,36,35,33,30,36,34,32,35,33,30,27,29,31,24,26,28,31,32,34,36,30,28,26,27,29,31,28,26,24,32,27,29,31,33,30,28,26,32,31,29,28,26,24,25,27,29,31,32,34,35,33,30,34,38,42,41,39,37,35,34,36,38,42,35,33,30,32,38,40,37,35,33,38,40,42,37,35,33,30,32,38,42,41,39,37,38,40,42,41,39,37,48,38,40,42,41,39,37,38,40,42,41,39,35,36,40,42,41,39,37,37,39,41,42,40,36,35,39,41,42,40,38,37,39,41,42,40,38,48,37,39,41,42,40,38,37,39,41,42,38,32,30,33,35,37,42,40,38,33,35,37,40,38,32,30,33,35,42,38,36,34,35,37,39,41,42,38,34,30,33,35,34,32,31,36,38,40,42,41,39,37,36,40,48,46,44,43,45,44,43,40,41,39,37,34,36,42,41,39,45,47,44,43,45,47,41,39,34,36,40,44,43,47,49,48,46,44,43,45,47,50,46,44,43,45,47,48,46,44,43,45,47,37,38,48,46,44,43,45,45,43,44,46,48,38,37,47,45,43,44,46,48,47,45,43,44,46,50,47,45,43,44,46,48,49,47,43,44,40,36,34,39,41,47,45,43,44,47,45,39,41,42,36,34,37,39,41,40,43,44,45,43,44,46,48,40,36,37,39,41,42,40,38,36,50,48,46,44,43,45,47,56,54,52,50,47,49,48,46,45,47,49,51,53,50,48,46,44,43,49,51,46,48,50,49,51,53,52,50,48,46,45,51,50,52,54,55,53,51,49,52,54,56,53,51,49,54,52,50,49,51,53,55,50,52,54,51,49,47,47,49,51,54,52,50,55,53,51,49,50,52,54,49,51,53,56,54,52,49,51,53,55,54,52,50,51,45,46,48,50,52,53,51,49,50,48,46,51,49,43,44,46,48,50,53,51,49,47,45,46,48,49,47,50,52,54,56,47,45,43,44,46,48,50,56,54,52,49,51,53,55,58,60,62,55,53,51,56,54,52,50,59,57,55,52,54,56,57,55,53,52,54,60,61,59,57,55,54,56,58,57,55,53,56,60,62,63,61,59,57,58,60,62,59,57,55,56,60,62,63,61,59,57,56,58,60,57,55,53,53,55,57,60,58,56,57,59,61,63,62,60,56,55,57,59,62,60,58,57,59,61,63,62,60,56,53,55,57,58,56,54,55,57,59,61,60,54,52,53,55,57,56,54,52,55,57,59,50,52,54,56,51,53,55,62,60,58,55,53,51,49,52,54,56,58,60,62,63,61,59,57,67,65,63,61,59,57,58,60,62,63,61,66,70,67,58,60,62,63,61,59,56,58,62,63,66,68,70,69,60,62,63,61,59,58,67,65,64,66,68,70,67,65,64,66,63,61,58,69,67,65,64,66,68,69,67,62,63,61,59,59,61,63,62,67,69,68,66,64,65,67,69,58,61,63,66,64,65,67,70,68,66,64,65,67,58,59,61,63,62,60,69,70,68,66,63,62,58,56,59,61,63,62,60,58,67,70,66,61,63,62,60,58,57,59,61,63,65,67,57,59,61,63,62,60,58,67,65,64,66,68,70,72,69,64,66,68,70,72,71,69,67,65,64,68,72,69,65,64,66,68,70,72,71,69,67,65,64,72,73,71,67,65,64,66,68,73,71,69,72,74,76,75,73,71,69,68,70,72,75,73,71,70,72,74,76,73,71,65,64,66,68,68,66,64,65,71,73,76,74,72,70,71,73,75,72,70,68,69,71,73,75,76,74,72,69,71,73,68,66,64,65,67,71,73,72,64,65,67,69,71,72,70,68,66,64,65,69,72,68,64,65,67,69,71,72,70,68,66,64,69,72,70,68,66,64,65,67,75,73,71,69,74,76,78,71,73,75,77,74,76,78,79,77,75,73,74,76,78,71,73,75,77,74,76,78,77,75,73,78,76,74,79,77,75,70,72,74,76,79,77,75,82,80,78,77,79,81,83,78,76,74,77,81,84,82,80,78,79,77,75,76,74,72,70,70,72,74,76,75,77,79,78,80,82,84,81,77,74,76,78,83,81,79,77,78,80,82,75,77,79,76,74,72,70,75,77,79,74,76,78,73,75,77,78,76,74,77,75,73,71,78,76,74,73,75,77,79,78,76,74,77,75,73,71,78,76,74,69,71,73,75,77,79,81,83,84,82,80,91,79,81,83,84,82,80,81,83,84,82,80,90,93,79,81,83,84,82,80,79,81,83,84,82,80,88,93,81,83,84,82,80,78,81,83,84,85,86,88,95,93,91,89,84,82,80,79,83,91,87,86,90,93,81,83,84,82,80,78,78,80,82,84,83,81,93,90,86,87,91,83,79,80,82,84,89,91,93,95,88,86,85,84,83,81,78,80,82,84,83,81,93,88,80,82,84,83,81,79,80,82,84,83,81,79,93,90,80,82,84,83,81,80,82,84,83,81,79,91,80,82,84,83,81,79,77,93,91,89,87,85,86,88,95,93,89,87,85,86,88,91,89,87,85,86,88,92,95,91,89,87,85,86,88,93,91,89,87,85,86,90,95,91,89,87,85,86,88,93,91,89,87,90,92,100,98,96,87,85,86,88,95,93,89,85,88,92,95,91,89,85,87,86,88,88,86,87,85,89,91,95,92,88,85,89,93,95,88,86,85,87,96,98,100,92,90,87,89,91,93,88,86,85,87,89,91,95,90,86,85,87,89,91,93,88,86,85,87,89,91,95,92,88,86,85,87,89,91,88,86,85,87,89,93,95,88,86,85,87,89,91,93,98,96,95,97,94,92,90,100,98,96,97,94,92,90,98,96,95,93,94,97,99,100,98,96,97,94,92,90,98,96,95,99,97,94,92,100,98,96,97,94,92,90,98,96,95,99,97,94,102,104,106,97,94,92,90,100,98,96,99,97,94,100,98,96,97,94,92,90,90,92,94,97,96,98,100,94,97,99,96,98,100,90,92,94,97,106,104,102,94,97,99,95,96,98,90,92,94,97,96,98,100,92,94,97,99,95,96,98,90,92,94,97,96,98,100,99,97,94,93,95,96,98,90,92,94,97,96,98,100,90,92,94,97,95,96,98,100,104,106,105,103,101,99,102,104,106,105,103,101,99,100,102,104,106,105,103,101,102,104,106,105,103,101,99,100,102,104,106,105,103,101,102,104,106,105,103,101,99,100,102,104,106,105,103,101,112,108,107,105,103,101,99,102,104,106,105,103,101,102,104,106,105,103,101,99,99,101,103,105,106,104,102,101,103,105,106,104,102,99,101,103,105,107,108,112,101,103,105,106,104,102,100,99,101,103,105,106,104,102,101,103,105,106,104,102,100,99,101,103,105,106,104,102,101,103,105,106,104,102,100,99,101,103,105,106,104,102,99,101,103,105,106,104,100,102,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,112,110,108,107,109,111,114,110,109,111,113,115,114,112,110,108,107,109,111,114,112,110,108,107,109,111,111,109,107,108,110,112,114,111,109,107,108,110,112,114,115,113,111,109,110,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,114,111,109,107,108,110,112,102,118,116,114,119,117,115,113,120,118,116,119,117,115,113,120,118,116,119,117,115,113,116,118,120,119,117,115,113,120,118,116,119,117,115,113,120,118,116,119,117,115,113,120,118,116,119,117,115,113,120,118,116,121,119,117,120,118,116,119,117,115,113,120,118,116,119,117,115,113,113,115,117,119,116,118,120,113,115,117,119,116,118,120,117,119,121,116,118,120,113,115,117,119,116,118,120,113,115,117,119,116,118,120,113,115,117,119,116,118,120,113,115,117,119,120,118,116,113,115,117,119,116,118,120,113,115,117,119,116,118,120,113,115,117,119,114,116,118,120,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,121,122,124,126,127,125,123,122,124,126,127,125,123,121,122,124,126,127,125,123,121,121,123,125,127,126,124,122,121,123,125,127,126,124,122,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,121,123,125,127,126,124,122,120};
-const Int_t AliL3TPCMapping::fgkOFecCon[fgkNOROC] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,2,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,1,1,1,1,1,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,2,2,2,2,2,2,3,3,3,3,3,2,3,3,3,2,2,3,3,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,3,3,2,2,3,3,3,2,3,3,3,3,3,2,2,2,2,2,2,3,3,3,3,3,2,2,2,2,2,2,2,3,3,3,3,2,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,3,3,3,3,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,2,3,3,2,2,2,3,2,2,2,2,3,3,3,3,2,2,2,2,2,2,3,3,3,3,3,2,2,2,2,2,2,2,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,3,3,3,2,2,2,2,2,2,3,3,3,3,2,2,2,2,3,2,2,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,3,3,4,3,3,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,4,3,3,3,3,3,3,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,4,4,4,3,3,3,3,3,3,3,3,3,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,4,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,4,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,4,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,3,3,3,3,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,3,3,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,3,3,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5};
# Constantin Loizides #
################################
-MODNAME = AliL3Misc
+MODNAME = AliHLTMisc
ifndef ALIHLT_TOPDIR
ALIHLT_TOPDIR = $(shell pwd)/..
include $(ALIHLT_TOPDIR)/Makefile.conf
-SRCS = AliL3TransBit.cxx AliL3AltroMemHandler.cxx \
- AliL3VHDLClusterFinder.cxx AliL3TPCMapping.cxx \
- AliL3FFloat.cxx AliL3Stopwatch.cxx AliL3DDLRawReader.cxx \
- AliL3DDLRawReaderFile.cxx AliL3DDLTPCRawStream.cxx
+SRCS = AliHLTTransBit.cxx AliHLTAltroMemHandler.cxx \
+ AliHLTVHDLClusterFinder.cxx AliHLTTPCMapping.cxx \
+ AliHLTFFloat.cxx AliHLTStopwatch.cxx AliHLTDDLRawReader.cxx \
+ AliHLTDDLRawReaderFile.cxx AliHLTDDLTPCRawStream.cxx
ifneq ($(ARCH),macosx)
## for macosx put into src as symbolic link
-SRCS += AliL3DDLDataFileHandler.cxx AliL3DataHandler.cxx
+SRCS += AliHLTDDLDataFileHandler.cxx AliHLTDataHandler.cxx
endif
include $(ALIHLT_TOPDIR)/Makefile.rules
DEFSTR = -Dno_root
INCLUDES = -I$(ALIHLT_TOPDIR)/src -I$(ALIHLT_TOPDIR)/hough -I$(ALIHLT_TOPDIR)/comp -I$(ALIHLT_TOPDIR)/misc -I$(ALIHLT_TOPDIR)/trigger -I$(ALIHLT_TOPDIR)/kalman
-LIBS = -L$(ALIHLT_LIBDIR) -lAliL3Src -lAliL3Hough -lAliL3Comp -lAliL3Misc
-STATICLIBS = $(ALIHLT_LIBDIR)/libAliL3Src.a $(ALIHLT_LIBDIR)/libAliL3Hough.a $(ALIHLT_LIBDIR)/libAliL3Comp.a $(ALIHLT_LIBDIR)/libAliL3Misc.a
+LIBS = -L$(ALIHLT_LIBDIR) -lAliHLTSrc -lAliHLTHough -lAliHLTComp -lAliHLTMisc
+STATICLIBS = $(ALIHLT_LIBDIR)/libAliHLTSrc.a $(ALIHLT_LIBDIR)/libAliHLTHough.a $(ALIHLT_LIBDIR)/libAliHLTComp.a $(ALIHLT_LIBDIR)/libAliHLTMisc.a
ifneq ($(ALIHLT_USEPACKAGE),STANDALONE)
ROOTCFLAGS := $(shell root-config --cflags)
BOMB THE COMPILE: USEPACKAGE=ALIROOT
#endif
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3MemHandler.h"
-#include "AliL3FileHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
#if __GNUC__ == 3
using namespace std;
/*
- AliL3FileHandler *fFileHandler = new AliL3FileHandler();
+ AliHLTFileHandler *fFileHandler = new AliHLTFileHandler();
fFileHandler->SetAliInput(in);
- AliL3Transform *fTransformer = new AliL3Transform(path);
+ AliHLTTransform *fTransformer = new AliHLTTransform(path);
fFileHandler->Init(fTransformer);
} else strcpy(tofilename,file);
FILE *f = fopen(tofilename,"w");
- fprintf(f,"void AliL3Transform::Init(){\n");
+ fprintf(f,"void AliHLTTransform::Init(){\n");
fprintf(f," //sector:\n");
fprintf(f," fNTimeBins = %d ;\n",fNTimeBins);
#if 0
void singlepatch(Char_t* in,Int_t first, Int_t last,Char_t *path="",Int_t event=0)
{
- AliL3Logger l;
- //l.UnSet(AliL3Logger::kDebug);
- //l.UnSet(AliL3Logger::kAll);
- //l.Set(AliL3Logger::kInformational);
+ AliHLTLogger l;
+ //l.UnSet(AliHLTLogger::kDebug);
+ //l.UnSet(AliHLTLogger::kAll);
+ //l.Set(AliHLTLogger::kInformational);
//l.UseStdout();
l.UseStream();
Char_t fname[100];
sprintf(fname,"%sevent_%d/",path,event);
Char_t name[256];
- AliL3FileHandler *fFileHandler = new AliL3FileHandler();
+ AliHLTFileHandler *fFileHandler = new AliHLTFileHandler();
fFileHandler->SetAliInput(in);
Int_t srow[2] = {0,175};
Int_t patch=0;
Program to convert big <-> little endian cosmics data of 02/2003.
*/
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
#if __GNUC__ == 3
using namespace std;
vhdl implementation of the Hough transform.
*/
-#include <AliL3StandardIncludes.h>
-#include <AliL3RootTypes.h>
-#include <AliL3Transform.h>
-#include <AliL3Logging.h>
-#include <AliL3Logger.h>
-#include <AliL3MemHandler.h>
-#include <AliL3HoughTransformerVhdl.h>
+#include <AliHLTStandardIncludes.h>
+#include <AliHLTRootTypes.h>
+#include <AliHLTTransform.h>
+#include <AliHLTLogging.h>
+#include <AliHLTLogger.h>
+#include <AliHLTMemHandler.h>
+#include <AliHLTHoughTransformerVhdl.h>
#if __GNUC__ == 3
using namespace std;
Int_t slice=0;
Char_t path[1000];
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStderr();
//l.UseStdout();
//l.UseStream();
exit(1);
}
- AliL3Transform::Init(path);
- cerr << "Transform version: " << AliL3Transform::GetVersion() << endl;
+ AliHLTTransform::Init(path);
+ cerr << "Transform version: " << AliHLTTransform::GetVersion() << endl;
- AliL3HoughTransformerVhdl vtest(slice,patch,100,10);
+ AliHLTHoughTransformerVhdl vtest(slice,patch,100,10);
vtest.CreateHistograms(64,0.1,64,-30,30);
vtest.PrintVhdl();
exit(0);
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Logger.h"
-#include "AliL3MemHandler.h"
-#include "AliL3AltroMemHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTLogger.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTAltroMemHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
#if __GNUC__ == 3
using namespace std;
Bool_t altroout=kFALSE;
FILE *afile=0;
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
//l.UseStderr();
//l.UseStdout();
//l.UseStream();
//Loading all specific aliroot version quantities, needed.
Char_t fname[1024];
strcpy(fname,argv[1]);
- AliL3Transform::Init(dirname(fname));
+ AliHLTTransform::Init(dirname(fname));
strcpy(fname,argv[1]);
//Filehandler object:
- AliL3MemHandler file;
+ AliHLTMemHandler file;
//Give slice and patch information (see filename convention)
if((patch>=0)&&(patch<6)) file.Init(slice,patch);
}
//Create an RowData object to access the data
- AliL3DigitRowData *digits=0;
+ AliHLTDigitRowData *digits=0;
UInt_t nrows=0;
//Read the file, and store the data in memory. Return value is a pointer to the data.
digits = file.CompBinary2Memory(nrows);
//Create an ALtroMemHandler object
- AliL3AltroMemHandler altromem;
+ AliHLTAltroMemHandler altromem;
if(altroout) altroout=altromem.SetASCIIOutput(afile);
UShort_t time,charge;
for(UInt_t r=0; r<nrows; r++) //Loop over padrows
{
//Get the data on this padrow:
- AliL3DigitData *dataPt = (AliL3DigitData*)digits->fDigitData;
+ AliHLTDigitData *dataPt = (AliHLTDigitData*)digits->fDigitData;
row++;
if(lrow+1==row) crows++;
// Author: Constantin Loizides <loizides@ikf.uni-frankfurt.de
//*-- Copyright © ALICE HLT Group
-#include <AliL3StandardIncludes.h>
-
-#include <AliL3RootTypes.h>
-#include <AliL3Logging.h>
-#include <AliL3Logger.h>
-#include <AliL3Transform.h>
-#include <AliL3Track.h>
-#include <AliL3TrackArray.h>
-#include <AliL3HoughTrack.h>
-#include <AliL3ClustFinderNew.h>
-#include <AliL3MemHandler.h>
-#include <AliL3SpacePointData.h>
-#include <AliL3HoughBaseTransformer.h>
-#include <AliL3HoughTransformer.h>
-#include <AliL3HoughTransformerLUT.h>
-#include <AliL3HoughTransformerVhdl.h>
-#include <AliL3HoughMaxFinder.h>
-#include <AliL3Hough.h>
+#include <AliHLTStandardIncludes.h>
+
+#include <AliHLTRootTypes.h>
+#include <AliHLTLogging.h>
+#include <AliHLTLogger.h>
+#include <AliHLTTransform.h>
+#include <AliHLTTrack.h>
+#include <AliHLTTrackArray.h>
+#include <AliHLTHoughTrack.h>
+#include <AliHLTClustFinderNew.h>
+#include <AliHLTMemHandler.h>
+#include <AliHLTSpacePointData.h>
+#include <AliHLTHoughBaseTransformer.h>
+#include <AliHLTHoughTransformer.h>
+#include <AliHLTHoughTransformerLUT.h>
+#include <AliHLTHoughTransformerVhdl.h>
+#include <AliHLTHoughMaxFinder.h>
+#include <AliHLTHough.h>
#ifndef no_root
#include <TROOT.h>
Int_t sh=0;
Int_t segs=100;
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStderr();
//l.UseStdout();
//l.UseStream();
segs=atoi(argv[4]);
}
- //AliL3FFloat::SetParams(10000);
- AliL3Transform::Init(path);
+ //AliHLTFFloat::SetParams(10000);
+ AliHLTTransform::Init(path);
#if 0
runhough(sl,sh,path,segs);
#else //do some comparison tests
- AliL3HoughBaseTransformer *fh1 = new AliL3HoughTransformerVhdl(0,0,segs);
- AliL3HoughBaseTransformer *fh2 = new AliL3HoughTransformerLUT(0,0,segs);
+ AliHLTHoughBaseTransformer *fh1 = new AliHLTHoughTransformerVhdl(0,0,segs);
+ AliHLTHoughBaseTransformer *fh2 = new AliHLTHoughTransformerLUT(0,0,segs);
fh1->CreateHistograms(64,0.1,64,-30.,30.);
fh2->CreateHistograms(64,0.1,64,-30.,30.);
#endif
- //AliL3FFloat::PrintStat();
+ //AliHLTFFloat::PrintStat();
exit(0);
}
Int_t tv=1;
Int_t th=14000;
- AliL3Hough *hough = new AliL3Hough();
+ AliHLTHough *hough = new AliHLTHough();
hough->Init(path,binary,n_eta_segments,bit8,tv);
hough->GetMaxFinder()->SetThreshold(th);
Int_t ntracks=0;
hough->FindTrackCandidates();
//hough->Evaluate(5);
- AliL3TrackArray *tracks = (AliL3TrackArray*)hough->GetTracks(0);
+ AliHLTTrackArray *tracks = (AliHLTTrackArray*)hough->GetTracks(0);
ntracks=tracks->GetNTracks();
for(int i=0; i<ntracks; i++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
if(sl==sh) cout<<"pt "<<track->GetPt()<<" psi "<<track->GetPsi()<<" eta "<<track->GetEta()<<" etaindex "<<track->GetEtaIndex()<<" weight "<<track->GetWeight()<<endl;
if(show_seg<0) show_seg=track->GetEtaIndex();
#endif
#if 0
-void display(AliL3Hough *hough,Int_t eta_index)
+void display(AliHLTHough *hough,Int_t eta_index)
{
//Display the data/tracks in eta_index
hough->InitEvaluate();
- AliL3Histogram *digitd = new AliL3Histogram("Digits display","",250,0,250,250,-125,125);
- AliL3Histogram *trackd = new AliL3Histogram("Found tracks display","",250,0,250,250,-125,125);
+ AliHLTHistogram *digitd = new AliHLTHistogram("Digits display","",250,0,250,250,-125,125);
+ AliHLTHistogram *trackd = new AliHLTHistogram("Found tracks display","",250,0,250,250,-125,125);
for(int i=0; i<6; i++)
hough->GetEval(i)->DisplayEtaSlice(eta_index,digitd);
float xyz[3];
- tracks = (AliL3TrackArray*)hough->GetTracks(0);
+ tracks = (AliHLTTrackArray*)hough->GetTracks(0);
for(int i=0; i<tracks->GetNTracks(); i++)
{
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetEtaIndex() != eta_index) continue;
counter++;
char filename[100];
- file = new AliL3MemHandler();
+ file = new AliHLTMemHandler();
}
#endif
*/
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Logger.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Transform.h"
-#include "AliL3ClustFinderNew.h"
-#include "AliL3MemHandler.h"
-#include "AliL3SpacePointData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTLogger.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTTransform.h"
+#include "AliHLTClustFinderNew.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTSpacePointData.h"
#if __GNUC__ == 3
using namespace std;
Int_t th=10;
Bool_t de=kFALSE;
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStderr();
//l.UseStdout();
//l.UseStream();
de=kTRUE;
}
- AliL3DigitRowData *digits = 0;
+ AliHLTDigitRowData *digits = 0;
unsigned int nrows=0;
//reading transformer init file
Char_t fname[1024];
strcpy(fname,argv[1]);
- AliL3Transform::Init(dirname(fname));
+ AliHLTTransform::Init(dirname(fname));
strcpy(fname,argv[1]);
//Does all the file/data handling
- AliL3MemHandler file;
+ AliHLTMemHandler file;
//Give slice and patch information (see filename convention)
if((patch>=0)&&(patch<6)) file.Init(slice,patch);
else {
- Int_t srows[2]={0,AliL3Transform::GetLastRow(5)};
+ Int_t srows[2]={0,AliHLTTransform::GetLastRow(5)};
patch=0;
file.Init(slice,patch,srows);
}
file.CloseBinaryInput();
//The cluster finder itself.
- AliL3ClustFinderNew cf;
+ AliHLTClustFinderNew cf;
//Init cluster finder
cf.InitSlice(slice,patch,0,nrows-1,MAXCLUSTER);
cf.SetDeconv(de); //standard is false
//Allocate memory to store found spacepoints
- AliL3MemHandler fpoints;
- AliL3SpacePointData *points=(AliL3SpacePointData*)fpoints.Allocate(MAXCLUSTER*sizeof(AliL3SpacePointData));
+ AliHLTMemHandler fpoints;
+ AliHLTSpacePointData *points=(AliHLTSpacePointData*)fpoints.Allocate(MAXCLUSTER*sizeof(AliHLTSpacePointData));
cf.SetOutputArray(points);
//Give the data pointer to the cluster finder
// Author: Constantin Loizides <loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
#include "AliLevel3.h"
//Standalone program to run the track follower for benchmark tests.
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Logger.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Transform.h"
-#include "AliL3VHDLClusterFinder.h"
-#include "AliL3AltroMemHandler.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTLogger.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTTransform.h"
+#include "AliHLTVHDLClusterFinder.h"
+#include "AliHLTAltroMemHandler.h"
#if __GNUC__ == 3
Int_t th=10;
Bool_t de=kFALSE;
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStderr();
//l.UseStdout();
//l.UseStream();
//reading transformer config file
Char_t fname[1024];
strcpy(fname,argv[1]);
- AliL3Transform::Init(dirname(fname));
+ AliHLTTransform::Init(dirname(fname));
strcpy(fname,argv[1]);
*/
exit(1);
}
- AliL3VHDLClusterFinder cf;
+ AliHLTVHDLClusterFinder cf;
cf.SetASCIIInput(afile);
//set cluster finder parameters
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Transform.h"
-#include "AliL3VHDLClusterFinder.h"
-#include "AliL3AltroMemHandler.h"
-#include "AliL3Logging.h"
-#include "AliL3Logger.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTTransform.h"
+#include "AliHLTVHDLClusterFinder.h"
+#include "AliHLTAltroMemHandler.h"
+#include "AliHLTLogging.h"
+#include "AliHLTLogger.h"
#if __GNUC__ == 3
using namespace std;
Int_t fm=4;
Int_t th=10;
- AliL3Logger l;
- l.Set(AliL3Logger::kAll);
+ AliHLTLogger l;
+ l.Set(AliHLTLogger::kAll);
l.UseStderr();
//l.UseStdout();
//l.UseStream();
//Storing all specific quantities, needed by the Cluster Finder.
//Char_t fname[1024];
//strcpy(fname,argv[1]);
- //AliL3Transform::Init(dirname(fname));
+ //AliHLTTransform::Init(dirname(fname));
//strcpy(fname,argv[1]);
FILE *afile=fopen(argv[1],"r");
exit(1);
}
- AliL3VHDLClusterFinder cf;
+ AliHLTVHDLClusterFinder cf;
cf.SetASCIIInput(afile);
//set cluster finder parameters
int n = 0;
if(arg!=2) {cerr<<"usage: speedtest #loops \n";return -1;}
n = atoi(arc[1]);
-// cerr<<"allocate: "<<n*sizeof(AliL3ConfMapPoint)<<" Bytes"<<endl;
-// AliL3ConfMapPoint *array = new AliL3ConfMapPoint[n];
+// cerr<<"allocate: "<<n*sizeof(AliHLTConfMapPoint)<<" Bytes"<<endl;
+// AliHLTConfMapPoint *array = new AliHLTConfMapPoint[n];
cerr<<"allocate: "<<n*sizeof(double)<<" Bytes"<<endl;
double *array = new double[n];
// cerr<<"allocate: "<<n*sizeof(int)<<" Bytes"<<endl;
// int *array = new int[n];
-// cerr<<"allocate: "<<n*sizeof(AliL3SpacePointData)<<" Bytes"<<endl;
-// AliL3SpacePointData *array = new AliL3SpacePointData[n];
+// cerr<<"allocate: "<<n*sizeof(AliHLTSpacePointData)<<" Bytes"<<endl;
+// AliHLTSpacePointData *array = new AliHLTSpacePointData[n];
- AliL3SpacePointData hit;
+ AliHLTSpacePointData hit;
hit.fX=103.55;
hit.fY=22.33;
hit.fZ=95.312;
#include <iostream.h>
#define ALIL3LOGGING_H
-class AliL3Log{
+class AliHLTLog{
public:
enum TLogLevel { kNone = 0, kDebug= 0x01, kInformational = 0x02, kWarning = 0x04, kError = 0x08 , kFatal = 0x10, kPrimary = 0x80, kAll = 0x9F };
enum TLogCmd { kEnd, kPrec, kHex, kDec };
#include <math.h>
#include <stdlib.h>
#include <time.h>
-#include "AliL3ConfMapPoint.cxx"
+#include "AliHLTConfMapPoint.cxx"
double CpuTime()
{
// $Id$
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
#include "AliLevel3.h"
-#include "AliL3Transform.h"
-#include "AliL3RawDataFileHandler.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3ClustFinderNew.h"
-#include "AliL3ConfMapper.h"
-#include "AliL3Vertex.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Logging.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Track.h"
+#include "AliHLTTransform.h"
+#include "AliHLTRawDataFileHandler.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTClustFinderNew.h"
+#include "AliHLTConfMapper.h"
+#include "AliHLTVertex.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTrack.h"
#include <TCanvas.h>
#include <TH2.h>
#include <TView.h>
//displaying the tracks:
UInt_t fNcl;
- AliL3MemHandler *clusterfile = new AliL3MemHandler();
+ AliHLTMemHandler *clusterfile = new AliHLTMemHandler();
sprintf(fname,"%s/%s-points_0_-1.raw",path,cfile);
cout<<"file: "<<fname<<endl;
if(!clusterfile->SetBinaryInput(fname)){
cout<<"file: "<<fname<<" can not be set as binary input!"<<endl;
- LOG(AliL3Log::kError,"AliL3Evaluation::Setup","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluation::Setup","File Open")
<<"Inputfile "<<fname<<" does not exist"<<ENDLOG;
delete clusterfile;
clusterfile = 0;
}
clusterfile->SetBinaryInput(fname);
- AliL3SpacePointData *fClusters = new AliL3SpacePointData();
- memset(fClusters,0,sizeof(AliL3SpacePointData*));
- fClusters = (AliL3SpacePointData*)clusterfile->Allocate();
+ AliHLTSpacePointData *fClusters = new AliHLTSpacePointData();
+ memset(fClusters,0,sizeof(AliHLTSpacePointData*));
+ fClusters = (AliHLTSpacePointData*)clusterfile->Allocate();
clusterfile->Binary2Memory(fNcl,fClusters);
clusterfile->CloseBinaryInput();
TApplication theApp("App", &argc, argv);
c1->Clear();
c1->SetFillColor(1);
- AliL3SpacePointData *points = fClusters;
+ AliHLTSpacePointData *points = fClusters;
TH2F *clusters = new TH2F("clusters","",65,-1,64,77,17,94);
if(!points)
cout<<"no points"<<endl;
TF1 *line = new TF1("line","[0]+[1]*x",0,63);
line->SetParameters(xyParamA,xyParamB);
- TLine *leftline= new TLine(0,(0-AliL3Transform::GetNPads(0)/2+55),0,AliL3Transform::GetNPads(0)-(AliL3Transform::GetNPads(0)/2)+55);
- TLine *rightline=new TLine(63,(0-AliL3Transform::GetNPads(63)/2+55),63,AliL3Transform::GetNPads(63)-(AliL3Transform::GetNPads(63)/2)+55);
- TLine *upperline=new TLine(0,(AliL3Transform::GetNPads(0)-AliL3Transform::GetNPads(0)/2+55),63,AliL3Transform::GetNPads(63)-(AliL3Transform::GetNPads(63)/2)+55);
- TLine *underline=new TLine(0,(0-AliL3Transform::GetNPads(0)/2+55),63,0-(AliL3Transform::GetNPads(63)/2)+55);
+ TLine *leftline= new TLine(0,(0-AliHLTTransform::GetNPads(0)/2+55),0,AliHLTTransform::GetNPads(0)-(AliHLTTransform::GetNPads(0)/2)+55);
+ TLine *rightline=new TLine(63,(0-AliHLTTransform::GetNPads(63)/2+55),63,AliHLTTransform::GetNPads(63)-(AliHLTTransform::GetNPads(63)/2)+55);
+ TLine *upperline=new TLine(0,(AliHLTTransform::GetNPads(0)-AliHLTTransform::GetNPads(0)/2+55),63,AliHLTTransform::GetNPads(63)-(AliHLTTransform::GetNPads(63)/2)+55);
+ TLine *underline=new TLine(0,(0-AliHLTTransform::GetNPads(0)/2+55),63,0-(AliHLTTransform::GetNPads(63)/2)+55);
nothing->Draw("colz");
nothing->SetXTitle("Padrows");
// $Id$
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
#include "AliLevel3.h"
-#include "AliL3Transform.h"
-#include "AliL3RawDataFileHandler.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3ClustFinderNew.h"
-#include "AliL3ConfMapper.h"
-#include "AliL3Vertex.h"
+#include "AliHLTTransform.h"
+#include "AliHLTRawDataFileHandler.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTClustFinderNew.h"
+#include "AliHLTConfMapper.h"
+#include "AliHLTVertex.h"
#if __GNUC__== 3
using namespace std;
sprintf(path,"%s",argv[2]);
}
- AliL3Transform::Init("./l3-cosmics-transform.config");
- AliL3Transform::SetZeroSup(5);
- AliL3RawDataFileHandler *f=new AliL3RawDataFileHandler();
+ AliHLTTransform::Init("./l3-cosmics-transform.config");
+ AliHLTTransform::SetZeroSup(5);
+ AliHLTRawDataFileHandler *f=new AliHLTRawDataFileHandler();
f->Init(slice,patch);
#endif
UInt_t nrows;
- AliL3DigitRowData *data=(AliL3DigitRowData*)f->RawData2Memory(nrows);
+ AliHLTDigitRowData *data=(AliHLTDigitRowData*)f->RawData2Memory(nrows);
- AliL3MemHandler *out = new AliL3MemHandler();
+ AliHLTMemHandler *out = new AliHLTMemHandler();
sprintf(fname,"./%s-digits_%d_%d.raw",cfile,slice,patch);
out->SetBinaryOutput(fname);
out->Memory2Binary(nrows,data);
out->CloseBinaryOutput();
out->Free();
- AliL3MemHandler *mem=new AliL3MemHandler();
+ AliHLTMemHandler *mem=new AliHLTMemHandler();
UInt_t maxclusters=100000;
- UInt_t pointsize = maxclusters*sizeof(AliL3SpacePointData);
- AliL3SpacePointData *points = (AliL3SpacePointData*)mem->Allocate(pointsize);
+ UInt_t pointsize = maxclusters*sizeof(AliHLTSpacePointData);
+ AliHLTSpacePointData *points = (AliHLTSpacePointData*)mem->Allocate(pointsize);
Bool_t rawsp=kTRUE;
- AliL3ClustFinderNew *cf = new AliL3ClustFinderNew();
+ AliHLTClustFinderNew *cf = new AliHLTClustFinderNew();
cf->InitSlice(slice,patch,maxclusters);
cf->SetMatchWidth(10);
cf->SetSTDOutput(kTRUE);
-#include "AliL3Generator.h"
+#include "AliHLTGenerator.h"
-ClassImp(AliL3Generator)
+ClassImp(AliHLTGenerator)
-AliL3Generator::AliL3Generator()
+AliHLTGenerator::AliHLTGenerator()
{
}
-AliL3Generator::~AliL3Generator()
+AliHLTGenerator::~AliHLTGenerator()
{
}
-void AliL3Generator::Generate()
+void AliHLTGenerator::Generate()
{
Float_t pt[3];
for(Int_t i=0; i<fNpart; i++)
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3GENERATOR_H
+#define ALIL3GENERATOR_H
+
+#include "AliHLTRootTypes.h"
+#include "AliGenerator.h"
+
+class AliHLTGenerator : public AliGenerator {
+
+ private:
+
+
+
+
+ public:
+ AliHLTGenerator();
+ virtual ~AliHLTGenerator();
+
+ void Generate();
+ void Init();
+ void ReadParticles(TClonesArray *particles);
+
+ ClassDef(AliHLTGenerator,1)
+};
+
+typedef AliHLTGenerator AliL3Generator; // for backward compatibility
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3GENERATOR_H
-#define ALIL3GENERATOR_H
-
-#include "AliL3RootTypes.h"
-#include "AliGenerator.h"
-
-class AliL3Generator : public AliGenerator {
-
- private:
-
-
-
-
- public:
- AliL3Generator();
- virtual ~AliL3Generator();
-
- void Generate();
- void Init();
- void ReadParticles(TClonesArray *particles);
-
- ClassDef(AliL3Generator,1)
-};
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-/** \class AliL3Benchmark
+/** \class AliHLTBenchmark
</pre>
//_____________________________________________________________
//
-// AliL3Benchmark
+// AliHLTBenchmark
//
// Benchmark class for level3 code
//
#include <TStopwatch.h>
#include <TMath.h>
#endif
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Benchmark.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTBenchmark.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3Benchmark)
+ClassImp(AliHLTBenchmark)
-AliL3Benchmark::AliL3Benchmark()
+AliHLTBenchmark::AliHLTBenchmark()
{
//Constructor
fNbench = 0;
fCount = 0;
}
-AliL3Benchmark::~AliL3Benchmark()
+AliHLTBenchmark::~AliHLTBenchmark()
{
//deconstructor
fNbench = 0;
if (fCount) {delete [] fCount; fCount =0;}
}
-Int_t AliL3Benchmark::GetBench(const Char_t *name)
+Int_t AliHLTBenchmark::GetBench(const Char_t *name)
{
//get bench with name
for (Int_t i=0;i<fNbench;i++) {
}
-void AliL3Benchmark::Start(const Char_t *name)
+void AliHLTBenchmark::Start(const Char_t *name)
{
//start the benchmark with name
if (!fNbench) {
#ifdef no_root
fNames=new Char_t*[fNmax];
- fTimer = new AliL3Stopwatch[fNmax];
+ fTimer = new AliHLTStopwatch[fNmax];
#else
fNames = new TString[fNmax];
fTimer = new TStopwatch[fNmax];
fTimer[bench].Start();
}
else
- LOG(AliL3Log::kWarning,"AliL3Benchmark::Start","Start")
+ LOG(AliHLTLog::kWarning,"AliHLTBenchmark::Start","Start")
<<"too many benches"<<ENDLOG;
}
-void AliL3Benchmark::Stop(const char *name)
+void AliHLTBenchmark::Stop(const char *name)
{
//stop the benchmark with name
Int_t bench = GetBench(name);
}
}
-void AliL3Benchmark::Analyze(const Char_t* name)
+void AliHLTBenchmark::Analyze(const Char_t* name)
{
//get results of benchmark
Float_t *x = new Float_t[fNbench];
delete[] eyh;
}
-Double_t AliL3Benchmark::GetCpuTime()
+Double_t AliHLTBenchmark::GetCpuTime()
{
//get cpu time
{return (Double_t)(clock()) / CLOCKS_PER_SEC;}
// @(#) $Id$
-#ifndef AliL3BenchmarkH
-#define AliL3BenchmarkH
+#ifndef AliHLTBenchmarkH
+#define AliHLTBenchmarkH
//_____________________________________________________________
//
-// AliL3Benchmark
+// AliHLTBenchmark
//
// Benchmark class for level3 code
//
class TStopwatch;
class TString;
#else
-class AliL3Stopwatch;
+class AliHLTStopwatch;
#endif
-class AliL3Benchmark {
+class AliHLTBenchmark {
public:
- AliL3Benchmark();
- virtual ~AliL3Benchmark();
+ AliHLTBenchmark();
+ virtual ~AliHLTBenchmark();
Int_t GetBench(const char *name);
void Start(const char *name);
void Stop(const char *name);
TStopwatch *fTimer; //Timers
#else
Char_t **fNames; //Names of benchmarks
- AliL3Stopwatch *fTimer; //Timers
+ AliHLTStopwatch *fTimer; //Timers
#endif
Float_t *fSum; //sum of time
Float_t *fMin; //min of time
Float_t *fMax; //max of time
Int_t *fCount;// counter
- ClassDef(AliL3Benchmark,0) //L3 benchmark
+ ClassDef(AliHLTBenchmark,0) //L3 benchmark
};
+typedef AliHLTBenchmark AliL3Benchmark; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>, Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3ClustFinderNew.h"
-#include "AliL3DigitData.h"
-#include "AliL3Transform.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3MemHandler.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTClustFinderNew.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTMemHandler.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3ClustFinderNew
+/** \class AliHLTClustFinderNew
<pre>
//_____________________________________________________________
-// AliL3ClustFinderNew
+// AliHLTClustFinderNew
//
// The current cluster finder for HLT
// (Based on STAR L3)
//
// The cluster finder is initialized with the Init function,
// providing the slice and patch information to work on.
-// The input is a AliL3DigitRowData structure using the
+// The input is a AliHLTDigitRowData structure using the
// Read function. The resulting space points will be in the
// array given by the SetOutputArray function.
//
//
// Example Usage:
//
-// AliL3FileHandler *file = new AliL3FileHandler();
+// AliHLTFileHandler *file = new AliHLTFileHandler();
// file->SetAliInput(digitfile); //give some input file
// for(int slice=0; slice<=35; slice++){
// for(int patch=0; pat<6; pat++){
// file->Init(slice,patch);
// UInt_t ndigits=0;
// UInt_t maxclusters=100000;
-// UInt_t pointsize = maxclusters*sizeof(AliL3SpacePointData);
-// AliL3SpacePointData *points = (AliL3SpacePointData*)memory->Allocate(pointsize);
-// AliL3DigitRowData *digits = (AliL3DigitRowData*)file->AliAltroDigits2Memory(ndigits,event);
-// AliL3ClustFinderNew *cf = new AliL3ClustFinderNew();
+// UInt_t pointsize = maxclusters*sizeof(AliHLTSpacePointData);
+// AliHLTSpacePointData *points = (AliHLTSpacePointData*)memory->Allocate(pointsize);
+// AliHLTDigitRowData *digits = (AliHLTDigitRowData*)file->AliAltroDigits2Memory(ndigits,event);
+// AliHLTClustFinderNew *cf = new AliHLTClustFinderNew();
// cf->SetMatchWidth(2);
// cf->InitSlice(slice,patch,maxclusters);
// cf->SetSTDOutput(kTRUE); //Some output to standard IO
// cf->Read(ndigits,digits); //give the data to the cf
// cf->ProcessDigits(); //process the rows given by init
// Int_t npoints = cf->GetNumberOfClusters();
-// AliL3MemHandler *out= new AliL3MemHandler();
+// AliHLTMemHandler *out= new AliHLTMemHandler();
// out->SetBinaryOutput(fname);
// out->Memory2Binary(npoints,points); //store the spacepoints
// out->CloseBinaryOutput();
</pre>
*/
-ClassImp(AliL3ClustFinderNew)
+ClassImp(AliHLTClustFinderNew)
-AliL3ClustFinderNew::AliL3ClustFinderNew()
+AliHLTClustFinderNew::AliHLTClustFinderNew()
{
//constructor
fMatch = 1;
fLastRow=0;
}
-AliL3ClustFinderNew::~AliL3ClustFinderNew()
+AliHLTClustFinderNew::~AliHLTClustFinderNew()
{
//destructor
;
}
-void AliL3ClustFinderNew::InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t nmaxpoints)
+void AliHLTClustFinderNew::InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t nmaxpoints)
{
//init slice
fNClusters = 0;
fLastRow = lastrow;
}
-void AliL3ClustFinderNew::InitSlice(Int_t slice,Int_t patch,Int_t nmaxpoints)
+void AliHLTClustFinderNew::InitSlice(Int_t slice,Int_t patch,Int_t nmaxpoints)
{
//init slice
fNClusters = 0;
fMaxNClusters = nmaxpoints;
fCurrentSlice = slice;
fCurrentPatch = patch;
- fFirstRow=AliL3Transform::GetFirstRow(patch);
- fLastRow=AliL3Transform::GetLastRow(patch);
+ fFirstRow=AliHLTTransform::GetFirstRow(patch);
+ fLastRow=AliHLTTransform::GetLastRow(patch);
}
-void AliL3ClustFinderNew::SetOutputArray(AliL3SpacePointData *pt)
+void AliHLTClustFinderNew::SetOutputArray(AliHLTSpacePointData *pt)
{
//set pointer to output
fSpacePointData = pt;
}
-void AliL3ClustFinderNew::Read(UInt_t ndigits,AliL3DigitRowData *ptr)
+void AliHLTClustFinderNew::Read(UInt_t ndigits,AliHLTDigitRowData *ptr)
{
//set input pointer
fNDigitRowData = ndigits;
fDigitRowData = ptr;
}
-void AliL3ClustFinderNew::ProcessDigits()
+void AliHLTClustFinderNew::ProcessDigits()
{
//Loop over rows, and call processrow
- AliL3DigitRowData *tempPt = (AliL3DigitRowData*)fDigitRowData;
+ AliHLTDigitRowData *tempPt = (AliHLTDigitRowData*)fDigitRowData;
fNClusters = 0;
for(Int_t i=fFirstRow; i<=fLastRow; i++)
{
fCurrentRow = i;
if((Int_t)tempPt->fRow!=fCurrentRow){
- LOG(AliL3Log::kWarning,"AliL3ClustFinderNew::ProcessDigits","Digits")
+ LOG(AliHLTLog::kWarning,"AliHLTClustFinderNew::ProcessDigits","Digits")
<<"Row number should match! "<<tempPt->fRow<<" "<<fCurrentRow<<ENDLOG;
continue;
}
ProcessRow(tempPt);
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData) + tempPt->fNDigit*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData) + tempPt->fNDigit*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}
- LOG(AliL3Log::kInformational,"AliL3ClustFinderNew::ProcessDigits","Space points")
+ LOG(AliHLTLog::kInformational,"AliHLTClustFinderNew::ProcessDigits","Space points")
<<"Cluster finder found "<<fNClusters<<" clusters in slice "<<fCurrentSlice
<<" patch "<<fCurrentPatch<<ENDLOG;
}
-void AliL3ClustFinderNew::ProcessRow(AliL3DigitRowData *tempPt)
+void AliHLTClustFinderNew::ProcessRow(AliHLTDigitRowData *tempPt)
{
//process row
UInt_t lastpad = 123456789;
//Loop over sequences of this row:
for(UInt_t bin=0; bin<tempPt->fNDigit; bin++)
{
- AliL3DigitData *data = tempPt->fDigitData;
+ AliHLTDigitData *data = tempPt->fDigitData;
if(data[bin].fPad != lastpad)
{
//This is a new pad
while(1) //Loop over current sequence
{
- if(data[bin].fTime >= AliL3Transform::GetNTimeBins())
+ if(data[bin].fTime >= AliHLTTransform::GetNTimeBins())
{
- LOG(AliL3Log::kFatal,"AliL3ClustFinderNew::ProcessRow","Digits")
+ LOG(AliHLTLog::kFatal,"AliHLTClustFinderNew::ProcessRow","Digits")
<<"Timebin out of range "<<(Int_t)data[bin].fTime<<ENDLOG;
break;
}
seqmean = seqaverage/seqcharge;
else
{
- LOG(AliL3Log::kFatal,"AliL3ClustFinderNew::ProcessRow","Data")
+ LOG(AliHLTLog::kFatal,"AliHLTClustFinderNew::ProcessRow","Data")
<<"Error in data given to the cluster finder"<<ENDLOG;
seqmean = 1;
seqcharge = 1;
WriteClusters(ntotal,clusterlist);
}
-void AliL3ClustFinderNew::WriteClusters(Int_t nclusters,AliClusterData *list)
+void AliHLTClustFinderNew::WriteClusters(Int_t nclusters,AliClusterData *list)
{
//write cluster to output pointer
Int_t thisrow,thissector;
Float_t ftime2=fZErr*fZErr; //fixed given error
if(fCalcerr) { //calc the errors, otherwice take the fixed error
- Int_t patch = AliL3Transform::GetPatch(fCurrentRow);
+ Int_t patch = AliHLTTransform::GetPatch(fCurrentRow);
UInt_t q2=list[j].fTotalCharge*list[j].fTotalCharge;
if (!q2) {
- LOG(AliL3Log::kError,"AliL3ClustFinderNew::WriteClusters","Total charge")
+ LOG(AliHLTLog::kError,"AliHLTClustFinderNew::WriteClusters","Total charge")
<<"Zero total charge "<<q2<<" on row "<<fCurrentRow<<" "<<fpad<<" "<<ftime<<ENDLOG;
continue;
Float_t sy2=list[j].fPad2 * list[j].fTotalCharge - list[j].fPad * list[j].fPad;
sy2/=q2;
if(sy2 < 0) {
- LOG(AliL3Log::kError,"AliL3ClustFinderNew::WriteClusters","Cluster width")
+ LOG(AliHLTLog::kError,"AliHLTClustFinderNew::WriteClusters","Cluster width")
<<"SigmaY2 negative "<<sy2<<" on row "<<fCurrentRow<<" "<<fpad<<" "<<ftime<<ENDLOG;
continue;
} else {
if(!fRawSP){
- fpad2 = (sy2 + 1./12)*AliL3Transform::GetPadPitchWidth(patch)*AliL3Transform::GetPadPitchWidth(patch);
+ fpad2 = (sy2 + 1./12)*AliHLTTransform::GetPadPitchWidth(patch)*AliHLTTransform::GetPadPitchWidth(patch);
if(sy2 != 0){
fpad2*=0.108; //constants are from offline studies
if(patch<2)
Float_t sz2=list[j].fTime2*list[j].fTotalCharge - list[j].fTime*list[j].fTime;
sz2/=q2;
if(sz2 < 0){
- LOG(AliL3Log::kError,"AliL3ClustFinderNew::WriteClusters","Cluster width")
+ LOG(AliHLTLog::kError,"AliHLTClustFinderNew::WriteClusters","Cluster width")
<<"SigmaZ2 negative "<<sz2<<" on row "<<fCurrentRow<<" "<<fpad<<" "<<ftime<<ENDLOG;
continue;
} else {
if(!fRawSP){
- ftime2 = (sz2 + 1./12)*AliL3Transform::GetZWidth()*AliL3Transform::GetZWidth();
+ ftime2 = (sz2 + 1./12)*AliHLTTransform::GetZWidth()*AliHLTTransform::GetZWidth();
if(sz2 != 0) {
ftime2 *= 0.169; //constants are from offline studies
if(patch<2)
cout<<"WriteCluster: padrow "<<fCurrentRow<<" pad "<<fpad << " +- "<<fpad2<<" time "<<ftime<<" +- "<<ftime2<<" charge "<<list[j].fTotalCharge<<endl;
if(!fRawSP){
- AliL3Transform::Slice2Sector(fCurrentSlice,fCurrentRow,thissector,thisrow);
- AliL3Transform::Raw2Local(xyz,thissector,thisrow,fpad,ftime);
+ AliHLTTransform::Slice2Sector(fCurrentSlice,fCurrentRow,thissector,thisrow);
+ AliHLTTransform::Raw2Local(xyz,thissector,thisrow,fpad,ftime);
- if(xyz[0]==0) LOG(AliL3Log::kError,"AliL3ClustFinder","Cluster Finder")
- <<AliL3Log::kDec<<"Zero cluster"<<ENDLOG;
+ if(xyz[0]==0) LOG(AliHLTLog::kError,"AliHLTClustFinder","Cluster Finder")
+ <<AliHLTLog::kDec<<"Zero cluster"<<ENDLOG;
if(fNClusters >= fMaxNClusters)
{
- LOG(AliL3Log::kError,"AliL3ClustFinder::WriteClusters","Cluster Finder")
- <<AliL3Log::kDec<<"Too many clusters "<<fNClusters<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTClustFinder::WriteClusters","Cluster Finder")
+ <<AliHLTLog::kDec<<"Too many clusters "<<fNClusters<<ENDLOG;
return;
}
}
#ifdef do_mc
-void AliL3ClustFinderNew::GetTrackID(Int_t pad,Int_t time,Int_t *trackID)
+void AliHLTClustFinderNew::GetTrackID(Int_t pad,Int_t time,Int_t *trackID)
{
//get mc id
- AliL3DigitRowData *rowPt = (AliL3DigitRowData*)fDigitRowData;
+ AliHLTDigitRowData *rowPt = (AliHLTDigitRowData*)fDigitRowData;
trackID[0]=trackID[1]=trackID[2]=-2;
//cout<<"Looking for pad "<<pad<<" time "<<time<<endl;
for(Int_t i=fFirstRow; i<=fLastRow; i++){
if(rowPt->fRow < (UInt_t)fCurrentRow){
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
continue;
}
- AliL3DigitData *digPt = (AliL3DigitData*)rowPt->fDigitData;
+ AliHLTDigitData *digPt = (AliHLTDigitData*)rowPt->fDigitData;
for(UInt_t j=0; j<rowPt->fNDigit; j++){
Int_t cpad = digPt[j].fPad;
Int_t ctime = digPt[j].fTime;
// @(#) $Id$
-#ifndef AliL3_ClustFinderNew
-#define AliL3_ClustFinderNew
+#ifndef AliHLT_ClustFinderNew
+#define AliHLT_ClustFinderNew
-class AliL3DigitRowData;
-class AliL3SpacePointData;
+class AliHLTDigitRowData;
+class AliHLTSpacePointData;
-class AliL3ClustFinderNew {
+class AliHLTClustFinderNew {
public:
struct AliClusterData
typedef struct AliClusterData AliClusterData; //!
private:
- AliL3DigitRowData *fDigitRowData; //!
- AliL3SpacePointData *fSpacePointData; //!
+ AliHLTDigitRowData *fDigitRowData; //!
+ AliHLTSpacePointData *fSpacePointData; //!
Bool_t fDeconvTime; //deconv in time direction
Bool_t fDeconvPad; //deconv in pad direction
Bool_t fStdout; //have print out in write clusters
#endif
public:
- AliL3ClustFinderNew();
- virtual ~AliL3ClustFinderNew();
+ AliHLTClustFinderNew();
+ virtual ~AliHLTClustFinderNew();
- void Read(UInt_t ndigits,AliL3DigitRowData *ptr);
+ void Read(UInt_t ndigits,AliHLTDigitRowData *ptr);
void InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t maxpoints);
void InitSlice(Int_t slice,Int_t patch,Int_t maxpoints);
void ProcessDigits();
- void ProcessRow(AliL3DigitRowData *tempPt);
- void SetOutputArray(AliL3SpacePointData *pt);
+ void ProcessRow(AliHLTDigitRowData *tempPt);
+ void SetOutputArray(AliHLTSpacePointData *pt);
void WriteClusters(Int_t n_clusters,AliClusterData *list);
void SetXYError(Float_t f) {fXYErr=f;}
void SetRawSP(Bool_t f=kFALSE) {fRawSP=f;}
Int_t GetNumberOfClusters() const {return fNClusters;}
- ClassDef(AliL3ClustFinderNew,1) //Fast cluster finder
+ ClassDef(AliHLTClustFinderNew,1) //Fast cluster finder
};
+
+typedef AliHLTClustFinderNew AliL3ClustFinderNew; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Vertex.h"
-#include "AliL3ConfMapTrack.h"
-#include "AliL3ConfMapPoint.h"
-#include "AliL3Transform.h"
-#include "AliL3ConfMapFit.h"
-
-/** \class AliL3ConfMapFit
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTVertex.h"
+#include "AliHLTConfMapTrack.h"
+#include "AliHLTConfMapPoint.h"
+#include "AliHLTTransform.h"
+#include "AliHLTConfMapFit.h"
+
+/** \class AliHLTConfMapFit
<pre>
//_____________________________________________________________
-// AliL3ConfMapFit
+// AliHLTConfMapFit
//
// Fit class for conformal mapping tracking
</pre>
using namespace std;
#endif
-ClassImp(AliL3ConfMapFit)
+ClassImp(AliHLTConfMapFit)
-AliL3ConfMapFit::AliL3ConfMapFit(AliL3ConfMapTrack *track,AliL3Vertex *vertex)
+AliHLTConfMapFit::AliHLTConfMapFit(AliHLTConfMapTrack *track,AliHLTVertex *vertex)
{
//constructor
fTrack = track;
fVertex = vertex;
}
-Int_t AliL3ConfMapFit::FitHelix()
+Int_t AliHLTConfMapFit::FitHelix()
{
//fit the helix
if(FitCircle())
{
- LOG(AliL3Log::kError,"AliL3ConfMapFit::FitHelix","TrackFit")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapFit::FitHelix","TrackFit")<<AliHLTLog::kDec<<
"Problems during circle fit"<<ENDLOG;
return 1;
}
if(FitLine())
{
- LOG(AliL3Log::kError,"AliL3ConfMapFit::FitHelix","TrackFit")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapFit::FitHelix","TrackFit")<<AliHLTLog::kDec<<
"Problems during line fit"<<ENDLOG;
return 1;
}
return 0;
}
-Int_t AliL3ConfMapFit::FitCircle()
+Int_t AliHLTConfMapFit::FitCircle()
{
//-----------------------------------------------------------------
//Fits circle parameters using algorithm
for(fTrack->StartLoop(); fTrack->LoopDone(); fTrack->GetNextHit())
{
co++;
- AliL3ConfMapPoint *cHit = (AliL3ConfMapPoint*)fTrack->GetCurrentHit();
+ AliHLTConfMapPoint *cHit = (AliHLTConfMapPoint*)fTrack->GetCurrentHit();
cHit->SetXYWeight( 1./ (Double_t)(cHit->GetXerr()*cHit->GetXerr() + cHit->GetYerr()*cHit->GetYerr()) );
wsum += cHit->GetXYWeight() ;
xav += cHit->GetXYWeight() * cHit->GetX() ;
yav += cHit->GetXYWeight() * cHit->GetY() ;
}
if(co!=num_of_hits)
- LOG(AliL3Log::kError,"AliL3ConfMapFit::FitCircle","TrackFit")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapFit::FitCircle","TrackFit")<<AliHLTLog::kDec<<
"Mismatch of hits. Counter: "<<co<<" nHits: "<<num_of_hits<<ENDLOG;
if (fTrack->ComesFromMainVertex() == true)
{
for(fTrack->StartLoop(); fTrack->LoopDone(); fTrack->GetNextHit())
{
- //AliL3ConfMapPoint *cHit = (AliL3ConfMapPoint *)hits->At(hit_counter);
- AliL3ConfMapPoint *cHit = (AliL3ConfMapPoint*)fTrack->GetCurrentHit();
+ //AliHLTConfMapPoint *cHit = (AliHLTConfMapPoint *)hits->At(hit_counter);
+ AliHLTConfMapPoint *cHit = (AliHLTConfMapPoint*)fTrack->GetCurrentHit();
xi = cHit->GetX() - xav ;
yi = cHit->GetY() - yav ;
xxav += xi * xi * cHit->GetXYWeight() ;
//for (hit_counter=0; hit_counter<num_of_hits; hit_counter++)
for(fTrack->StartLoop(); fTrack->LoopDone(); fTrack->GetNextHit())
{
- //AliL3ConfMapPoint *cHit = (AliL3ConfMapPoint*)hits->At(hit_counter);
- AliL3ConfMapPoint* cHit = (AliL3ConfMapPoint*)fTrack->GetCurrentHit();
+ //AliHLTConfMapPoint *cHit = (AliHLTConfMapPoint*)hits->At(hit_counter);
+ AliHLTConfMapPoint* cHit = (AliHLTConfMapPoint*)fTrack->GetCurrentHit();
xold = cHit->GetX() - xav ;
yold = cHit->GetY() - yav ;
Double_t h24 = yrrav ;
Double_t h34 = 1.0 + 2.0*lamda ;
if ( h11 == 0.0 || h22 == 0.0 ){
- LOG(AliL3Log::kError,"AliL3ConfMapFit::FitCircle","TrackFit")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapFit::FitCircle","TrackFit")<<AliHLTLog::kDec<<
"Problems fitting circle"<<ENDLOG;
return 1 ;
}
//Set the first point on the track to the space point coordinates of the innermost track
- //This will be updated to lie on the fit later on (AliL3Track::UpdateToFirstPoint).
+ //This will be updated to lie on the fit later on (AliHLTTrack::UpdateToFirstPoint).
Double_t x0,y0,psi,pt ;
- AliL3ConfMapPoint *lHit = (AliL3ConfMapPoint*)fTrack->GetLastHit();
+ AliHLTConfMapPoint *lHit = (AliHLTConfMapPoint*)fTrack->GetLastHit();
x0 = lHit->GetX();
y0 = lHit->GetY();
fTrack->SetFirstPoint(x0,y0,0); //Z-value is set in FitLine
psi = (Double_t)atan2(bcent-y0,acent-x0) ;
- psi = psi + q * AliL3Transform::PiHalf();
- if ( psi < 0 ) psi = psi + AliL3Transform::TwoPi();
- pt = (Double_t)(AliL3Transform::GetBFieldValue() * radius ) ;
+ psi = psi + q * AliHLTTransform::PiHalf();
+ if ( psi < 0 ) psi = psi + AliHLTTransform::TwoPi();
+ pt = (Double_t)(AliHLTTransform::GetBFieldValue() * radius ) ;
//Update the track parameters with the parameters from this fit:
fTrack->SetPsi(psi);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Fit Line in s-z plane
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-Int_t AliL3ConfMapFit::FitLine ( )
+Int_t AliHLTConfMapFit::FitLine ( )
{
//
//Initialization
//find sum , sums ,sumz, sumss
//
Double_t dx, dy ;
- Double_t radius = (Double_t)(fTrack->GetPt() / AliL3Transform::GetBFieldValue() ) ;
+ Double_t radius = (Double_t)(fTrack->GetPt() / AliHLTTransform::GetBFieldValue() ) ;
//TObjArray *hits = fTrack->GetHits();
//Int_t num_of_hits = fTrack->GetNumberOfPoints();
if (0)// fTrack->ComesFromMainVertex() == true )
{
- dx = ((AliL3ConfMapPoint*)fTrack->GetFirstHit())->GetX() - fVertex->GetX();
- dy = ((AliL3ConfMapPoint*)fTrack->GetFirstHit())->GetY() - fVertex->GetY() ;
+ dx = ((AliHLTConfMapPoint*)fTrack->GetFirstHit())->GetX() - fVertex->GetX();
+ dy = ((AliHLTConfMapPoint*)fTrack->GetFirstHit())->GetY() - fVertex->GetY() ;
}
else
{
- dx = ((AliL3ConfMapPoint *)fTrack->GetFirstHit())->GetX() - ((AliL3ConfMapPoint *)fTrack->GetLastHit())->GetX() ;
- dy = ((AliL3ConfMapPoint *)fTrack->GetFirstHit())->GetY() - ((AliL3ConfMapPoint *)fTrack->GetLastHit())->GetY() ;
- //dx = ((AliL3ConfMapPoint *)hits->First())->GetX() - ((AliL3ConfMapPoint *)hits->Last())->GetX() ;
- //dy = ((AliL3ConfMapPoint *)hits->First())->GetY() - ((AliL3ConfMapPoint *)hits->Last())->GetY() ;
+ dx = ((AliHLTConfMapPoint *)fTrack->GetFirstHit())->GetX() - ((AliHLTConfMapPoint *)fTrack->GetLastHit())->GetX() ;
+ dy = ((AliHLTConfMapPoint *)fTrack->GetFirstHit())->GetY() - ((AliHLTConfMapPoint *)fTrack->GetLastHit())->GetY() ;
+ //dx = ((AliHLTConfMapPoint *)hits->First())->GetX() - ((AliHLTConfMapPoint *)hits->Last())->GetX() ;
+ //dy = ((AliHLTConfMapPoint *)hits->First())->GetY() - ((AliHLTConfMapPoint *)hits->Last())->GetY() ;
}
Double_t localPsi = 0.5F * sqrt ( dx*dx + dy*dy ) / radius ;
}
else
{
- total_s = 2.0 * radius * AliL3Transform::Pi() ;
+ total_s = 2.0 * radius * AliHLTTransform::Pi() ;
}
- AliL3ConfMapPoint *previousHit = NULL;
+ AliHLTConfMapPoint *previousHit = NULL;
// FtfBaseHit *previousHit = 0 ;
// for(hit_counter=0; hit_counter<num_of_hits; hit_counter++)
for(fTrack->StartLoop(); fTrack->LoopDone(); fTrack->GetNextHit())
{
- // AliL3ConfMapPoint *cHit = (AliL3ConfMapPoint*)hits->At(hit_counter);
- AliL3ConfMapPoint *cHit = (AliL3ConfMapPoint*)fTrack->GetCurrentHit();
+ // AliHLTConfMapPoint *cHit = (AliHLTConfMapPoint*)hits->At(hit_counter);
+ AliHLTConfMapPoint *cHit = (AliHLTConfMapPoint*)fTrack->GetCurrentHit();
// if ( GetCurrentHit() != GetFirstHit() )
if(cHit != fTrack->GetFirstHit())// hits->First())
{
//for(hit_counter=0; hit_counter<num_of_hits; hit_counter++)
for(fTrack->StartLoop(); fTrack->LoopDone(); fTrack->GetNextHit())
{
- //AliL3ConfMapPoint *cHit = (AliL3ConfMapPoint*)hits->At(hit_counter);
- AliL3ConfMapPoint *cHit = (AliL3ConfMapPoint*)fTrack->GetCurrentHit();
+ //AliHLTConfMapPoint *cHit = (AliHLTConfMapPoint*)hits->At(hit_counter);
+ AliHLTConfMapPoint *cHit = (AliHLTConfMapPoint*)fTrack->GetCurrentHit();
r1 = cHit->GetZ() - tanl * cHit->GetS() - z0 ;
chi2 += (Double_t) ( (Double_t)cHit->GetZWeight() * (r1 * r1) );
}
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3_ConfMapFit
+#define ALIL3_ConfMapFit
+
+class AliHLTConfMapTrack;
+class AliHLTVertex;
+
+class AliHLTConfMapFit {
+
+ private:
+ AliHLTConfMapTrack *fTrack; //!
+ AliHLTVertex *fVertex; //!
+
+ public:
+ AliHLTConfMapFit (AliHLTConfMapTrack *track,AliHLTVertex *vertex);
+ virtual ~AliHLTConfMapFit() {};
+
+ Int_t FitHelix();
+ Int_t FitCircle();
+ Int_t FitLine();
+
+ ClassDef(AliHLTConfMapFit,1) //Conformal mapping fit class
+};
+
+typedef AliHLTConfMapFit AliL3ConfMapFit; // for backward compatibility
+
+#endif
// Author: Anders Vestbo <mailto:vestbo$fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3ConfMapPoint.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3Vertex.h"
-#include "AliL3ConfMapTrack.h"
+#include "AliHLTLogging.h"
+#include "AliHLTConfMapPoint.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTVertex.h"
+#include "AliHLTConfMapTrack.h"
/**
<pre>
//_____________________________________________________________
-// AliL3ConfMapPoint
+// AliHLTConfMapPoint
//
// Hit class for conformal mapper
</pre
*/
-ClassImp(AliL3ConfMapPoint)
+ClassImp(AliHLTConfMapPoint)
-Bool_t AliL3ConfMapPoint::fgDontMap=kFALSE;
+Bool_t AliHLTConfMapPoint::fgDontMap=kFALSE;
-AliL3ConfMapPoint::AliL3ConfMapPoint()
+AliHLTConfMapPoint::AliHLTConfMapPoint()
{
//Constructor
SetMCTrackID(0,0,0);
}
-AliL3ConfMapPoint::~AliL3ConfMapPoint()
+AliHLTConfMapPoint::~AliHLTConfMapPoint()
{
// Destructor.
;
}
-Bool_t AliL3ConfMapPoint::ReadHits(AliL3SpacePointData* hits )
+Bool_t AliHLTConfMapPoint::ReadHits(AliHLTSpacePointData* hits )
{
//read the hits
SetHitNumber(hits->fID);
return kTRUE;
}
-void AliL3ConfMapPoint::Reset()
+void AliHLTConfMapPoint::Reset()
{
//Reset this point.
SetUsage(kFALSE);
fNextTrackHit=0;
}
-void AliL3ConfMapPoint::Setup(AliL3Vertex *vertex)
+void AliHLTConfMapPoint::Setup(AliHLTVertex *vertex)
{
//Setup. Sets the vertex, conformal coordinates,
//and phi and eta of each hit.
return;
}
-void AliL3ConfMapPoint::SetIntPoint(Double_t inx, Double_t iny, Double_t inz,
+void AliHLTConfMapPoint::SetIntPoint(Double_t inx, Double_t iny, Double_t inz,
Double_t inxerr, Double_t inyerr, Double_t inzerr)
{
// Defines a new interaction point. This point is needed to calculate
return;
}
-void AliL3ConfMapPoint::SetAllCoord(const AliL3ConfMapPoint *precedinghit)
+void AliHLTConfMapPoint::SetAllCoord(const AliHLTConfMapPoint *precedinghit)
{
// Sets the interaction point, the shifted coordinates, and the conformal mapping coordinates.
// These values are calculated from the interaction point of the given cluster which should be a
return;
}
-void AliL3ConfMapPoint::SetShiftedCoord()
+void AliHLTConfMapPoint::SetShiftedCoord()
{
// Sets the coordinates with resepct to the given vertex point
return;
}
-void AliL3ConfMapPoint::SetConfCoord()
+void AliHLTConfMapPoint::SetConfCoord()
{
// Calculates the conformal coordinates of one cluster.
// If the option "vertex_constraint" applies the interaction point is
return;
}
-void AliL3ConfMapPoint::SetAngles()
+void AliHLTConfMapPoint::SetAngles()
{
// Calculates the angle phi and the pseudorapidity eta for each cluster.
/*
}
/*
-AliL3ConfMapTrack *AliL3ConfMapPoint::GetTrack(TClonesArray *tracks) const
+AliHLTConfMapTrack *AliHLTConfMapPoint::GetTrack(TClonesArray *tracks) const
{
// Returns the pointer to the track to which this hit belongs.
- return (AliL3ConfMapTrack*)tracks->At(this->GetTrackNumber());
+ return (AliHLTConfMapTrack*)tracks->At(this->GetTrackNumber());
}
*/
#ifndef ALIL3ConfMapPointH
#define ALIL3ConfMapPointH
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3SpacePointData;
-class AliL3ConfMapTrack;
-class AliL3Vertex;
+class AliHLTSpacePointData;
+class AliHLTConfMapTrack;
+class AliHLTVertex;
-class AliL3ConfMapPoint {
+class AliHLTConfMapPoint {
private:
Double_t fPhi; // angle phi
Double_t fEta; // pseudorapidity
- AliL3ConfMapPoint *fNextVolumeHit; //!
- AliL3ConfMapPoint *fNextRowHit; //!
- AliL3ConfMapPoint *fNextTrackHit; //! Linked chain of points in a track
+ AliHLTConfMapPoint *fNextVolumeHit; //!
+ AliHLTConfMapPoint *fNextRowHit; //!
+ AliHLTConfMapPoint *fNextTrackHit; //! Linked chain of points in a track
Short_t fPhiIndex; //phi index
Short_t fEtaIndex; //eta index
Double_t fXYChi2; //xy chi
public:
- AliL3ConfMapPoint();
- virtual ~AliL3ConfMapPoint();
+ AliHLTConfMapPoint();
+ virtual ~AliHLTConfMapPoint();
void Reset();
- Bool_t ReadHits(AliL3SpacePointData* hits );
+ Bool_t ReadHits(AliHLTSpacePointData* hits );
// getter
Double_t GetX() const {return fx;}
Int_t GetTrackNumber() const {return fTrackNumber;}
//Int_t const *GetMCTrackID() const {return fMCTrackID;}
- AliL3ConfMapPoint* GetNextVolumeHit(){return fNextVolumeHit;}
- AliL3ConfMapPoint* GetNextRowHit(){return fNextRowHit;}
- AliL3ConfMapPoint* GetNextTrackHit(){return fNextTrackHit;}
+ AliHLTConfMapPoint* GetNextVolumeHit(){return fNextVolumeHit;}
+ AliHLTConfMapPoint* GetNextRowHit(){return fNextRowHit;}
+ AliHLTConfMapPoint* GetNextTrackHit(){return fNextTrackHit;}
Short_t GetPhiIndex() const {return fPhiIndex;}
Short_t GetEtaIndex() const {return fEtaIndex;}
Double_t GetXYChi2() const {return fXYChi2;}
//Int_t fMCTrackID[3]; //MClabel of tracks, may overlap
// setter
- void SetNextVolumeHit(AliL3ConfMapPoint* p){fNextVolumeHit=p;}
- void SetNextRowHit(AliL3ConfMapPoint* p){fNextRowHit=p;}
- void SetNextTrackHit(AliL3ConfMapPoint* p){fNextTrackHit=p;}
+ void SetNextVolumeHit(AliHLTConfMapPoint* p){fNextVolumeHit=p;}
+ void SetNextRowHit(AliHLTConfMapPoint* p){fNextRowHit=p;}
+ void SetNextTrackHit(AliHLTConfMapPoint* p){fNextTrackHit=p;}
void SetPhiIndex(Short_t p){fPhiIndex=p;}
void SetEtaIndex(Short_t p){fEtaIndex=p;}
void SetTrackNumber(Int_t f){fTrackNumber=f;}
void SetNextHitNumber(Int_t f){fNextHitNumber=f;}
- void Setup(AliL3Vertex *vertex);// does the usual setup in the right order
+ void Setup(AliHLTVertex *vertex);// does the usual setup in the right order
void SetAngles(); // calculate spherical angles and set values
void SetIntPoint(Double_t inx = 0., Double_t iny = 0.,
Double_t inz = 0., Double_t inxerr = 0.,
Double_t inyerr = 0., Double_t inzerr = 0.);
//-> set interaction point
void SetShiftedCoord();// set shifted coordinates
- void SetAllCoord(const AliL3ConfMapPoint *hit);// set conformal mapping coordinates in respect to given hit
+ void SetAllCoord(const AliHLTConfMapPoint *hit);// set conformal mapping coordinates in respect to given hit
void SetConfCoord();// conformal mapping
- ClassDef(AliL3ConfMapPoint, 1) //Conformal mapping hit class.
+ ClassDef(AliHLTConfMapPoint, 1) //Conformal mapping hit class.
};
+typedef AliHLTConfMapPoint AliL3ConfMapPoint; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>, Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Vertex.h"
-#include "AliL3ConfMapPoint.h"
-#include "AliL3ConfMapFit.h"
-#include "AliL3ConfMapTrack.h"
-#include "AliL3Transform.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTVertex.h"
+#include "AliHLTConfMapPoint.h"
+#include "AliHLTConfMapFit.h"
+#include "AliHLTConfMapTrack.h"
+#include "AliHLTTransform.h"
#include "AliLevel3.h"
-/** \class AliL3ConfMapTrack
+/** \class AliHLTConfMapTrack
<pre>
//_____________________________________________________________
-// AliL3ConfMapTrack
+// AliHLTConfMapTrack
//
// Track class for conformal mapper
</pre>
using namespace std;
#endif
-ClassImp(AliL3ConfMapTrack)
+ClassImp(AliHLTConfMapTrack)
-AliL3ConfMapTrack::AliL3ConfMapTrack()
+AliHLTConfMapTrack::AliHLTConfMapTrack()
{
//Constructor
fChiSq[0] = 0.;
fChiSq[1] = 0.;
}
-AliL3ConfMapTrack::~AliL3ConfMapTrack()
+AliHLTConfMapTrack::~AliHLTConfMapTrack()
{
//deconstructor
}
-void AliL3ConfMapTrack::DeleteCandidate()
+void AliHLTConfMapTrack::DeleteCandidate()
{
//Deletes this track by resetting all its parameters. Does not delete
//the object itself.
- AliL3ConfMapPoint *curHit = (AliL3ConfMapPoint*)fFirstHit;
- AliL3ConfMapPoint *nextHit;
+ AliHLTConfMapPoint *curHit = (AliHLTConfMapPoint*)fFirstHit;
+ AliHLTConfMapPoint *nextHit;
while(curHit != 0)
{
- nextHit = (AliL3ConfMapPoint*)curHit->GetNextTrackHit();
+ nextHit = (AliHLTConfMapPoint*)curHit->GetNextTrackHit();
curHit->SetNextTrackHit(0);
curHit = nextHit;
}
}
-void AliL3ConfMapTrack::SetProperties(Bool_t usage)
+void AliHLTConfMapTrack::SetProperties(Bool_t usage)
{
//Set the hits to this track to 'usage'
for(StartLoop(); LoopDone(); GetNextHit())
{
- AliL3ConfMapPoint *p = (AliL3ConfMapPoint*)fCurrentHit;
+ AliHLTConfMapPoint *p = (AliHLTConfMapPoint*)fCurrentHit;
p->SetUsage(usage);
}
return;
}
-void AliL3ConfMapTrack::Reset()
+void AliHLTConfMapTrack::Reset()
{
//Resets the fit parameters of this track.
SetNHits(0);
}
-void AliL3ConfMapTrack::UpdateParam(AliL3ConfMapPoint *thisHit)
+void AliHLTConfMapTrack::UpdateParam(AliHLTConfMapPoint *thisHit)
{
//Function to update fit parameters of track
//Also, it updates the hit pointers.
if(GetNHits()==1)
fFirstHit = thisHit;
else
- ((AliL3ConfMapPoint*)fLastHit)->SetNextTrackHit(thisHit);
+ ((AliHLTConfMapPoint*)fLastHit)->SetNextTrackHit(thisHit);
fLastHit = thisHit;
}
-void AliL3ConfMapTrack::Fill(AliL3Vertex *vertex,Double_t max_Dca)
+void AliHLTConfMapTrack::Fill(AliHLTVertex *vertex,Double_t max_Dca)
{
//Fill track variables with or without fit.
Double_t radius = sqrt(fa2Xy*fa2Xy+1)/(2*fabs(fa1Xy));
SetRadius(radius);
- //fPt = (Double_t)(AliL3Transform::GetBFieldValue() * fRadius);
- Double_t pt = (Double_t)(AliL3Transform::GetBFieldValue() * GetRadius());
+ //fPt = (Double_t)(AliHLTTransform::GetBFieldValue() * fRadius);
+ Double_t pt = (Double_t)(AliHLTTransform::GetBFieldValue() * GetRadius());
SetPt(pt);
if(GetPt() > max_Dca) //go for fit of helix in real space
{
- AliL3ConfMapFit *fit = new AliL3ConfMapFit(this,vertex);
+ AliHLTConfMapFit *fit = new AliHLTConfMapFit(this,vertex);
ComesFromMainVertex(AliLevel3::DoVertexFit());
fit->FitHelix();
- //AliL3ConfMapPoint *lHit = (AliL3ConfMapPoint*)fLastHit;
- AliL3ConfMapPoint *fHit = (AliL3ConfMapPoint*)fFirstHit;
+ //AliHLTConfMapPoint *lHit = (AliHLTConfMapPoint*)fLastHit;
+ AliHLTConfMapPoint *fHit = (AliHLTConfMapPoint*)fFirstHit;
SetLastPoint(fHit->GetX(),fHit->GetY(),fHit->GetZ());
UpdateToFirstPoint();
delete fit;
}
else if(GetPt() == 0)
- LOG(AliL3Log::kError,"AliL3ConfMapTrack::Fill","Tracks")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapTrack::Fill","Tracks")<<AliHLTLog::kDec<<
"Found track with Pt=0!!!"<<ENDLOG;
else
{
- LOG(AliL3Log::kError,"AliL3ConfMapTrack::Fill","Tracks")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapTrack::Fill","Tracks")<<AliHLTLog::kDec<<
"Track with pt<max_Dca :"<<GetPt()<<ENDLOG;
}
}
-Int_t AliL3ConfMapTrack::GetMCLabel()
+Int_t AliHLTConfMapTrack::GetMCLabel()
{
//For evaluation study.
//Returns the MCtrackID of the belonging clusters.
Int_t lab=123456789;
for (i=0; i<num_of_clusters; i++) {
- AliL3ConfMapPoint *c=(AliL3ConfMapPoint*)fPoints->UncheckedAt(i);
+ AliHLTConfMapPoint *c=(AliHLTConfMapPoint*)fPoints->UncheckedAt(i);
lab=fabs(c->fMCTrackID[0]);
Int_t j;
for (j=0; j<num_of_clusters; j++)
delete[] s;
for (i=0; i<num_of_clusters; i++) {
- AliL3ConfMapPoint *c=(AliL3ConfMapPoint*)fPoints->UncheckedAt(i);
+ AliHLTConfMapPoint *c=(AliHLTConfMapPoint*)fPoints->UncheckedAt(i);
if (fabs(c->fMCTrackID[1]) == lab ||
fabs(c->fMCTrackID[2]) == lab ) max++;
}
max=0;
for (i=1; i<=tail; i++) {
- AliL3ConfMapPoint *c = (AliL3ConfMapPoint*)fPoints->UncheckedAt(num_of_clusters-i);
+ AliHLTConfMapPoint *c = (AliHLTConfMapPoint*)fPoints->UncheckedAt(num_of_clusters-i);
if (lab == fabs(c->fMCTrackID[0]) ||
lab == fabs(c->fMCTrackID[1]) ||
lab == fabs(c->fMCTrackID[2])) max++;
#include <string.h>
-#include "AliL3Track.h"
+#include "AliHLTTrack.h"
-#include "AliL3RootTypes.h"
-#include "AliL3ConfMapPoint.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTConfMapPoint.h"
-class AliL3Vertex;
+class AliHLTVertex;
-class AliL3ConfMapTrack :public AliL3Track {
+class AliHLTConfMapTrack :public AliHLTTrack {
public:
- AliL3ConfMapTrack();
- virtual ~AliL3ConfMapTrack();
- void Fill(AliL3Vertex *vertex,Double_t max_Dca);
+ AliHLTConfMapTrack();
+ virtual ~AliHLTConfMapTrack();
+ void Fill(AliHLTVertex *vertex,Double_t max_Dca);
void Reset();
- void UpdateParam(AliL3ConfMapPoint *hit);
+ void UpdateParam(AliHLTConfMapPoint *hit);
void DeleteCandidate();
void StartLoop() {fCurrentHit = fFirstHit;}
- void GetNextHit() {fCurrentHit = ((AliL3ConfMapPoint*)fCurrentHit)->GetNextTrackHit();}
+ void GetNextHit() {fCurrentHit = ((AliHLTConfMapPoint*)fCurrentHit)->GetNextTrackHit();}
Int_t LoopDone() const {return fCurrentHit != 0;}
// setter
Double_t GetA1Sz() const {return fa1Sz;}
Double_t GetA2Sz() const {return fa2Sz;}
- AliL3ConfMapPoint* GetFirstHit() const {return fFirstHit;}
- AliL3ConfMapPoint* GetLastHit() const {return fLastHit;}
- AliL3ConfMapPoint* GetCurrentHit() const {return fCurrentHit;}
+ AliHLTConfMapPoint* GetFirstHit() const {return fFirstHit;}
+ AliHLTConfMapPoint* GetLastHit() const {return fLastHit;}
+ AliHLTConfMapPoint* GetCurrentHit() const {return fCurrentHit;}
Int_t GetMCLabel();
protected:
- AliL3ConfMapPoint *fCurrentHit; //!
- AliL3ConfMapPoint *fLastHit; //!
- AliL3ConfMapPoint *fFirstHit; //!
+ AliHLTConfMapPoint *fCurrentHit; //!
+ AliHLTConfMapPoint *fLastHit; //!
+ AliHLTConfMapPoint *fFirstHit; //!
Double_t fChiSq[2]; //chi squared
Double_t fddXy, fa1Xy, fa2Xy ; /*fit par in xy */
Double_t fddSz, fa1Sz, fa2Sz ; /*fit par in sz */
- ClassDef(AliL3ConfMapTrack,1) //Conformal mapping track class
+ ClassDef(AliHLTConfMapTrack,1) //Conformal mapping track class
};
+
+typedef AliHLTConfMapTrack AliL3ConfMapTrack; // for backward compatibility
#endif
// @(#) $Id$
-/** \class AliL3ConfMapper
+/** \class AliHLTConfMapper
<pre>
//_____________________________________________________________
-// AliL3ConfMapper
+// AliHLTConfMapper
//
// Conformal mapping base class
//
#include <sys/time.h>
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3Logging.h"
-#include "AliL3Vertex.h"
-#include "AliL3ConfMapTrack.h"
-#include "AliL3ConfMapPoint.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Transform.h"
-#include "AliL3ConfMapper.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTVertex.h"
+#include "AliHLTConfMapTrack.h"
+#include "AliHLTConfMapPoint.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTransform.h"
+#include "AliHLTConfMapper.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3ConfMapper)
+ClassImp(AliHLTConfMapper)
-AliL3ConfMapper::AliL3ConfMapper()
+AliHLTConfMapper::AliHLTConfMapper()
{
//Default constructor
fVertex = NULL;
}
-AliL3ConfMapper::~AliL3ConfMapper()
+AliHLTConfMapper::~AliHLTConfMapper()
{
// Destructor.
if(fVolume) {
}
}
-void AliL3ConfMapper::InitVolumes()
+void AliHLTConfMapper::InitVolumes()
{
//Data organization.
//Allocate volumes, set conformal coordinates and pointers.
//Should be done after setting the track parameters
- fNumRowSegmentPlusOne = AliL3Transform::GetNRows();//NumRows[0]; //Maximum 32.
+ fNumRowSegmentPlusOne = AliHLTTransform::GetNRows();//NumRows[0]; //Maximum 32.
fNumPhiSegmentPlusOne = fNumPhiSegment+1;
fNumEtaSegmentPlusOne = fNumEtaSegment+1;
fNumPhiEtaSegmentPlusOne = fNumPhiSegmentPlusOne*fNumEtaSegmentPlusOne;
if(fVolume) delete [] fVolume;
if(fRow) delete [] fRow;
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::InitVolumes","Memory")<<AliL3Log::kDec<<
- "Allocating "<<fBounds*sizeof(AliL3ConfMapContainer)<<" Bytes to fVolume"<<ENDLOG;
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::InitVolumes","Memory")<<AliL3Log::kDec<<
- "Allocating "<<fNumRowSegmentPlusOne*sizeof(AliL3ConfMapContainer)<<" Bytes to fRow"<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::InitVolumes","Memory")<<AliHLTLog::kDec<<
+ "Allocating "<<fBounds*sizeof(AliHLTConfMapContainer)<<" Bytes to fVolume"<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::InitVolumes","Memory")<<AliHLTLog::kDec<<
+ "Allocating "<<fNumRowSegmentPlusOne*sizeof(AliHLTConfMapContainer)<<" Bytes to fRow"<<ENDLOG;
- fVolume = new AliL3ConfMapContainer[fBounds];
- fRow = new AliL3ConfMapContainer[fNumRowSegmentPlusOne];
+ fVolume = new AliHLTConfMapContainer[fBounds];
+ fRow = new AliHLTConfMapContainer[fNumRowSegmentPlusOne];
- memset(fVolume,0,fBounds*sizeof(AliL3ConfMapContainer));
- memset(fRow,0,fNumRowSegmentPlusOne*sizeof(AliL3ConfMapContainer));
+ memset(fVolume,0,fBounds*sizeof(AliHLTConfMapContainer));
+ memset(fRow,0,fNumRowSegmentPlusOne*sizeof(AliHLTConfMapContainer));
Int_t maxnumoftracks = 2000;
Int_t maxnumofhits = 120000;
if(fTrack)
delete fTrack;
- fHit = new AliL3ConfMapPoint[maxnumofhits];
- fTrack = new AliL3TrackArray("AliL3ConfMapTrack",maxnumoftracks);
+ fHit = new AliHLTConfMapPoint[maxnumofhits];
+ fTrack = new AliHLTTrackArray("AliHLTConfMapTrack",maxnumoftracks);
}
-void AliL3ConfMapper::InitSector(Int_t sector,Int_t *rowrange,Float_t *etarange)
+void AliHLTConfMapper::InitSector(Int_t sector,Int_t *rowrange,Float_t *etarange)
{ //sector means slice here
//Initialize tracker for tracking in a given sector.
//Resets track and hit arrays.
else //complete sector
{
fRowMin = 0;
- fRowMax = AliL3Transform::GetNRows() - 1;
+ fRowMax = AliHLTTransform::GetNRows() - 1;
}
if(etarange)
{
}
//Set the angles to sector 2:
- fPhiMin = -10*AliL3Transform::ToRad();//fParam->GetAngle(sector) - 10/todeg;
- fPhiMax = 10*AliL3Transform::ToRad();//fParam->GetAngle(sector) + 10/todeg;
+ fPhiMin = -10*AliHLTTransform::ToRad();//fParam->GetAngle(sector) - 10/todeg;
+ fPhiMax = 10*AliHLTTransform::ToRad();//fParam->GetAngle(sector) + 10/todeg;
fNTracks=0;
fMainVertexTracks = 0;
fPhiHitsOutOfRange=0;
fNumRowSegment = fRowMax - fRowMin; //number of rows to be considered by tracker
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::InitSector","B-field")
- <<"Tracker initializing with a magnetic field of "<<AliL3Transform::GetBField()<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::InitSector","B-field")
+ <<"Tracker initializing with a magnetic field of "<<AliHLTTransform::GetBField()<<ENDLOG;
fTrack->Reset();
}
-Bool_t AliL3ConfMapper::ReadHits(UInt_t count, AliL3SpacePointData* hits )
+Bool_t AliHLTConfMapper::ReadHits(UInt_t count, AliHLTSpacePointData* hits )
{
//read hits
Int_t nhit=(Int_t)count;
fHit[i].ReadHits(&(hits[i]));
}
fClustersUnused += nhit;
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::ReadHits","#hits")
- <<AliL3Log::kDec<<"hit_counter: "<<nhit<<" count: "<<count<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::ReadHits","#hits")
+ <<AliHLTLog::kDec<<"hit_counter: "<<nhit<<" count: "<<count<<ENDLOG;
return true;
}
-void AliL3ConfMapper::SetPointers()
+void AliHLTConfMapper::SetPointers()
{
//Check if there are not enough clusters to make a track in this sector
//Can happen in pp events.
return;
//Reset detector volumes
- memset(fVolume,0,fBounds*sizeof(AliL3ConfMapContainer));
- memset(fRow,0,fNumRowSegmentPlusOne*sizeof(AliL3ConfMapContainer));
+ memset(fVolume,0,fBounds*sizeof(AliHLTConfMapContainer));
+ memset(fRow,0,fNumRowSegmentPlusOne*sizeof(AliHLTConfMapContainer));
Float_t phiSlice = (fPhiMax-fPhiMin)/fNumPhiSegment;
Float_t etaSlice = (fEtaMax-fEtaMin)/fNumEtaSegment;
Int_t localcounter=0;
for(Int_t j=0; j<fClustersUnused; j++)
{
- //AliL3ConfMapPoint *thisHit = (AliL3ConfMapPoint*)fHit->At(j);
- AliL3ConfMapPoint *thisHit = &(fHit[j]);
+ //AliHLTConfMapPoint *thisHit = (AliHLTConfMapPoint*)fHit->At(j);
+ AliHLTConfMapPoint *thisHit = &(fHit[j]);
thisHit->Setup(fVertex);
if(fVolume[volumeIndex].first == NULL)
fVolume[volumeIndex].first = (void *)thisHit;
else
- ((AliL3ConfMapPoint *)fVolume[volumeIndex].last)->SetNextVolumeHit(thisHit);
+ ((AliHLTConfMapPoint *)fVolume[volumeIndex].last)->SetNextVolumeHit(thisHit);
fVolume[volumeIndex].last = (void *)thisHit;
if(fRow[(localrow-fRowMin)].first == NULL)
fRow[(localrow-fRowMin)].first = (void *)thisHit;
else
- ((AliL3ConfMapPoint *)(fRow[(localrow-fRowMin)].last))->SetNextRowHit(thisHit);
+ ((AliHLTConfMapPoint *)(fRow[(localrow-fRowMin)].last))->SetNextRowHit(thisHit);
fRow[(localrow-fRowMin)].last = (void *)thisHit;
}
if(fClustersUnused>0 && localcounter==0)
- LOG(AliL3Log::kError,"AliL3ConfMapper::SetPointers","Parameters")
- <<AliL3Log::kDec<<"No points passed to track finder, hits out of range: "
+ LOG(AliHLTLog::kError,"AliHLTConfMapper::SetPointers","Parameters")
+ <<AliHLTLog::kDec<<"No points passed to track finder, hits out of range: "
<<fEtaHitsOutOfRange+fPhiHitsOutOfRange<<ENDLOG;
Int_t hits_accepted=fClustersUnused-(fEtaHitsOutOfRange+fPhiHitsOutOfRange);
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::SetPointers","Setup")
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::SetPointers","Setup")
<<"Setup finished, hits out of range: "<<fEtaHitsOutOfRange+fPhiHitsOutOfRange
<<" hits accepted "<<hits_accepted<<ENDLOG;
}
-void AliL3ConfMapper::MainVertexTracking_a()
+void AliHLTConfMapper::MainVertexTracking_a()
{
//Tracking with vertex constraint.
if(!fParamSet[(Int_t)kTRUE])
{
- LOG(AliL3Log::kError,"AliL3ConfMapper::MainVertexTracking","Parameters")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapper::MainVertexTracking","Parameters")<<AliHLTLog::kDec<<
"Tracking parameters not set!"<<ENDLOG;
return;
}
SetVertexConstraint(true);
cpuTime = CpuTime() - initCpuTime;
if(fBench)
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::MainVertexTracking_a","Timing")
- <<AliL3Log::kDec<<"Setup finished in "<<cpuTime*1000<<" ms"<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::MainVertexTracking_a","Timing")
+ <<AliHLTLog::kDec<<"Setup finished in "<<cpuTime*1000<<" ms"<<ENDLOG;
}
-void AliL3ConfMapper::MainVertexTracking_b()
+void AliHLTConfMapper::MainVertexTracking_b()
{
//Tracking with vertex constraint.
if(!fParamSet[(Int_t)kTRUE])
{
- LOG(AliL3Log::kError,"AliL3ConfMapper::MainVertexTracking","Parameters")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapper::MainVertexTracking","Parameters")<<AliHLTLog::kDec<<
"Tracking parameters not set!"<<ENDLOG;
return;
}
cpuTime = CpuTime() - initCpuTime;
if(fBench)
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::MainVertexTracking_b","Timing")
- <<AliL3Log::kDec<<"Main Tracking finished in "<<cpuTime*1000<<" ms"<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::MainVertexTracking_b","Timing")
+ <<AliHLTLog::kDec<<"Main Tracking finished in "<<cpuTime*1000<<" ms"<<ENDLOG;
}
-void AliL3ConfMapper::MainVertexTracking()
+void AliHLTConfMapper::MainVertexTracking()
{
//Tracking with vertex constraint.
if(!fParamSet[(Int_t)kTRUE])
{
- LOG(AliL3Log::kError,"AliL3ConfMapper::MainVertexTracking","Parameters")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapper::MainVertexTracking","Parameters")<<AliHLTLog::kDec<<
"Tracking parameters not set!"<<ENDLOG;
return;
}
cpuTime = CpuTime() - initCpuTime;
if(fBench)
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::MainVertexTracking","Timing")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::MainVertexTracking","Timing")<<AliHLTLog::kDec<<
"Tracking finished in "<<cpuTime*1000<<" ms"<<ENDLOG;
return;
}
-void AliL3ConfMapper::NonVertexTracking()
+void AliHLTConfMapper::NonVertexTracking()
{
//Tracking with no vertex constraint. This should be called after doing MainVertexTracking,
//in order to do tracking on the remaining clusters.
if(!fParamSet[(Int_t)kFALSE])
{
- LOG(AliL3Log::kError,"AliL3ConfMapper::NonVertexTracking","Parameters")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapper::NonVertexTracking","Parameters")<<AliHLTLog::kDec<<
"Tracking parameters not set!"<<ENDLOG;
return;
}
SetVertexConstraint(false);
ClusterLoop();
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::NonVertexTracking","ntracks")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::NonVertexTracking","ntracks")<<AliHLTLog::kDec<<
"Number of nonvertex tracks found: "<<(fNTracks-fMainVertexTracks)<<ENDLOG;
return;
}
-void AliL3ConfMapper::MainVertexSettings(Int_t trackletlength, Int_t tracklength,
+void AliHLTConfMapper::MainVertexSettings(Int_t trackletlength, Int_t tracklength,
Int_t rowscopetracklet, Int_t rowscopetrack,
Double_t maxphi,Double_t maxeta)
{
SetParamDone(kTRUE);
}
-void AliL3ConfMapper::NonVertexSettings(Int_t trackletlength, Int_t tracklength,
+void AliHLTConfMapper::NonVertexSettings(Int_t trackletlength, Int_t tracklength,
Int_t rowscopetracklet, Int_t rowscopetrack)
{
//set parameters for non-vertex tracking
SetParamDone(kFALSE);
}
-void AliL3ConfMapper::SetTrackCuts(Double_t hitChi2Cut, Double_t goodHitChi2, Double_t trackChi2Cut,Int_t maxdist,Bool_t vertexconstraint)
+void AliHLTConfMapper::SetTrackCuts(Double_t hitChi2Cut, Double_t goodHitChi2, Double_t trackChi2Cut,Int_t maxdist,Bool_t vertexconstraint)
{
//Settings for tracks. The cuts are:
//HitChi2Cut: Maximum hit chi2
SetMaxDist(maxdist,vertexconstraint);
}
-void AliL3ConfMapper::SetTrackletCuts(Double_t maxangle,Double_t goodDist, Bool_t vc)
+void AliHLTConfMapper::SetTrackletCuts(Double_t maxangle,Double_t goodDist, Bool_t vc)
{
//Sets cuts of tracklets. Right now this is only:
//maxangle: Maximum angle when forming segments (if trackletlength > 2)
SetMaxAngleTracklet(maxangle, vc);
}
-void AliL3ConfMapper::ClusterLoop()
+void AliHLTConfMapper::ClusterLoop()
{
//Loop over hits, starting at outermost padrow, and trying to build segments.
return;
Int_t rowsegm,lastrow = fRowMin + fMinPoints[fVertexConstraint];
- AliL3ConfMapPoint *hit;
+ AliHLTConfMapPoint *hit;
//Loop over rows, and try to create tracks from the hits.
//Starts at the outermost row, and loops as long as a track can be build, due to length.
for(rowsegm = fRowMax; rowsegm >= lastrow; rowsegm--)
{
- if(fRow[(rowsegm-fRowMin)].first && ((AliL3ConfMapPoint*)fRow[(rowsegm-fRowMin)].first)->GetPadRow() < fRowMin + 1)
+ if(fRow[(rowsegm-fRowMin)].first && ((AliHLTConfMapPoint*)fRow[(rowsegm-fRowMin)].first)->GetPadRow() < fRowMin + 1)
break;
- for(hit = (AliL3ConfMapPoint*)fRow[(rowsegm-fRowMin)].first; hit!=0; hit=hit->GetNextRowHit())
+ for(hit = (AliHLTConfMapPoint*)fRow[(rowsegm-fRowMin)].first; hit!=0; hit=hit->GetNextRowHit())
{
if(hit->GetUsage() == true)
continue;
}
-void AliL3ConfMapper::CreateTrack(AliL3ConfMapPoint *hit)
+void AliHLTConfMapper::CreateTrack(AliHLTConfMapPoint *hit)
{
//Tries to create a track from the initial hit given by ClusterLoop()
- AliL3ConfMapPoint *closesthit = NULL;
- AliL3ConfMapTrack *track = NULL;
+ AliHLTConfMapPoint *closesthit = NULL;
+ AliHLTConfMapTrack *track = NULL;
Int_t point;
Int_t tracks = fNTracks;
fNTracks++;
- track = (AliL3ConfMapTrack*)fTrack->NextTrack();
+ track = (AliHLTConfMapTrack*)fTrack->NextTrack();
//reset hit parameters:
track->Reset();
{//closest hit exist
// Calculate track length in sz plane
- dx = ((AliL3ConfMapPoint*)closesthit)->GetX() - ((AliL3ConfMapPoint*)hit)->GetX();
- dy = ((AliL3ConfMapPoint*)closesthit)->GetY() - ((AliL3ConfMapPoint*)hit)->GetY();
+ dx = ((AliHLTConfMapPoint*)closesthit)->GetX() - ((AliHLTConfMapPoint*)hit)->GetX();
+ dy = ((AliHLTConfMapPoint*)closesthit)->GetY() - ((AliHLTConfMapPoint*)hit)->GetY();
//track->fLength += (Double_t)sqrt ( dx * dx + dy * dy ) ;
Double_t length = track->GetLength()+(Double_t)sqrt ( dx * dx + dy * dy );
track->SetLength(length);
for(point = fTrackletLength[fVertexConstraint]; point <= fNumRowSegment; point++)
{
track->SetChiSq1(fHitChi2Cut[fVertexConstraint]);
- closesthit = GetNextNeighbor((AliL3ConfMapPoint*)track->GetLastHit(),track);
+ closesthit = GetNextNeighbor((AliHLTConfMapPoint*)track->GetLastHit(),track);
if(closesthit)
{
return;
}
-AliL3ConfMapPoint *AliL3ConfMapper::GetNextNeighbor(AliL3ConfMapPoint *starthit,
- AliL3ConfMapTrack *track)
+AliHLTConfMapPoint *AliHLTConfMapper::GetNextNeighbor(AliHLTConfMapPoint *starthit,
+ AliHLTConfMapTrack *track)
{
//When forming segments: Finds closest hit to input hit
//When forming tracks: Find closest hit to track fit.
Double_t dist,closestdist = fMaxDist[fVertexConstraint];
- AliL3ConfMapPoint *hit = NULL;
- AliL3ConfMapPoint *closesthit = NULL;
+ AliHLTConfMapPoint *hit = NULL;
+ AliHLTConfMapPoint *closesthit = NULL;
Int_t subrowsegm;
Int_t subphisegm;
if(volumeIndex<0)
{//debugging
- LOG(AliL3Log::kError,"AliL3ConfMapper::GetNextNeighbor","Memory")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapper::GetNextNeighbor","Memory")<<AliHLTLog::kDec<<
"VolumeIndex error "<<volumeIndex<<ENDLOG;
}
- for(hit = (AliL3ConfMapPoint*)fVolume[volumeIndex].first;
+ for(hit = (AliHLTConfMapPoint*)fVolume[volumeIndex].first;
hit!=0; hit = hit->GetNextVolumeHit())
{
return 0;
}
-Int_t AliL3ConfMapper::EvaluateHit(AliL3ConfMapPoint *starthit,AliL3ConfMapPoint *hit,AliL3ConfMapTrack *track)
+Int_t AliHLTConfMapper::EvaluateHit(AliHLTConfMapPoint *starthit,AliHLTConfMapPoint *hit,AliHLTConfMapTrack *track)
{
//Check if space point gives a fit with acceptable chi2.
}
-Double_t AliL3ConfMapper::CalcDistance(const AliL3ConfMapPoint *hit1,const AliL3ConfMapPoint *hit2) const
+Double_t AliHLTConfMapper::CalcDistance(const AliHLTConfMapPoint *hit1,const AliHLTConfMapPoint *hit2) const
{
//Return distance between two clusters, defined by Pablo
Double_t phidiff = fabs( hit1->GetPhi() - hit2->GetPhi() );
- if (phidiff > AliL3Transform::Pi()) phidiff = AliL3Transform::TwoPi() - phidiff;
+ if (phidiff > AliHLTTransform::Pi()) phidiff = AliHLTTransform::TwoPi() - phidiff;
- return AliL3Transform::ToDeg()*fabs((Float_t)((hit1->GetPadRow() - hit2->GetPadRow()) *
+ return AliHLTTransform::ToDeg()*fabs((Float_t)((hit1->GetPadRow() - hit2->GetPadRow()) *
(phidiff + fabs( hit1->GetEta() - hit2->GetEta()))));
}
-Bool_t AliL3ConfMapper::VerifyRange(const AliL3ConfMapPoint *hit1,const AliL3ConfMapPoint *hit2) const
+Bool_t AliHLTConfMapper::VerifyRange(const AliHLTConfMapPoint *hit1,const AliHLTConfMapPoint *hit2) const
{
//Check if the hit are within reasonable range in phi and eta
Double_t dphi,deta;//maxphi=0.1,maxeta=0.1;
dphi = fabs(hit1->GetPhi() - hit2->GetPhi());
- if(dphi > AliL3Transform::Pi()) dphi = fabs(AliL3Transform::TwoPi() - dphi);
+ if(dphi > AliHLTTransform::Pi()) dphi = fabs(AliHLTTransform::TwoPi() - dphi);
if(dphi > fMaxPhi) return false;
deta = fabs(hit1->GetEta() - hit2->GetEta());
}
-Double_t AliL3ConfMapper::TrackletAngle(AliL3ConfMapTrack *track,Int_t n) const
+Double_t AliHLTConfMapper::TrackletAngle(AliHLTConfMapTrack *track,Int_t n) const
{
// Returns the angle 'between' the last three points (started at point number n) on this track.
Int_t counter=0;
for(track->StartLoop(); track->LoopDone(); track->GetNextHit())
{
- AliL3ConfMapPoint *p = (AliL3ConfMapPoint*)track->GetCurrentHit();
+ AliHLTConfMapPoint *p = (AliHLTConfMapPoint*)track->GetCurrentHit();
if( (n-1) == counter)
{
x1[0] = p->GetX();
return 0;
- x1[0] = ((AliL3ConfMapPoint *)hits->At(n-2))->GetX() - ((AliL3ConfMapPoint *)hits->At(n-3))->GetX();
- x1[1] = ((AliL3ConfMapPoint *)hits->At(n-2))->GetY() - ((AliL3ConfMapPoint *)hits->At(n-3))->GetY();
+ x1[0] = ((AliHLTConfMapPoint *)hits->At(n-2))->GetX() - ((AliHLTConfMapPoint *)hits->At(n-3))->GetX();
+ x1[1] = ((AliHLTConfMapPoint *)hits->At(n-2))->GetY() - ((AliHLTConfMapPoint *)hits->At(n-3))->GetY();
- x2[0] = ((AliL3ConfMapPoint *)hits->At(n-1))->GetX() - ((AliL3ConfMapPoint *)hits->At(n-2))->GetX();
- x2[1] = ((AliL3ConfMapPoint *)hits->At(n-1))->GetY() - ((AliL3ConfMapPoint *)hits->At(n-2))->GetY();
+ x2[0] = ((AliHLTConfMapPoint *)hits->At(n-1))->GetX() - ((AliHLTConfMapPoint *)hits->At(n-2))->GetX();
+ x2[1] = ((AliHLTConfMapPoint *)hits->At(n-1))->GetY() - ((AliHLTConfMapPoint *)hits->At(n-2))->GetY();
angle1 = atan2(x1[1],x1[0]);
angle2 = atan2(x2[1],x1[0]);
*/
}
-Int_t AliL3ConfMapper::FillTracks()
+Int_t AliHLTConfMapper::FillTracks()
{
//Fill track parameters. Which basically means do a fit of helix in real space,
//which should be done in order to get nice tracks.
Int_t numoftracks = fNTracks;
if(fNTracks == 0)
{
- LOG(AliL3Log::kError,"AliL3ConfMapper::FillTracks","fNTracks")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTConfMapper::FillTracks","fNTracks")<<AliHLTLog::kDec<<
"No tracks found!!"<<ENDLOG;
return 0;
}
- LOG(AliL3Log::kInformational,"AliL3ConfMapper::FillTracks","fNTracks")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kInformational,"AliHLTConfMapper::FillTracks","fNTracks")<<AliHLTLog::kDec<<
"Number of found tracks: "<<fNTracks<<ENDLOG;
// fTrack->Sort();
for(Int_t i=0; i<numoftracks; i++)
{
- AliL3ConfMapTrack *track = (AliL3ConfMapTrack*)fTrack->GetTrack(i);
+ AliHLTConfMapTrack *track = (AliHLTConfMapTrack*)fTrack->GetTrack(i);
track->Fill(fVertex,fMaxDca);
}
return 1;
}
-Double_t AliL3ConfMapper::CpuTime()
+Double_t AliHLTConfMapper::CpuTime()
{
//Return the Cputime in seconds.
struct timeval tv;
//*-- Copyright © ALICE HLT Group
-class AliL3ConfMapPoint;
-class AliL3ConfMapTrack;
-class AliL3Vertex;
-class AliL3TrackArray;
-class AliL3SpacePointData;
+class AliHLTConfMapPoint;
+class AliHLTConfMapTrack;
+class AliHLTVertex;
+class AliHLTTrackArray;
+class AliHLTSpacePointData;
-class AliL3ConfMapper {
+class AliHLTConfMapper {
public:
- AliL3ConfMapper();
- // AliL3ConfMapper(AliTPCParam *param,AliL3Vertex *vertex,Bool_t bench=(Bool_t)false);
- virtual ~AliL3ConfMapper();
+ AliHLTConfMapper();
+ // AliHLTConfMapper(AliTPCParam *param,AliHLTVertex *vertex,Bool_t bench=(Bool_t)false);
+ virtual ~AliHLTConfMapper();
void InitVolumes();
void InitSector(Int_t sector,Int_t *rowrange=0,Float_t *etarange=0);
- void SetVertex(AliL3Vertex *vertex){fVertex = vertex;}
+ void SetVertex(AliHLTVertex *vertex){fVertex = vertex;}
void MainVertexTracking_a();
void MainVertexTracking_b();
void MainVertexTracking();
Int_t rowscopetracklet, Int_t rowscopetrack,Double_t maxphi=0.1,Double_t maxeta=0.1);
void NonVertexSettings(Int_t trackletlength, Int_t tracklength,
Int_t rowscopetracklet, Int_t rowscopetrack);
- Bool_t ReadHits(UInt_t count, AliL3SpacePointData* hits );
+ Bool_t ReadHits(UInt_t count, AliHLTSpacePointData* hits );
void ClusterLoop();
- void CreateTrack(AliL3ConfMapPoint *hit);
- AliL3ConfMapPoint *GetNextNeighbor(AliL3ConfMapPoint *start_hit,AliL3ConfMapTrack *track=NULL);
- Int_t EvaluateHit(AliL3ConfMapPoint *start_hit,AliL3ConfMapPoint *hit,AliL3ConfMapTrack *track);
+ void CreateTrack(AliHLTConfMapPoint *hit);
+ AliHLTConfMapPoint *GetNextNeighbor(AliHLTConfMapPoint *start_hit,AliHLTConfMapTrack *track=NULL);
+ Int_t EvaluateHit(AliHLTConfMapPoint *start_hit,AliHLTConfMapPoint *hit,AliHLTConfMapTrack *track);
- Double_t CalcDistance(const AliL3ConfMapPoint *hit1,const AliL3ConfMapPoint *hit2) const;
- Double_t TrackletAngle(AliL3ConfMapTrack *track,Int_t n=3) const;
- Bool_t VerifyRange(const AliL3ConfMapPoint *hit1,const AliL3ConfMapPoint *hit2) const;
+ Double_t CalcDistance(const AliHLTConfMapPoint *hit1,const AliHLTConfMapPoint *hit2) const;
+ Double_t TrackletAngle(AliHLTConfMapTrack *track,Int_t n=3) const;
+ Bool_t VerifyRange(const AliHLTConfMapPoint *hit1,const AliHLTConfMapPoint *hit2) const;
Int_t FillTracks();
//getters
Int_t GetNumberOfTracks() const {return fNTracks;}
- AliL3TrackArray *GetTracks() const {return fTrack;}
+ AliHLTTrackArray *GetTracks() const {return fTrack;}
Double_t GetMaxDca() const {return fMaxDca;}
- AliL3Vertex* GetVertex() const {return fVertex;}
+ AliHLTVertex* GetVertex() const {return fVertex;}
Double_t CpuTime();
//setters
private:
- struct AliL3ConfMapContainer
+ struct AliHLTConfMapContainer
{
void *first; // first track
void *last; // last track
Bool_t fBench; //run-time measurements
Int_t fNTracks; //number of tracks build.
- AliL3Vertex *fVertex; //!
+ AliHLTVertex *fVertex; //!
Bool_t fParamSet[2]; //!
Bool_t fVertexFinder; //Include vertexfinding or not
//(latter case vertex=(0,0,0))
- AliL3ConfMapPoint *fHit; //!
- AliL3TrackArray *fTrack; //!
+ AliHLTConfMapPoint *fHit; //!
+ AliHLTTrackArray *fTrack; //!
Double_t fMaxDca; //cut value for momentum fit
- AliL3ConfMapContainer *fVolume; //! Segment volume
- AliL3ConfMapContainer *fRow; //! Row volume
+ AliHLTConfMapContainer *fVolume; //! Segment volume
+ AliHLTConfMapContainer *fRow; //! Row volume
//Number of cells (segments)
Int_t fNumRowSegment; // Total number of padrows
Int_t fMainVertexTracks; //number of tracks coming from the main vertex
Int_t fClustersUnused; //number of unused clusters
- ClassDef(AliL3ConfMapper,1) //Base class for conformal mapping tracking
+ ClassDef(AliHLTConfMapper,1) //Base class for conformal mapping tracking
};
+typedef AliHLTConfMapper AliL3ConfMapper; // for backward compatibility
+
#endif
--- /dev/null
+// @(#) $Id$
+
+#ifndef _DIGITDATA_H_
+#define _DIGITDATA_H_
+
+#include "AliHLTRootTypes.h"
+
+struct AliHLTDigitData
+{
+#ifdef do_mc
+ Int_t fTrackID[3];
+#endif
+ UShort_t fCharge;
+ UChar_t fPad;
+ UShort_t fTime;
+#ifdef IA64
+ UChar_t dummy1;
+ UChar_t dummy2;
+#endif
+};
+typedef struct AliHLTDigitData AliHLTDigitData;
+typedef AliHLTDigitData AliL3DigitData;
+
+struct AliHLTDigitRowData
+{
+ UInt_t fNDigit;
+ UInt_t fRow;
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
+ AliHLTDigitData fDigitData[1];
+#else
+ AliHLTDigitData fDigitData[0];
+#endif
+};
+typedef struct AliHLTDigitRowData AliHLTDigitRowData;
+typedef AliHLTDigitRowData AliL3DigitRowData;
+
+struct AliHLTRandomDigitData{
+ UChar_t fRow;
+ UShort_t fCharge;
+ UChar_t fPad;
+ UShort_t fTime;
+};
+typedef struct AliHLTRandomDigitData AliHLTRandomDigitData;
+typedef AliHLTRandomDigitData AliL3RandomDigitData;
+#endif /* _DIGITDATA_H_ */
// @(#) $Id$
-/** \class AliL3Display
+/** \class AliHLTDisplay
<pre>
//_____________________________________________________________
-// AliL3Display
+// AliHLTDisplay
//
// Simple display class for the HLT tracks.
</pre>
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#include <TCanvas.h>
#include <TView.h>
#include <TPolyMarker3D.h>
#include <AliTPCParam.h>
#endif
-#include "AliL3Logging.h"
-#include "AliL3Display.h"
-#include "AliL3Transform.h"
-#include "AliL3Track.h"
-#include "AliL3TrackArray.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3MemHandler.h"
+#include "AliHLTLogging.h"
+#include "AliHLTDisplay.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTMemHandler.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3Display)
+ClassImp(AliHLTDisplay)
-AliL3Display::AliL3Display()
+AliHLTDisplay::AliHLTDisplay()
{
//constructor
fGeom = NULL;
fTracks = NULL;
}
-AliL3Display::AliL3Display(Int_t *slice,Char_t *gfile)
+AliHLTDisplay::AliHLTDisplay(Int_t *slice,Char_t *gfile)
{
//ctor. Specify which slices you want to look at.
TFile *file = TFile::Open(gfile);
if(!file)
{
- LOG(AliL3Log::kError,"AliL3Display::AliL3Display","File Open")
+ LOG(AliHLTLog::kError,"AliHLTDisplay::AliHLTDisplay","File Open")
<<"Geometry file " << gfile << " does not exist!"<<ENDLOG;
return;
}
delete file;
}
-AliL3Display::~AliL3Display()
+AliHLTDisplay::~AliHLTDisplay()
{
//destructor
if(fTracks)
delete fTracks;
}
-void AliL3Display::Setup(Char_t *trackfile,Char_t *path,Int_t event,Bool_t sp)
+void AliHLTDisplay::Setup(Char_t *trackfile,Char_t *path,Int_t event,Bool_t sp)
{
//Read in the hit and track information from produced files.
Char_t fname[256];
- AliL3MemHandler *clusterfile[36][6];
- memset(fClusters,0,36*6*sizeof(AliL3SpacePointData*));
+ AliHLTMemHandler *clusterfile[36][6];
+ memset(fClusters,0,36*6*sizeof(AliHLTSpacePointData*));
for(Int_t s=fMinSlice; s<=fMaxSlice; s++)
{
- for(Int_t p=0; p<AliL3Transform::GetNPatches(); p++)
+ for(Int_t p=0; p<AliHLTTransform::GetNPatches(); p++)
{
Int_t patch;
if(sp==kTRUE)
patch=-1;
else
patch=p;
- clusterfile[s][p] = new AliL3MemHandler();
+ clusterfile[s][p] = new AliHLTMemHandler();
if(event<0)
sprintf(fname,"%s/points_%d_%d.raw",path,s,patch);
else
sprintf(fname,"%s/points_%d_%d_%d.raw",path,event,s,patch);
if(!clusterfile[s][p]->SetBinaryInput(fname))
{
- LOG(AliL3Log::kError,"AliL3Evaluation::Setup","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluation::Setup","File Open")
<<"Inputfile "<<fname<<" does not exist"<<ENDLOG;
delete clusterfile[s][p];
clusterfile[s][p] = 0;
continue;
}
- fClusters[s][p] = (AliL3SpacePointData*)clusterfile[s][p]->Allocate();
+ fClusters[s][p] = (AliHLTSpacePointData*)clusterfile[s][p]->Allocate();
clusterfile[s][p]->Binary2Memory(fNcl[s][p],fClusters[s][p]);
clusterfile[s][p]->CloseBinaryInput();
if(sp==kTRUE)
}
if(!trackfile) return;
- AliL3MemHandler *tfile = new AliL3MemHandler();
+ AliHLTMemHandler *tfile = new AliHLTMemHandler();
if(!tfile->SetBinaryInput(trackfile))
{
- LOG(AliL3Log::kError,"AliL3Evaluation::Setup","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluation::Setup","File Open")
<<"Inputfile "<<trackfile<<" does not exist"<<ENDLOG;
return;
}
- fTracks = new AliL3TrackArray();
+ fTracks = new AliHLTTrackArray();
tfile->Binary2TrackArray(fTracks);
tfile->CloseBinaryInput();
delete tfile;
}
-void AliL3Display::DisplayTracks(Int_t minhits,Bool_t x3don,Float_t thr)
+void AliHLTDisplay::DisplayTracks(Int_t minhits,Bool_t x3don,Float_t thr)
{
//Display the found tracks.
for(Int_t j=0; j<ntracks; j++)
{
- AliL3Track *gtrack = fTracks->GetCheckedTrack(j);
+ AliHLTTrack *gtrack = fTracks->GetCheckedTrack(j);
if(!gtrack) continue;
if((thr>=0)&&(gtrack->GetPt()<thr)) continue;
Int_t nHits = gtrack->GetNHits();
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
//cout << h << " id " << pos << endl;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
if(slice < fMinSlice || slice > fMaxSlice)
continue;
if(!points) {
- LOG(AliL3Log::kError,"AliL3Display::DisplayTracks","Clusterarray")
+ LOG(AliHLTLog::kError,"AliHLTDisplay::DisplayTracks","Clusterarray")
<<"No points at slice "<<slice<<" patch "<<patch<<" pos "<<pos<<ENDLOG;
continue;
}
if(pos>=fNcl[slice][patch]){
- LOG(AliL3Log::kError,"AliL3Display::DisplayTracks","Clusterarray")
+ LOG(AliHLTLog::kError,"AliHLTDisplay::DisplayTracks","Clusterarray")
<<"Pos is too large: pos "<<pos <<" ncl "<<fNcl[slice][patch]<<ENDLOG;
continue;
}
}
-void AliL3Display::DisplayClusters(Bool_t x3don)
+void AliHLTDisplay::DisplayClusters(Bool_t x3don)
{
//Display all clusters.
{
for(Int_t p=0;p<6;p++)
{
- AliL3SpacePointData *points = fClusters[s][p];
+ AliHLTSpacePointData *points = fClusters[s][p];
if(!points) continue;
Int_t npoints = fNcl[s][p];
TPolyMarker3D *pm = new TPolyMarker3D(npoints);
xyz[0] = points[i].fX;
xyz[1] = points[i].fY;
xyz[2] = points[i].fZ;
- //AliL3Transform::Local2Global(xyz,s);
+ //AliHLTTransform::Local2Global(xyz,s);
pm->SetPoint(i,xyz[0],xyz[1],xyz[2]);
}
pm->SetMarkerColor(2);
}
-void AliL3Display::DisplayAll(Int_t minhits,Bool_t x3don)
+void AliHLTDisplay::DisplayAll(Int_t minhits,Bool_t x3don)
{
//Display tracks & all hits.
{
for(Int_t p=0;p<6;p++)
{
- AliL3SpacePointData *points = fClusters[s][p];
+ AliHLTSpacePointData *points = fClusters[s][p];
if(!points) continue;
Int_t npoints = fNcl[s][p];
TPolyMarker3D *pm = new TPolyMarker3D(npoints);
for(Int_t j=0; j<ntracks; j++)
{
- AliL3Track *gtrack = fTracks->GetCheckedTrack(j);
+ AliHLTTrack *gtrack = fTracks->GetCheckedTrack(j);
if(!gtrack) continue;
Int_t nHits = gtrack->GetNHits();
UInt_t *hitnum = gtrack->GetHitNumbers();
if(slice < fMinSlice || slice > fMaxSlice)
continue;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
if(!points) {
- LOG(AliL3Log::kError,"AliL3Display::DisplayAll","Clusterarray")
+ LOG(AliHLTLog::kError,"AliHLTDisplay::DisplayAll","Clusterarray")
<<"No points at slice "<<slice<<" patch "<<patch<<" pos "<<pos<<ENDLOG;
continue;
}
if(pos>=fNcl[slice][patch]) {
- LOG(AliL3Log::kError,"AliL3Display::DisplayAll","Clusterarray")
+ LOG(AliHLTLog::kError,"AliHLTDisplay::DisplayAll","Clusterarray")
<<"Pos is too large: pos "<<pos <<" ncl "<<fNcl[slice][patch]<<ENDLOG;
continue;
}
if(x3don) c1->x3d();
}
-void AliL3Display::DisplayClusterRow(Int_t slice,Int_t padrow,Char_t *digitsFile,Char_t *type)
+void AliHLTDisplay::DisplayClusterRow(Int_t slice,Int_t padrow,Char_t *digitsFile,Char_t *type)
{
//Display the found clusters on this row together with the raw data.
#ifdef use_aliroot
TFile *file = new TFile(digitsFile);
- AliTPCParam *param = (AliTPCParam*)file->Get(AliL3Transform::GetParamName());
+ AliTPCParam *param = (AliTPCParam*)file->Get(AliHLTTransform::GetParamName());
Char_t dname[100];
- sprintf(dname,"TreeD_%s_0",AliL3Transform::GetParamName());
+ sprintf(dname,"TreeD_%s_0",AliHLTTransform::GetParamName());
TTree *td=(TTree*)file->Get(dname);
AliSimDigits da, *digits=&da;
td->GetBranch("Segment")->SetAddress(&digits); //Return pointer to branch segment.
Int_t sector,row;
- AliL3Transform::Slice2Sector(slice,padrow,sector,row);
+ AliHLTTransform::Slice2Sector(slice,padrow,sector,row);
Int_t npads = param->GetNPads(sector,row);
Int_t ntimes = param->GetMaxTBin();
TH2F *histdig = new TH2F("histdig","",npads,0,npads-1,ntimes,0,ntimes-1);
gAlice->GetEvent(0);
TClonesArray *fParticles=gAlice->Particles();
TParticle *part = (TParticle*)fParticles->UncheckedAt(0);
- AliL3Evaluate *eval = new AliL3Evaluate();
+ AliHLTEvaluate *eval = new AliHLTEvaluate();
Float_t xyzcross[3];
*/
for(Int_t p=0;p<6;p++)
{
- AliL3SpacePointData *points = fClusters[slice][p];
+ AliHLTSpacePointData *points = fClusters[slice][p];
if(!points) continue;
Int_t npoints = fNcl[slice][p];
xyz[0] = points[i].fX;
xyz[1] = points[i].fY;
xyz[2] = points[i].fZ;
- AliL3Transform::Global2Raw(xyz,sector,row);
- //AliL3Transform::Local2Raw(xyz,sector,row);
+ AliHLTTransform::Global2Raw(xyz,sector,row);
+ //AliHLTTransform::Local2Raw(xyz,sector,row);
histfast->Fill(xyz[1],xyz[2],1);
#ifndef ALIL3DISPLAY_H
#define ALIL3DISPLAY_H
-/** \class AliL3Display
+/** \class AliHLTDisplay
<pre>
//_____________________________________________________________
-// AliL3Display
+// AliHLTDisplay
//
// Simple display class for the HLT tracks.
</pre>
#include <TObject.h>
class TGeometry;
-class AliL3SpacePointData;
-class AliL3TrackArray;
+class AliHLTSpacePointData;
+class AliHLTTrackArray;
-class AliL3Display : public TObject {
+class AliHLTDisplay : public TObject {
public:
- AliL3Display();
- AliL3Display(Int_t *slice, Char_t *gfile="$(ALIHLT_BASEDIR)/geo/alice.geom");
- virtual ~AliL3Display();
+ AliHLTDisplay();
+ AliHLTDisplay(Int_t *slice, Char_t *gfile="$(ALIHLT_BASEDIR)/geo/alice.geom");
+ virtual ~AliHLTDisplay();
void Setup(Char_t *trackfile,Char_t *path,Int_t event=-1,Bool_t sp=kFALSE);
void DisplayTracks(Int_t min_hits=10,Bool_t x3don=kTRUE,Float_t thr=0.);
void DisplayClusters(Bool_t x3don=kTRUE);
void DisplayClusterRow(Int_t slice,Int_t padrow,Char_t *digitsFile,Char_t *type="hist");
- void SetTracks(AliL3TrackArray *tracks) {fTracks=tracks;}
+ void SetTracks(AliHLTTrackArray *tracks) {fTracks=tracks;}
private:
- AliL3Display(const AliL3Display &/*d*/):TObject(){;}
- AliL3Display& operator=(const AliL3Display &/*d*/){return *this;}
+ AliHLTDisplay(const AliHLTDisplay &/*d*/):TObject(){;}
+ AliHLTDisplay& operator=(const AliHLTDisplay &/*d*/){return *this;}
TGeometry *fGeom; //!
- AliL3SpacePointData *fClusters[36][6]; //!
- AliL3TrackArray *fTracks; //!
+ AliHLTSpacePointData *fClusters[36][6]; //!
+ AliHLTTrackArray *fTracks; //!
UInt_t fNcl[36][6]; //number of cluster
Int_t fMinSlice; //min slice
Int_t fMaxSlice; //max slice
- ClassDef(AliL3Display,1) //Display class
+ ClassDef(AliHLTDisplay,1) //Display class
};
+typedef AliHLTDisplay AliL3Display; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-/** \class AliL3Evaluate
+/** \class AliHLTEvaluate
<pre>
//_____________________________________________________________
-// AliL3Evaluate
+// AliHLTEvaluate
//
// Evaluation class for tracking; plots, efficiencies etc..
//
#include <AliComplexCluster.h>
#include <AliStack.h>
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3Track.h"
-#include "AliL3FileHandler.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Evaluate.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTTrack.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTEvaluate.h"
#if __GNUC__ == 3
#include <iosfwd>
using namespace std;
#endif
-ClassImp(AliL3Evaluate)
+ClassImp(AliHLTEvaluate)
-AliL3Evaluate::AliL3Evaluate()
+AliHLTEvaluate::AliHLTEvaluate()
{
//constructor
Clear();
}
-AliL3Evaluate::AliL3Evaluate(Char_t *datapath,Int_t minclusters,Int_t minhits,Double_t minpt,Double_t maxpt,Int_t *slice)
+AliHLTEvaluate::AliHLTEvaluate(Char_t *datapath,Int_t minclusters,Int_t minhits,Double_t minpt,Double_t maxpt,Int_t *slice)
{
//constructor
Clear();
fMaxGoodPt = maxpt;
}
-AliL3Evaluate::~AliL3Evaluate()
+AliHLTEvaluate::~AliHLTEvaluate()
{
//destructor
if(fGoodTracks) delete[] fGoodTracks;
}
}
-void AliL3Evaluate::Clear()
+void AliHLTEvaluate::Clear()
{
//clear
fTracks = 0;
sprintf(fPath,"./");
}
-void AliL3Evaluate::LoadData(Int_t event,Bool_t sp)
+void AliHLTEvaluate::LoadData(Int_t event,Bool_t sp)
{
//load cluster points
Char_t fname[1024];
for(Int_t s=fMinSlice; s<=fMaxSlice; s++)
{
- for(Int_t p=0; p<AliL3Transform::GetNPatches(); p++)
+ for(Int_t p=0; p<AliHLTTransform::GetNPatches(); p++)
{
Int_t patch;
if(sp==kTRUE)
if(fClustersFile[s][p])
delete fClustersFile[s][p];
fClusters[s][p] = 0;
- fClustersFile[s][p] = new AliL3FileHandler();
+ fClustersFile[s][p] = new AliHLTFileHandler();
if(event<0)
sprintf(fname,"%s/points_%d_%d.raw",fPath,s,patch);
else
sprintf(fname,"%s/points_%d_%d_%d.raw",fPath,event,s,patch);
if(!fClustersFile[s][p]->SetBinaryInput(fname))
{
- LOG(AliL3Log::kError,"AliL3Evaluation::Setup","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluation::Setup","File Open")
<<"Inputfile "<<fname<<" does not exist"<<ENDLOG;
delete fClustersFile[s][p];
fClustersFile[s][p] = 0;
continue;
}
- fClusters[s][p] = (AliL3SpacePointData*)fClustersFile[s][p]->Allocate();
+ fClusters[s][p] = (AliHLTSpacePointData*)fClustersFile[s][p]->Allocate();
fClustersFile[s][p]->Binary2Memory(fNcl[s][p],fClusters[s][p]);
fClustersFile[s][p]->CloseBinaryInput();
if(sp==kTRUE)
}
sprintf(fname,"%s/tracks_%d.raw",fPath,event);
- AliL3FileHandler *tfile = new AliL3FileHandler();
+ AliHLTFileHandler *tfile = new AliHLTFileHandler();
if(!tfile->SetBinaryInput(fname)){
- LOG(AliL3Log::kError,"AliL3Evaluation::Setup","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluation::Setup","File Open")
<<"Inputfile "<<fname<<" does not exist"<<ENDLOG;
return;
}
if(fTracks)
delete fTracks;
- fTracks = new AliL3TrackArray();
+ fTracks = new AliHLTTrackArray();
tfile->Binary2TrackArray(fTracks);
tfile->CloseBinaryInput();
fTracks->QSort();
delete tfile;
}
-void AliL3Evaluate::AssignPIDs()
+void AliHLTEvaluate::AssignPIDs()
{
//assign pid
if(!fTracks) return;
fTracks->QSort();
- LOG(AliL3Log::kDebug,"AliL3Evaluate::AssignPIDs","Track Loop")
+ LOG(AliHLTLog::kDebug,"AliHLTEvaluate::AssignPIDs","Track Loop")
<<"Assigning pid to the found tracks...."<<ENDLOG;
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3Track *track = (AliL3Track*)fTracks->GetCheckedTrack(i);
+ AliHLTTrack *track = (AliHLTTrack*)fTracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetNumberOfPoints() < fMinPointsOnTrack)
track->SetPID(0);
}
}
-void AliL3Evaluate::AssignIDs()
+void AliHLTEvaluate::AssignIDs()
{
//Assign MC id to the tracks.
#ifndef do_mc
- cerr<<"AliL3Evaluate::AssignIDs() : You need to compile with the do_mc flag!"<<endl;
+ cerr<<"AliHLTEvaluate::AssignIDs() : You need to compile with the do_mc flag!"<<endl;
return;
#else
if(!fTracks) return;
fGoodFound=0;
fTracks->QSort();
- LOG(AliL3Log::kDebug,"AliL3Evaluate::AssignIDs","Track Loop")
+ LOG(AliHLTLog::kDebug,"AliHLTEvaluate::AssignIDs","Track Loop")
<<"Assigning MC id to the found tracks...."<<ENDLOG;
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3Track *track = (AliL3Track*)fTracks->GetCheckedTrack(i);
+ AliHLTTrack *track = (AliHLTTrack*)fTracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetNumberOfPoints() < fMinPointsOnTrack) break;
#endif
}
-Float_t AliL3Evaluate::GetTrackPID(AliL3Track *track)
+Float_t AliHLTEvaluate::GetTrackPID(AliHLTTrack *track)
{
//get track pid
track->CalculateHelix();
Int_t iSector = (hitID>>25) & 0x7f;
Int_t patch = (hitID>>22) & 0x7;
UInt_t position = hitID&0x3fffff;
- AliL3SpacePointData *points = fClusters[iSector][patch];
+ AliHLTSpacePointData *points = fClusters[iSector][patch];
if(!points) continue;
if(position>=fNcl[iSector][patch])
{
- LOG(AliL3Log::kError,"AliL3Evaluate::GetMCTrackLabel","Clusterarray")
- <<AliL3Log::kDec<<"ERROR"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTEvaluate::GetMCTrackLabel","Clusterarray")
+ <<AliHLTLog::kDec<<"ERROR"<<ENDLOG;
continue;
}
UChar_t padrow = points[position].fPadRow;
- Float_t pWidth = AliL3Transform::GetPadPitchWidthLow();
+ Float_t pWidth = AliHLTTransform::GetPadPitchWidthLow();
if (padrow>63)
- pWidth = AliL3Transform::GetPadPitchWidthUp();
+ pWidth = AliHLTTransform::GetPadPitchWidthUp();
Float_t corr=1.; if (padrow>63) corr=0.67;
sampleDEdx[iHit] = points[position].fCharge/pWidth*corr;
Double_t crossingangle = track->GetCrossingAngle(padrow,iSector);
}
#ifdef do_mc
-Int_t AliL3Evaluate::GetMCTrackLabel(AliL3Track *track)
+Int_t AliHLTEvaluate::GetMCTrackLabel(AliHLTTrack *track)
{
//Returns the MCtrackID of the belonging clusters.
//If MCLabel < 0, means that track is fake.
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
if(!points) continue;
if(pos>=fNcl[slice][patch])
{
- LOG(AliL3Log::kError,"AliL3Evaluate::GetMCTrackLabel","Clusterarray")
- <<AliL3Log::kDec<<"ERROR"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTEvaluate::GetMCTrackLabel","Clusterarray")
+ <<AliHLTLog::kDec<<"ERROR"<<ENDLOG;
continue;
}
if(lab == -1)
return -1; //If most clusters is -1, this is a noise track.
if(lab < 0)
- cerr<<"AliL3Evaluate::GetMCTrackLabel : Track label negative :"<<lab<<endl;
+ cerr<<"AliHLTEvaluate::GetMCTrackLabel : Track label negative :"<<lab<<endl;
delete[] s;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
if(!points) continue;
if(pos>=fNcl[slice][patch])
{
- LOG(AliL3Log::kError,"AliL3Evaluate::GetMCTrackLabel","Clusterarray")
- <<AliL3Log::kDec<<"ERROR"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTEvaluate::GetMCTrackLabel","Clusterarray")
+ <<AliHLTLog::kDec<<"ERROR"<<ENDLOG;
continue;
}
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
if(!points) continue;
if(lab == abs(points[pos].fTrackID[0]) ||
lab == abs(points[pos].fTrackID[1]) ||
return lab;
#else //If we are running with mc_ids or not
- Int_t AliL3Evaluate::GetMCTrackLabel(AliL3Track */*track*/)
+ Int_t AliHLTEvaluate::GetMCTrackLabel(AliHLTTrack */*track*/)
{
// Does nothing if do_mc undefined
return 0;
}
-void AliL3Evaluate::GetFastClusterIDs(Char_t *path)
+void AliHLTEvaluate::GetFastClusterIDs(Char_t *path)
{
//Get the MC id of space points in case of using the fast simulator.
char name[256];
fclose(infile);
}
-void AliL3Evaluate::CreateHistos(Int_t nbin,Float_t xlow,Float_t xup)
+void AliHLTEvaluate::CreateHistos(Int_t nbin,Float_t xlow,Float_t xup)
{
//Create the histograms
- LOG(AliL3Log::kInformational,"AliL3Evaluate::CreateHistos","Allocating")
+ LOG(AliHLTLog::kInformational,"AliHLTEvaluate::CreateHistos","Allocating")
<<"Creating histograms..."<<ENDLOG;
fNtuppel = new TNtuple("fNtuppel","Pt resolution","pt_gen:pt_found:nHits");
}
-void AliL3Evaluate::GetGoodParticles(Char_t *path,Int_t event,Int_t *padrowrange)
+void AliHLTEvaluate::GetGoodParticles(Char_t *path,Int_t event,Int_t *padrowrange)
{
//Read the good particles from file. This file should already have been
//generated by macro AliTPCComparison.C.
ifstream in(filename);
if(!in)
{
- cerr<<"AliL3Evaluate::GetGoodParticles : Problems opening file :"<<filename<<endl;
+ cerr<<"AliHLTEvaluate::GetGoodParticles : Problems opening file :"<<filename<<endl;
return;
}
Int_t MaxTracks=20000;
fGoodGen++;
if (fGoodGen==MaxTracks)
{
- cerr<<"AliL3Evaluate::GetGoodParticles : Too many good tracks !\n";
+ cerr<<"AliHLTEvaluate::GetGoodParticles : Too many good tracks !\n";
break;
}
}
fGoodGen++;
if (fGoodGen==MaxTracks)
{
- cerr<<"AliL3Evaluate::GetGoodParticles : Too many good tracks !\n";
+ cerr<<"AliHLTEvaluate::GetGoodParticles : Too many good tracks !\n";
break;
}
}
}
}
-void AliL3Evaluate::FillEffHistos()
+void AliHLTEvaluate::FillEffHistos()
{
//has to be modified for fakes.
if(!fGoodTracks)
{
- cerr<<"AliL3Evaluate::FillEffHistos : No good tracks"<<endl;
+ cerr<<"AliHLTEvaluate::FillEffHistos : No good tracks"<<endl;
return;
}
if(!fTracks) return;
for(Int_t k=0; k<fTracks->GetNTracks(); k++)
{
- AliL3Track *track = fTracks->GetCheckedTrack(k);
+ AliHLTTrack *track = fTracks->GetCheckedTrack(k);
if(!track) continue;
Int_t nHits = track->GetNumberOfPoints();
if(nHits < fMinPointsOnTrack) break;
}
}
-void AliL3Evaluate::FillEffHistosNAIVE()
+void AliHLTEvaluate::FillEffHistosNAIVE()
{
//Fill the efficiency histograms.
for(Int_t k=0; k<fTracks->GetNTracks(); k++)
{
- AliL3Track *track = fTracks->GetCheckedTrack(k);
+ AliHLTTrack *track = fTracks->GetCheckedTrack(k);
if(!track) continue;
Int_t nHits = track->GetNumberOfPoints();
if(nHits < fMinPointsOnTrack) break;
}
}
-void AliL3Evaluate::CalcEffHistos()
+void AliHLTEvaluate::CalcEffHistos()
{
//calc eff histos
Stat_t nfound=fNFoundTracksPt->GetEntries();
Stat_t nfake=fNFakeTracksPt->GetEntries();
- LOG(AliL3Log::kInformational,"AliL3Evaluate::FillEffHistos","Efficiency")
- <<AliL3Log::kDec<<"There was "<<ngood<<" generated good tracks"<<ENDLOG;
- LOG(AliL3Log::kInformational,"AliL3Evaluate::FillEffHistos","Efficiency")
- <<AliL3Log::kDec<<"Found "<<nfound<<" tracks"<<ENDLOG;
- LOG(AliL3Log::kInformational,"AliL3Evaluate::FillEffHistos","Efficiency")
- <<AliL3Log::kDec<<"Integral efficiency is about "<<nfound/ngood*100<<ENDLOG;
- LOG(AliL3Log::kInformational,"AliL3Evaluate::FillEffHistos","Efficiency")
- <<AliL3Log::kDec<<"Fake tracks relative is about "<<nfake/ngood*100<<ENDLOG;
- //LOG(AliL3Log::kInformational,"AliL3Evaluate::FillEffHistos","Efficiency")
- //<<AliL3Log::kDec<<"Naive efficiency "<<(Double_t)fGoodFound/(Double_t)fGoodGen<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTEvaluate::FillEffHistos","Efficiency")
+ <<AliHLTLog::kDec<<"There was "<<ngood<<" generated good tracks"<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTEvaluate::FillEffHistos","Efficiency")
+ <<AliHLTLog::kDec<<"Found "<<nfound<<" tracks"<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTEvaluate::FillEffHistos","Efficiency")
+ <<AliHLTLog::kDec<<"Integral efficiency is about "<<nfound/ngood*100<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTEvaluate::FillEffHistos","Efficiency")
+ <<AliHLTLog::kDec<<"Fake tracks relative is about "<<nfake/ngood*100<<ENDLOG;
+ //LOG(AliHLTLog::kInformational,"AliHLTEvaluate::FillEffHistos","Efficiency")
+ //<<AliHLTLog::kDec<<"Naive efficiency "<<(Double_t)fGoodFound/(Double_t)fGoodGen<<ENDLOG;
fNFoundTracksPt->Sumw2(); fNGoodTracksPt->Sumw2();
fTrackEffPt->Divide(fNFoundTracksPt,fNGoodTracksPt,1,1.,"b");
fFakeTrackEffEta->SetFillColor(2);
}
-void AliL3Evaluate::Write2File(Char_t *outputfile)
+void AliHLTEvaluate::Write2File(Char_t *outputfile)
{
//Write histograms to file:
TFile *of = TFile::Open(outputfile,"RECREATE");
if(!of->IsOpen())
{
- LOG(AliL3Log::kError,"AliL3Evaluate::Write2File","File Open")
+ LOG(AliHLTLog::kError,"AliHLTEvaluate::Write2File","File Open")
<<"Problems opening rootfile"<<ENDLOG;
return;
}
of->Close();
}
-TNtuple *AliL3Evaluate::GetNtuple()
+TNtuple *AliHLTEvaluate::GetNtuple()
{
//get ntuple
if(!fNtupleRes)
return fNtupleRes;
}
-void AliL3Evaluate::CalculateResiduals()
+void AliHLTEvaluate::CalculateResiduals()
{
//calculate residuals
TNtuple *ntuppel = GetNtuple();
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3Track *track = (AliL3Track*)fTracks->GetCheckedTrack(i);
+ AliHLTTrack *track = (AliHLTTrack*)fTracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetNHits() < fMinPointsOnTrack) break;
//if(slice<18) continue;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
if(!points)
{
- LOG(AliL3Log::kError,"AliL3Evaluate::CalculateResiduals","Clusterarray")
+ LOG(AliHLTLog::kError,"AliHLTEvaluate::CalculateResiduals","Clusterarray")
<<"No points at slice "<<slice<<" patch "<<patch<<" pos "<<pos<<ENDLOG;
continue;
}
if(pos>=fNcl[slice][patch])
{
- LOG(AliL3Log::kError,"AliL3Evaluate::CalculateResiduals","Clusterarray")
- <<AliL3Log::kDec<<"ERROR"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTEvaluate::CalculateResiduals","Clusterarray")
+ <<AliHLTLog::kDec<<"ERROR"<<ENDLOG;
continue;
}
xyz[1] = points[pos].fY;
xyz[2] = points[pos].fZ;
padrow = points[pos].fPadRow;
- //AliL3Transform::Global2Local(xyz,slice,kTRUE);
- AliL3Transform::Global2LocHLT(xyz,slice);
+ //AliHLTTransform::Global2Local(xyz,slice,kTRUE);
+ AliHLTTransform::Global2LocHLT(xyz,slice);
Float_t angle = 0;
- AliL3Transform::Local2GlobalAngle(&angle,slice);
- if(!track->CalculateReferencePoint(angle,AliL3Transform::Row2X(padrow)))
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
+ if(!track->CalculateReferencePoint(angle,AliHLTTransform::Row2X(padrow)))
{
- LOG(AliL3Log::kError,"AliL3Evaluate::CalculateResiduals","Crossing point")
+ LOG(AliHLTLog::kError,"AliHLTEvaluate::CalculateResiduals","Crossing point")
<<"Track does not crossing padrow "<<padrow<<" in slice "<<slice<<ENDLOG;
continue;
}
Float_t xyzcross[3] = {track->GetPointX(),track->GetPointY(),track->GetPointZ()};
- //AliL3Transform::Global2Local(xyzcross,slice,kTRUE);
- AliL3Transform::Global2LocHLT(xyzcross,slice);
+ //AliHLTTransform::Global2Local(xyzcross,slice,kTRUE);
+ AliHLTTransform::Global2LocHLT(xyzcross,slice);
Double_t beta = track->GetCrossingAngle(padrow,slice);
enum tagprimary {kPrimaryCharged = 0x4000};
#ifndef do_mc
-void AliL3Evaluate::EvaluatePoints(Char_t */*rootfile*/,Char_t */*exactfile*/,Char_t */*tofile*/,Int_t /*nevent*/,Bool_t /*offline*/,Bool_t /*sp*/)
+void AliHLTEvaluate::EvaluatePoints(Char_t */*rootfile*/,Char_t */*exactfile*/,Char_t */*tofile*/,Int_t /*nevent*/,Bool_t /*offline*/,Bool_t /*sp*/)
{
// Does nothing if do_mc undefined
- cerr<<"AliL3Evaluate::EvaluatePoints : Compile with do_mc flag!"<<endl;
+ cerr<<"AliHLTEvaluate::EvaluatePoints : Compile with do_mc flag!"<<endl;
return;
#else
-void AliL3Evaluate::EvaluatePoints(Char_t *rootfile,Char_t *exactfile,Char_t *tofile,Int_t nevent,Bool_t offline,Bool_t sp)
+void AliHLTEvaluate::EvaluatePoints(Char_t *rootfile,Char_t *exactfile,Char_t *tofile,Int_t nevent,Bool_t offline,Bool_t sp)
{
//Compare points to the exact crossing points of track and padrows.
//The input file to this function, contains the exact clusters calculated
gAlice = (AliRun*)exfile->Get("gAlice");
if (!gAlice)
{
- LOG(AliL3Log::kError,"AliL3Evaluate::InitMC","gAlice")
+ LOG(AliHLTLog::kError,"AliHLTEvaluate::InitMC","gAlice")
<<"AliRun object non existing on file"<<ENDLOG;
return;
}
- AliTPCParam *param = (AliTPCParam*)exfile->Get(AliL3Transform::GetParamName());
+ AliTPCParam *param = (AliTPCParam*)exfile->Get(AliHLTTransform::GetParamName());
TFile *exact = TFile::Open(exactfile);
if(!exact)
{
- cerr<<"AliL3Evaluate::EvaluatePoints : Problems opening file :"<<exactfile<<endl;
+ cerr<<"AliHLTEvaluate::EvaluatePoints : Problems opening file :"<<exactfile<<endl;
return;
}
char treeName[500];
sprintf(treeName,"TreeCExact_%s_%d",param->GetTitle(),event);
Bool_t clusterok = arr->ConnectTree(treeName);//Segment Tree (for offline clusters)
- if(!clusterok) {printf("AliL3Evaluate::EvaluatePoints : Error in clusterloading\n"); return;}
+ if(!clusterok) {printf("AliHLTEvaluate::EvaluatePoints : Error in clusterloading\n"); return;}
//cout<<"Entering loop with "<<(Int_t)arr->GetTree()->GetEntries()<<endl;
for(Int_t i=0; i<arr->GetTree()->GetEntries(); i++)
//Get the found clusters:
Int_t slice,padrow;
- AliL3Transform::Sector2Slice(slice,padrow,cursec,currow);
+ AliHLTTransform::Sector2Slice(slice,padrow,cursec,currow);
if(slice < fMinSlice) continue;
if(slice > fMaxSlice) break;
- Int_t patch = AliL3Transform::GetPatch(padrow);
+ Int_t patch = AliHLTTransform::GetPatch(padrow);
if(sp)
patch=0;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
if(!points)
continue;
if(mcId <0) continue;
#ifdef use_newio
- if(cluster->GetY() < 1 || cluster->GetY() > AliL3Transform::GetNPads(padrow) - 2 ||
- cluster->GetX() < 1 || cluster->GetX() > AliL3Transform::GetNTimeBins() - 2)
+ if(cluster->GetY() < 1 || cluster->GetY() > AliHLTTransform::GetNPads(padrow) - 2 ||
+ cluster->GetX() < 1 || cluster->GetX() > AliHLTTransform::GetNTimeBins() - 2)
continue;
#else
- if(cluster->fY < 1 || cluster->fY > AliL3Transform::GetNPads(padrow) - 2 ||
- cluster->fX < 1 || cluster->fX > AliL3Transform::GetNTimeBins() - 2)
+ if(cluster->fY < 1 || cluster->fY > AliHLTTransform::GetNPads(padrow) - 2 ||
+ cluster->fX < 1 || cluster->fX > AliHLTTransform::GetNTimeBins() - 2)
continue;
#endif
Float_t xyzex[3];
#ifdef use_newio
- AliL3Transform::Raw2Local(xyzex,cursec,currow,cluster->GetY(),cluster->GetX());
+ AliHLTTransform::Raw2Local(xyzex,cursec,currow,cluster->GetY(),cluster->GetX());
#else
- AliL3Transform::Raw2Local(xyzex,cursec,currow,cluster->fY,cluster->fX);
+ AliHLTTransform::Raw2Local(xyzex,cursec,currow,cluster->fY,cluster->fX);
#endif
//In function AliTPC::Hits2ExactClusters the time offset is not included,
//so we have to substract it again here.
if(slice<18)
- xyzex[2]-=AliL3Transform::GetZOffset();
+ xyzex[2]-=AliHLTTransform::GetZOffset();
else
- xyzex[2]+=AliL3Transform::GetZOffset();
+ xyzex[2]+=AliHLTTransform::GetZOffset();
//Outside our cone:
if(param->GetPadRowRadii(cursec,currow)<230./250.*fabs(xyzex[2]))
Float_t xyzcl[3] = {points[c].fX,points[c].fY,points[c].fZ};
if(!offline)
- AliL3Transform::Global2Local(xyzcl,cursec);
+ AliHLTTransform::Global2Local(xyzcl,cursec);
tempcount++;
if(points[c].fTrackID[0] != mcId &&
Int_t charge = (Int_t)points[c].fCharge;
Float_t beta = GetCrossingAngle(part,slice,padrow,xyzex);
Double_t tanl = xyzex[2]/sqrt(xyzex[0]*xyzex[0]+xyzex[1]*xyzex[1]);
- Float_t psigmaY2 = AliL3Transform::GetParSigmaY2(padrow,xyzex[2],beta);
- Float_t psigmaZ2 = AliL3Transform::GetParSigmaZ2(padrow,xyzex[2],tanl);
+ Float_t psigmaY2 = AliHLTTransform::GetParSigmaY2(padrow,xyzex[2],beta);
+ Float_t psigmaZ2 = AliHLTTransform::GetParSigmaZ2(padrow,xyzex[2],tanl);
Float_t sigmaY2 = points[c].fSigmaY2;
Float_t sigmaZ2 = points[c].fSigmaZ2;
ntuppel->Fill(slice,padrow,charge,resy,resz,xyzex[2],part->Pt(),beta,sigmaY2,sigmaZ2,psigmaY2,psigmaZ2);
}
#ifndef do_mc
-void AliL3Evaluate::GetCFeff(Char_t */*path*/,Char_t */*outfile*/,Int_t /*nevent*/,Bool_t /*sp*/)
+void AliHLTEvaluate::GetCFeff(Char_t */*path*/,Char_t */*outfile*/,Int_t /*nevent*/,Bool_t /*sp*/)
{
// Does nothing if do_mc undefined
- cerr<<"AliL3Evaluate::GetCFeff : Compile with do_mc flag"<<endl;
+ cerr<<"AliHLTEvaluate::GetCFeff : Compile with do_mc flag"<<endl;
return;
#else
-void AliL3Evaluate::GetCFeff(Char_t *path,Char_t *outfile,Int_t nevent,Bool_t sp)
+void AliHLTEvaluate::GetCFeff(Char_t *path,Char_t *outfile,Int_t nevent,Bool_t sp)
{
//Evaluate the cluster finder efficiency.
AliStack *astack=gAlice->Stack();
- AliTPCParam *param = (AliTPCParam*)rfile->Get(AliL3Transform::GetParamName());
+ AliTPCParam *param = (AliTPCParam*)rfile->Get(AliHLTTransform::GetParamName());
Int_t zero=param->GetZeroSup();
crossed=recs=0;
if (!TD->GetEvent(i)) continue;
param->AdjustSectorRow(digits->GetID(),sec,row);
- AliL3Transform::Sector2Slice(sl,sr,sec,row);
+ AliHLTTransform::Sector2Slice(sl,sr,sec,row);
if(sl < fMinSlice) continue;
if(sl > fMaxSlice) break;
cout<<"Processing slice "<<sl<<" row "<<sr<<endl;
Short_t dig = digits->GetDigit(it,ip);
if(dig<=param->GetZeroSup()) continue;
- AliL3Transform::Raw2Local(xyz,sec,row,ip,it);
+ AliHLTTransform::Raw2Local(xyz,sec,row,ip,it);
if(param->GetPadRowRadii(sec,row)<230./250.*fabs(xyz[2]))
continue;
}
}
- Int_t patch = AliL3Transform::GetPatch(sr);
+ Int_t patch = AliHLTTransform::GetPatch(sr);
if(sp==kTRUE)
patch=0;
- AliL3SpacePointData *points = fClusters[sl][patch];
+ AliHLTSpacePointData *points = fClusters[sl][patch];
if(!points)
continue;
for(UInt_t k=0; k<fNcl[sl][patch]; k++)
#endif
}
-Float_t AliL3Evaluate::GetCrossingAngle(TParticle *part,Int_t slice,Int_t /*padrow*/,Float_t *xyz)
+Float_t AliHLTEvaluate::GetCrossingAngle(TParticle *part,Int_t slice,Int_t /*padrow*/,Float_t *xyz)
{
//Calculate the padrow crossing angle of the particle
- Double_t kappa = AliL3Transform::GetBField()*AliL3Transform::GetBFact()/part->Pt();
+ Double_t kappa = AliHLTTransform::GetBField()*AliHLTTransform::GetBFact()/part->Pt();
Double_t radius = 1/fabs(kappa);
if(part->GetPdgCode() > 0) kappa = -kappa;
Float_t angl[1] = {part->Phi()};
- AliL3Transform::Global2LocalAngle(angl,slice);
+ AliHLTTransform::Global2LocalAngle(angl,slice);
Double_t charge = -1.*kappa;
- Double_t trackPhi0 = angl[0] + charge*0.5*AliL3Transform::Pi()/fabs(charge);
+ Double_t trackPhi0 = angl[0] + charge*0.5*AliHLTTransform::Pi()/fabs(charge);
Double_t x0=0;
Double_t y0=0;
return acos(cosbeta);
}
-Int_t AliL3Evaluate::FindPrimaries(Int_t nparticles)
+Int_t AliHLTEvaluate::FindPrimaries(Int_t nparticles)
{
// cuts:
Double_t vertcut = 0.001;
#define ALIL3_Evaluate
-class AliL3Track;
+class AliHLTTrack;
class TClonesArray;
class TFile;
-class AliL3TrackArray;
-class AliL3SpacePointData;
+class AliHLTTrackArray;
+class AliHLTSpacePointData;
class TH1F;
class AliTPCParam;
class TTree;
class AliSimDigits;
class TObjArray;
class TParticle;
-class AliL3FileHandler;
+class AliHLTFileHandler;
class TClonesArray;
class TNtuple;
class TH1F;
//#include <TNtuple.h>
//#include <TH1F.h>
-class AliL3Evaluate {
+class AliHLTEvaluate {
struct AliGoodTrack
{
private:
- AliL3TrackArray *fTracks; //!
- AliL3SpacePointData *fClusters[36][6]; //!
- AliL3FileHandler *fClustersFile[36][6]; //!
+ AliHLTTrackArray *fTracks; //!
+ AliHLTSpacePointData *fClusters[36][6]; //!
+ AliHLTFileHandler *fClustersFile[36][6]; //!
Char_t fPath[1024]; //path
Int_t fMinSlice; //min slice
Int_t fMaxSlice; //max slice
void Clear();
public:
- AliL3Evaluate();
- AliL3Evaluate(Char_t *path,Int_t min_clusters,Int_t minhits,Double_t minpt=0.1,Double_t maxpt=4.,Int_t *slice=0);
- virtual ~AliL3Evaluate();
+ AliHLTEvaluate();
+ AliHLTEvaluate(Char_t *path,Int_t min_clusters,Int_t minhits,Double_t minpt=0.1,Double_t maxpt=4.,Int_t *slice=0);
+ virtual ~AliHLTEvaluate();
void LoadData(Int_t event=-1,Bool_t sp=kFALSE);
void CreateHistos(Int_t nbin=20,Float_t xlow=0,Float_t xup=4);
void GetGoodParticles(Char_t *particlefile,Int_t event=-1,Int_t *padrowrange=0);
void GetFastClusterIDs(Char_t *path);
void GetCFeff(Char_t *path,Char_t *outfile,Int_t nevent=0,Bool_t sp=kFALSE);
- Int_t GetMCTrackLabel(AliL3Track *track);
- Float_t GetTrackPID(AliL3Track *track);
+ Int_t GetMCTrackLabel(AliHLTTrack *track);
+ Float_t GetTrackPID(AliHLTTrack *track);
void CalculateResiduals();
void EvaluatePoints(Char_t *rootfile,Char_t *exactfile,Char_t *tofile,Int_t nevent=1,Bool_t offline=kFALSE,Bool_t sp=kFALSE);
Float_t GetCrossingAngle(TParticle *part,Int_t slice,Int_t padrow,Float_t *xyz);
TH1F *GetFakeEffEta() {return fFakeTrackEffEta;}
TH1F *GetFakeEffPt() {return fFakeTrackEffPt;}
TH1F *GetPtRes() {return fPtRes;}
- AliL3TrackArray *GetTracks() {return fTracks;}
+ AliHLTTrackArray *GetTracks() {return fTracks;}
- ClassDef(AliL3Evaluate,1) //Tracking evaluation class
+ ClassDef(AliHLTEvaluate,1) //Tracking evaluation class
};
+typedef AliHLTEvaluate AliL3Evaluate; // for backward compatibility
+
#endif
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>, Anders Vestbo <mailto:vestbo$fi.uib.no>, C. Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#include <TClonesArray.h>
#include <TSystem.h>
#include <TMath.h>
#include <AliTPCClustersRow.h>
#include <AliSimDigits.h>
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3MemHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3TrackArray.h"
-#include "AliL3FileHandler.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTFileHandler.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3FileHandler
+/** \class AliHLTFileHandler
<pre>
//_____________________________________________________________
-// AliL3FileHandler
+// AliHLTFileHandler
//
// The HLT ROOT <-> binary files handling class
//
//
// For reading a AliROOT file into HLT format in memory, do the following:
//
-// AliL3FileHandler file;
+// AliHLTFileHandler file;
// file.Init(slice,patch);
// file.SetAliInput("galice.root");
-// AliL3DigitRowData *dataPt = (AliL3DigitRowData*)file.AliDigits2Memory(nrows,eventnr);
+// AliHLTDigitRowData *dataPt = (AliHLTDigitRowData*)file.AliDigits2Memory(nrows,eventnr);
//
// All the data are then stored in memory and accessible via the pointer dataPt.
-// Accesing the data is then identical to the example 1) showed in AliL3MemHandler class.
+// Accesing the data is then identical to the example 1) showed in AliHLTMemHandler class.
//
// For converting the data back, and writing it to a new AliROOT file do:
//
-// AliL3FileHandler file;
+// AliHLTFileHandler file;
// file.Init(slice,patch);
// file.SetAliInput("galice.root");
// file.Init(slice,patch,NumberOfRowsInPatch);
</pre>
*/
-ClassImp(AliL3FileHandler)
+ClassImp(AliHLTFileHandler)
// of course on start up the index is not created
-Bool_t AliL3FileHandler::fgStaticIndexCreated=kFALSE;
-Int_t AliL3FileHandler::fgStaticIndex[36][159];
+Bool_t AliHLTFileHandler::fgStaticIndexCreated=kFALSE;
+Int_t AliHLTFileHandler::fgStaticIndex[36][159];
-void AliL3FileHandler::CleanStaticIndex()
+void AliHLTFileHandler::CleanStaticIndex()
{
// use this static call to clean static index after
// running over one event
- for(Int_t i=0;i<AliL3Transform::GetNSlice();i++){
- for(Int_t j=0;j<AliL3Transform::GetNRows();j++)
+ for(Int_t i=0;i<AliHLTTransform::GetNSlice();i++){
+ for(Int_t j=0;j<AliHLTTransform::GetNRows();j++)
fgStaticIndex[i][j]=-1;
}
fgStaticIndexCreated=kFALSE;
}
-Int_t AliL3FileHandler::SaveStaticIndex(Char_t *prefix,Int_t event)
+Int_t AliHLTFileHandler::SaveStaticIndex(Char_t *prefix,Int_t event)
{
// use this static call to store static index after
if(!fgStaticIndexCreated) return -1;
ofstream file(fname,ios::trunc);
if(!file.good()) return -1;
- for(Int_t i=0;i<AliL3Transform::GetNSlice();i++){
- for(Int_t j=0;j<AliL3Transform::GetNRows();j++)
+ for(Int_t i=0;i<AliHLTTransform::GetNSlice();i++){
+ for(Int_t j=0;j<AliHLTTransform::GetNRows();j++)
file << fgStaticIndex[i][j] << " ";
file << endl;
}
return 0;
}
-Int_t AliL3FileHandler::LoadStaticIndex(Char_t *prefix,Int_t event)
+Int_t AliHLTFileHandler::LoadStaticIndex(Char_t *prefix,Int_t event)
{
// use this static call to store static index after
if(fgStaticIndexCreated){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::LoadStaticIndex","Inxed")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::LoadStaticIndex","Inxed")
<<"Static index already created, will overwrite"<<ENDLOG;
CleanStaticIndex();
}
ifstream file(fname);
if(!file.good()) return -1;
- for(Int_t i=0;i<AliL3Transform::GetNSlice();i++){
- for(Int_t j=0;j<AliL3Transform::GetNRows();j++)
+ for(Int_t i=0;i<AliHLTTransform::GetNSlice();i++){
+ for(Int_t j=0;j<AliHLTTransform::GetNRows();j++)
file >> fgStaticIndex[i][j];
}
file.close();
return 0;
}
-AliL3FileHandler::AliL3FileHandler(Bool_t b)
+AliHLTFileHandler::AliHLTFileHandler(Bool_t b)
{
//Default constructor
fInAli = 0;
fIndexCreated=kFALSE;
fUseStaticIndex=b;
- for(Int_t i=0;i<AliL3Transform::GetNSlice();i++)
- for(Int_t j=0;j<AliL3Transform::GetNRows();j++)
+ for(Int_t i=0;i<AliHLTTransform::GetNSlice();i++)
+ for(Int_t j=0;j<AliHLTTransform::GetNRows();j++)
fIndex[i][j]=-1;
if(fUseStaticIndex&&!fgStaticIndexCreated) CleanStaticIndex();
}
-AliL3FileHandler::~AliL3FileHandler()
+AliHLTFileHandler::~AliHLTFileHandler()
{
//Destructor
if(fMC) CloseMCOutput();
if(fInAli) CloseAliInput();
}
-void AliL3FileHandler::FreeDigitsTree()
+void AliHLTFileHandler::FreeDigitsTree()
{
//free digits tree
if(!fDigitsTree)
{
- LOG(AliL3Log::kInformational,"AliL3FileHandler::FreeDigitsTree()","Pointer")
+ LOG(AliHLTLog::kInformational,"AliHLTFileHandler::FreeDigitsTree()","Pointer")
<<"Cannot free digitstree, it is not present"<<ENDLOG;
return;
}
#endif
fDigitsTree=0;
- for(Int_t i=0;i<AliL3Transform::GetNSlice();i++){
- for(Int_t j=0;j<AliL3Transform::GetNRows();j++)
+ for(Int_t i=0;i<AliHLTTransform::GetNSlice();i++){
+ for(Int_t j=0;j<AliHLTTransform::GetNRows();j++)
fIndex[i][j]=-1;
}
fIndexCreated=kFALSE;
}
-Bool_t AliL3FileHandler::SetMCOutput(Char_t *name)
+Bool_t AliHLTFileHandler::SetMCOutput(Char_t *name)
{
//set mc input
fMC = fopen(name,"w");
if(!fMC){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::SetMCOutput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::SetMCOutput","File Open")
<<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3FileHandler::SetMCOutput(FILE *file)
+Bool_t AliHLTFileHandler::SetMCOutput(FILE *file)
{
//set mc output
fMC = file;
if(!fMC){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::SetMCOutput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::SetMCOutput","File Open")
<<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-void AliL3FileHandler::CloseMCOutput()
+void AliHLTFileHandler::CloseMCOutput()
{
//close mc output
if(!fMC){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::CloseMCOutPut","File Close")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::CloseMCOutPut","File Close")
<<"Nothing to Close"<<ENDLOG;
return;
}
fMC =0;
}
-Bool_t AliL3FileHandler::SetAliInput()
+Bool_t AliHLTFileHandler::SetAliInput()
{
//set ali input
#ifdef use_newio
fInAli->CdGAFile();
fParam = (AliTPCParam*)gFile->Get("75x40_100x60_150x60");
if(!fParam){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::SetAliInput","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::SetAliInput","File")
<<"No TPC parameters found in \""<<gFile->GetName()
<<"\", creating standard parameters "
<<"which might not be what you want!"<<ENDLOG;
fParam = new AliTPCParamSR;
}
if(!fParam){
- LOG(AliL3Log::kError,"AliL3FileHandler::SetAliInput","File Open")
- <<"No AliTPCParam "<<AliL3Transform::GetParamName()<<" in File "<<gFile->GetName()<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::SetAliInput","File Open")
+ <<"No AliTPCParam "<<AliHLTTransform::GetParamName()<<" in File "<<gFile->GetName()<<ENDLOG;
return kFALSE;
}
#else
if(!fInAli->IsOpen()){
- LOG(AliL3Log::kError,"AliL3FileHandler::SetAliInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::SetAliInput","File Open")
<<"Ali File "<<fInAli->GetName()<<" does not exist"<<ENDLOG;
return kFALSE;
}
- fParam = (AliTPCParam*)fInAli->Get(AliL3Transform::GetParamName());
+ fParam = (AliTPCParam*)fInAli->Get(AliHLTTransform::GetParamName());
if(!fParam){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::SetAliInput","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::SetAliInput","File")
<<"No TPC parameters found in \""<<fInAli->GetName()
<<"\", creating standard parameters "
<<"which might not be what you want!"<<ENDLOG;
fParam = new AliTPCParamSR;
}
if(!fParam){
- LOG(AliL3Log::kError,"AliL3FileHandler::SetAliInput","File Open")
- <<"No AliTPCParam "<<AliL3Transform::GetParamName()<<" in File "<<fInAli->GetName()<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::SetAliInput","File Open")
+ <<"No AliTPCParam "<<AliHLTTransform::GetParamName()<<" in File "<<fInAli->GetName()<<ENDLOG;
return kFALSE;
}
#endif
return kTRUE;
}
-Bool_t AliL3FileHandler::SetAliInput(Char_t *name)
+Bool_t AliHLTFileHandler::SetAliInput(Char_t *name)
{
//Open the AliROOT file with name.
#ifdef use_newio
fInAli= new TFile(name,"READ");
#endif
if(!fInAli){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::SetAliInput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::SetAliInput","File Open")
<<"Pointer to fInAli = 0x0 "<<ENDLOG;
return kFALSE;
}
}
#ifdef use_newio
-Bool_t AliL3FileHandler::SetAliInput(AliRunLoader *runLoader)
+Bool_t AliHLTFileHandler::SetAliInput(AliRunLoader *runLoader)
{
//set ali input as runloader
fInAli=runLoader;
fUseRunLoader = kTRUE;
if(!fInAli){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::SetAliInput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::SetAliInput","File Open")
<<"Pointer to AliRunLoader = 0x0 "<<ENDLOG;
return kFALSE;
}
#endif
#ifdef use_newio
-Bool_t AliL3FileHandler::SetAliInput(TFile */*file*/)
+Bool_t AliHLTFileHandler::SetAliInput(TFile */*file*/)
{
//Specify already opened AliROOT file to use as an input.
- LOG(AliL3Log::kFatal,"AliL3FileHandler::SetAliInput","File Open")
+ LOG(AliHLTLog::kFatal,"AliHLTFileHandler::SetAliInput","File Open")
<<"This function is not supported for NEWIO, check ALIHLT_USENEWIO settings in Makefile.conf"<<ENDLOG;
return kFALSE;
}
#else
-Bool_t AliL3FileHandler::SetAliInput(TFile *file)
+Bool_t AliHLTFileHandler::SetAliInput(TFile *file)
{
//Specify already opened AliROOT file to use as an input.
fInAli=file;
if(!fInAli){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::SetAliInput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::SetAliInput","File Open")
<<"Pointer to fInAli = 0x0 "<<ENDLOG;
return kFALSE;
}
}
#endif
-void AliL3FileHandler::CloseAliInput()
+void AliHLTFileHandler::CloseAliInput()
{
//close ali input
#ifdef use_newio
if(fUseRunLoader) return;
#endif
if(!fInAli){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::CloseAliInput","RunLoader")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::CloseAliInput","RunLoader")
<<"Nothing to Close"<<ENDLOG;
return;
}
fInAli = 0;
}
-Bool_t AliL3FileHandler::IsDigit(Int_t event)
+Bool_t AliHLTFileHandler::IsDigit(Int_t event)
{
//Check if there is a TPC digit tree in the current file.
//Return kTRUE if tree was found, and kFALSE if not found.
if(!fInAli){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::IsDigit","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::IsDigit","File")
<<"Pointer to fInAli = 0x0 "<<ENDLOG;
return kTRUE; //maybe you are using binary input which is Digits!
}
#ifdef use_newio
AliLoader* tpcLoader = fInAli->GetLoader("TPCLoader");
if(!tpcLoader){
- LOG(AliL3Log::kWarning,"AliL3FileHandlerNewIO::IsDigit","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandlerNewIO::IsDigit","File")
<<"Pointer to AliLoader for TPC = 0x0 "<<ENDLOG;
return kFALSE;
}
TTree *t=tpcLoader->TreeD();
#else
Char_t name[1024];
- sprintf(name,"TreeD_%s_%d",AliL3Transform::GetParamName(),event);
+ sprintf(name,"TreeD_%s_%d",AliHLTTransform::GetParamName(),event);
TTree *t=(TTree*)fInAli->Get(name);
#endif
if(t){
- LOG(AliL3Log::kInformational,"AliL3FileHandlerNewIO::IsDigit","File Type")
+ LOG(AliHLTLog::kInformational,"AliHLTFileHandlerNewIO::IsDigit","File Type")
<<"Found Digit Tree -> Use Fast Cluster Finder"<<ENDLOG;
return kTRUE;
}
else{
- LOG(AliL3Log::kInformational,"AliL3FileHandlerNewIO::IsDigit","File Type")
+ LOG(AliHLTLog::kInformational,"AliHLTFileHandlerNewIO::IsDigit","File Type")
<<"No Digit Tree -> Use Cluster Tree"<<ENDLOG;
return kFALSE;
}
}
///////////////////////////////////////// Digit IO
-Bool_t AliL3FileHandler::AliDigits2Binary(Int_t event,Bool_t altro)
+Bool_t AliHLTFileHandler::AliDigits2Binary(Int_t event,Bool_t altro)
{
//save alidigits as binary
Bool_t out = kTRUE;
UInt_t nrow;
- AliL3DigitRowData* data = 0;
+ AliHLTDigitRowData* data = 0;
if(altro)
data = AliAltroDigits2Memory(nrow,event);
else
return out;
}
-Bool_t AliL3FileHandler::AliDigits2CompBinary(Int_t event,Bool_t altro)
+Bool_t AliHLTFileHandler::AliDigits2CompBinary(Int_t event,Bool_t altro)
{
//Convert AliROOT TPC data, into HLT data format.
//event specifies the event you want in the aliroot file.
Bool_t out = kTRUE;
UInt_t ndigits=0;
- AliL3DigitRowData *digits=0;
+ AliHLTDigitRowData *digits=0;
if(altro)
digits = AliAltroDigits2Memory(ndigits,event);
else
return out;
}
-Bool_t AliL3FileHandler::CreateIndex()
+Bool_t AliHLTFileHandler::CreateIndex()
{
//create the access index or copy from static index
fIndexCreated=kFALSE;
if(!fgStaticIndexCreated || !fUseStaticIndex) { //we have to create index
- LOG(AliL3Log::kInformational,"AliL3FileHandler::CreateIndex","Index")
+ LOG(AliHLTLog::kInformational,"AliHLTFileHandler::CreateIndex","Index")
<<"Starting to create index, this can take a while."<<ENDLOG;
for(Int_t n=0; n<fDigitsTree->GetEntries(); n++) {
Int_t lslice,lrow;
fDigitsTree->GetEvent(n);
fParam->AdjustSectorRow(fDigits->GetID(),sector,row);
- if(!AliL3Transform::Sector2Slice(lslice,lrow,sector,row)){
- LOG(AliL3Log::kError,"AliL3FileHandler::CreateIndex","Slice/Row")
- <<AliL3Log::kDec<<"Index could not be created. Wrong values "
+ if(!AliHLTTransform::Sector2Slice(lslice,lrow,sector,row)){
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::CreateIndex","Slice/Row")
+ <<AliHLTLog::kDec<<"Index could not be created. Wrong values "
<<sector<<" "<<row<<ENDLOG;
return kFALSE;
}
}
}
if(fUseStaticIndex) { // create static index
- for(Int_t i=0;i<AliL3Transform::GetNSlice();i++){
- for(Int_t j=0;j<AliL3Transform::GetNRows();j++)
+ for(Int_t i=0;i<AliHLTTransform::GetNSlice();i++){
+ for(Int_t j=0;j<AliHLTTransform::GetNRows();j++)
fgStaticIndex[i][j]=fIndex[i][j];
}
fgStaticIndexCreated=kTRUE; //remember that index has been created
}
- LOG(AliL3Log::kInformational,"AliL3FileHandler::CreateIndex","Index")
+ LOG(AliHLTLog::kInformational,"AliHLTFileHandler::CreateIndex","Index")
<<"Index successfully created."<<ENDLOG;
} else if(fUseStaticIndex) { //simply copy static index
- for(Int_t i=0;i<AliL3Transform::GetNSlice();i++){
- for(Int_t j=0;j<AliL3Transform::GetNRows();j++)
+ for(Int_t i=0;i<AliHLTTransform::GetNSlice();i++){
+ for(Int_t j=0;j<AliHLTTransform::GetNRows();j++)
fIndex[i][j]=fgStaticIndex[i][j];
}
- LOG(AliL3Log::kInformational,"AliL3FileHandler::CreateIndex","Index")
+ LOG(AliHLTLog::kInformational,"AliHLTFileHandler::CreateIndex","Index")
<<"Index successfully taken from static copy."<<ENDLOG;
}
fIndexCreated=kTRUE;
return kTRUE;
}
-AliL3DigitRowData * AliL3FileHandler::AliDigits2Memory(UInt_t & nrow,Int_t event)
+AliHLTDigitRowData * AliHLTFileHandler::AliDigits2Memory(UInt_t & nrow,Int_t event)
{
//Read data from AliROOT file into memory, and store it in the HLT data format.
//Returns a pointer to the data.
- AliL3DigitRowData *data = 0;
+ AliHLTDigitRowData *data = 0;
nrow=0;
if(!fInAli){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliDigits2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliDigits2Memory","File")
<<"No Input avalible: Pointer to fInAli == NULL"<<ENDLOG;
return 0;
}
#ifndef use_newio
if(!fInAli->IsOpen()){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliDigits2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliDigits2Memory","File")
<<"No Input avalible: TFile not opened"<<ENDLOG;
return 0;
}
Int_t ndigitcount=0;
Int_t entries = (Int_t)fDigitsTree->GetEntries();
if(entries==0) {
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliDigits2Memory","ndigits")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliDigits2Memory","ndigits")
<<"No TPC digits (entries==0)!"<<ENDLOG;
nrow = (UInt_t)(fRowMax-fRowMin+1);
- Int_t size = nrow*sizeof(AliL3DigitRowData);
- data=(AliL3DigitRowData*) Allocate(size);
- AliL3DigitRowData *tempPt = data;
+ Int_t size = nrow*sizeof(AliHLTDigitRowData);
+ data=(AliHLTDigitRowData*) Allocate(size);
+ AliHLTDigitRowData *tempPt = data;
for(Int_t r=fRowMin;r<=fRowMax;r++){
tempPt->fRow = r;
tempPt->fNDigit = 0;
if(n!=-1){ //data on that row
fDigitsTree->GetEvent(n);
fParam->AdjustSectorRow(fDigits->GetID(),sector,row);
- AliL3Transform::Sector2Slice(lslice,lrow,sector,row);
+ AliHLTTransform::Sector2Slice(lslice,lrow,sector,row);
if(lrow!=r){
- LOG(AliL3Log::kError,"AliL3FileHandler::AliDigits2Memory","Row")
- <<AliL3Log::kDec<<"Rows in slice " << fSlice << " dont match "<<lrow<<" "<<r<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliDigits2Memory","Row")
+ <<AliHLTLog::kDec<<"Rows in slice " << fSlice << " dont match "<<lrow<<" "<<r<<ENDLOG;
continue;
}
pad=fDigits->CurrentColumn();
dig = fDigits->GetDigit(time,pad);
if(dig <= fParam->GetZeroSup()) continue;
- if(dig >= AliL3Transform::GetADCSat())
- dig = AliL3Transform::GetADCSat();
+ if(dig >= AliHLTTransform::GetADCSat())
+ dig = AliHLTTransform::GetADCSat();
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
// if(fParam->GetPadRowRadii(sector,row)<230./250.*fabs(xyz[2]))
// continue; // why 230???
nrows++;
}
- Int_t size = sizeof(AliL3DigitData)*ndigitcount
- + nrows*sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData)*ndigitcount
+ + nrows*sizeof(AliHLTDigitRowData);
- LOG(AliL3Log::kDebug,"AliL3FileHandler::AliDigits2Memory","Digits")
- <<AliL3Log::kDec<<"Found "<<ndigitcount<<" Digits"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTFileHandler::AliDigits2Memory","Digits")
+ <<AliHLTLog::kDec<<"Found "<<ndigitcount<<" Digits"<<ENDLOG;
- data=(AliL3DigitRowData*) Allocate(size);
+ data=(AliHLTDigitRowData*) Allocate(size);
nrow = (UInt_t)nrows;
- AliL3DigitRowData *tempPt = data;
+ AliHLTDigitRowData *tempPt = data;
for(Int_t r=fRowMin;r<=fRowMax;r++){
Int_t n=fIndex[fSlice][r];
if(n!=-1){//data on that row
fDigitsTree->GetEvent(n);
fParam->AdjustSectorRow(fDigits->GetID(),sector,row);
- AliL3Transform::Sector2Slice(lslice,lrow,sector,row);
+ AliHLTTransform::Sector2Slice(lslice,lrow,sector,row);
if(lrow!=r){
- LOG(AliL3Log::kError,"AliL3FileHandler::AliDigits2Memory","Row")
- <<AliL3Log::kDec<<"Rows on slice " << fSlice << " dont match "<<lrow<<" "<<r<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliDigits2Memory","Row")
+ <<AliHLTLog::kDec<<"Rows on slice " << fSlice << " dont match "<<lrow<<" "<<r<<ENDLOG;
continue;
}
pad=fDigits->CurrentColumn();
dig = fDigits->GetDigit(time,pad);
if (dig <= fParam->GetZeroSup()) continue;
- if(dig >= AliL3Transform::GetADCSat())
- dig = AliL3Transform::GetADCSat();
+ if(dig >= AliHLTTransform::GetADCSat())
+ dig = AliHLTTransform::GetADCSat();
//Exclude data outside cone:
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
// if(fParam->GetPadRowRadii(sector,row)<230./250.*fabs(xyz[2]))
// continue; // why 230???
if(localcount >= ndigits[lrow])
- LOG(AliL3Log::kFatal,"AliL3FileHandler::AliDigits2Binary","Memory")
- <<AliL3Log::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
+ LOG(AliHLTLog::kFatal,"AliHLTFileHandler::AliDigits2Binary","Memory")
+ <<AliHLTLog::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
<<ndigits[lrow]<<ENDLOG;
tempPt->fDigitData[localcount].fCharge=dig;
} while (fDigits->Next());
}
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData)
- + ndigits[lrow]*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData)
+ + ndigits[lrow]*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}
delete [] ndigits;
return data;
}
-AliL3DigitRowData * AliL3FileHandler::AliAltroDigits2Memory(UInt_t & nrow,Int_t event,Bool_t eventmerge)
+AliHLTDigitRowData * AliHLTFileHandler::AliAltroDigits2Memory(UInt_t & nrow,Int_t event,Bool_t eventmerge)
{
//Read data from AliROOT file into memory, and store it in the HLT data format.
//Returns a pointer to the data.
//are removed are timebins which have the 4 zero neighbours;
//(pad-1,time),(pad+1,time),(pad,time-1),(pad,time+1).
- AliL3DigitRowData *data = 0;
+ AliHLTDigitRowData *data = 0;
nrow=0;
if(!fInAli){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliAltroDigits2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliAltroDigits2Memory","File")
<<"No Input avalible: Pointer to TFile == NULL"<<ENDLOG;
return 0;
}
#ifndef use_newio
if(!fInAli->IsOpen()){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliAltroDigits2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliAltroDigits2Memory","File")
<<"No Input avalible: TFile not opened"<<ENDLOG;
return 0;
}
#endif
if(eventmerge == kTRUE && event >= 1024)
{
- LOG(AliL3Log::kError,"AliL3FileHandler::AliAltroDigits2Memory","TrackIDs")
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliAltroDigits2Memory","TrackIDs")
<<"Too many events if you want to merge!"<<ENDLOG;
return 0;
}
Int_t ndigitcount=0;
Int_t entries = (Int_t)fDigitsTree->GetEntries();
if(entries==0) {
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliAltroDigits2Memory","ndigits")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliAltroDigits2Memory","ndigits")
<<"No TPC digits (entries==0)!"<<ENDLOG;
nrow = (UInt_t)(fRowMax-fRowMin+1);
- Int_t size = nrow*sizeof(AliL3DigitRowData);
- data=(AliL3DigitRowData*) Allocate(size);
- AliL3DigitRowData *tempPt = data;
+ Int_t size = nrow*sizeof(AliHLTDigitRowData);
+ data=(AliHLTDigitRowData*) Allocate(size);
+ AliHLTDigitRowData *tempPt = data;
for(Int_t r=fRowMin;r<=fRowMax;r++){
tempPt->fRow = r;
tempPt->fNDigit = 0;
}
Int_t * ndigits = new Int_t[fRowMax+1];
Int_t lslice,lrow;
- Int_t zerosupval=AliL3Transform::GetZeroSup();
+ Int_t zerosupval=AliHLTTransform::GetZeroSup();
Float_t xyz[3];
for(Int_t r=fRowMin;r<=fRowMax;r++){
if(n!=-1){//data on that row
fDigitsTree->GetEvent(n);
fParam->AdjustSectorRow(fDigits->GetID(),sector,row);
- AliL3Transform::Sector2Slice(lslice,lrow,sector,row);
+ AliHLTTransform::Sector2Slice(lslice,lrow,sector,row);
//cout << lslice << " " << fSlice << " " << lrow << " " << r << " " << sector << " " << row << endl;
if((lslice!=fSlice)||(lrow!=r)){
- LOG(AliL3Log::kError,"AliL3FileHandler::AliAltroDigits2Memory","Row")
- <<AliL3Log::kDec<<"Rows on slice " << fSlice << " dont match "<<lrow<<" "<<r<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliAltroDigits2Memory","Row")
+ <<AliHLTLog::kDec<<"Rows on slice " << fSlice << " dont match "<<lrow<<" "<<r<<ENDLOG;
continue;
}
time=j;
dig = fDigits->GetDigitFast(time,pad);
if(dig <= zerosupval) continue;
- if(dig >= AliL3Transform::GetADCSat())
- dig = AliL3Transform::GetADCSat();
+ if(dig >= AliHLTTransform::GetADCSat())
+ dig = AliHLTTransform::GetADCSat();
//Check for single timebins, and remove them because they are noise for sure.
if(i>0 && i<fDigits->GetNCols()-1 && j>0 && j<fDigits->GetNRows()-1)
}
}
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
// if(fParam->GetPadRowRadii(sector,row)<230./250.*fabs(xyz[2]))
// continue;
nrows++;
}
- Int_t size = sizeof(AliL3DigitData)*ndigitcount
- + nrows*sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData)*ndigitcount
+ + nrows*sizeof(AliHLTDigitRowData);
- LOG(AliL3Log::kDebug,"AliL3FileHandler::AliAltroDigits2Memory","Digits")
- <<AliL3Log::kDec<<"Found "<<ndigitcount<<" Digits"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTFileHandler::AliAltroDigits2Memory","Digits")
+ <<AliHLTLog::kDec<<"Found "<<ndigitcount<<" Digits"<<ENDLOG;
- data=(AliL3DigitRowData*) Allocate(size);
+ data=(AliHLTDigitRowData*) Allocate(size);
nrow = (UInt_t)nrows;
- AliL3DigitRowData *tempPt = data;
+ AliHLTDigitRowData *tempPt = data;
for(Int_t r=fRowMin;r<=fRowMax;r++){
Int_t n=fIndex[fSlice][r];
if(n!=-1){ //no data on that row
fDigitsTree->GetEvent(n);
fParam->AdjustSectorRow(fDigits->GetID(),sector,row);
- AliL3Transform::Sector2Slice(lslice,lrow,sector,row);
+ AliHLTTransform::Sector2Slice(lslice,lrow,sector,row);
if(lrow!=r){
- LOG(AliL3Log::kError,"AliL3FileHandler::AliAltroDigits2Memory","Row")
- <<AliL3Log::kDec<<"Rows on slice " << fSlice << " dont match "<<lrow<<" "<<r<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliAltroDigits2Memory","Row")
+ <<AliHLTLog::kDec<<"Rows on slice " << fSlice << " dont match "<<lrow<<" "<<r<<ENDLOG;
continue;
}
time=j;
dig = fDigits->GetDigitFast(time,pad);
if(dig <= zerosupval) continue;
- if(dig >= AliL3Transform::GetADCSat())
- dig = AliL3Transform::GetADCSat();
+ if(dig >= AliHLTTransform::GetADCSat())
+ dig = AliHLTTransform::GetADCSat();
//Check for single timebins, and remove them because they are noise for sure.
if(i>0 && i<fDigits->GetNCols()-1 && j>0 && j<fDigits->GetNRows()-1)
}
}
- AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
// if(fParam->GetPadRowRadii(sector,row)<230./250.*fabs(xyz[2]))
// continue;
if(localcount >= ndigits[lrow])
- LOG(AliL3Log::kFatal,"AliL3FileHandler::AliAltroDigits2Binary","Memory")
- <<AliL3Log::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
+ LOG(AliHLTLog::kFatal,"AliHLTFileHandler::AliAltroDigits2Binary","Memory")
+ <<AliHLTLog::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
<<ndigits[lrow]<<ENDLOG;
tempPt->fDigitData[localcount].fCharge=dig;
}
}
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData)
- + ndigits[r]*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData)
+ + ndigits[r]*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}
delete [] ndigits;
return data;
}
-Bool_t AliL3FileHandler::GetDigitsTree(Int_t event)
+Bool_t AliHLTFileHandler::GetDigitsTree(Int_t event)
{
//Connects to the TPC digit tree in the AliROOT file.
#ifdef use_newio
AliLoader* tpcLoader = fInAli->GetLoader("TPCLoader");
if(!tpcLoader){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::GetDigitsTree","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::GetDigitsTree","File")
<<"Pointer to AliLoader for TPC = 0x0 "<<ENDLOG;
return kFALSE;
}
#else
fInAli->cd();
Char_t dname[100];
- sprintf(dname,"TreeD_%s_%d",AliL3Transform::GetParamName(),event);
+ sprintf(dname,"TreeD_%s_%d",AliHLTTransform::GetParamName(),event);
fDigitsTree = (TTree*)fInAli->Get(dname);
#endif
if(!fDigitsTree)
{
- LOG(AliL3Log::kError,"AliL3FileHandler::GetDigitsTree","Digits Tree")
- <<AliL3Log::kHex<<"Error getting digitstree "<<(void*)fDigitsTree<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::GetDigitsTree","Digits Tree")
+ <<AliHLTLog::kHex<<"Error getting digitstree "<<(void*)fDigitsTree<<ENDLOG;
return kFALSE;
}
fDigitsTree->GetBranch("Segment")->SetAddress(&fDigits);
else return kTRUE;
}
-void AliL3FileHandler::AliDigits2RootFile(AliL3DigitRowData *rowPt,Char_t *new_digitsfile)
+void AliHLTFileHandler::AliDigits2RootFile(AliHLTDigitRowData *rowPt,Char_t *new_digitsfile)
{
//Write the data stored in rowPt, into a new AliROOT file.
//The data is stored in the AliROOT format
if(!fInAli)
{
- LOG(AliL3Log::kError,"AliL3FileHandler::AliDigits2RootFile","File")
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliDigits2RootFile","File")
<<"No rootfile "<<ENDLOG;
return;
}
if(!fParam)
{
- LOG(AliL3Log::kError,"AliL3FileHandler::AliDigits2RootFile","File")
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliDigits2RootFile","File")
<<"No parameter object. Run on rootfile "<<ENDLOG;
return;
}
//Get the original digitstree:
AliLoader* tpcLoader = fInAli->GetLoader("TPCLoader");
if(!tpcLoader){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliDigits2RootFile","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliDigits2RootFile","File")
<<"Pointer to AliLoader for TPC = 0x0 "<<ENDLOG;
return;
}
Bool_t ok = old_array->ConnectTree(t);
if(!ok)
{
- LOG(AliL3Log::kError,"AliL3FileHandler::AliDigits2RootFile","File")
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliDigits2RootFile","File")
<< "No digits tree object" << ENDLOG;
return;
}
//Get the original digitstree:
Char_t dname[100];
- sprintf(dname,"TreeD_%s_0",AliL3Transform::GetParamName());
+ sprintf(dname,"TreeD_%s_0",AliHLTTransform::GetParamName());
fInAli->cd();
AliTPCDigitsArray *old_array = new AliTPCDigitsArray();
Bool_t ok = old_array->ConnectTree(dname);
if(!ok)
{
- LOG(AliL3Log::kError,"AliL3FileHandler::AliDigits2RootFile","File")
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliDigits2RootFile","File")
<<"No digits tree object." <<ENDLOG;
return;
}
if(gSystem->AccessPathName(new_digitsfile))
{
- LOG(AliL3Log::kInformational,"AliL3FileHandler::AliDigits2RootFile","File")
+ LOG(AliHLTLog::kInformational,"AliHLTFileHandler::AliDigits2RootFile","File")
<<"Creating new file "<<new_digitsfile<<ENDLOG;
create = kTRUE;
digFile = TFile::Open(new_digitsfile,"RECREATE");
}
if(!digFile->IsOpen())
{
- LOG(AliL3Log::kError,"AliL3FileHandler::AliDigits2RootFile","Rootfile")
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliDigits2RootFile","Rootfile")
<<"Error opening rootfile "<<new_digitsfile<<ENDLOG;
return;
}
Bool_t ok = arr->ConnectTree(dname);
if(!ok)
{
- LOG(AliL3Log::kError,"AliL3FileHandler::AliDigits2RootFile","Rootfile")
+ LOG(AliHLTLog::kError,"AliHLTFileHandler::AliDigits2RootFile","Rootfile")
<<"No digits tree object in existing file"<<ENDLOG;
return;
}
{
if((Int_t)rowPt->fRow != i)
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliDigits2RootFile","Data")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliDigits2RootFile","Data")
<<"Mismatching row numbering "<<(Int_t)rowPt->fRow<<" "<<i<<ENDLOG;
Int_t sector,row;
- AliL3Transform::Slice2Sector(fSlice,i,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,i,sector,row);
AliSimDigits *old_dig = (AliSimDigits*)old_array->LoadRow(sector,row);
AliSimDigits * dig = (AliSimDigits*)arr->CreateRow(sector,row);
dig->ExpandTrackBuffer();
if(!old_dig)
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliDigits2RootFile","Data")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliDigits2RootFile","Data")
<<"No padrow " << sector << " " << row <<ENDLOG;
- AliL3DigitData *digPt = rowPt->fDigitData;
+ AliHLTDigitData *digPt = rowPt->fDigitData;
digcounter=0;
for(UInt_t j=0; j<rowPt->fNDigit; j++)
{
if(charge == 0) //Only write the digits that has not been removed
{
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliDigits2RootFile","Data")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliDigits2RootFile","Data")
<<"Zero charge" <<ENDLOG;
continue;
}
}
///////////////////////////////////////// Point IO
-Bool_t AliL3FileHandler::AliPoints2Binary(Int_t eventn)
+Bool_t AliHLTFileHandler::AliPoints2Binary(Int_t eventn)
{
//points to binary
Bool_t out = kTRUE;
UInt_t npoint;
- AliL3SpacePointData *data = AliPoints2Memory(npoint,eventn);
+ AliHLTSpacePointData *data = AliPoints2Memory(npoint,eventn);
out = Memory2Binary(npoint,data);
Free();
return out;
}
-AliL3SpacePointData * AliL3FileHandler::AliPoints2Memory(UInt_t & npoint,Int_t eventn)
+AliHLTSpacePointData * AliHLTFileHandler::AliPoints2Memory(UInt_t & npoint,Int_t eventn)
{
//points to memory
- AliL3SpacePointData *data = 0;
+ AliHLTSpacePointData *data = 0;
npoint=0;
if(!fInAli){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliPoints2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliPoints2Memory","File")
<<"No Input avalible: no object fInAli"<<ENDLOG;
return 0;
}
#ifndef use_newio
if(!fInAli->IsOpen()){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliPoints2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliPoints2Memory","File")
<<"No Input avalible: TFile not opend"<<ENDLOG;
return 0;
}
#ifdef use_newio
AliLoader* tpcLoader = fInAli->GetLoader("TPCLoader");
if(!tpcLoader){
- LOG(AliL3Log::kWarning,"AliL3FileHandler::AliPoints2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTFileHandler::AliPoints2Memory","File")
<<"Pointer to AliLoader for TPC = 0x0 "<<ENDLOG;
return 0;
}
rows[i] = row;
sects[i] = sector;
clusterrow[i] = 0;
- AliL3Transform::Sector2Slice(lslice,lrow,sector,row);
+ AliHLTTransform::Sector2Slice(lslice,lrow,sector,row);
if(fSlice != lslice || lrow<fRowMin || lrow>fRowMax) continue;
clusterrow[i] = carray.GetRow(sector,row);
if(clusterrow[i])
sum+=clusterrow[i]->GetArray()->GetEntriesFast();
}
- UInt_t size = sum*sizeof(AliL3SpacePointData);
+ UInt_t size = sum*sizeof(AliHLTSpacePointData);
- LOG(AliL3Log::kDebug,"AliL3FileHandler::AliPoints2Memory","File")
- <<AliL3Log::kDec<<"Found "<<sum<<" SpacePoints"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTFileHandler::AliPoints2Memory","File")
+ <<AliHLTLog::kDec<<"Found "<<sum<<" SpacePoints"<<ENDLOG;
- data = (AliL3SpacePointData *) Allocate(size);
+ data = (AliHLTSpacePointData *) Allocate(size);
npoint = sum;
UInt_t n=0;
Int_t pat=fPatch;
if(!clusterrow[i]) continue;
Int_t row = rows[i];
Int_t sector = sects[i];
- AliL3Transform::Sector2Slice(lslice,lrow,sector,row);
+ AliHLTTransform::Sector2Slice(lslice,lrow,sector,row);
Int_t entries_in_row = clusterrow[i]->GetArray()->GetEntriesFast();
for(Int_t j = 0;j<entries_in_row;j++){
AliTPCcluster *c = (AliTPCcluster*)(*clusterrow[i])[j];
#ifndef ALIL3FILEHANDLER_H
#define ALIL3FILEHANDLER_H
-#include "AliL3MemHandler.h"
+#include "AliHLTMemHandler.h"
class TClonesArray;
#include <TFile.h>
#include <TTree.h>
-class AliL3SpacePointData;
-class AliL3DigitRowData;
-class AliL3TrackSegmentData;
-class AliL3TrackArray;
+class AliHLTSpacePointData;
+class AliHLTDigitRowData;
+class AliHLTTrackSegmentData;
+class AliHLTTrackArray;
-class AliL3FileHandler:public AliL3MemHandler{
+class AliHLTFileHandler:public AliHLTMemHandler{
protected:
#ifdef use_newio
Bool_t CreateIndex(); //create the index
public:
- AliL3FileHandler(Bool_t b=kFALSE);
- ~AliL3FileHandler();
+ AliHLTFileHandler(Bool_t b=kFALSE);
+ ~AliHLTFileHandler();
void FreeDigitsTree();
static void CleanStaticIndex();
//Digit IO
Bool_t AliDigits2Binary(Int_t event=0,Bool_t altro=kFALSE);
- AliL3DigitRowData *AliDigits2Memory(UInt_t & nrow,Int_t event=0); //Allocates Memory
- AliL3DigitRowData *AliAltroDigits2Memory(UInt_t & nrow,Int_t event=0,Bool_t eventmerge=kFALSE);
+ AliHLTDigitRowData *AliDigits2Memory(UInt_t & nrow,Int_t event=0); //Allocates Memory
+ AliHLTDigitRowData *AliAltroDigits2Memory(UInt_t & nrow,Int_t event=0,Bool_t eventmerge=kFALSE);
//Allocates Memory
Bool_t AliDigits2CompBinary(Int_t event=0,Bool_t altro=kFALSE);
- void AliDigits2RootFile(AliL3DigitRowData *rowPt,Char_t *new_digitsfile);
+ void AliDigits2RootFile(AliHLTDigitRowData *rowPt,Char_t *new_digitsfile);
//Point IO
Bool_t AliPoints2Binary(Int_t eventn=0);
- AliL3SpacePointData *AliPoints2Memory(UInt_t & npoint,Int_t eventn=0);//Allocates Memory
+ AliHLTSpacePointData *AliPoints2Memory(UInt_t & npoint,Int_t eventn=0);//Allocates Memory
- ClassDef(AliL3FileHandler,1) //Filehandler class
+ ClassDef(AliHLTFileHandler,1) //Filehandler class
};
+typedef AliHLTFileHandler AliL3FileHandler; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-/** \class AliL3Fitter
+/** \class AliHLTFitter
<pre>
//_____________________________________________________________
-// AliL3Fitter
+// AliHLTFitter
//
// Fit class HLT for helix
</pre>
*/
#include <math.h>
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Fitter.h"
-#include "AliL3Vertex.h"
-#include "AliL3Track.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Transform.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTFitter.h"
+#include "AliHLTVertex.h"
+#include "AliHLTTrack.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTTransform.h"
#include "AliLevel3.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3Fitter)
+ClassImp(AliHLTFitter)
-AliL3Fitter::AliL3Fitter()
+AliHLTFitter::AliHLTFitter()
{
//constructor
fTrack=0;
fVertex=0;
- memset(fClusters,0,36*6*sizeof(AliL3SpacePointData*));
+ memset(fClusters,0,36*6*sizeof(AliHLTSpacePointData*));
}
-AliL3Fitter::AliL3Fitter(AliL3Vertex *vertex,Bool_t vertexconstraint)
+AliHLTFitter::AliHLTFitter(AliHLTVertex *vertex,Bool_t vertexconstraint)
{
//constructor
fTrack=0;
fVertex = vertex;
fVertexConstraint=vertexconstraint;
- memset(fClusters,0,36*6*sizeof(AliL3SpacePointData*));
+ memset(fClusters,0,36*6*sizeof(AliHLTSpacePointData*));
}
-AliL3Fitter::~AliL3Fitter()
+AliHLTFitter::~AliHLTFitter()
{
//destructor
for(Int_t i=0; i<36; i++)
}
}
-void AliL3Fitter::LoadClusters(Char_t *path,Int_t event,Bool_t sp)
+void AliHLTFitter::LoadClusters(Char_t *path,Int_t event,Bool_t sp)
{
//load clusters
Char_t fname[256];
- AliL3MemHandler *clusterfile[36][6];
+ AliHLTMemHandler *clusterfile[36][6];
for(Int_t s=0; s<=35; s++)
{
for(Int_t p=0; p<6; p++)
if(fClusters[s][p])
delete fClusters[s][p];
fClusters[s][p] = 0;
- clusterfile[s][p] = new AliL3MemHandler();
+ clusterfile[s][p] = new AliHLTMemHandler();
sprintf(fname,"%s/points_%d_%d_%d.raw",path,event,s,patch);
if(!clusterfile[s][p]->SetBinaryInput(fname))
{
clusterfile[s][p] = 0;
continue;
}
- fClusters[s][p] = (AliL3SpacePointData*)clusterfile[s][p]->Allocate();
+ fClusters[s][p] = (AliHLTSpacePointData*)clusterfile[s][p]->Allocate();
clusterfile[s][p]->Binary2Memory(fNcl[s][p],fClusters[s][p]);
clusterfile[s][p]->CloseBinaryInput();
if(sp==kTRUE)
}
}
-void AliL3Fitter::SortTrackClusters(AliL3Track *track) const
+void AliHLTFitter::SortTrackClusters(AliHLTTrack *track) const
{
//Sort the internal cluster list in each track with respect to row numbering.
//This may be necessary when no conventional track follower has been
slice = (id>>25) & 0x7f;
patch = (id>>22) & 0x7;
pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
padrow = points[pos].fPadRow;
if(padrow > maxrow)
{
delete [] mk;
}
-Int_t AliL3Fitter::FitHelix(AliL3Track *track)
+Int_t AliHLTFitter::FitHelix(AliHLTTrack *track)
{
//fit helix parameters
fTrack = track;
if(FitCircle())
{
- LOG(AliL3Log::kError,"AliL3Fitter::FitHelix","TrackFit")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTFitter::FitHelix","TrackFit")<<AliHLTLog::kDec<<
"Problems during circle fit"<<ENDLOG;
return 1;
}
if(FitLine())
{
- LOG(AliL3Log::kError,"AliL3Fitter::FitHelix","TrackFit")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTFitter::FitHelix","TrackFit")<<AliHLTLog::kDec<<
"Problems during line fit"<<ENDLOG;
return 1;
}
return 0;
}
-Int_t AliL3Fitter::FitCircle()
+Int_t AliHLTFitter::FitCircle()
{
//-----------------------------------------------------------------
//Fits circle parameters using algorithm
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
fXYWeight[i] = 1./ (Double_t)(points[pos].fSigmaY2 + points[pos].fSigmaY2);
wsum += fXYWeight[i];
xav += fXYWeight[i]*points[pos].fX;
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
xi = points[pos].fX -xav;
yi = points[pos].fY - yav ;
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
xold = points[pos].fX - xav ;
yold = points[pos].fY - yav ;
Double_t h24 = yrrav ;
Double_t h34 = 1.0 + 2.0*lamda ;
if ( h11 == 0.0 || h22 == 0.0 ){
- LOG(AliL3Log::kError,"AliL3Fitter::FitCircle","TrackFit")<<AliL3Log::kDec<<
+ LOG(AliHLTLog::kError,"AliHLTFitter::FitCircle","TrackFit")<<AliHLTLog::kDec<<
"Problems fitting circle"<<ENDLOG;
return 1 ;
}
fTrack->SetCharge(q);
//Set the first point on the track to the space point coordinates of the innermost track
- //This will be updated to lie on the fit later on (AliL3Track::UpdateToFirstPoint).
+ //This will be updated to lie on the fit later on (AliHLTTrack::UpdateToFirstPoint).
Double_t x0,y0,psi,pt ;
Int_t lastid=fTrack->GetNHits()-1;
UInt_t id = hitnum[lastid];
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
x0 = points[pos].fX;
y0 = points[pos].fY;
fTrack->SetFirstPoint(x0,y0,0); //Z-value is set in FitLine
//Set the remaining fit parameters
psi = (Double_t)atan2(bcent-y0,acent-x0) ;
- psi = psi + q * 0.5F * AliL3Transform::Pi() ;
- if ( psi < 0 ) psi = psi + 2*AliL3Transform::Pi();
+ psi = psi + q * 0.5F * AliHLTTransform::Pi() ;
+ if ( psi < 0 ) psi = psi + 2*AliHLTTransform::Pi();
- pt = (Double_t)(AliL3Transform::GetBFact() * AliL3Transform::GetBField() * radius ) ;
+ pt = (Double_t)(AliHLTTransform::GetBFact() * AliHLTTransform::GetBField() * radius ) ;
fTrack->SetPsi(psi);
fTrack->SetPt(pt);
fTrack->SetRadius(radius);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Fit Line in s-z plane
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-Int_t AliL3Fitter::FitLine ( )
+Int_t AliHLTFitter::FitLine ( )
{
//
//Initialization
//find sum , sums ,sumz, sumss
//
Double_t dx, dy ;
- Double_t radius = (Double_t)(fTrack->GetPt() / ( AliL3Transform::GetBFact() * AliL3Transform::GetBField() ) ) ;
+ Double_t radius = (Double_t)(fTrack->GetPt() / ( AliHLTTransform::GetBFact() * AliHLTTransform::GetBField() ) ) ;
Double_t * fS = new Double_t[(fTrack->GetNHits())];
Double_t *fZWeight = new Double_t[fTrack->GetNHits()];
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
dx = points[pos].fX - fVertex->GetX();
dy = points[pos].fY - fVertex->GetY();
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t posf = id&0x3fffff;
- AliL3SpacePointData *pointsf = fClusters[slice][patch];
+ AliHLTSpacePointData *pointsf = fClusters[slice][patch];
id = hitnum[(fTrack->GetNHits()-1)];
slice = (id>>25) & 0x7f;
patch = (id>>22) & 0x7;
UInt_t posl = id&0x3fffff;
- AliL3SpacePointData *pointsl = fClusters[slice][patch];
+ AliHLTSpacePointData *pointsl = fClusters[slice][patch];
dx = pointsf[posf].fX - pointsl[posl].fX;
dy = pointsf[posf].fY - pointsl[posl].fY;
}
}
else
{
- totals = 2.0 * radius * AliL3Transform::Pi() ;
+ totals = 2.0 * radius * AliHLTTransform::Pi() ;
}
Double_t dpsi,s;
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
fZWeight[i] = 1./(Double_t)(points[pos].fSigmaZ2);
if(i>0)
slice = (id>>25) & 0x7f;
patch = (id>>22) & 0x7;
UInt_t lastpos = id&0x3fffff;
- AliL3SpacePointData *lastpoints = fClusters[slice][patch];
+ AliHLTSpacePointData *lastpoints = fClusters[slice][patch];
dx = points[pos].fX -lastpoints[lastpos].fX;
dy = points[pos].fY -lastpoints[lastpos].fY;
dpsi = 0.5 * (Double_t)sqrt ( dx*dx + dy*dy ) / radius ;
Int_t slice = (id>>25) & 0x7f;
Int_t patch = (id>>22) & 0x7;
UInt_t pos = id&0x3fffff;
- AliL3SpacePointData *points = fClusters[slice][patch];
+ AliHLTSpacePointData *points = fClusters[slice][patch];
r1 = points[pos].fZ - tanl * fS[i] - z0 ;
chi2 += (Double_t) ( (Double_t)(fZWeight[i]) * (r1 * r1) );
}
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3FITTER_H
+#define ALIL3FITTER_H
+
+//_____________________________________________________________
+// AliHLTFitter
+//
+// Fit class HLT
+//
+// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
+
+class AliHLTTrack;
+class AliHLTVertex;
+class AliHLTSpacePointData;
+
+class AliHLTFitter {
+
+ public:
+ AliHLTFitter();
+ AliHLTFitter(AliHLTVertex *vertex,Bool_t vertexconstraint=kTRUE);
+ virtual ~AliHLTFitter();
+
+ void LoadClusters(Char_t *path,Int_t event=0,Bool_t sp=kFALSE);
+ void SortTrackClusters(AliHLTTrack *track) const;
+ Int_t FitHelix(AliHLTTrack *track);
+ Int_t FitCircle();
+ Int_t FitLine();
+ void NoVertex() {fVertexConstraint=kFALSE;}
+
+ private:
+ AliHLTTrack *fTrack; //! actual track
+ AliHLTVertex *fVertex; //! vertex info
+ Bool_t fVertexConstraint; // include vertex constraint
+ AliHLTSpacePointData *fClusters[36][6]; //! clusters
+ UInt_t fNcl[36][6]; // cluster numbers
+
+ ClassDef(AliHLTFitter,1) //HLT fit class
+};
+
+typedef AliHLTFitter AliL3Fitter; // for backward compatibility
+
+#endif
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3GlobalMerger.h"
-#include "AliL3Track.h"
-#include "AliL3Transform.h"
-#include "AliL3TrackArray.h"
+#include "AliHLTLogging.h"
+#include "AliHLTGlobalMerger.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrackArray.h"
-/** \class AliL3GlobalMerger
+/** \class AliHLTGlobalMerger
<pre>
//_____________________________________________________________
-// AliL3GlobalMerger
+// AliHLTGlobalMerger
//
// The L3 Slice merger
//
using namespace std;
#endif
-ClassImp(AliL3GlobalMerger)
+ClassImp(AliHLTGlobalMerger)
-AliL3GlobalMerger::AliL3GlobalMerger()
+AliHLTGlobalMerger::AliHLTGlobalMerger()
{
//Default constructor. Use Setup to specify and setup the necessary parameters and arrays.
Is2Global(kTRUE);
}
-AliL3GlobalMerger::~AliL3GlobalMerger()
+AliHLTGlobalMerger::~AliHLTGlobalMerger()
{
//Destructor
}
-void AliL3GlobalMerger::Setup(Int_t first,Int_t last)
+void AliHLTGlobalMerger::Setup(Int_t first,Int_t last)
{
//Used to setup the arrays and everything
InitMerger(last-first+1);
}
-void AliL3GlobalMerger::InitSlice(Int_t slice)
+void AliHLTGlobalMerger::InitSlice(Int_t slice)
{
//
// Select Sector The following FillTracks call will
fCurrentTracks = fSlice - fFirst;
}
-Double_t AliL3GlobalMerger::CheckTracks(AliL3Track *innertrack,AliL3Track *outertrack,Int_t slice)
+Double_t AliHLTGlobalMerger::CheckTracks(AliHLTTrack *innertrack,AliHLTTrack *outertrack,Int_t slice)
{
//Compare the tracks by propagating the outermost track to the last and first point plane
//of the innermost track. This plane is defined by the padrow plane where these points
if(innertrack->GetCharge()!=outertrack->GetCharge()) return -1;
Float_t angle = 0;//perpendicular to the padrowplane (in local system)
- AliL3Transform::Local2GlobalAngle(&angle,slice);
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
Double_t dx[2],dy[2],dz[2];
Double_t diff =-1;
- AliL3Track *tracks[2];
+ AliHLTTrack *tracks[2];
tracks[0] = innertrack;
tracks[1] = outertrack;
SortGlobalTracks(tracks,2);
point[0]=innertrack->GetLastPointX();
point[1]=innertrack->GetLastPointY();
point[2]=innertrack->GetLastPointZ();
- AliL3Transform::Global2LocHLT(point,slice);
+ AliHLTTransform::Global2LocHLT(point,slice);
outertrack->CalculateReferencePoint(angle,point[0]);//local x = global distance to padrowplane
if(!outertrack->IsPoint()) return diff;
point[0]=innertrack->GetFirstPointX();
point[1]=innertrack->GetFirstPointY();
point[2]=innertrack->GetFirstPointZ();
- AliL3Transform::Global2LocHLT(point,slice);
+ AliHLTTransform::Global2LocHLT(point,slice);
outertrack->CalculateReferencePoint(angle,point[0]);//local x = global distance to padrowplane
if(!outertrack->IsPoint()) return diff;
return diff;
}
-void AliL3GlobalMerger::SlowMerge(Char_t *path)
+void AliHLTGlobalMerger::SlowMerge(Char_t *path)
{
//Tuning of parameters. This matches _all_ tracks between two neighbouring
//slices, and merges the ones which are closest in space. The difference
void* ntuple=GetNtuple();
- AliL3Track *track[2];
- AliL3TrackArray *tout = GetOutTracks();
+ AliHLTTrack *track[2];
+ AliHLTTrackArray *tout = GetOutTracks();
if(fNSlices<2)
{
- LOG(AliL3Log::kWarning,"AliL3GlobalMerger::SlowMerge","Slice Number")
+ LOG(AliHLTLog::kWarning,"AliHLTGlobalMerger::SlowMerge","Slice Number")
<<"Need more than one Slice!"<<ENDLOG;
return;
}
{
//if(fNSlices!=18 && i+1 == fNSlices) continue;
Int_t slice = fFirst + i;
- AliL3TrackArray *ttt0=GetInTracks(i);
+ AliHLTTrackArray *ttt0=GetInTracks(i);
Int_t slice2 = i+1;
//if(slice2==fNSlices) slice2 =0;
//Make sure slices are on the same side of the TPC
if(slice2 == 18) slice2=0;
else if(slice2 == 36) slice2=18;
- AliL3TrackArray *ttt1=GetInTracks(slice2);
+ AliHLTTrackArray *ttt1=GetInTracks(slice2);
//10 degrees -> the border of the slices in local coordinates
- Float_t angle = AliL3Transform::Pi()/18;
- AliL3Transform::Local2GlobalAngle(&angle,slice);
+ Float_t angle = AliHLTTransform::Pi()/18;
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
//In the two following cases, the angle is 2*pi, so set it back to 0 in order for
//the calculation of crossing points to be correct.
ttt1->QSort();
for(Int_t s0=0;s0<ttt0->GetNTracks();s0++)
{
- AliL3Track *track0=ttt0->GetCheckedTrack(s0);
+ AliHLTTrack *track0=ttt0->GetCheckedTrack(s0);
if(!track0) continue;
track0->CalculateHelix();
track0->CalculateEdgePoint(angle);
}
for(Int_t s1=0;s1<ttt1->GetNTracks();s1++)
{
- AliL3Track *track1=ttt1->GetCheckedTrack(s1);
+ AliHLTTrack *track1=ttt1->GetCheckedTrack(s1);
if(!track1) continue;
track1->CalculateHelix();
track1->CalculateEdgePoint(angle);
Int_t n0=ttt0->GetNTracks(),n1=ttt1->GetNTracks();
for(Int_t s0=0;s0<n0;s0++)
{
- AliL3Track *track0=ttt0->GetCheckedTrack(s0);
+ AliHLTTrack *track0=ttt0->GetCheckedTrack(s0);
if(!track0) continue;
if(!track0->IsPoint()) continue;
for(Int_t s1=0;s1<n1;s1++)
{
- AliL3Track *track1=ttt1->GetCheckedTrack(s1);
+ AliHLTTrack *track1=ttt1->GetCheckedTrack(s1);
if(!track1) continue;
if(!track1->IsPoint()) continue;
}
if(min0>=0&&min1>=0)
{
- AliL3Track *track0=ttt0->GetTrack(min0);
- AliL3Track *track1=ttt1->GetTrack(min1);
+ AliHLTTrack *track0=ttt0->GetTrack(min0);
+ AliHLTTrack *track1=ttt1->GetTrack(min1);
track[0] = track0;
track[1] = track1;
SortGlobalTracks(track,2);
- track1->CalculateEdgePoint((angle+AliL3Transform::Pi()/9));
+ track1->CalculateEdgePoint((angle+AliHLTTransform::Pi()/9));
if(track1->IsPoint())//Check if the track will cross the boundary of yet another slice.
MultiMerge(ttt1,track,2);
else
}
ttt0->Compress();
ttt1->Compress();
- LOG(AliL3Log::kInformational,"AliL3GlobalMerger::SlowMerge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "<<tout->GetNTracks()<<" at:"
+ LOG(AliHLTLog::kInformational,"AliHLTGlobalMerger::SlowMerge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "<<tout->GetNTracks()<<" at:"
<<angle<<ENDLOG;
}
Char_t fname[1024];
WriteNtuple(fname,ntuple);
}
-void AliL3GlobalMerger::Merge()
+void AliHLTGlobalMerger::Merge()
{
//Normal merging procedure. Matches tracks which are within limits
//set by SetParameters. Parameters can be tuned by SlowMerge.
- AliL3Track *track[2];
- AliL3TrackArray *tout = GetOutTracks();
+ AliHLTTrack *track[2];
+ AliHLTTrackArray *tout = GetOutTracks();
if(fNSlices<2)
{
- LOG(AliL3Log::kWarning,"AliL3GlobalMerger::Merge","Slice Number")
+ LOG(AliHLTLog::kWarning,"AliHLTGlobalMerger::Merge","Slice Number")
<<"Need more than one Slice!"<<ENDLOG;
return;
}
{
//if(fNSlices!=18 && i+1 == fNSlices) continue;
Int_t slice = fFirst + i;
- AliL3TrackArray *ttt0=GetInTracks(i);
+ AliHLTTrackArray *ttt0=GetInTracks(i);
Int_t slice2 = i+1;
//if(slice2==fNSlices) slice2 =0;
//Make sure slices are on the same side of the TPC
if(slice2 == 18) slice2=0;
else if(slice2 == 36) slice2=18;
- AliL3TrackArray *ttt1=GetInTracks(slice2);
+ AliHLTTrackArray *ttt1=GetInTracks(slice2);
//10 degrees -> the border of the slices in local coordinates
- Float_t angle = AliL3Transform::Pi()/18;
- AliL3Transform::Local2GlobalAngle(&angle,slice);
+ Float_t angle = AliHLTTransform::Pi()/18;
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
//In the two following cases, the angle is 2*pi, so set it back to 0 in order for
//the calculation of crossing points to be correct.
for(Int_t s0=0;s0<ttt0->GetNTracks();s0++)
{
ismatched0[s0]=kFALSE;
- AliL3Track *track0=ttt0->GetCheckedTrack(s0);
+ AliHLTTrack *track0=ttt0->GetCheckedTrack(s0);
if(!track0) continue;
track0->CalculateHelix();
track0->CalculateEdgePoint(angle);
for(Int_t s1=0;s1<ttt1->GetNTracks();s1++)
{
ismatched1[s1]=kFALSE;
- AliL3Track *track1=ttt1->GetCheckedTrack(s1);
+ AliHLTTrack *track1=ttt1->GetCheckedTrack(s1);
if(!track1) continue;
track1->CalculateHelix();
track1->CalculateEdgePoint(angle);
for(Int_t s0=0;s0<ttt0->GetNTracks();s0++)
{
if(ismatched0[s0]) continue;
- AliL3Track *track0=ttt0->GetCheckedTrack(s0);
+ AliHLTTrack *track0=ttt0->GetCheckedTrack(s0);
if(!track0) continue;
if(!track0->IsPoint()) continue;
for(Int_t s1=0;s1<ttt1->GetNTracks();s1++)
{
if(ismatched1[s1]) continue;
- AliL3Track *track1=ttt1->GetCheckedTrack(s1);
+ AliHLTTrack *track1=ttt1->GetCheckedTrack(s1);
if(!track1) continue;
if(!track1->IsPoint()) continue;
if(IsRTrack(track0,track1))
}
}
}
- LOG(AliL3Log::kInformational,"AliL3GlobalMerger::Merge","Result")
- <<AliL3Log::kDec<<"slice0: "<<n0<<" slice1: "<<n1
+ LOG(AliHLTLog::kInformational,"AliHLTGlobalMerger::Merge","Result")
+ <<AliHLTLog::kDec<<"slice0: "<<n0<<" slice1: "<<n1
<<" Merged Tracks: "<<tout->GetNTracks()<<ENDLOG;
delete [] ismatched0;
delete [] ismatched1;
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3_GLOBALMERGER_H
+#define ALIL3_GLOBALMERGER_H
+
+#ifndef __CINT__
+#include "AliHLTMerger.h"
+#endif
+
+#include "AliHLTRootTypes.h"
+
+class AliHLTGlobalMerger : public AliHLTMerger{
+
+ private:
+ Int_t fNSlices;
+ Int_t fFirst;
+ Int_t fLast;
+
+ Double_t CheckTracks(AliHLTTrack *innertrack,AliHLTTrack *outertrack,Int_t slice);
+
+ public:
+ AliHLTGlobalMerger();
+ virtual ~AliHLTGlobalMerger();
+
+ void Setup(Int_t first,Int_t last);
+ void InitSlice(Int_t slice);
+ void SlowMerge(Char_t *path="./");
+ void Merge(); //Loop over tracks from different sectors
+
+ ClassDef(AliHLTGlobalMerger,1) //Slice merger
+};
+
+typedef AliHLTGlobalMerger AliL3GlobalMerger; // for backward compatibility
+
+#endif
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3InterMerger.h"
-#include "AliL3Track.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3Transform.h"
-#include "AliL3TrackArray.h"
+#include "AliHLTLogging.h"
+#include "AliHLTInterMerger.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrackArray.h"
-/** \class AliL3InterMerger
+/** \class AliHLTInterMerger
<pre>
//_____________________________________________________________
-// AliL3InterMerger
+// AliHLTInterMerger
//
// The L3 track segment merger
//
using namespace std;
#endif
-ClassImp(AliL3InterMerger)
+ClassImp(AliHLTInterMerger)
-AliL3InterMerger::AliL3InterMerger()
+AliHLTInterMerger::AliHLTInterMerger()
{
//Default constructor
InitMerger(1);
}
-AliL3InterMerger::~AliL3InterMerger(){
+AliHLTInterMerger::~AliHLTInterMerger(){
//Destructor
}
-void AliL3InterMerger::SlowMerge(){
+void AliHLTInterMerger::SlowMerge(){
Int_t nrow= fRowMax-fRowMin+1;
void *ntuple=GetNtuple();
- AliL3TrackArray * tracks = GetInTracks(0);
+ AliHLTTrackArray * tracks = GetInTracks(0);
const Int_t kNIn =tracks->GetNTracks();
- AliL3Track *tr[2];
+ AliHLTTrack *tr[2];
Bool_t merge = kTRUE;
for(Int_t in=0;in<kNIn;in++)
tracks->GetCheckedTrack(in)->CalculateHelix();
Int_t inmin=-1,outmin=-1;
Double_t min=10;
for(Int_t out=0;out<kNIn;out++){
- AliL3Track *outertrack=tracks->GetCheckedTrack(out);
+ AliHLTTrack *outertrack=tracks->GetCheckedTrack(out);
if(!outertrack) continue;
for(Int_t in=0;in<kNIn;in++){
if(in==out) continue;
- AliL3Track *innertrack=tracks->GetCheckedTrack(in);
+ AliHLTTrack *innertrack=tracks->GetCheckedTrack(in);
if(!innertrack) continue;
if(outertrack->GetNHits()+innertrack->GetNHits()>nrow) continue;
}
}
if(inmin>=0&&outmin>=0){
- AliL3Track *outertrack=tracks->GetTrack(outmin);
- AliL3Track *innertrack=tracks->GetTrack(inmin);
+ AliHLTTrack *outertrack=tracks->GetTrack(outmin);
+ AliHLTTrack *innertrack=tracks->GetTrack(inmin);
tr[0]=innertrack;
tr[1]=outertrack;
SortTracks(tr,2);
}
else merge = kFALSE;
}
- LOG(AliL3Log::kInformational,"AliL3InterMerger::SlowMerge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "<<tracks->GetNTracks()-kNIn<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTInterMerger::SlowMerge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "<<tracks->GetNTracks()-kNIn<<ENDLOG;
char name[256];
sprintf(name,"ntuple_i_%d.root",fPatch);
WriteNtuple(name,ntuple);
}
-void AliL3InterMerger::MMerge(){
+void AliHLTInterMerger::MMerge(){
while(Merge());
GetOutTracks()->AddTracks(GetInTracks(0));
}
-Int_t AliL3InterMerger::Merge(){
+Int_t AliHLTInterMerger::Merge(){
Int_t nrow= fRowMax-fRowMin+1;
- Double_t xval =AliL3Transform::Row2X((fRowMax+fRowMin)/2);
- AliL3TrackArray * tracks = GetInTracks(0);
+ Double_t xval =AliHLTTransform::Row2X((fRowMax+fRowMin)/2);
+ AliHLTTrackArray * tracks = GetInTracks(0);
const Int_t kNIn =tracks->GetNTracks();
- AliL3Track *tr[2];
+ AliHLTTrack *tr[2];
for(Int_t in=0;in<kNIn;in++){
- AliL3Track *t = tracks->GetCheckedTrack(in);
+ AliHLTTrack *t = tracks->GetCheckedTrack(in);
if(t){
t->CalculateHelix();
t->CalculatePoint(xval);
}
}
for(Int_t out=0;out<kNIn;out++){
- AliL3Track *outertrack=tracks->GetCheckedTrack(out);
+ AliHLTTrack *outertrack=tracks->GetCheckedTrack(out);
if(!outertrack) continue;
for(Int_t in=0;in<kNIn;in++){
if(in==out) continue;
- AliL3Track *innertrack=tracks->GetCheckedTrack(in);
+ AliHLTTrack *innertrack=tracks->GetCheckedTrack(in);
if(!innertrack) continue;
if(outertrack->GetNHits()+innertrack->GetNHits()>nrow) continue;
}
}
Int_t nmerged = tracks->GetNTracks()-kNIn;
- LOG(AliL3Log::kInformational,"AliL3InterMerger::Merge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTInterMerger::Merge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
//add in tracks
// GetOutTracks()->AddTracks(GetInTracks(0));
#define ALIL3INTERMERGER_H
#ifndef __CINT__
-#include "AliL3Merger.h"
+#include "AliHLTMerger.h"
#endif
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3InterMerger : public AliL3Merger {
+class AliHLTInterMerger : public AliHLTMerger {
private:
Int_t fPatch;
Int_t fRowMin;
Int_t fRowMax;
public:
- AliL3InterMerger();
- virtual ~AliL3InterMerger();
+ AliHLTInterMerger();
+ virtual ~AliHLTInterMerger();
void Init(Int_t *row,Int_t p){fRowMin=row[0];fRowMax=row[1];fPatch=p;}
void SlowMerge();
Int_t Merge();
void MMerge(); //Loop over tracks from different subsectors
- ClassDef(AliL3InterMerger,1) //Intermerging class
+ ClassDef(AliHLTInterMerger,1) //Intermerging class
};
+typedef AliHLTInterMerger AliL3InterMerger; // for backward compatibility
+
#endif
--- /dev/null
+// $Id$
+
+#ifndef use_logging
+
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
+
+AliHLTLog::TLogLevel AliHLTLog::fgLevel=AliHLTLog::kNone;
+
+#endif
#ifndef ALIL3LOG_H
#define ALIL3LOG_H
-class AliL3Log {
+class AliHLTLog {
public:
enum TLogLevel { kNone = 0, kDebug= 0x01, kInformational = 0x02, kWarning = 0x04, kError = 0x08 , kFatal = 0x10, kPrimary = 0x80, kAll = 0x9F };
enum TLogCmd { kEnd, kPrec, kHex, kDec };
#if __GNUC__ == 3
#define LOG( lvl, origin, keyword ) \
- if (lvl>=AliL3Log::fgLevel) std::cerr<<"["<<origin<<": "<<keyword<<"] "
+ if (lvl>=AliHLTLog::fgLevel) std::cerr<<"["<<origin<<": "<<keyword<<"] "
#define ENDLOG std::endl
#else
#define LOG( lvl, origin, keyword ) \
- if (lvl>=AliL3Log::fgLevel) cerr<<"["<<origin<<": "<<keyword<<"] "
+ if (lvl>=AliHLTLog::fgLevel) cerr<<"["<<origin<<": "<<keyword<<"] "
#define ENDLOG endl
#endif /* __GNUC__ */
+
+typedef AliHLTLog AliL3Log; // for backward compatibility
+
#endif /* ALIL3LOG_H */
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>, Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Logger.h"
+#include "AliHLTLogging.h"
+#include "AliHLTLogger.h"
-ClassImp(AliL3Logger)
+ClassImp(AliHLTLogger)
#ifdef use_logging
-Int_t AliL3Logger::fgAll= AliL3Log::kAll;
-Int_t AliL3Logger::fgDebug = AliL3Log::kDebug;
-Int_t AliL3Logger::fgInformational = AliL3Log::kInformational;
-Int_t AliL3Logger::fgWarning = AliL3Log::kWarning;
-Int_t AliL3Logger::fgError = AliL3Log::kError;
-Int_t AliL3Logger::fgFatal = AliL3Log::kFatal;
+Int_t AliHLTLogger::fgAll= AliHLTLog::kAll;
+Int_t AliHLTLogger::fgDebug = AliHLTLog::kDebug;
+Int_t AliHLTLogger::fgInformational = AliHLTLog::kInformational;
+Int_t AliHLTLogger::fgWarning = AliHLTLog::kWarning;
+Int_t AliHLTLogger::fgError = AliHLTLog::kError;
+Int_t AliHLTLogger::fgFatal = AliHLTLog::kFatal;
-AliL3Logger::AliL3Logger()
+AliHLTLogger::AliHLTLogger()
{
//constructor
if (!gLogP) {
gLogLevelP = &MLUCLog::gLogLevel;
//printf( "gLogLevelP set...\n" );
}
- (*gLogLevelP)=AliL3Log::kAll;
+ (*gLogLevelP)=AliHLTLog::kAll;
fdn = fso = fse = fsm =0;
fof = 0;
}
-AliL3Logger::~AliL3Logger()
+AliHLTLogger::~AliHLTLogger()
{
//destructor
if(fdn) {gLogP->DelServer(fdn);delete fdn;}
if(fof) {fof->close();delete fof;}
}
-void AliL3Logger::Set(Int_t l)
+void AliHLTLogger::Set(Int_t l)
{
//set logger
(*gLogLevelP) |=l;
}
-void AliL3Logger::UnSet(Int_t l)
+void AliHLTLogger::UnSet(Int_t l)
{
//unset logger
(*gLogLevelP) &=(~l);
}
-void AliL3Logger::UseDevNull()
+void AliHLTLogger::UseDevNull()
{
//use dev null
if(fdn) return;
- fdn = new AliL3DevNullLogServer();
+ fdn = new AliHLTDevNullLogServer();
gLogP->AddServer(fdn);
}
-void AliL3Logger::UseStdout()
+void AliHLTLogger::UseStdout()
{
//use stdout
if(fso)return;
- fso = new AliL3StdoutLogServer();
+ fso = new AliHLTStdoutLogServer();
gLogP->AddServer(fso);
}
-void AliL3Logger::UseStderr()
+void AliHLTLogger::UseStderr()
{
//use stderr
if(fse) return;
- fse = new AliL3StderrLogServer();
+ fse = new AliHLTStderrLogServer();
gLogP->AddServer(fse);
}
-void AliL3Logger::UseStream(Char_t *name)
+void AliHLTLogger::UseStream(Char_t *name)
{
//use stream
if(fsm) return;
fof = 0;
fof = new ofstream();
fof->open(name);
- fsm = new AliL3StreamLogServer(*fof);
+ fsm = new AliHLTStreamLogServer(*fof);
gLogP->AddServer(fsm);
}
-void AliL3Logger::NotUseDevNull()
+void AliHLTLogger::NotUseDevNull()
{
//not dev null
if(fdn) {gLogP->DelServer(fdn);delete fdn;fdn=0;}
}
-void AliL3Logger::NotUseStdout()
+void AliHLTLogger::NotUseStdout()
{
//not stdout
if(fso) {gLogP->DelServer(fso);delete fso;fso=0;}
}
-void AliL3Logger::NotUseStderr()
+void AliHLTLogger::NotUseStderr()
{
//not stderr
if(fse) {gLogP->DelServer(fse);delete fse;fse=0;}
}
-void AliL3Logger::NotUseStream()
+void AliHLTLogger::NotUseStream()
{
//not stream
if(fsm) {gLogP->DelServer(fsm);delete fsm;fsm=0;}
#else /*not use_logging*/
-Int_t AliL3Logger::fgAll= AliL3Log::kAll;
-Int_t AliL3Logger::fgDebug = AliL3Log::kDebug;
-Int_t AliL3Logger::fgInformational = AliL3Log::kInformational;
-Int_t AliL3Logger::fgWarning = AliL3Log::kWarning;
-Int_t AliL3Logger::fgError = AliL3Log::kError;
-Int_t AliL3Logger::fgFatal = AliL3Log::kFatal;
+Int_t AliHLTLogger::fgAll= AliHLTLog::kAll;
+Int_t AliHLTLogger::fgDebug = AliHLTLog::kDebug;
+Int_t AliHLTLogger::fgInformational = AliHLTLog::kInformational;
+Int_t AliHLTLogger::fgWarning = AliHLTLog::kWarning;
+Int_t AliHLTLogger::fgError = AliHLTLog::kError;
+Int_t AliHLTLogger::fgFatal = AliHLTLog::kFatal;
-AliL3Logger::AliL3Logger()
+AliHLTLogger::AliHLTLogger()
{
//
;
}
-AliL3Logger::~AliL3Logger()
+AliHLTLogger::~AliHLTLogger()
{
//
;
}
-void AliL3Logger::Set(Int_t /*l*/)
+void AliHLTLogger::Set(Int_t /*l*/)
{
//
;
}
-void AliL3Logger::UnSet(Int_t /*l*/)
+void AliHLTLogger::UnSet(Int_t /*l*/)
{
//
;
}
-void AliL3Logger::UseDevNull()
+void AliHLTLogger::UseDevNull()
{
//
;
}
-void AliL3Logger::UseStdout()
+void AliHLTLogger::UseStdout()
{
//
;
}
-void AliL3Logger::UseStderr()
+void AliHLTLogger::UseStderr()
{
//
;
}
-void AliL3Logger::UseStream(Char_t */*name*/)
+void AliHLTLogger::UseStream(Char_t */*name*/)
{
//
;
}
-void AliL3Logger::NotUseDevNull()
+void AliHLTLogger::NotUseDevNull()
{
//
;
}
-void AliL3Logger::NotUseStdout()
+void AliHLTLogger::NotUseStdout()
{
//
;
}
-void AliL3Logger::NotUseStderr()
+void AliHLTLogger::NotUseStderr()
{
//
;
}
-void AliL3Logger::NotUseStream()
+void AliHLTLogger::NotUseStream()
{
//
;
#ifndef ALIL3LOGGER_H
#define ALIL3LOGGER_H
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
class MLUCLogServer;
-class AliL3Logger {
+class AliHLTLogger {
public:
- AliL3Logger();
- virtual ~AliL3Logger();
+ AliHLTLogger();
+ virtual ~AliHLTLogger();
void Set(Int_t l);
void UnSet(Int_t l);
ofstream *fof; //!
#endif
- ClassDef(AliL3Logger,0)
+ ClassDef(AliHLTLogger,0)
};
+typedef AliHLTLogger AliL3Logger; // for backward compatibility
+
#endif
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3LOGGING_H
+#define ALIL3LOGGING_H
+
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
+
+#ifdef use_logging
+#include <MLUCLog.hpp>
+#include <MLUCLogServer.hpp>
+
+typedef MLUCLog AliHLTLog;
+typedef MLUCLogServer AliHLTLogServer;
+typedef MLUCDevNullLogServer AliHLTDevNullLogServer;
+typedef MLUCStdoutLogServer AliHLTStdoutLogServer;
+typedef MLUCStderrLogServer AliHLTStderrLogServer;
+typedef MLUCStreamLogServer AliHLTStreamLogServer;
+
+#else
+
+#include "AliHLTLog.h"
+#endif /* use_logging */
+#endif /* ALIL3LOGGING_H */
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>, Anders Vestbo <mailto:vestbo$fi.uib.no>, Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-/** \class AliL3MemHandler
+/** \class AliHLTMemHandler
<pre>
//_____________________________________________________________
-// AliL3MemHandler
+// AliHLTMemHandler
//
// The HLT Binary File handler
//
//
// 1) Reading a binary file:
//
-// AliL3MemHandler file;
+// AliHLTMemHandler file;
// file.SetBinaryInput(filename);
// file.Init(slice,patch);
//
// UInt_t nrowss;
-// AliL3DigitRowData *data = file.CompBinary2Memory(nrows);
+// AliHLTDigitRowData *data = file.CompBinary2Memory(nrows);
//
// for(int i=0; i<nrows; i++)
// {
//
-// AliL3DigitData *dataPt = (AliL3DigitData*)data->fDigitData;
+// AliHLTDigitData *dataPt = (AliHLTDigitData*)data->fDigitData;
// for(int j=0; j<data->fNDigit; j++)
// {
// pad = dataPt[j].fPad;
// 2) Writing a binary file:
//
// //First of all you need to store the data in memory,
-// //and have a pointer to it of type AliL3DigitRowData.
+// //and have a pointer to it of type AliHLTDigitRowData.
// //E.g. if you just want to write the data you read in example 1)
// //into a new file, you can do the following:
//
-// AliL3MemHandler newfile;
+// AliHLTMemHandler newfile;
// newfile.Init(slice,patch);
// newfile.SetBinaryOutput(newfilename);
-// newfile.Memory2CompBinary((UInt_t)NumberOfRowsInPatch,(AliL3DigitRowData*)data);
+// newfile.Memory2CompBinary((UInt_t)NumberOfRowsInPatch,(AliHLTDigitRowData*)data);
// newfile.CloseBinaryOutput();
//
//
</pre>
*/
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
-#include "AliL3DigitData.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3TrackArray.h"
-#include "AliL3MemHandler.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTMemHandler.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3MemHandler)
+ClassImp(AliHLTMemHandler)
-AliL3MemHandler::AliL3MemHandler()
+AliHLTMemHandler::AliHLTMemHandler()
{
//Constructor
fPt = 0;
}
-AliL3MemHandler::~AliL3MemHandler()
+AliHLTMemHandler::~AliHLTMemHandler()
{
//Destructor
if(fPt) delete[] fPt;
if(fDPt) delete [] fDPt;
}
-void AliL3MemHandler::Init(Int_t s,Int_t p, Int_t *r)
+void AliHLTMemHandler::Init(Int_t s,Int_t p, Int_t *r)
{
//init handler
fSlice=s;fPatch=p;
fRowMin=r[0];
fRowMax=r[1];
}else{
- fRowMin=AliL3Transform::GetFirstRow(p);
- fRowMax=AliL3Transform::GetLastRow(p);
+ fRowMin=AliHLTTransform::GetFirstRow(p);
+ fRowMax=AliHLTTransform::GetLastRow(p);
}
ResetROI();
}
-void AliL3MemHandler::ResetROI()
+void AliHLTMemHandler::ResetROI()
{
//Resets the Look-up table for Region of Interest mode.
for(Int_t i=fRowMin; i<=fRowMax; i++)
{
fEtaMinTimeBin[i] = 0;
- fEtaMaxTimeBin[i] = AliL3Transform::GetNTimeBins()-1;
+ fEtaMaxTimeBin[i] = AliHLTTransform::GetNTimeBins()-1;
}
}
-void AliL3MemHandler::SetROI(Float_t *eta,Int_t */*slice*/)
+void AliHLTMemHandler::SetROI(Float_t *eta,Int_t */*slice*/)
{
// Init the Look-up table for the Region of Interest mode.
// Here you can specify a certain etaregion, - all data
if(eta[1]==0)
{
- LOG(AliL3Log::kWarning,"AliL3MemHandler::SetROI","Eta Values")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::SetROI","Eta Values")
<<"Bad ROI parameters. IDIOT! "<<ENDLOG;
for(Int_t i=fRowMin; i<=fRowMax; i++)
{
Float_t thetamax = 2*atan(exp(-1.*eta[1]));
- xyz[0] = AliL3Transform::Row2X(i);
+ xyz[0] = AliHLTTransform::Row2X(i);
xyz[1]=0;
xyz[2] = xyz[0]/tan(thetamax);
- AliL3Transform::Slice2Sector(fSlice,i,sector,row);
- AliL3Transform::Local2Raw(xyz,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,i,sector,row);
+ AliHLTTransform::Local2Raw(xyz,sector,row);
fEtaMinTimeBin[i] = (Int_t)xyz[2];
else
{
Float_t thetamin = 2*atan(exp(-1.*eta[0]));
- xyz[0] = AliL3Transform::Row2X(i);
- xyz[1] = AliL3Transform::GetMaxY(i);
+ xyz[0] = AliHLTTransform::Row2X(i);
+ xyz[1] = AliHLTTransform::GetMaxY(i);
Float_t radii = sqrt(pow(xyz[0],2) + pow(xyz[1],2));
xyz[2] = radii/tan(thetamin);
- AliL3Transform::Local2Raw(xyz,sector,row);
+ AliHLTTransform::Local2Raw(xyz,sector,row);
fEtaMaxTimeBin[i] = (Int_t)xyz[2];
}
}
}
-Bool_t AliL3MemHandler::SetBinaryInput(char *name)
+Bool_t AliHLTMemHandler::SetBinaryInput(char *name)
{
//Set the input binary file.
fInBinary = fopen(name,"r");
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::SetBinaryInput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::SetBinaryInput","File Open")
<<"Error opening file "<<name<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3MemHandler::SetBinaryInput(FILE *file)
+Bool_t AliHLTMemHandler::SetBinaryInput(FILE *file)
{
//Set the input binary file.
fInBinary = file;
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::SetBinaryInput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::SetBinaryInput","File Open")
<<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-void AliL3MemHandler::CloseBinaryInput()
+void AliHLTMemHandler::CloseBinaryInput()
{
//Close the input file.
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CloseBinaryInput","File Close")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CloseBinaryInput","File Close")
<<"Nothing to Close"<<ENDLOG;
return;
}
fInBinary =0;
}
-Bool_t AliL3MemHandler::SetBinaryOutput(char *name)
+Bool_t AliHLTMemHandler::SetBinaryOutput(char *name)
{
//Set the binary output file.
fOutBinary = fopen(name,"w");
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::SetBinaryOutput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::SetBinaryOutput","File Open")
<<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3MemHandler::SetBinaryOutput(FILE *file)
+Bool_t AliHLTMemHandler::SetBinaryOutput(FILE *file)
{
//Set the binary output file.
fOutBinary = file;
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::SetBinaryOutput","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::SetBinaryOutput","File Open")
<<"Pointer to File = 0x0 "<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-void AliL3MemHandler::CloseBinaryOutput()
+void AliHLTMemHandler::CloseBinaryOutput()
{
//close binary
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CloseBinaryOutPut","File Close")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CloseBinaryOutPut","File Close")
<<"Nothing to Close"<<ENDLOG;
return;
}
fOutBinary =0;
}
-UInt_t AliL3MemHandler::GetFileSize()
+UInt_t AliHLTMemHandler::GetFileSize()
{
//Returns the file size in bytes of the input file.
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::GetFileSize","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::GetFileSize","File")
<<"No Input File"<<ENDLOG;
return 0;
}
return size;
}
-Byte_t *AliL3MemHandler::Allocate()
+Byte_t *AliHLTMemHandler::Allocate()
{
//Allocate
return Allocate(GetFileSize());
}
-Byte_t *AliL3MemHandler::Allocate(AliL3TrackArray *array)
+Byte_t *AliHLTMemHandler::Allocate(AliHLTTrackArray *array)
{
//Allocate memory for tracks in memory. Used by TrackArray2Binary()
if(!array){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Allocate","Memory")
- <<"Pointer to AliL3TrackArray = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Allocate","Memory")
+ <<"Pointer to AliHLTTrackArray = 0x0 "<<ENDLOG;
return 0;
}
return Allocate(array->GetOutSize());
}
-Byte_t *AliL3MemHandler::Allocate(UInt_t size)
+Byte_t *AliHLTMemHandler::Allocate(UInt_t size)
{
//Allocate memory of size in bytes.
if(fPt){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Allocate","Memory")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Allocate","Memory")
<<"Delete Memory"<<ENDLOG;
Free();
}
fPt = new Byte_t[size];
fSize = size;
memset(fPt,0,fSize);
- LOG(AliL3Log::kDebug,"AliL3MemHandler::Allocate","Memory")
- <<AliL3Log::kDec<<"Allocate "<<size<<" Bytes of Memory"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTMemHandler::Allocate","Memory")
+ <<AliHLTLog::kDec<<"Allocate "<<size<<" Bytes of Memory"<<ENDLOG;
return fPt;
}
-void AliL3MemHandler::Free()
+void AliHLTMemHandler::Free()
{
//Clear the memory, if allocated.
if(!fPt){
- // LOG(AliL3Log::kInformational,"AliL3MemHandler::Free","Memory")
+ // LOG(AliHLTLog::kInformational,"AliHLTMemHandler::Free","Memory")
// <<"No Memory allocated - can't Free"<<ENDLOG;
return;
}
}
///////////////////////////////////////// Random
-void AliL3MemHandler::SetRandomSeed()
+void AliHLTMemHandler::SetRandomSeed()
{
//If you are adding random data to the original data.
time_t *tp=0;
SetRandomSeed(time(tp));
}
-void AliL3MemHandler::SetRandomCluster(Int_t maxnumber)
+void AliHLTMemHandler::SetRandomCluster(Int_t maxnumber)
{
//If you are adding random data to the original data.
fNRandom = maxnumber;
fNDigits = 0;
if(fRandomDigits) delete [] fRandomDigits;
- fRandomDigits = new AliL3RandomDigitData[fNRandom*9];
+ fRandomDigits = new AliHLTRandomDigitData[fNRandom*9];
if(fDPt) delete [] fDPt;
- fDPt = new AliL3RandomDigitData *[fNRandom*9];
+ fDPt = new AliHLTRandomDigitData *[fNRandom*9];
}
-void AliL3MemHandler::QSort(AliL3RandomDigitData **a, Int_t first, Int_t last)
+void AliHLTMemHandler::QSort(AliHLTRandomDigitData **a, Int_t first, Int_t last)
{
- // Sort array of AliL3RandomDigitData pointers using a quicksort algorithm.
+ // Sort array of AliHLTRandomDigitData pointers using a quicksort algorithm.
// Uses CompareDigits() to compare objects.
// Thanks to Root!
- static AliL3RandomDigitData *tmp;
+ static AliHLTRandomDigitData *tmp;
static int i; // "static" to save stack space
int j;
}
}
-UInt_t AliL3MemHandler::GetRandomSize() const
+UInt_t AliHLTMemHandler::GetRandomSize() const
{
//get random size
Int_t nrandom = 0;
for(Int_t r=fRowMin;r<=fRowMax;r++){
- Int_t npad=AliL3Transform::GetNPads(r);
+ Int_t npad=AliHLTTransform::GetNPads(r);
nrandom += Int_t (fNGenerate * ((Double_t) npad/141.));
}
- return 9 * nrandom * sizeof(AliL3DigitData);
+ return 9 * nrandom * sizeof(AliHLTDigitData);
}
-void AliL3MemHandler::Generate(Int_t row)
+void AliHLTMemHandler::Generate(Int_t row)
{
//Generate random data on row, if you didn't
//ask for this, nothing happens here.
if(!fIsRandom) return;
ResetRandom();
fNDigits = 0;
- Int_t npad=AliL3Transform::GetNPads(row);
+ Int_t npad=AliHLTTransform::GetNPads(row);
Int_t ntime = fEtaMaxTimeBin[row] - fEtaMinTimeBin[row];
Int_t nrandom = Int_t (fNGenerate * ((Double_t) npad/141.) *
- (Double_t) ntime/(Double_t) AliL3Transform::GetNTimeBins() );
+ (Double_t) ntime/(Double_t) AliHLTTransform::GetNTimeBins() );
for(Int_t n=0;n<nrandom;n++){
Int_t pad = (int)((float)rand()/RAND_MAX*npad);
Int_t time =(int)((float)rand()/RAND_MAX*ntime+fEtaMinTimeBin[row] );
- Int_t charge = (int)((float)rand()/RAND_MAX*AliL3Transform::GetADCSat());
+ Int_t charge = (int)((float)rand()/RAND_MAX*AliHLTTransform::GetADCSat());
DigitizePoint(row,pad,time,charge);
}
QSort(fDPt,0,fNDigits);
}
-void AliL3MemHandler::DigitizePoint(Int_t row, Int_t pad,
+void AliHLTMemHandler::DigitizePoint(Int_t row, Int_t pad,
Int_t time,Int_t charge)
{
//Making one single random cluster.
Int_t dpad = j + pad;
Int_t dtime = k + time;
- if(dpad<0||dpad>=AliL3Transform::GetNPads(row)) continue;
- if(dtime<0||dtime>=AliL3Transform::GetNTimeBins()) continue;
+ if(dpad<0||dpad>=AliHLTTransform::GetNPads(row)) continue;
+ if(dtime<0||dtime>=AliHLTTransform::GetNTimeBins()) continue;
fRandomDigits[fNDigits].fCharge = dcharge;
fRandomDigits[fNDigits].fRow = row;
}
///////////////////////////////////////// Digit IO
-Bool_t AliL3MemHandler::Memory2Binary(UInt_t nrow,AliL3DigitRowData *data)
+Bool_t AliHLTMemHandler::Memory2Binary(UInt_t nrow,AliHLTDigitRowData *data)
{
//Write data to the outputfile as is. No run-length encoding is done.
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2Binary","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2Binary","File")
<<"No Output File"<<ENDLOG;
return kFALSE;
}
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2Binary","Memory")
- <<"Pointer to AliL3DigitRowData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2Binary","Memory")
+ <<"Pointer to AliHLTDigitRowData = 0x0 "<<ENDLOG;
return kFALSE;
}
- AliL3DigitRowData *rowPt = data;
+ AliHLTDigitRowData *rowPt = data;
Int_t outsize = 0;
for(UInt_t i=0;i<nrow;i++){
- Int_t size = sizeof(AliL3DigitData) * rowPt->fNDigit
- + sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData) * rowPt->fNDigit
+ + sizeof(AliHLTDigitRowData);
outsize += size;
fwrite(rowPt,size,1,fOutBinary);
Byte_t *bytePt =(Byte_t *) rowPt;
bytePt += size;
- rowPt = (AliL3DigitRowData *) bytePt;
+ rowPt = (AliHLTDigitRowData *) bytePt;
}
- LOG(AliL3Log::kDebug,"AliL3MemHandler::Memory2Binary","Memory")
- <<AliL3Log::kDec<<"Wrote "<<outsize<<" Bytes to Memory ("
+ LOG(AliHLTLog::kDebug,"AliHLTMemHandler::Memory2Binary","Memory")
+ <<AliHLTLog::kDec<<"Wrote "<<outsize<<" Bytes to Memory ("
<<nrow<<" Rows)"<<ENDLOG;
return kTRUE;
}
-Bool_t AliL3MemHandler::Binary2Memory(UInt_t & nrow,AliL3DigitRowData *data)
+Bool_t AliHLTMemHandler::Binary2Memory(UInt_t & nrow,AliHLTDigitRowData *data)
{
//Read inputfile into memory as is, and store it in data.
// No run-length encoding is assumed.
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2Memory","File")
<<"No Input File"<<ENDLOG;
return kFALSE;
}
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2Memory","Memory")
- <<"Pointer to AliL3DigitRowData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2Memory","Memory")
+ <<"Pointer to AliHLTDigitRowData = 0x0 "<<ENDLOG;
return kFALSE;
}
rewind(fInBinary);
- AliL3DigitRowData *rowPt = data;
+ AliHLTDigitRowData *rowPt = data;
UInt_t rowcount = 0;
Int_t outsize =0;
while(!feof(fInBinary)){
Byte_t *bytePt =(Byte_t *) rowPt;
- if(fread(rowPt,sizeof(AliL3DigitRowData),1,fInBinary)!=1) break;
+ if(fread(rowPt,sizeof(AliHLTDigitRowData),1,fInBinary)!=1) break;
- bytePt += sizeof(AliL3DigitRowData);
- outsize += sizeof(AliL3DigitRowData);
+ bytePt += sizeof(AliHLTDigitRowData);
+ outsize += sizeof(AliHLTDigitRowData);
- Int_t size = sizeof(AliL3DigitData) * rowPt->fNDigit;
+ Int_t size = sizeof(AliHLTDigitData) * rowPt->fNDigit;
//if(fread(bytePt,size,1,fInBinary)!=1) break;
fread(bytePt,size,1,fInBinary);
bytePt += size;
outsize += size;
- rowPt = (AliL3DigitRowData *) bytePt;
+ rowPt = (AliHLTDigitRowData *) bytePt;
rowcount++;
}
nrow= rowcount;
- LOG(AliL3Log::kDebug,"AliL3MemHandler::Binary2Memory","Memory")
- <<AliL3Log::kDec<<"Wrote "<<outsize<<" Bytes to Memory ("
+ LOG(AliHLTLog::kDebug,"AliHLTMemHandler::Binary2Memory","Memory")
+ <<AliHLTLog::kDec<<"Wrote "<<outsize<<" Bytes to Memory ("
<<rowcount<<" Rows)"<<ENDLOG;
return kTRUE;
}
-void AliL3MemHandler::AddData(AliL3DigitData *data,UInt_t & ndata,
+void AliHLTMemHandler::AddData(AliHLTDigitData *data,UInt_t & ndata,
UInt_t /*row*/,UShort_t pad,UShort_t time,UShort_t charge) const
{
//add some data
ndata++;
}
-void AliL3MemHandler::AddRandom(AliL3DigitData *data, UInt_t & ndata)
+void AliHLTMemHandler::AddRandom(AliHLTDigitData *data, UInt_t & ndata)
{
//add some random data
data[ndata].fPad = fDPt[fNUsed]->fPad;
fNUsed++;
}
-void AliL3MemHandler::MergeDataRandom(AliL3DigitData *data, UInt_t & ndata,
+void AliHLTMemHandler::MergeDataRandom(AliHLTDigitData *data, UInt_t & ndata,
UInt_t row, UShort_t pad, UShort_t time, UShort_t charge)
{
//merge random data
data[ndata].fCharge = charge;
while(ComparePoints(row,pad,time)==0){
Int_t ch = data[ndata].fCharge + fDPt[fNUsed]->fCharge;
- if(charge>=AliL3Transform::GetADCSat()) ch = AliL3Transform::GetADCSat();
+ if(charge>=AliHLTTransform::GetADCSat()) ch = AliHLTTransform::GetADCSat();
data[ndata].fCharge = ch;
fNUsed++;
}
ndata++;
}
-void AliL3MemHandler::AddDataRandom(AliL3DigitData *data, UInt_t & ndata,
+void AliHLTMemHandler::AddDataRandom(AliHLTDigitData *data, UInt_t & ndata,
UInt_t row, UShort_t pad, UShort_t time, UShort_t charge)
{
//add data random
}
}
-void AliL3MemHandler::Write(UInt_t *comp, UInt_t & index,
+void AliHLTMemHandler::Write(UInt_t *comp, UInt_t & index,
UInt_t & subindex, UShort_t value) const
{
//write compressed data
else subindex++;
}
-UShort_t AliL3MemHandler::Read(UInt_t *comp, UInt_t & index, UInt_t & subindex) const
+UShort_t AliHLTMemHandler::Read(UInt_t *comp, UInt_t & index, UInt_t & subindex) const
{
//read compressed data
UInt_t shift[3] = {0,10,20};
return value;
}
-UShort_t AliL3MemHandler::Test(UInt_t *comp,
+UShort_t AliHLTMemHandler::Test(UInt_t *comp,
UInt_t index, UInt_t subindex) const
{
//supi dupi test
return (comp[index]>>shift[subindex])&0x03ff;
}
-Int_t AliL3MemHandler::Memory2CompMemory(UInt_t nrow,
- AliL3DigitRowData *data,UInt_t *comp)
+Int_t AliHLTMemHandler::Memory2CompMemory(UInt_t nrow,
+ AliHLTDigitRowData *data,UInt_t *comp)
{
//Performs run-length encoding on data stored in memory pointed to by data.
//The compressed data is written to comp.
if(!comp){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2CompMemory","Memory")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2CompMemory","Memory")
<<"Pointer to compressed data = 0x0 "<<ENDLOG;
return 0;
}
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2CompMemory","Memory")
- <<"Pointer to AliL3DigitRowData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2CompMemory","Memory")
+ <<"Pointer to AliHLTDigitRowData = 0x0 "<<ENDLOG;
return 0;
}
- AliL3DigitRowData *rowPt = data;
+ AliHLTDigitRowData *rowPt = data;
UInt_t index=0;
UInt_t subindex=0;
Write(comp,index,subindex,0);
}
- Int_t size = sizeof(AliL3DigitData) * rowPt->fNDigit+
- sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData) * rowPt->fNDigit+
+ sizeof(AliHLTDigitRowData);
Byte_t *bytePt =(Byte_t *) rowPt;
bytePt += size;
- rowPt = (AliL3DigitRowData *) bytePt;
+ rowPt = (AliHLTDigitRowData *) bytePt;
}
while(subindex)
Write(comp,index,subindex,0);
return index * sizeof(UInt_t);
}
-Int_t AliL3MemHandler::CompMemory2Memory(UInt_t nrow,
- AliL3DigitRowData *data,UInt_t *comp)
+Int_t AliHLTMemHandler::CompMemory2Memory(UInt_t nrow,
+ AliHLTDigitRowData *data,UInt_t *comp)
{
//Uncompress the run-length encoded data in memory pointed to by comp, and
// store it in data.
if(!comp){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CompMemory2Memory","Memory")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CompMemory2Memory","Memory")
<<"Pointer to compressed data = 0x0 "<<ENDLOG;
return 0;
}
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CompMemory2Memory","Memory")
- <<"Pointer to AliL3DigitRowData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CompMemory2Memory","Memory")
+ <<"Pointer to AliHLTDigitRowData = 0x0 "<<ENDLOG;
return 0;
}
Int_t outsize=0;
- AliL3DigitRowData *rowPt = data;
+ AliHLTDigitRowData *rowPt = data;
UInt_t index=0;
UInt_t subindex=0;
}
}
rowPt->fNDigit = ndigit;
- Int_t size = sizeof(AliL3DigitData) * rowPt->fNDigit+
- sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData) * rowPt->fNDigit+
+ sizeof(AliHLTDigitRowData);
Byte_t *bytePt =(Byte_t *) rowPt;
bytePt += size;
outsize += size;
- rowPt = (AliL3DigitRowData *) bytePt;
+ rowPt = (AliHLTDigitRowData *) bytePt;
}
return outsize;
}
-UInt_t AliL3MemHandler::GetCompMemorySize(UInt_t nrow,AliL3DigitRowData *data) const
+UInt_t AliHLTMemHandler::GetCompMemorySize(UInt_t nrow,AliHLTDigitRowData *data) const
{
//Return the size of RLE data, after compressing data.
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::GetCompMemorySize","Memory")
- <<"Pointer to AliL3DigitRowData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::GetCompMemorySize","Memory")
+ <<"Pointer to AliHLTDigitRowData = 0x0 "<<ENDLOG;
return 0;
}
- AliL3DigitRowData *rowPt = data;
+ AliHLTDigitRowData *rowPt = data;
UInt_t index=0;
for(UInt_t i=0;i<nrow;i++){
index++;
}
- Int_t size = sizeof(AliL3DigitData) * rowPt->fNDigit+
- sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData) * rowPt->fNDigit+
+ sizeof(AliHLTDigitRowData);
Byte_t *bytePt =(Byte_t *) rowPt;
bytePt += size;
- rowPt = (AliL3DigitRowData *) bytePt;
+ rowPt = (AliHLTDigitRowData *) bytePt;
}
while(index%3)
index++;
return (index/3) * sizeof(UInt_t);
}
-UInt_t AliL3MemHandler::GetMemorySize(UInt_t nrow,UInt_t *comp) const
+UInt_t AliHLTMemHandler::GetMemorySize(UInt_t nrow,UInt_t *comp) const
{
//get memory size
if(!comp){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::GetMemorySize","Memory")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::GetMemorySize","Memory")
<<"Pointer to compressed data = 0x0 "<<ENDLOG;
return 0;
}
if(Read(comp,index,subindex)==0) break;
}
}
- Int_t size = sizeof(AliL3DigitData) * ndigit+
- sizeof(AliL3DigitRowData);
+ Int_t size = sizeof(AliHLTDigitData) * ndigit+
+ sizeof(AliHLTDigitRowData);
outsize += size;
}
return outsize;
}
-UInt_t AliL3MemHandler::GetNRow(UInt_t *comp,UInt_t size)
+UInt_t AliHLTMemHandler::GetNRow(UInt_t *comp,UInt_t size)
{
//get number of rows
if(!comp){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::GetNRow","Memory")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::GetNRow","Memory")
<<"Pointer to compressed data = 0x0 "<<ENDLOG;
return 0;
}
return nrow;
}
-Bool_t AliL3MemHandler::CompMemory2CompBinary(UInt_t nrow,UInt_t *comp,
+Bool_t AliHLTMemHandler::CompMemory2CompBinary(UInt_t nrow,UInt_t *comp,
UInt_t size)
{
//Write the RLE data in comp to the output file.
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CompMemory2CompBinary","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CompMemory2CompBinary","File")
<<"No Output File"<<ENDLOG;
return kFALSE;
}
if(!comp){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CompMemory2CompBinary","Memory")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CompMemory2CompBinary","Memory")
<<"Pointer to compressed data = 0x0 "<<ENDLOG;
return kFALSE;
}
if(size==0)
size=GetMemorySize(nrow,comp);
if(!size){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CompMemory2CompBinary","Memory")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CompMemory2CompBinary","Memory")
<<"Memory size = 0 "<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3MemHandler::CompBinary2CompMemory(UInt_t & nrow,UInt_t *comp)
+Bool_t AliHLTMemHandler::CompBinary2CompMemory(UInt_t & nrow,UInt_t *comp)
{
//Read the RLE data from file, and store it in comp. No unpacking yet.
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CompBinary2CompMemory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CompBinary2CompMemory","File")
<<"No Output File"<<ENDLOG;
return kFALSE;
}
if(!comp){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::CompBinary2CompMemory","Memory")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::CompBinary2CompMemory","Memory")
<<"Pointer to compressed data = 0x0 "<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-AliL3DigitRowData *AliL3MemHandler::CompBinary2Memory(UInt_t & nrow)
+AliHLTDigitRowData *AliHLTMemHandler::CompBinary2Memory(UInt_t & nrow)
{
// Read the RLE inputfile, unpack it and return the pointer to it.
- AliL3MemHandler * handler = new AliL3MemHandler();
+ AliHLTMemHandler * handler = new AliHLTMemHandler();
handler->SetBinaryInput(fInBinary);
UInt_t *comp =(UInt_t *)handler->Allocate();
handler->CompBinary2CompMemory(nrow,comp);
UInt_t size = GetMemorySize(nrow,comp);
- AliL3DigitRowData *data = (AliL3DigitRowData *)Allocate(size);
+ AliHLTDigitRowData *data = (AliHLTDigitRowData *)Allocate(size);
CompMemory2Memory(nrow,data,comp);
handler->Free();
delete handler;
return data;
}
-Bool_t AliL3MemHandler::Memory2CompBinary(UInt_t nrow,AliL3DigitRowData *data)
+Bool_t AliHLTMemHandler::Memory2CompBinary(UInt_t nrow,AliHLTDigitRowData *data)
{
//Perform RLE on the data, and write it to the output file.
Bool_t out = kTRUE;
- AliL3MemHandler * handler = new AliL3MemHandler();
+ AliHLTMemHandler * handler = new AliHLTMemHandler();
UInt_t size = GetCompMemorySize(nrow,data);
UInt_t *comp =(UInt_t *)handler->Allocate(size);
Memory2CompMemory(nrow,data,comp);
///////////////////////////////////////// Point IO
-Bool_t AliL3MemHandler::Memory2Binary(UInt_t npoint,AliL3SpacePointData *data)
+Bool_t AliHLTMemHandler::Memory2Binary(UInt_t npoint,AliHLTSpacePointData *data)
{
//Writing spacepoints stored in data to the outputfile.
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2Binary","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2Binary","File")
<<"No Output File"<<ENDLOG;
return kFALSE;
}
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2Binary","Memory")
- <<"Pointer to AliL3SpacePointData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2Binary","Memory")
+ <<"Pointer to AliHLTSpacePointData = 0x0 "<<ENDLOG;
return kFALSE;
}
- UInt_t size = npoint*sizeof(AliL3SpacePointData);
+ UInt_t size = npoint*sizeof(AliHLTSpacePointData);
fwrite(data,size,1,fOutBinary);
return kTRUE;
}
-Bool_t AliL3MemHandler::Transform(UInt_t npoint,AliL3SpacePointData *data,Int_t slice)
+Bool_t AliHLTMemHandler::Transform(UInt_t npoint,AliHLTSpacePointData *data,Int_t slice)
{
//Transform the space points in data, to global coordinates in slice.
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Transform","Memory")
- <<"Pointer to AliL3SpacePointData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Transform","Memory")
+ <<"Pointer to AliHLTSpacePointData = 0x0 "<<ENDLOG;
return kFALSE;
}
xyz[0] = data[i].fX;
xyz[1] = data[i].fY;
xyz[2] = data[i].fZ;
- AliL3Transform::Local2Global(xyz,slice);
+ AliHLTTransform::Local2Global(xyz,slice);
data[i].fX = xyz[0];
data[i].fY = xyz[1];
data[i].fZ = xyz[2];
return kTRUE;
}
-Bool_t AliL3MemHandler::Binary2Memory(UInt_t & npoint,AliL3SpacePointData *data)
+Bool_t AliHLTMemHandler::Binary2Memory(UInt_t & npoint,AliHLTSpacePointData *data)
{
//Read the space points in inputfile, and store it in data.
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2Memory","File")
<<"No Input File"<<ENDLOG;
return kFALSE;
}
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2Memory","Memory")
- <<"Pointer to AliL3SpacePointData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2Memory","Memory")
+ <<"Pointer to AliHLTSpacePointData = 0x0 "<<ENDLOG;
return kFALSE;
}
Int_t size = GetFileSize();
- npoint = size/sizeof(AliL3SpacePointData);
+ npoint = size/sizeof(AliHLTSpacePointData);
if(size==0) {
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2Memory","File")
<<"File Size == 0"<<ENDLOG;
return kFALSE;
}
if(fread(data,size,1,fInBinary)!=1){
- LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File")
+ LOG(AliHLTLog::kFatal,"AliHLTMemHandler::Binary2Memory","File")
<<"File Read Error "<<ENDLOG;
return kFALSE;
}
- if(size%sizeof(AliL3SpacePointData)){
- LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File Size")
+ if(size%sizeof(AliHLTSpacePointData)){
+ LOG(AliHLTLog::kFatal,"AliHLTMemHandler::Binary2Memory","File Size")
<<"File Size wrong "<<ENDLOG;
return kFALSE;
}
- LOG(AliL3Log::kDebug,"AliL3MemHandler::Binary2Memory","File")
- <<AliL3Log::kDec<<"Wrote "<<size<<" Bytes to Memory"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTMemHandler::Binary2Memory","File")
+ <<AliHLTLog::kDec<<"Wrote "<<size<<" Bytes to Memory"<<ENDLOG;
return kTRUE;
}
///////////////////////////////////////// Track IO
-Bool_t AliL3MemHandler::Memory2Binary(UInt_t ntrack,AliL3TrackSegmentData *data)
+Bool_t AliHLTMemHandler::Memory2Binary(UInt_t ntrack,AliHLTTrackSegmentData *data)
{
//Write the tracks stored in data, to outputfile.
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2Binary","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2Binary","File")
<<"No Output File"<<ENDLOG;
return kFALSE;
}
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2Binary","Memory")
- <<"Pointer to AliL3TrackSegmentData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2Binary","Memory")
+ <<"Pointer to AliHLTTrackSegmentData = 0x0 "<<ENDLOG;
return kFALSE;
}
- AliL3TrackSegmentData *trackPt = data;
+ AliHLTTrackSegmentData *trackPt = data;
for(UInt_t i=0;i<ntrack;i++){
- Int_t size=sizeof(AliL3TrackSegmentData)+trackPt->fNPoints*sizeof(UInt_t);
+ Int_t size=sizeof(AliHLTTrackSegmentData)+trackPt->fNPoints*sizeof(UInt_t);
fwrite(trackPt,size,1,fOutBinary);
Byte_t *bytePt = (Byte_t*) trackPt;
bytePt += size;
- trackPt = (AliL3TrackSegmentData*) bytePt;
+ trackPt = (AliHLTTrackSegmentData*) bytePt;
}
- LOG(AliL3Log::kDebug,"AliL3MemHandler::Memory2Binary","File")
- <<AliL3Log::kDec<<"Wrote "<<ntrack<<" Tracks to File"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTMemHandler::Memory2Binary","File")
+ <<AliHLTLog::kDec<<"Wrote "<<ntrack<<" Tracks to File"<<ENDLOG;
return kTRUE;
}
-Bool_t AliL3MemHandler::Binary2Memory(UInt_t & ntrack,AliL3TrackSegmentData *data)
+Bool_t AliHLTMemHandler::Binary2Memory(UInt_t & ntrack,AliHLTTrackSegmentData *data)
{
//Read the tracks in inputfile, and store it in data.
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2Memory","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2Memory","File")
<<"No Input File"<<ENDLOG;
return kFALSE;
}
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2Memory","Memory")
- <<"Pointer to AliL3TrackSegmentData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2Memory","Memory")
+ <<"Pointer to AliHLTTrackSegmentData = 0x0 "<<ENDLOG;
return kFALSE;
}
ntrack=0;
- AliL3TrackSegmentData *trackPt = data;
+ AliHLTTrackSegmentData *trackPt = data;
rewind(fInBinary);
while(!feof(fInBinary)){
- if(fread(trackPt,sizeof(AliL3TrackSegmentData),1,fInBinary)!=1) break;
+ if(fread(trackPt,sizeof(AliHLTTrackSegmentData),1,fInBinary)!=1) break;
Int_t size=trackPt->fNPoints*sizeof(UInt_t);
if(fread(trackPt->fPointIDs,size,1,fInBinary)!=1) break;
Byte_t *bytePt = (Byte_t*) trackPt;
- bytePt += sizeof(AliL3TrackSegmentData)+size;
- trackPt = (AliL3TrackSegmentData*) bytePt;
+ bytePt += sizeof(AliHLTTrackSegmentData)+size;
+ trackPt = (AliHLTTrackSegmentData*) bytePt;
ntrack++;
}
- LOG(AliL3Log::kDebug,"AliL3MemHandler::Binary2Memory","File")
- <<AliL3Log::kDec<<"Wrote "<<ntrack<<" Tracks to Memory"<<ENDLOG;
+ LOG(AliHLTLog::kDebug,"AliHLTMemHandler::Binary2Memory","File")
+ <<AliHLTLog::kDec<<"Wrote "<<ntrack<<" Tracks to Memory"<<ENDLOG;
return kTRUE;
}
-Bool_t AliL3MemHandler::TrackArray2Binary(AliL3TrackArray *array)
+Bool_t AliHLTMemHandler::TrackArray2Binary(AliHLTTrackArray *array)
{
//Write the trackarray to the outputfile.
if(!fOutBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::TrackArray2Binary","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::TrackArray2Binary","File")
<<"No Output File"<<ENDLOG;
return kFALSE;
}
if(!array){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::TrackArray2Binary","Memory")
- <<"Pointer to AliL3TrackArray = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::TrackArray2Binary","Memory")
+ <<"Pointer to AliHLTTrackArray = 0x0 "<<ENDLOG;
return kFALSE;
}
- AliL3TrackSegmentData *data = (AliL3TrackSegmentData *)Allocate(array);
+ AliHLTTrackSegmentData *data = (AliHLTTrackSegmentData *)Allocate(array);
UInt_t ntrack;
TrackArray2Memory(ntrack,data,array);
return kTRUE;
}
-Bool_t AliL3MemHandler::Binary2TrackArray(AliL3TrackArray *array)
+Bool_t AliHLTMemHandler::Binary2TrackArray(AliHLTTrackArray *array)
{
//Read the tracks in inputfile, and fill it in trackarray.
//array should already be constructed.
if(!fInBinary){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2TrackArray","File")
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2TrackArray","File")
<<"No Input File"<<ENDLOG;
return kFALSE;
}
if(!array){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Binary2TrackArray","Memory")
- <<"Pointer to AliL3TrackArray = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Binary2TrackArray","Memory")
+ <<"Pointer to AliHLTTrackArray = 0x0 "<<ENDLOG;
return kFALSE;
}
- AliL3TrackSegmentData *data = (AliL3TrackSegmentData *)Allocate();
+ AliHLTTrackSegmentData *data = (AliHLTTrackSegmentData *)Allocate();
UInt_t ntrack;
Binary2Memory(ntrack,data);
Memory2TrackArray(ntrack,data,array);
return kTRUE;
}
-Bool_t AliL3MemHandler::TrackArray2Memory(UInt_t & ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array) const
+Bool_t AliHLTMemHandler::TrackArray2Memory(UInt_t & ntrack,AliHLTTrackSegmentData *data,AliHLTTrackArray *array) const
{
//Fill the trackarray into the AliTrackSegmentData structures before writing to outputfile.
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::TrackArray2Memory","Memory")
- <<"Pointer to AliL3TrackSegmentData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::TrackArray2Memory","Memory")
+ <<"Pointer to AliHLTTrackSegmentData = 0x0 "<<ENDLOG;
return kFALSE;
}
if(!array){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::TrackArray2Memory","Memory")
- <<"Pointer to AliL3TrackArray = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::TrackArray2Memory","Memory")
+ <<"Pointer to AliHLTTrackArray = 0x0 "<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3MemHandler::Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array) const
+Bool_t AliHLTMemHandler::Memory2TrackArray(UInt_t ntrack,AliHLTTrackSegmentData *data,AliHLTTrackArray *array) const
{
//Fill the tracks in data into trackarray.
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2TrackArray","Memory")
- <<"Pointer to AliL3TrackSegmentData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2TrackArray","Memory")
+ <<"Pointer to AliHLTTrackSegmentData = 0x0 "<<ENDLOG;
return kFALSE;
}
if(!array){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2TrackArray","Memory")
- <<"Pointer to AliL3TrackArray = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2TrackArray","Memory")
+ <<"Pointer to AliHLTTrackArray = 0x0 "<<ENDLOG;
return kFALSE;
}
array->FillTracks(ntrack,data);
return kTRUE;
}
-Bool_t AliL3MemHandler::Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array,Int_t slice) const
+Bool_t AliHLTMemHandler::Memory2TrackArray(UInt_t ntrack,AliHLTTrackSegmentData *data,AliHLTTrackArray *array,Int_t slice) const
{
//Fill the tracks in data into trackarray, and rotate the tracks to global coordinates.
if(!data){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2TrackArray","Memory")
- <<"Pointer to AliL3TrackSegmentData = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2TrackArray","Memory")
+ <<"Pointer to AliHLTTrackSegmentData = 0x0 "<<ENDLOG;
return kFALSE;
}
if(!array){
- LOG(AliL3Log::kWarning,"AliL3MemHandler::Memory2TrackArray","Memory")
- <<"Pointer to AliL3TrackArray = 0x0 "<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMemHandler::Memory2TrackArray","Memory")
+ <<"Pointer to AliHLTTrackArray = 0x0 "<<ENDLOG;
return kFALSE;
}
array->FillTracks(ntrack,data,slice);
return kTRUE;
}
-void AliL3MemHandler::UpdateRowPointer(AliL3DigitRowData *&tempPt)
+void AliHLTMemHandler::UpdateRowPointer(AliHLTDigitRowData *&tempPt)
{
//Update the data pointer to the next padrow in memory.
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData) + tempPt->fNDigit*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData) + tempPt->fNDigit*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}
-Int_t AliL3MemHandler::ComparePoints(UInt_t /*row*/,UShort_t pad,UShort_t time) const
+Int_t AliHLTMemHandler::ComparePoints(UInt_t /*row*/,UShort_t pad,UShort_t time) const
{
//compare two points
if(fNUsed>=fNDigits) return -2;
return 1;
}
-Int_t AliL3MemHandler::CompareDigits(AliL3RandomDigitData *a,AliL3RandomDigitData *b) const
+Int_t AliHLTMemHandler::CompareDigits(AliHLTRandomDigitData *a,AliHLTRandomDigitData *b) const
{
//compare two digits
if(a->fPad==b->fPad && a->fTime == b->fTime) return 0;
#define ALIL3_MEMHANDLER_H
//_____________________________________________________________
-// AliL3MemHandler
+// AliHLTMemHandler
//
// The HLT Binary File handler
//
// Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
// *-- Copyright © ALICE HLT Group
-class AliL3DigitData;
-class AliL3SpacePointData;
-class AliL3DigitRowData;
-class AliL3TrackSegmentData;
-class AliL3TrackArray;
-class AliL3RandomPointData;
-class AliL3RandomDigitData;
+class AliHLTDigitData;
+class AliHLTSpacePointData;
+class AliHLTDigitRowData;
+class AliHLTTrackSegmentData;
+class AliHLTTrackArray;
+class AliHLTRandomPointData;
+class AliHLTRandomDigitData;
#ifdef use_newio
class AliRunLoader;
#endif
class AliTPCRawStream;
-class AliL3MemHandler {
+class AliHLTMemHandler {
public:
- AliL3MemHandler();
- virtual ~AliL3MemHandler();
- AliL3MemHandler(const AliL3MemHandler& /*m*/){};
- AliL3MemHandler& operator=(const AliL3MemHandler& /*&m*/)
+ AliHLTMemHandler();
+ virtual ~AliHLTMemHandler();
+ AliHLTMemHandler(const AliHLTMemHandler& /*m*/){};
+ AliHLTMemHandler& operator=(const AliHLTMemHandler& /*&m*/)
{return (*this);}
void Reset(){CloseBinaryInput();CloseBinaryOutput();Free();}
void ResetROI();
//Digit IO
- Bool_t Memory2Binary(UInt_t nrow,AliL3DigitRowData *data);
- Bool_t Binary2Memory(UInt_t & nrow,AliL3DigitRowData *data);
+ Bool_t Memory2Binary(UInt_t nrow,AliHLTDigitRowData *data);
+ Bool_t Binary2Memory(UInt_t & nrow,AliHLTDigitRowData *data);
- Int_t Memory2CompMemory(UInt_t nrow,AliL3DigitRowData *data,UInt_t *comp);
- Int_t CompMemory2Memory(UInt_t nrow,AliL3DigitRowData *data,UInt_t *comp);
+ Int_t Memory2CompMemory(UInt_t nrow,AliHLTDigitRowData *data,UInt_t *comp);
+ Int_t CompMemory2Memory(UInt_t nrow,AliHLTDigitRowData *data,UInt_t *comp);
Bool_t CompMemory2CompBinary(UInt_t nrow,UInt_t *comp, UInt_t size=0);
Bool_t CompBinary2CompMemory(UInt_t & nrow,UInt_t *comp);
- virtual AliL3DigitRowData *CompBinary2Memory(UInt_t & nrow);
- virtual Bool_t Memory2CompBinary(UInt_t nrow,AliL3DigitRowData *data);
+ virtual AliHLTDigitRowData *CompBinary2Memory(UInt_t & nrow);
+ virtual Bool_t Memory2CompBinary(UInt_t nrow,AliHLTDigitRowData *data);
UInt_t GetNRow(UInt_t *comp,UInt_t size);
//Point IO
- Bool_t Memory2Binary(UInt_t npoint,AliL3SpacePointData *data);
- Bool_t Binary2Memory(UInt_t & npoint,AliL3SpacePointData *data);
- Bool_t Transform(UInt_t npoint,AliL3SpacePointData *data,Int_t slice);
- static void UpdateRowPointer(AliL3DigitRowData *&tempPt);
+ Bool_t Memory2Binary(UInt_t npoint,AliHLTSpacePointData *data);
+ Bool_t Binary2Memory(UInt_t & npoint,AliHLTSpacePointData *data);
+ Bool_t Transform(UInt_t npoint,AliHLTSpacePointData *data,Int_t slice);
+ static void UpdateRowPointer(AliHLTDigitRowData *&tempPt);
//Track IO
- Bool_t Memory2Binary(UInt_t ntrack,AliL3TrackSegmentData *data);
- Bool_t Binary2Memory(UInt_t & ntrack,AliL3TrackSegmentData *data);
- Bool_t TrackArray2Binary(AliL3TrackArray *array);
- Bool_t Binary2TrackArray(AliL3TrackArray *array);
- Bool_t TrackArray2Memory(UInt_t & ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array) const;
- Bool_t Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array) const;
- Bool_t Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array,Int_t slice) const;
+ Bool_t Memory2Binary(UInt_t ntrack,AliHLTTrackSegmentData *data);
+ Bool_t Binary2Memory(UInt_t & ntrack,AliHLTTrackSegmentData *data);
+ Bool_t TrackArray2Binary(AliHLTTrackArray *array);
+ Bool_t Binary2TrackArray(AliHLTTrackArray *array);
+ Bool_t TrackArray2Memory(UInt_t & ntrack,AliHLTTrackSegmentData *data,AliHLTTrackArray *array) const;
+ Bool_t Memory2TrackArray(UInt_t ntrack,AliHLTTrackSegmentData *data,AliHLTTrackArray *array) const;
+ Bool_t Memory2TrackArray(UInt_t ntrack,AliHLTTrackSegmentData *data,AliHLTTrackArray *array,Int_t slice) const;
//Memory Allocation
UInt_t GetAllocatedSize() const {return fSize;}
UInt_t GetFileSize();
UInt_t GetMemorySize(UInt_t nrow,UInt_t *comp) const;
- UInt_t GetCompMemorySize(UInt_t nrow,AliL3DigitRowData *data) const;
+ UInt_t GetCompMemorySize(UInt_t nrow,AliHLTDigitRowData *data) const;
UInt_t GetRandomSize() const;
Byte_t *Allocate(UInt_t size);
Byte_t *Allocate(); // allocate size of Binary Input File
- Byte_t *Allocate(AliL3TrackArray *array);
+ Byte_t *Allocate(AliHLTTrackArray *array);
Byte_t *GetDataPointer(UInt_t &size) {size = fSize; return fPt;}
FILE *GetFilePointer() {return fInBinary;}
void Free();
virtual void CloseMCOutput(){fDummy=0; return;}
virtual Bool_t AliDigits2Binary(Int_t /*event*/=0,Bool_t /*altro*/=kFALSE){fDummy=0; return 0;}
virtual Bool_t AliDigits2CompBinary(Int_t /*event*/=0,Bool_t /*altro*/=kFALSE){fDummy=0; return 0;}
- virtual AliL3DigitRowData *AliDigits2Memory(UInt_t & /*nrow*/,Int_t /*event*/=0){fDummy=0; return 0;}
- virtual AliL3DigitRowData *AliAltroDigits2Memory(UInt_t & /*nrow*/,Int_t /*event*/=0,Bool_t /*eventmerge*/=kFALSE){fDummy=0; return 0;}
- virtual void AliDigits2RootFile(AliL3DigitRowData */*rowPt*/,Char_t */*new_digitsfile*/){fDummy=0; return;}
+ virtual AliHLTDigitRowData *AliDigits2Memory(UInt_t & /*nrow*/,Int_t /*event*/=0){fDummy=0; return 0;}
+ virtual AliHLTDigitRowData *AliAltroDigits2Memory(UInt_t & /*nrow*/,Int_t /*event*/=0,Bool_t /*eventmerge*/=kFALSE){fDummy=0; return 0;}
+ virtual void AliDigits2RootFile(AliHLTDigitRowData */*rowPt*/,Char_t */*new_digitsfile*/){fDummy=0; return;}
virtual Bool_t AliPoints2Binary(Int_t /*eventn*/=0){fDummy=0; return 0;}
- virtual AliL3SpacePointData *AliPoints2Memory(UInt_t & /*npoint*/,Int_t /*eventn*/=0){fDummy=0; return 0;}
+ virtual AliHLTSpacePointData *AliPoints2Memory(UInt_t & /*npoint*/,Int_t /*eventn*/=0){fDummy=0; return 0;}
- //AliL3RawDataFileHandler
+ //AliHLTRawDataFileHandler
virtual Bool_t SetRawInput(Char_t */*name*/){fDummy=0; return 0;}
virtual Bool_t SetRawInput(ifstream */*file*/){fDummy=0; return 0;}
virtual void CloseRawInput(){}
virtual void CloseRawPedestalsInput(){}
virtual Int_t ReadRawPedestalsInput(){fDummy=0; return 0;}
- virtual AliL3DigitRowData* RawData2Memory(UInt_t &/*nrow*/,Int_t /*event*/=-1){fDummy=0; return 0;}
+ virtual AliHLTDigitRowData* RawData2Memory(UInt_t &/*nrow*/,Int_t /*event*/=-1){fDummy=0; return 0;}
virtual Bool_t RawData2CompMemory(Int_t /*event*/=-1){fDummy=0; return 0;}
- //AliL3DDLDataFileHandler
+ //AliHLTDDLDataFileHandler
#ifdef use_newio
virtual Bool_t SetReaderInput(AliRawEvent */*rawevent*/){fDummy=0; return 0;}
virtual Bool_t SetReaderInput(Char_t */*name*/,Int_t /*event*/=0){fDummy=0; return 0;}
#endif
virtual void CloseReaderInput(){};
- virtual AliL3DigitRowData* DDLData2Memory(UInt_t &/*nrow*/,Int_t /*event*/=-1){fDummy=0; return 0;}
+ virtual AliHLTDigitRowData* DDLData2Memory(UInt_t &/*nrow*/,Int_t /*event*/=-1){fDummy=0; return 0;}
virtual Bool_t DDLData2CompBinary(Int_t /*event*/=-1){fDummy=0; return 0;}
virtual AliTPCRawStream* GetTPCRawStream(){fDummy=0; return 0;}
Int_t fNUsed; //count used digits
Int_t fNDigits; //count digits from digitstree
- AliL3RandomDigitData **fDPt;//!
- AliL3RandomDigitData *fRandomDigits;//!
+ AliHLTRandomDigitData **fDPt;//!
+ AliHLTRandomDigitData *fRandomDigits;//!
Int_t fDummy; // to fool the virtual const problem
// of the coding conventions tool
UShort_t Test(UInt_t *comp, UInt_t index, UInt_t subindex) const;
void DigitizePoint(Int_t row,Int_t pad, Int_t time,Int_t charge);
- void QSort(AliL3RandomDigitData **a, Int_t first, Int_t last);
+ void QSort(AliHLTRandomDigitData **a, Int_t first, Int_t last);
Int_t ComparePoints(UInt_t row,UShort_t pad,UShort_t time) const ;
- Int_t CompareDigits(AliL3RandomDigitData *a,AliL3RandomDigitData *b) const;
- void AddData(AliL3DigitData *data,UInt_t & ndata,
+ Int_t CompareDigits(AliHLTRandomDigitData *a,AliHLTRandomDigitData *b) const;
+ void AddData(AliHLTDigitData *data,UInt_t & ndata,
UInt_t row,UShort_t pad,UShort_t time,UShort_t charge) const;
- void AddRandom(AliL3DigitData *data,UInt_t & ndata);
- void MergeDataRandom(AliL3DigitData *data,UInt_t & ndata,
+ void AddRandom(AliHLTDigitData *data,UInt_t & ndata);
+ void MergeDataRandom(AliHLTDigitData *data,UInt_t & ndata,
UInt_t row,UShort_t pad,UShort_t time,UShort_t charge);
- void AddDataRandom(AliL3DigitData *data,UInt_t & ndata,
+ void AddDataRandom(AliHLTDigitData *data,UInt_t & ndata,
UInt_t row,UShort_t pad,UShort_t time,UShort_t charge);
- ClassDef(AliL3MemHandler,1) // Memory handler class
+ ClassDef(AliHLTMemHandler,1) // Memory handler class
};
+
+typedef AliHLTMemHandler AliL3MemHandler; // for backward compatibility
+
#endif
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © Uli
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Merger.h"
-#include "AliL3Track.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3Transform.h"
-#include "AliL3TrackArray.h"
+#include "AliHLTLogging.h"
+#include "AliHLTMerger.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrackArray.h"
#ifdef use_root //use root ntuple for slow merge
#include <TNtuple.h>
#include <TFile.h>
#endif
-/** \class AliL3Merger
+/** \class AliHLTMerger
<pre>
//_____________________________________________________________
-// AliL3Merger
+// AliHLTMerger
//
// The L3 merger base class
//
using namespace std;
#endif
-ClassImp(AliL3Merger)
+ClassImp(AliHLTMerger)
-AliL3Merger::AliL3Merger()
+AliHLTMerger::AliHLTMerger()
{
//Default constructor
fInTrack=0;
fNIn=0;
}
-AliL3Merger::~AliL3Merger()
+AliHLTMerger::~AliHLTMerger()
{
//Destructor
DeleteArray();
}
-void AliL3Merger::InitMerger(Int_t ntrackarrays,Char_t *tracktype)
+void AliHLTMerger::InitMerger(Int_t ntrackarrays,Char_t *tracktype)
{
//Used to setup all arrays
- if(strcmp(tracktype,"AliL3Track")==0) fTrackType='t';
- else if(strcmp(tracktype,"AliL3ConfMapTrack")==0) fTrackType='c';
- else if(strcmp(tracktype,"AliL3HoughTrack")==0) fTrackType='h';
+ if(strcmp(tracktype,"AliHLTTrack")==0) fTrackType='t';
+ else if(strcmp(tracktype,"AliHLTConfMapTrack")==0) fTrackType='c';
+ else if(strcmp(tracktype,"AliHLTHoughTrack")==0) fTrackType='h';
else
- LOG(AliL3Log::kError,"AliL3Merger::AliL3Merger","Track types")
+ LOG(AliHLTLog::kError,"AliHLTMerger::AliHLTMerger","Track types")
<<"Unknown tracktype"<<ENDLOG;
SetArray(ntrackarrays);
fCurrentTracks=0;
}
-void AliL3Merger::DeleteArray()
+void AliHLTMerger::DeleteArray()
{
//delete arrays
for(Int_t i=0; i<fNIn;i++)
fOutTrack=0;
}
-void AliL3Merger::SetArray(Int_t nin)
+void AliHLTMerger::SetArray(Int_t nin)
{
//set arrays
DeleteArray();//Make sure arrays are cleaned
fNIn = nin;
- fInTrack = new AliL3TrackArray*[fNIn];
+ fInTrack = new AliHLTTrackArray*[fNIn];
for(Int_t i=0; i<fNIn;i++)
{
if(fTrackType=='h')
- fInTrack[i] = new AliL3TrackArray("AliL3HoughTrack");
+ fInTrack[i] = new AliHLTTrackArray("AliHLTHoughTrack");
else
- fInTrack[i] = new AliL3TrackArray("AliL3Track");
+ fInTrack[i] = new AliHLTTrackArray("AliHLTTrack");
}
if(fTrackType=='h')
- fOutTrack= new AliL3TrackArray("AliL3HoughTrack");
+ fOutTrack= new AliHLTTrackArray("AliHLTHoughTrack");
else
- fOutTrack= new AliL3TrackArray("AliL3Track");
+ fOutTrack= new AliHLTTrackArray("AliHLTTrack");
}
-void AliL3Merger::Reset()
+void AliHLTMerger::Reset()
{
//reset
for(Int_t i=0; i<fNIn;i++)
fOutTrack->Reset();
}
-void AliL3Merger::FillTracks(Int_t ntracks, AliL3TrackSegmentData* tr)
+void AliHLTMerger::FillTracks(Int_t ntracks, AliHLTTrackSegmentData* tr)
{
//Read tracks from shared memory (or memory)
- AliL3TrackArray *destination = GetInTracks(fCurrentTracks);
+ AliHLTTrackArray *destination = GetInTracks(fCurrentTracks);
if(Is2Global())
destination->FillTracks(ntracks, tr, fSlice);
else
destination->FillTracks(ntracks, tr);
}
-void AliL3Merger::AddAllTracks()
+void AliHLTMerger::AddAllTracks()
{
//add all tracks
for(Int_t i=0; i<GetNIn();i++)
{
- AliL3TrackArray *in = GetInTracks(i);
- AliL3TrackArray *out = GetOutTracks();
+ AliHLTTrackArray *in = GetInTracks(i);
+ AliHLTTrackArray *out = GetOutTracks();
out->AddTracks(in);
}
}
-void AliL3Merger::SortGlobalTracks(AliL3Track **tracks, Int_t ntrack)
+void AliHLTMerger::SortGlobalTracks(AliHLTTrack **tracks, Int_t ntrack)
{
//sort global tracks
- AliL3Track **tmp = new AliL3Track*[ntrack];
+ AliHLTTrack **tmp = new AliHLTTrack*[ntrack];
for(Int_t i=0;i<ntrack;i++) tmp[i] = tracks[i];
Int_t *t = new Int_t[ntrack];
for(Int_t i=0;i<ntrack;i++) t[i]=-1;
delete[] tmp;
}
-void AliL3Merger::SortTracks(AliL3Track **tracks, Int_t ntrack) const
+void AliHLTMerger::SortTracks(AliHLTTrack **tracks, Int_t ntrack) const
{
//sort tracks
- AliL3Track **tmp = new AliL3Track*[ntrack];
+ AliHLTTrack **tmp = new AliHLTTrack*[ntrack];
for(Int_t i=0;i<ntrack;i++) tmp[i] = tracks[i];
Int_t *t = new Int_t[ntrack];
for(Int_t i=0;i<ntrack;i++) t[i]=-1;
delete[] tmp;
}
-void AliL3Merger::AddTrack(AliL3TrackArray *mergedtrack,AliL3Track *track)
+void AliHLTMerger::AddTrack(AliHLTTrackArray *mergedtrack,AliHLTTrack *track)
{
// add tracks
- AliL3Track *t[1];
+ AliHLTTrack *t[1];
t[0] = track;
MultiMerge(mergedtrack,t,1);
}
-AliL3Track * AliL3Merger::MergeTracks(AliL3TrackArray *mergedtrack,AliL3Track *t0,AliL3Track *t1)
+AliHLTTrack * AliHLTMerger::MergeTracks(AliHLTTrackArray *mergedtrack,AliHLTTrack *t0,AliHLTTrack *t1)
{
//merge tracks
- AliL3Track *t[2];
+ AliHLTTrack *t[2];
t[0] = t0;
t[1] = t1;
SortTracks(t,2);
return MultiMerge(mergedtrack,t,2);
}
-AliL3Track * AliL3Merger::MultiMerge(AliL3TrackArray *mergedtracks,AliL3Track **tracks, Int_t ntrack)
+AliHLTTrack * AliHLTMerger::MultiMerge(AliHLTTrackArray *mergedtracks,AliHLTTrack **tracks, Int_t ntrack)
{
//multi merge the tracks
//check npoints
{
nps+=tracks[i]->GetNHits();
}
- if(nps>AliL3Transform::GetNRows())
+ if(nps>AliHLTTransform::GetNRows())
{
- LOG(AliL3Log::kWarning,"AliL3Merger::MultiMerge","Adding Points")
- <<AliL3Log::kDec<<"Too many Points: "<<nps<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTMerger::MultiMerge","Adding Points")
+ <<AliHLTLog::kDec<<"Too many Points: "<<nps<<ENDLOG;
return 0;
}
//create new track
- AliL3Track *newtrack = mergedtracks->NextTrack();
+ AliHLTTrack *newtrack = mergedtracks->NextTrack();
//copy points
- UInt_t * nn = new UInt_t[AliL3Transform::GetNRows()];
+ UInt_t * nn = new UInt_t[AliHLTTransform::GetNRows()];
nps = 0;
// for(Int_t i=0;i<ntrack;i++){
memcpy(&nn[nps],tracks[i]->GetHitNumbers(),tracks[i]->GetNHits()*sizeof(UInt_t));
nps+=tracks[i]->GetNHits();
}
- AliL3Track *tpf=tracks[0];
- AliL3Track *tpl=tracks[ntrack-1];
- AliL3Track *best = tpf;
+ AliHLTTrack *tpf=tracks[0];
+ AliHLTTrack *tpl=tracks[ntrack-1];
+ AliHLTTrack *best = tpf;
if(tpf->GetNHits()<tpl->GetNHits() && Is2Global())
best = tpl;//Best means = most points and therefore best fit (in global case)
return newtrack;
}
-void* AliL3Merger::GetNtuple(char *varlist) const
+void* AliHLTMerger::GetNtuple(char *varlist) const
{
//get ntuple
#ifdef use_root
#endif
}
-void* AliL3Merger::GetNtuple() const
+void* AliHLTMerger::GetNtuple() const
{
//get ntuple
#ifdef use_root
#endif
}
-Bool_t AliL3Merger::WriteNtuple(char *filename, void* nt) const
+Bool_t AliHLTMerger::WriteNtuple(char *filename, void* nt) const
{
//write ntuple
#ifdef use_root
#endif
}
-void AliL3Merger::FillNtuple(void *nt,AliL3Track *innertrack,AliL3Track *outertrack)
+void AliHLTMerger::FillNtuple(void *nt,AliHLTTrack *innertrack,AliHLTTrack *outertrack)
{
//fill ntuple
Float_t data[17];
data[2] =Float_t(innertrack->GetPointZ()-outertrack->GetPointZ());
data[3] =Float_t(innertrack->GetKappa()-outertrack->GetKappa());
Double_t psi= innertrack->GetPointPsi() - outertrack->GetPointPsi();
- if(psi>AliL3Transform::Pi()) psi-=AliL3Transform::TwoPi();
- else if(psi<-AliL3Transform::Pi()) psi+=AliL3Transform::TwoPi();
+ if(psi>AliHLTTransform::Pi()) psi-=AliHLTTransform::TwoPi();
+ else if(psi<-AliHLTTransform::Pi()) psi+=AliHLTTransform::TwoPi();
data[4] =Float_t(psi);
data[5] =Float_t(innertrack->GetTgl()-outertrack->GetTgl());
data[6] =Float_t(innertrack->GetCharge()-outertrack->GetCharge());
}
}
-void AliL3Merger::FillNtuple(void *nt,Float_t *data) const
+void AliHLTMerger::FillNtuple(void *nt,Float_t *data) const
{
//fill ntuple
#ifdef use_root
#endif
}
-Double_t AliL3Merger::GetAngle(Double_t a1,Double_t a2)
+Double_t AliHLTMerger::GetAngle(Double_t a1,Double_t a2)
{
//get angle
- Double_t da = a1 - a2 + 4*AliL3Transform::Pi();
- da = fmod(da,AliL3Transform::TwoPi());
- if(da>AliL3Transform::Pi()) da = AliL3Transform::TwoPi()-da;
+ Double_t da = a1 - a2 + 4*AliHLTTransform::Pi();
+ da = fmod(da,AliHLTTransform::TwoPi());
+ if(da>AliHLTTransform::Pi()) da = AliHLTTransform::TwoPi()-da;
return da;
}
-void AliL3Merger::SetParameter(Double_t maxy, Double_t maxz, Double_t maxkappa, Double_t maxpsi, Double_t maxtgl)
+void AliHLTMerger::SetParameter(Double_t maxy, Double_t maxz, Double_t maxkappa, Double_t maxpsi, Double_t maxtgl)
{
//set parameters for merger
fMaxY = maxy;
fMaxTgl = maxtgl;
}
-Bool_t AliL3Merger::IsTrack(AliL3Track *innertrack,AliL3Track *outertrack)
+Bool_t AliHLTMerger::IsTrack(AliHLTTrack *innertrack,AliHLTTrack *outertrack)
{
//is track to be merged
if(innertrack->GetCharge()!=outertrack->GetCharge()) return kFALSE;
if( (!innertrack->IsPoint()) || (!outertrack->IsPoint()) ) return kFALSE;
- if(innertrack->GetNHits()+outertrack->GetNHits()>AliL3Transform::GetNRows()) return kFALSE;
+ if(innertrack->GetNHits()+outertrack->GetNHits()>AliHLTTransform::GetNRows()) return kFALSE;
if(fabs(innertrack->GetPointY()-outertrack->GetPointY()) >fMaxY) return kFALSE;
if(fabs(innertrack->GetPointZ()-outertrack->GetPointZ()) >fMaxZ) return kFALSE;
return kTRUE;
}
-Bool_t AliL3Merger::IsRTrack(AliL3Track *innertrack,AliL3Track *outertrack)
+Bool_t AliHLTMerger::IsRTrack(AliHLTTrack *innertrack,AliHLTTrack *outertrack)
{
//same as IsTrack
return IsTrack(innertrack,outertrack);
}
-Double_t AliL3Merger::TrackDiff(AliL3Track *innertrack,AliL3Track *outertrack)
+Double_t AliHLTMerger::TrackDiff(AliHLTTrack *innertrack,AliHLTTrack *outertrack)
{
//return track difference
Double_t diff =-1;
Double_t x[4],y[4],z[4],dy[4],dz[4];
- AliL3Track *tracks[2];
+ AliHLTTrack *tracks[2];
tracks[0] = innertrack;
tracks[1] = outertrack;
return diff;
}
-void AliL3Merger::PrintDiff(AliL3Track *innertrack,AliL3Track *outertrack)
+void AliHLTMerger::PrintDiff(AliHLTTrack *innertrack,AliHLTTrack *outertrack)
{
// print difference
if(!innertrack->IsPoint()||!outertrack->IsPoint())
{
- LOG(AliL3Log::kInformational,"AliL3Merger::PrintDiff","No Points")<<ENDLOG;
- //cerr<<"AliL3Merger::PrintDiff: No Points"<<endl;
+ LOG(AliHLTLog::kInformational,"AliHLTMerger::PrintDiff","No Points")<<ENDLOG;
+ //cerr<<"AliHLTMerger::PrintDiff: No Points"<<endl;
//cerr<<"---------------------------"<<endl;
return;
}
Double_t dz = innertrack->GetPointZ()-outertrack->GetPointZ();
Double_t dk = innertrack->GetKappa()-outertrack->GetKappa();
Double_t dpsi= innertrack->GetPointPsi() - outertrack->GetPointPsi();
- if(dpsi>AliL3Transform::Pi()) dpsi-=AliL3Transform::TwoPi();
- else if(dpsi<-AliL3Transform::Pi())dpsi+=AliL3Transform::TwoPi();
+ if(dpsi>AliHLTTransform::Pi()) dpsi-=AliHLTTransform::TwoPi();
+ else if(dpsi<-AliHLTTransform::Pi())dpsi+=AliHLTTransform::TwoPi();
//Double_t dpsi = GetAngle(innertrack->GetPointPsi(),outertrack->GetPointPsi());
Double_t dtgl= innertrack->GetTgl()-outertrack->GetTgl();
Double_t dq =innertrack->GetCharge()-outertrack->GetCharge();
- LOG(AliL3Log::kInformational,"AliL3Merger::PrintDiff","Points") <<"dx: "<<dx<<" dy: "<<dy<<" dz: "<<dz<<" dk: "<<dk<<" dpsi: "<<dpsi<<" dtgl: "<<dtgl<<" dq: "<<dq<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTMerger::PrintDiff","Points") <<"dx: "<<dx<<" dy: "<<dy<<" dz: "<<dz<<" dk: "<<dk<<" dpsi: "<<dpsi<<" dtgl: "<<dtgl<<" dq: "<<dq<<ENDLOG;
//fprintf(stderr,"dx: %4f dy: %4f dz: %4f dk: %4f dpsi: %4f dtgl: %4f dq: %4f\n",dx,dy,dz,dk,dpsi,dtgl,dq);
//cerr<<"---------------------------"<<endl;
}
-void AliL3Merger::Print()
+void AliHLTMerger::Print()
{
// print some infos
for(Int_t i=0; i<fNIn; i++)
{
- AliL3TrackArray *ttt= GetInTracks(i);
+ AliHLTTrackArray *ttt= GetInTracks(i);
for(Int_t j =0;j<ttt->GetNTracks();j++)
{
- AliL3Track *track=ttt->GetCheckedTrack(j);
+ AliHLTTrack *track=ttt->GetCheckedTrack(j);
if(!track) continue;
track->CalculateHelix();
// Double_t angle = atan2(track->GetLastPointY(),track->GetLastPointX());
- // if(angle<0) angle+=AliL3Transform::Pi();
+ // if(angle<0) angle+=AliHLTTransform::Pi();
if(track->CalculatePoint(135))
// if(!track->CalculateEdgePoint(angle)) cerr<<"**************"<<endl;
// if(track->CalculatePoint(track->GetLastPointX()))
// if(track->CalculatePoint(0))
{
// PrintTrack(track);
- // track->CalculateReferencePoint(AliL3Transform::Pi()/180.);
+ // track->CalculateReferencePoint(AliHLTTransform::Pi()/180.);
track->CalculateReferencePoint(0.001);
Float_t dx=(float)track->GetPointX()-track->GetPointX();
Float_t dy=(float)track->GetPointY()-track->GetPointY();
Float_t dz=(float)track->GetPointZ()-track->GetPointZ();
- LOG(AliL3Log::kInformational,"AliL3Merger::Print","RefPoint") <<"npt: "<<track->GetNHits()<<" dx: "<<dx<<" dy: "<<dy<<" dz: "<<dz<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTMerger::Print","RefPoint") <<"npt: "<<track->GetNHits()<<" dx: "<<dx<<" dy: "<<dy<<" dz: "<<dz<<ENDLOG;
//fprintf(stderr,"npt: %3d dx: %8.5f dy: %8.5f dz: %8.5f\n",track->GetNHits(),dx,dy,dz);
//cerr<<"---------------------------"<<endl;
}
}
-void AliL3Merger::PrintTrack(AliL3Track *track)
+void AliHLTMerger::PrintTrack(AliHLTTrack *track)
{
//print track info
fprintf(stderr,"npt: %3d pt: %.2f psi: %.2f tgl: %5.2f q: %2d\n",
--- /dev/null
+// @(#) $Id$
+#ifndef ALIL3MERGER_H
+#define ALIL3MERGER_H
+//#define PI 3.14159265358979312
+
+#include "AliHLTRootTypes.h"
+
+class AliHLTTrack;
+class AliHLTTrackSegmentData;
+class AliHLTVertex;
+class AliHLTTrackArray;
+
+class AliHLTMerger {
+ private:
+ Double_t fMaxY; //maxy
+ Double_t fMaxZ; //maxz
+ Double_t fMaxKappa;//maxkappa
+ Double_t fMaxPsi; //maxpsi
+ Double_t fMaxTgl; //maxtgl
+ Char_t fTrackType; //track type to merge
+
+ AliHLTTrackArray **fInTrack;//!
+ Int_t fNIn; //ntracks
+
+ AliHLTTrackArray *fOutTrack;//!
+
+ void SetArray(Int_t nin);
+ void DeleteArray();
+
+ protected:
+ Int_t fCurrentTracks; //current number
+ Int_t fSlice; //slice
+ AliHLTVertex *fVertex; //!
+ Bool_t f2Global; //global
+ Bool_t Is2Global(Bool_t is){f2Global=is;return f2Global;}
+ void InitMerger(Int_t ntrackarrays,Char_t *tracktype="AliHLTTrack");
+
+ public:
+ AliHLTMerger();
+ virtual ~AliHLTMerger();
+
+ Int_t GetNIn() const {return fNIn;}
+ AliHLTTrackArray *GetInTracks(Int_t in){return fInTrack[in];}
+ AliHLTTrackArray *GetOutTracks(){return fOutTrack;}
+
+ Bool_t Is2Global() const {return f2Global;}
+ void SetVertex(AliHLTVertex *vertex){fVertex=vertex;}
+ void Reset();
+ void SetParameter(Double_t maxy=1., Double_t maxz=1., Double_t maxkappa=0.001, Double_t maxpsi=0.05, Double_t maxtgl=0.1);
+ void FillTracks(Int_t ntracks, AliHLTTrackSegmentData* tr); //Fill tracks in fTrackArray[fCurrentTracks]
+ Double_t GetAngle(Double_t a1,Double_t a2);
+ void* GetNtuple() const;
+ void* GetNtuple(char *varlist) const;
+ Bool_t WriteNtuple(char *filename,void* nt) const;
+ void FillNtuple(void* nt,Float_t *data) const ;
+ void FillNtuple(void* nt,AliHLTTrack *innertrack,AliHLTTrack *outertrack);
+ void AddAllTracks();//Copy all Tracks to Output Array
+ void SortGlobalTracks(AliHLTTrack **tracks, Int_t ntrack);
+ virtual void SortTracks(AliHLTTrack **tracks, Int_t ntrack) const;
+ virtual void AddTrack(AliHLTTrackArray *mergedtrack,AliHLTTrack *track);
+ virtual AliHLTTrack * MultiMerge(AliHLTTrackArray *mergedtrack,AliHLTTrack **tracks, Int_t ntrack);
+ AliHLTTrack * MergeTracks(AliHLTTrackArray *mergedtrack,AliHLTTrack *t0,AliHLTTrack *t1);
+ virtual Bool_t IsTrack(AliHLTTrack *innertrack,AliHLTTrack *outertrack);
+ Bool_t IsRTrack(AliHLTTrack *innertrack,AliHLTTrack *outertrack);
+ Double_t TrackDiff(AliHLTTrack *innertrack,AliHLTTrack *outertrack);
+ void Print();
+ void PrintDiff(AliHLTTrack *innertrack,AliHLTTrack *outertrack);
+ void PrintTrack(AliHLTTrack *track);
+
+ ClassDef(AliHLTMerger,1) //Merging base class
+};
+
+typedef AliHLTMerger AliL3Merger; // for backward compatibility
+
+#endif
// Author: C. Loizides <loizides@ikf.uni-frankfurt.de>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3MemHandler.h"
-#include "AliL3DigitData.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTDigitData.h"
-#include "AliL3RawDataFileHandler.h"
+#include "AliHLTRawDataFileHandler.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3RawDataFileHandler
+/** \class AliHLTRawDataFileHandler
<pre>
//_____________________________________________________________
-// AliL3RawDataFileHandler
+// AliHLTRawDataFileHandler
//
</pre>
*/
-ClassImp(AliL3RawDataFileHandler)
+ClassImp(AliHLTRawDataFileHandler)
-AliL3RawDataFileHandler::AliL3RawDataFileHandler()
+AliHLTRawDataFileHandler::AliHLTRawDataFileHandler()
{
//constructor
fConvert=kTRUE;
FreeAll();
if((sizeof(Int_t) != 4) || (sizeof(Short_t) != 2)){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::AliL3RawDataFileHandler","Constructor")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::AliHLTRawDataFileHandler","Constructor")
<<"Check architecture to run the conversion on! Int_t should be 32 and Short_t should be 16 bit."<<ENDLOG;
}
}
-AliL3RawDataFileHandler::~AliL3RawDataFileHandler()
+AliHLTRawDataFileHandler::~AliHLTRawDataFileHandler()
{
//destructor
FreeAll();
}
-void AliL3RawDataFileHandler::FreeAll()
+void AliHLTRawDataFileHandler::FreeAll()
{
//free all heap
if(fInRaw) CloseRawInput();
fPad=0;
fRowPad=0;
fNChannels=0;
- fRowMinUsed=AliL3Transform::GetNRows();
+ fRowMinUsed=AliHLTTransform::GetNRows();
fRowMaxUsed=0;
fPadMinUsed=255;
fPadMaxUsed=0;
fNTimeBins=0;
- for(Int_t i=0;i<AliL3Transform::GetNRows();i++) fNPads[i]=0;
+ for(Int_t i=0;i<AliHLTTransform::GetNRows();i++) fNPads[i]=0;
fPedVal=0;
}
-Bool_t AliL3RawDataFileHandler::SetRawInput(Char_t *name)
+Bool_t AliHLTRawDataFileHandler::SetRawInput(Char_t *name)
{
//set raw input
if(fInRaw){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawInput","File Open")
<<"File ptr is already in use, close file first"<<ENDLOG;
return kFALSE;
}
#else
if(!fInRaw->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawInput","File Open")
<<"Pointer to ifstream = 0x0"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3RawDataFileHandler::SetRawInput(ifstream *file)
+Bool_t AliHLTRawDataFileHandler::SetRawInput(ifstream *file)
{
//set raw input
if(fInRaw){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawInput","File Open")
<<"File ptr is already in use, close file first"<<ENDLOG;
return kFALSE;
}
#else
if(!fInRaw->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawInput","File Open")
<<"Pointer to ifstream = 0x0"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-void AliL3RawDataFileHandler::CloseRawInput()
+void AliHLTRawDataFileHandler::CloseRawInput()
{
//close raw input
if(!fInRaw){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::CloseRawInput","File Close")
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::CloseRawInput","File Close")
<<"Nothing to Close"<<ENDLOG;
return;
}
fInRaw = 0;
}
-Bool_t AliL3RawDataFileHandler::SetRawOutput(Char_t *name)
+Bool_t AliHLTRawDataFileHandler::SetRawOutput(Char_t *name)
{
//set raw output
if(fOutRaw){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawOutput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawOutput","File Open")
<<"File ptr is already in use, close file first"<<ENDLOG;
return kFALSE;
}
#else
if(!fOutRaw->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawOutput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawOutput","File Open")
<<"Pointer to ofstream = 0x0"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3RawDataFileHandler::SetRawOutput(ofstream *file)
+Bool_t AliHLTRawDataFileHandler::SetRawOutput(ofstream *file)
{
//set raw output
if(fOutRaw){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawOutput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawOutput","File Open")
<<"File ptr is already in use, close file first"<<ENDLOG;
return kFALSE;
}
#else
if(!fOutRaw->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawOutput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawOutput","File Open")
<<"Pointer to ofstream = 0x0"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-void AliL3RawDataFileHandler::CloseRawOutput()
+void AliHLTRawDataFileHandler::CloseRawOutput()
{
//close raw output
if(!fOutRaw){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::CloseRawOutput","File Close")
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::CloseRawOutput","File Close")
<<"Nothing to Close"<<ENDLOG;
return;
}
}
-Bool_t AliL3RawDataFileHandler::SetRawPedestalsInput(Char_t *name)
+Bool_t AliHLTRawDataFileHandler::SetRawPedestalsInput(Char_t *name)
{
//set raw pedestals
if(fInRawPed){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawPedestalsInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawPedestalsInput","File Open")
<<"File ptr is already in use, close file first"<<ENDLOG;
return kFALSE;
}
#else
if(!fInRawPed->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawPedestalsInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawPedestalsInput","File Open")
<<"Pointer to ifstream = 0x0"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3RawDataFileHandler::SetRawPedestalsInput(ifstream *file)
+Bool_t AliHLTRawDataFileHandler::SetRawPedestalsInput(ifstream *file)
{
//set raw pedestals input
if(fInRawPed){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawPedestalsInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawPedestalsInput","File Open")
<<"File ptr is already in use, close file first"<<ENDLOG;
return kFALSE;
}
#else
if(!fInRawPed->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetRawPedestalsInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetRawPedestalsInput","File Open")
<<"Pointer to ifstream = 0x0"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-void AliL3RawDataFileHandler::CloseRawPedestalsInput()
+void AliHLTRawDataFileHandler::CloseRawPedestalsInput()
{
//close raw pedestals input
if(!fInRawPed){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::CloseRawPedestalsInput","File Close")
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::CloseRawPedestalsInput","File Close")
<<"Nothing to Close"<<ENDLOG;
return;
}
fInRaw = 0;
}
-Bool_t AliL3RawDataFileHandler::SetMappingFile(Char_t *name)
+Bool_t AliHLTRawDataFileHandler::SetMappingFile(Char_t *name)
{
//set mapping file
if(fMapping){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetMapping","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetMapping","File Open")
<<"File ptr is already in use, close file first"<<ENDLOG;
return kFALSE;
}
fMapping = fopen(name,"r");
if(!fMapping){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::SetMappingFile","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::SetMappingFile","File Open")
<<"Pointer to file = 0x0"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3RawDataFileHandler::SetMappingFile(FILE *file)
+Bool_t AliHLTRawDataFileHandler::SetMappingFile(FILE *file)
{
//set mapping file
if(fMapping){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetMapping","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::SetMapping","File Open")
<<"File ptr is already in use, close file first"<<ENDLOG;
return kFALSE;
}
fMapping = file;
if(!fMapping){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::SetMappingFile","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::SetMappingFile","File Open")
<<"Pointer to file = 0x0"<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-void AliL3RawDataFileHandler::CloseMappingFile()
+void AliHLTRawDataFileHandler::CloseMappingFile()
{
//close mapping file
if(!fMapping){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::CloseMappingFile","File Close")
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::CloseMappingFile","File Close")
<<"Nothing to Close"<<ENDLOG;
return;
}
fMapping = 0;
}
-Int_t AliL3RawDataFileHandler::ReadMappingFile()
+Int_t AliHLTRawDataFileHandler::ReadMappingFile()
{
//read mapping file
if(!fMapping){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadMappingFile","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadMappingFile","File Open")
<<"Pointer to file = 0x0"<<ENDLOG;
return -1;
}
fNChannels=nboard*nadc;
if(fNChannels<=0){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::ReadMappingFile","Data Inconsistency")
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::ReadMappingFile","Data Inconsistency")
<<"fNChannels must be greater than 0"<<ENDLOG;
return -1;
}
fRow=new Byte_t[fNChannels];
fPad=new Byte_t[fNChannels];
- fRowPad=new Short_t*[AliL3Transform::GetNRows()];
- for(Int_t i=0; i < AliL3Transform::GetNRows(); i++){
- fRowPad[i]=new Short_t[AliL3Transform::GetNPads(i)];
- for(Int_t j=0; j < AliL3Transform::GetNPads(i); j++) fRowPad[i][j]=-1;
+ fRowPad=new Short_t*[AliHLTTransform::GetNRows()];
+ for(Int_t i=0; i < AliHLTTransform::GetNRows(); i++){
+ fRowPad[i]=new Short_t[AliHLTTransform::GetNPads(i)];
+ for(Int_t j=0; j < AliHLTTransform::GetNPads(i); j++) fRowPad[i][j]=-1;
}
for(UInt_t i=0;i<fNChannels;i++){
return fNChannels;
}
-inline Int_t AliL3RawDataFileHandler::Convert4(Int_t i) const
+inline Int_t AliHLTRawDataFileHandler::Convert4(Int_t i) const
{
//BigEndian i0i1i2i3 -> LittleEndian i3i2i1i0
if(!fConvert) return i;
return (*(Int_t*)temp);
}
-inline Short_t AliL3RawDataFileHandler::Convert2(Short_t s) const
+inline Short_t AliHLTRawDataFileHandler::Convert2(Short_t s) const
{
//BigEndian i0i1 -> LittleEndian i1i0
if(!fConvert) return s;
return (*(Short_t*)temp);
}
-Int_t AliL3RawDataFileHandler::ReadRawInput()
+Int_t AliHLTRawDataFileHandler::ReadRawInput()
{
//Read data from cosmics file into memory
if(!fInRaw){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawInput","File Open")
<<"No Input avalible: no object ifstream"<<ENDLOG;
return 0;
}
#else
if(!fInRaw->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawInput","File Open")
<<"No Input avalible: ifstream not opened"<<ENDLOG;
return 0;
}
else {
Int_t knumofChannels = Convert4(dummy4);
if(knumofChannels!=(Int_t)fNChannels){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawInput","Data Inconsistency")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawInput","Data Inconsistency")
<<"Number of Channels should be equal to fNChannels "<<knumofChannels<<" "<<fNChannels<<ENDLOG;
return 0;
}
fInRaw->read((Char_t*)&dummy2,sizeof(dummy2));
UShort_t channel = Convert2(dummy2);
if(channel>fNChannels){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::ReadRawInput","Data Inconsistency")
- <<AliL3Log::kDec<<"Channel number must be smaller then fNChannels "<<channel<<" "<<fNChannels<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::ReadRawInput","Data Inconsistency")
+ <<AliHLTLog::kDec<<"Channel number must be smaller then fNChannels "<<channel<<" "<<fNChannels<<ENDLOG;
return 0;
}
}
Int_t numofChannelsTest = Convert4(dummy4);
if (numofChannelsTest != (Int_t)fNChannels){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::ReadRawInput","Data Inconsistency")
- <<AliL3Log::kDec<<"Number of test channels should be equal to fNChannels "<<numofChannelsTest<<" "<<fNChannels<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::ReadRawInput","Data Inconsistency")
+ <<AliHLTLog::kDec<<"Number of test channels should be equal to fNChannels "<<numofChannelsTest<<" "<<fNChannels<<ENDLOG;
return 0;
}
fInRaw->read((Char_t*)&dummy4,sizeof(dummy4));
fNTimeBins=Convert4(dummy4);
- if(fNTimeBins!=AliL3Transform::GetNTimeBins()){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawInput","Data Inconsistency")
- <<AliL3Log::kDec<<"fNTimeBins does not match AliL3Transformer, check AliL3Transform::Init() "<<fNTimeBins<<" "<<AliL3Transform::GetNTimeBins()<<ENDLOG;
+ if(fNTimeBins!=AliHLTTransform::GetNTimeBins()){
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawInput","Data Inconsistency")
+ <<AliHLTLog::kDec<<"fNTimeBins does not match AliHLTTransformer, check AliHLTTransform::Init() "<<fNTimeBins<<" "<<AliHLTTransform::GetNTimeBins()<<ENDLOG;
}
//assign array
return fNChannels;
}
-Int_t AliL3RawDataFileHandler::ReadRawInputPointer(const Char_t *ptr)
+Int_t AliHLTRawDataFileHandler::ReadRawInputPointer(const Char_t *ptr)
{
//Read data from cosmics pointer into memory
if(!ptr){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawInputPointer","Pointer")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawInputPointer","Pointer")
<<"Pointer equals 0x0!"<<ENDLOG;
return 0;
}
else {
Int_t knumofChannels = Convert4(dummy4);
if(knumofChannels!=(Int_t)fNChannels){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawInputPointer","Data Inconsistency")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawInputPointer","Data Inconsistency")
<<"Number of Channels should be equal to fNChannels "<<knumofChannels<<" "<<fNChannels<<ENDLOG;
return 0;
}
dummy2=*(Short_t*)ptr; ptr+=sizeof(dummy2);
UShort_t channel = Convert2(dummy2);
if(channel>fNChannels){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::ReadRawInputPointer","Data Inconsistency")
- <<AliL3Log::kDec<<"Channel number must be smaller then fNChannels "<<channel<<" "<<fNChannels<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::ReadRawInputPointer","Data Inconsistency")
+ <<AliHLTLog::kDec<<"Channel number must be smaller then fNChannels "<<channel<<" "<<fNChannels<<ENDLOG;
return 0;
}
}
dummy4=*(Int_t*)ptr; ptr+=sizeof(dummy4);
Int_t numofChannelsTest = Convert4(dummy4);
if (numofChannelsTest != (Int_t)fNChannels){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::ReadRawInputPointer","Data Inconsistency")
- <<AliL3Log::kDec<<"Number of test channels should be equal to fNChannels "<<numofChannelsTest<<" "<<fNChannels<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::ReadRawInputPointer","Data Inconsistency")
+ <<AliHLTLog::kDec<<"Number of test channels should be equal to fNChannels "<<numofChannelsTest<<" "<<fNChannels<<ENDLOG;
return 0;
}
//Timebins
dummy4=*(Int_t*)ptr; ptr+=sizeof(Int_t);
fNTimeBins=Convert4(dummy4);
- if(fNTimeBins!=AliL3Transform::GetNTimeBins()){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawInputPointer","Data Inconsistency")
- <<AliL3Log::kDec<<"fNTimeBins does not match AliL3Transformer, check AliL3Transform::Init() "<<fNTimeBins<<" "<<AliL3Transform::GetNTimeBins()<<ENDLOG;
+ if(fNTimeBins!=AliHLTTransform::GetNTimeBins()){
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawInputPointer","Data Inconsistency")
+ <<AliHLTLog::kDec<<"fNTimeBins does not match AliHLTTransformer, check AliHLTTransform::Init() "<<fNTimeBins<<" "<<AliHLTTransform::GetNTimeBins()<<ENDLOG;
}
//assign array
if(fCharges) delete[] fCharges;
}
-Short_t** AliL3RawDataFileHandler::GetRawData(Int_t &channels, Int_t &timebins)
+Short_t** AliHLTRawDataFileHandler::GetRawData(Int_t &channels, Int_t &timebins)
{
//get raw data
Short_t **charges=0;
timebins=0;
if(fNTimeBins==0){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::GetRawData","Data Inconsistency")
- <<"Call AliL3RawDataFileHandler::RawReadInput() first"<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::GetRawData","Data Inconsistency")
+ <<"Call AliHLTRawDataFileHandler::RawReadInput() first"<<ENDLOG;
if(!ReadRawInput()){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::GetRawData","Data Inconsistency")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::GetRawData","Data Inconsistency")
<<"Something went wrong reading data header"<<ENDLOG;
return 0;
}
return charges;
}
-Int_t AliL3RawDataFileHandler::StoreRawData(Short_t **charges)
+Int_t AliHLTRawDataFileHandler::StoreRawData(Short_t **charges)
{
//store charges in the raw data format
if(!fOutRaw){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::StoreRawData","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::StoreRawData","File Open")
<<"No Output avalible: no object ofstream"<<ENDLOG;
return 0;
}
#else
if(!fOutRaw->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::StoreRawData","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::StoreRawData","File Open")
<<"No Output avalible: ofstream not opened"<<ENDLOG;
return 0;
}
return fNChannels;
}
-Int_t AliL3RawDataFileHandler::ReadRawPedestalsInput()
+Int_t AliHLTRawDataFileHandler::ReadRawPedestalsInput()
{
//read raw pedestals input
if(!fInRawPed){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawPedestalsInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawPedestalsInput","File Open")
<<"No Input avalible: no object ifstream"<<ENDLOG;
return 0;
}
#else
if(!fInRawPed->is_open()){
#endif
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawPedestalsInput","File Open")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawPedestalsInput","File Open")
<<"No Input avalible: ifstream not opened"<<ENDLOG;
return 0;
}
else {
Int_t knumofChannels = Convert4(dummy4);
if(knumofChannels!=(Int_t)fNChannels){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawPedestalsInput","Data Inconsistency")
- <<AliL3Log::kDec<<"Number of Channels should be equal to fNChannels "<<knumofChannels<<" "<<fNChannels<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawPedestalsInput","Data Inconsistency")
+ <<AliHLTLog::kDec<<"Number of Channels should be equal to fNChannels "<<knumofChannels<<" "<<fNChannels<<ENDLOG;
return 0;
}
}
fInRawPed->read((Char_t*)&dummy4,sizeof(dummy4));
fNTimeBins=Convert4(dummy4);
- if(fNTimeBins!=AliL3Transform::GetNTimeBins()){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::ReadRawPedestalsInput","Data Inconsistency")
- <<AliL3Log::kDec<<"fNTimeBins does not match AliL3Transformer, check AliL3Transform::Init() "<<fNTimeBins<<" "<<AliL3Transform::GetNTimeBins()<<ENDLOG;
+ if(fNTimeBins!=AliHLTTransform::GetNTimeBins()){
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::ReadRawPedestalsInput","Data Inconsistency")
+ <<AliHLTLog::kDec<<"fNTimeBins does not match AliHLTTransformer, check AliHLTTransform::Init() "<<fNTimeBins<<" "<<AliHLTTransform::GetNTimeBins()<<ENDLOG;
}
//Read the data
return fNChannels;
}
-AliL3DigitRowData * AliL3RawDataFileHandler::RawData2Memory(UInt_t &nrow,Int_t /*event*/)
+AliHLTDigitRowData * AliHLTRawDataFileHandler::RawData2Memory(UInt_t &nrow,Int_t /*event*/)
{
//convert raw data to memory
- AliL3DigitRowData *data = 0;
+ AliHLTDigitRowData *data = 0;
nrow=0;
if(fNTimeBins==0){
- LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::RawData2Memory","Data Inconsistency")
- <<"Call AliL3RawDataFileHandler::RawReadInput() first"<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTRawDataFileHandler::RawData2Memory","Data Inconsistency")
+ <<"Call AliHLTRawDataFileHandler::RawReadInput() first"<<ENDLOG;
if(!ReadRawInput()){
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::RawData2Memory","Data Inconsistency")
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::RawData2Memory","Data Inconsistency")
<<"Something went wrong reading data header"<<ENDLOG;
return 0;
}
//get data size
Int_t nrows=0;
Int_t ndigitcount=0;
- Int_t *ndigits=new Int_t[AliL3Transform::GetNRows()];
- for(Int_t i=0;i<AliL3Transform::GetNRows();i++) ndigits[i]=0;
+ Int_t *ndigits=new Int_t[AliHLTTransform::GetNRows()];
+ for(Int_t i=0;i<AliHLTTransform::GetNRows();i++) ndigits[i]=0;
//no need to search for slice/sector given by init
//but check for row/patch boundaries
//assume slice 0
- for(Int_t slrow=0;slrow<AliL3Transform::GetNRows();slrow++){
+ for(Int_t slrow=0;slrow<AliHLTTransform::GetNRows();slrow++){
if(slrow<fRowMin) continue;
if(slrow>fRowMax) break;
- for(Int_t pad=0;pad<AliL3Transform::GetNPads(slrow);pad++){
+ for(Int_t pad=0;pad<AliHLTTransform::GetNPads(slrow);pad++){
Short_t channel=fRowPad[slrow][pad];
if(channel==-1) continue; //no data on that channel;
for(Int_t timebin = 0 ; timebin < fNTimeBins ; timebin++){
Int_t dig=fCharges[channel][timebin];
- if(dig <= AliL3Transform::GetZeroSup()) continue;
- if(dig >= AliL3Transform::GetADCSat())
- dig = AliL3Transform::GetADCSat();
+ if(dig <= AliHLTTransform::GetZeroSup()) continue;
+ if(dig >= AliHLTTransform::GetADCSat())
+ dig = AliHLTTransform::GetADCSat();
ndigits[slrow]++; //for this row only
ndigitcount++; //total number of digits to be published
//test data consistency
Int_t ndigitcounttest=0;
- for(Int_t slrow=0;slrow<AliL3Transform::GetNRows();slrow++)
+ for(Int_t slrow=0;slrow<AliHLTTransform::GetNRows();slrow++)
ndigitcounttest+=ndigits[slrow];
if(ndigitcount!=ndigitcounttest)
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::RawData2Memory","Digits")
- <<AliL3Log::kDec<<"Found Inconsistency "<<ndigitcount<<" != "<<ndigitcounttest<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::RawData2Memory","Digits")
+ <<AliHLTLog::kDec<<"Found Inconsistency "<<ndigitcount<<" != "<<ndigitcounttest<<ENDLOG;
- Int_t size = sizeof(AliL3DigitData)*ndigitcount
- + nrows*sizeof(AliL3DigitRowData);
- LOG(AliL3Log::kDebug,"AliL3RawDataFileHandler::RawData2Memory","Digits")
- <<AliL3Log::kDec<<"Found "<<ndigitcount<<" Digits on "<<nrows<<" rows"<<ENDLOG;
+ Int_t size = sizeof(AliHLTDigitData)*ndigitcount
+ + nrows*sizeof(AliHLTDigitRowData);
+ LOG(AliHLTLog::kDebug,"AliHLTRawDataFileHandler::RawData2Memory","Digits")
+ <<AliHLTLog::kDec<<"Found "<<ndigitcount<<" Digits on "<<nrows<<" rows"<<ENDLOG;
//now copy data
- data=(AliL3DigitRowData*) Allocate(size);
+ data=(AliHLTDigitRowData*) Allocate(size);
nrow = (UInt_t)nrows;
//memset(data,1,size); //for debugging
Int_t ndigitcounttest2=0;
- AliL3DigitRowData *tempPt = data;
- for(Int_t slrow=0;slrow<AliL3Transform::GetNRows();slrow++){
+ AliHLTDigitRowData *tempPt = data;
+ for(Int_t slrow=0;slrow<AliHLTTransform::GetNRows();slrow++){
if(slrow<fRowMin) continue;
if(slrow>fRowMax) break;
tempPt->fNDigit = ndigits[slrow];
Int_t localcount=0;
- for(Int_t pad=0;pad<AliL3Transform::GetNPads(slrow);pad++){
+ for(Int_t pad=0;pad<AliHLTTransform::GetNPads(slrow);pad++){
Short_t channel=fRowPad[slrow][pad];
if(channel==-1) continue; //no data on that channel;
for(Int_t timebin = 0 ; timebin < fNTimeBins ; timebin++){
Int_t dig=fCharges[channel][timebin];
- if(dig <= AliL3Transform::GetZeroSup()) continue;
- if(dig >= AliL3Transform::GetADCSat())
- dig = AliL3Transform::GetADCSat();
+ if(dig <= AliHLTTransform::GetZeroSup()) continue;
+ if(dig >= AliHLTTransform::GetADCSat())
+ dig = AliHLTTransform::GetADCSat();
//Exclude data outside cone:
- //AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ //AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
//if(fParam->GetPadRowRadii(sector,row)<230./250.*fabs(xyz[2])) continue;
tempPt->fDigitData[localcount].fCharge=(UShort_t)dig;
} //pad
if(localcount != ndigits[slrow])
- LOG(AliL3Log::kFatal,"AliL3RawDataFileHandler::RawData2Memory","Memory")
- <<AliL3Log::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
+ LOG(AliHLTLog::kFatal,"AliHLTRawDataFileHandler::RawData2Memory","Memory")
+ <<AliHLTLog::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
<<ndigits[slrow]<<ENDLOG;
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData)
- + ndigits[slrow]*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData)
+ + ndigits[slrow]*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}//row
if(ndigitcount!=ndigitcounttest2)
- LOG(AliL3Log::kError,"AliL3RawDataFileHandler::RawData2Memory","Digits")
- <<AliL3Log::kDec<<"Found Inconsistency "<<ndigitcount<<" != "<<ndigitcounttest2<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTRawDataFileHandler::RawData2Memory","Digits")
+ <<AliHLTLog::kDec<<"Found Inconsistency "<<ndigitcount<<" != "<<ndigitcounttest2<<ENDLOG;
delete [] ndigits;
return data;
}
-Bool_t AliL3RawDataFileHandler::RawData2CompBinary(Int_t event)
+Bool_t AliHLTRawDataFileHandler::RawData2CompBinary(Int_t event)
{
//raw data to binary
Bool_t out = kTRUE;
UInt_t ndigits=0;
- AliL3DigitRowData *digits=0;
+ AliHLTDigitRowData *digits=0;
digits = RawData2Memory(ndigits,event);
out = Memory2CompBinary(ndigits,digits);
Free();
#ifndef ALIL3RAWDATAFILEHANDLER_H
#define ALIL3RAWDATAFILEHANDLER_H
-#include "AliL3MemHandler.h"
+#include "AliHLTMemHandler.h"
-class AliL3RawDataFileHandler:public AliL3MemHandler {
+class AliHLTRawDataFileHandler:public AliHLTMemHandler {
private:
FILE *fMapping;//!
Short_t Convert2(Short_t i) const; //big2little and vice versa
public:
- AliL3RawDataFileHandler();
- virtual ~AliL3RawDataFileHandler();
+ AliHLTRawDataFileHandler();
+ virtual ~AliHLTRawDataFileHandler();
- void FreeAll(); //like AliL3MemHandler::Free() or AliL3FileHandler::FreeDigitsTree
+ void FreeAll(); //like AliHLTMemHandler::Free() or AliHLTFileHandler::FreeDigitsTree
Bool_t SetRawInput(Char_t *name);
Bool_t SetRawInput(STDIF *file);
Short_t GetPedVal() const {return fPedVal;}
Int_t GetNChannels() const {return fNChannels;}
- AliL3DigitRowData* RawData2Memory(UInt_t &nrow,Int_t event=-1);
+ AliHLTDigitRowData* RawData2Memory(UInt_t &nrow,Int_t event=-1);
Bool_t RawData2CompBinary(Int_t event=-1);
- ClassDef(AliL3RawDataFileHandler,1) //RawData Filehandler class
+ ClassDef(AliHLTRawDataFileHandler,1) //RawData Filehandler class
};
+
+typedef AliHLTRawDataFileHandler AliL3RawDataFileHandler; // for backward compatibility
+
#endif
#include <AliESD.h>
#include <AliESDHLTtrack.h>
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
#include "AliLevel3.h"
-#include "AliL3Evaluate.h"
+#include "AliHLTEvaluate.h"
#include "AliHLTReconstructor.h"
-#include "AliL3Transform.h"
-#include "AliL3Hough.h"
-#include "AliL3FileHandler.h"
-#include "AliL3Track.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3TrackArray.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHough.h"
+#include "AliHLTFileHandler.h"
+#include "AliHLTTrack.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTTrackArray.h"
#include "AliRun.h"
#include "AliITS.h"
#include "AliITSgeom.h"
-#include "AliL3ITStracker.h"
-#include "AliL3TPCtracker.h"
+#include "AliHLTITStracker.h"
+#include "AliHLTTPCtracker.h"
#include "MUON/src/AliRoot/AliHLTMUONTracker.h"
#if __GNUC__== 3
{
//constructor
#ifndef use_logging
- AliL3Log::fgLevel=AliL3Log::kWarning;
+ AliHLTLog::fgLevel=AliHLTLog::kWarning;
#endif
fDoTracker=1;
fDoHough=0;
{
//constructor
#ifndef use_logging
- AliL3Log::fgLevel=AliL3Log::kWarning;
+ AliHLTLog::fgLevel=AliHLTLog::kWarning;
#endif
fDoTracker=doTracker;
fDoHough=doHough;
{
// do the standard and hough reconstruction chain
if(!runLoader) {
- LOG(AliL3Log::kFatal,"AliHLTReconstructor::Reconstruct","RunLoader")
+ LOG(AliHLTLog::kFatal,"AliHLTReconstructor::Reconstruct","RunLoader")
<<" Missing RunLoader! 0x0"<<ENDLOG;
return;
}
gSystem->Exec("rm -rf hough");
gSystem->MakeDirectory("hough");
- Bool_t isinit=AliL3Transform::Init(runLoader);
+ Bool_t isinit=AliHLTTransform::Init(runLoader);
if(!isinit){
- LOG(AliL3Log::kError,"AliHLTReconstructor::Reconstruct","Transformer")
+ LOG(AliHLTLog::kError,"AliHLTReconstructor::Reconstruct","Transformer")
<< "Could not create transform settings, please check log for error messages!" << ENDLOG;
return;
}
//reconstruct with hough
//not used anymore, Hough tracking is moved out of the local
//reconstruction chain
- Float_t ptmin = 0.1*AliL3Transform::GetSolenoidField();
+ Float_t ptmin = 0.1*AliHLTTransform::GetSolenoidField();
Float_t zvertex = 0;
TArrayF mcVertex(3);
}
zvertex = mcVertex[2];
- LOG(AliL3Log::kInformational,"AliHLTReconstructor::Reconstruct","HoughTransform")
+ LOG(AliHLTLog::kInformational,"AliHLTReconstructor::Reconstruct","HoughTransform")
<<" Hough Transform will run with ptmin="<<ptmin<<" and zvertex="<<zvertex<<ENDLOG;
- AliL3Hough *hough = new AliL3Hough();
+ AliHLTHough *hough = new AliHLTHough();
hough->SetThreshold(4);
hough->CalcTransformerParams(ptmin);
{
//fill esd with tracks from conformal mapping
Int_t slicerange[2]={0,35};
- Int_t good = (int)(0.4*AliL3Transform::GetNRows());
- Int_t nclusters = (int)(0.4*AliL3Transform::GetNRows());
- Int_t nminpointsontracks = (int)(0.3*AliL3Transform::GetNRows());
+ Int_t good = (int)(0.4*AliHLTTransform::GetNRows());
+ Int_t nclusters = (int)(0.4*AliHLTTransform::GetNRows());
+ Int_t nminpointsontracks = (int)(0.3*AliHLTTransform::GetNRows());
Float_t ptmin = 0.;
Float_t ptmax = 0.;
Float_t maxfalseratio = 0.1;
- AliL3Evaluate *fHLTEval = new AliL3Evaluate("./hlt",nclusters,good,ptmin,ptmax,slicerange);
+ AliHLTEvaluate *fHLTEval = new AliHLTEvaluate("./hlt",nclusters,good,ptmin,ptmax,slicerange);
fHLTEval->SetMaxFalseClusters(maxfalseratio);
fHLTEval->LoadData(iEvent,kTRUE);
fHLTEval->AssignPIDs();
fHLTEval->AssignIDs();
- AliL3TrackArray *fTracks = fHLTEval->GetTracks();
+ AliHLTTrackArray *fTracks = fHLTEval->GetTracks();
if(!fTracks){
delete fHLTEval;
return;
}
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3Track *tpt = (AliL3Track *)fTracks->GetCheckedTrack(i);
+ AliHLTTrack *tpt = (AliHLTTrack *)fTracks->GetCheckedTrack(i);
if(!tpt) continue;
if(tpt->GetNumberOfPoints() < nminpointsontracks) continue;
char filename[256];
sprintf(filename,"./hough/tracks_%d.raw",iEvent);
- AliL3FileHandler *tfile = new AliL3FileHandler();
+ AliHLTFileHandler *tfile = new AliHLTFileHandler();
if(!tfile->SetBinaryInput(filename)){
- LOG(AliL3Log::kError,"AliHLTReconstructor::FillESDforHoughTransform","Input file")
+ LOG(AliHLTLog::kError,"AliHLTReconstructor::FillESDforHoughTransform","Input file")
<<" Missing file "<<filename<<ENDLOG;
return;
}
- AliL3TrackArray *fTracks = new AliL3TrackArray("AliL3HoughTrack");
+ AliHLTTrackArray *fTracks = new AliHLTTrackArray("AliHLTHoughTrack");
tfile->Binary2TrackArray(fTracks);
tfile->CloseBinaryInput();
delete tfile;
if(!fTracks) return;
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3HoughTrack *tpt = (AliL3HoughTrack *)fTracks->GetCheckedTrack(i);
+ AliHLTHoughTrack *tpt = (AliHLTHoughTrack *)fTracks->GetCheckedTrack(i);
if(!tpt) continue;
AliESDHLTtrack *esdtrack = new AliESDHLTtrack() ;
TString opt = GetOption();
if(!opt.CompareTo("TPC")) {
// Create Hough tracker for TPC
- return new AliL3TPCtracker(runLoader);
+ return new AliHLTTPCtracker(runLoader);
}
if(!opt.CompareTo("ITS")) {
// Create ITS tracker
AliITSgeom* geom = GetITSgeom(runLoader);
if (!geom) return NULL;
- return new AliL3ITStracker(geom);
+ return new AliHLTITStracker(geom);
}
if(!opt.CompareTo("MUON")) {
return new AliHLTMUONTracker(runLoader);
};
#endif
+typedef AliHLTReconstructor AliL3Reconstructor; // for backward compatibility
+
#endif
#endif //end of Rtypes
#endif //end of root selection
-//---- Timms AliL3EventDataType from AliL3EventDataType.h
+//---- Timms AliHLTEventDataType from AliHLTEventDataType.h
-union AliL3EventDataTypeRoot{
+union AliHLTEventDataTypeRoot{
ULong_t fID;
unsigned char fDescr[8];
};
-typedef union AliL3EventDataTypeRoot AliL3EventDataTypeRoot;
+typedef union AliHLTEventDataTypeRoot AliHLTEventDataTypeRoot;
#define ROOT_UNKNOWN_DATAID (((ULong_t)'UNKN')<<32 | 'OWN ')
#define ROOT_COMPOSITE_DATAID (((ULong_t)'COMP')<<32 | 'OSIT')
#ifndef SPACEPOINTDATA_H
#define SPACEPOINTDATA_H
-#include "AliL3RootTypes.h"
-struct AliL3SpacePointData{
+#include "AliHLTRootTypes.h"
+struct AliHLTSpacePointData{
#ifdef do_mc
Int_t fTrackID[3];
#endif
Float_t fSigmaZ2; //error (former width) of the clusters
UInt_t fCharge;
};
-typedef struct AliL3SpacePointData AliL3SpacePointData;
+typedef struct AliHLTSpacePointData AliHLTSpacePointData;
+typedef AliHLTSpacePointData AliL3SpacePointData;
#endif /* SPACEPOINTDATA_H */
--- /dev/null
+// @(#) $Id$
+
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+
+#pragma link C++ typedef AliL3Benchmark;
+#pragma link C++ typedef AliL3DigitRowData;
+#pragma link C++ typedef AliL3DigitData;
+#pragma link C++ typedef AliL3SpacePointData;
+#pragma link C++ typedef AliL3ConfMapper;
+#pragma link C++ typedef AliL3ConfMapPoint;
+#pragma link C++ typedef AliL3Vertex;
+#pragma link C++ typedef AliL3VertexFinder;
+#pragma link C++ typedef AliL3VertexArray;
+#pragma link C++ typedef AliL3Track;
+#pragma link C++ typedef AliL3ConfMapTrack;
+#pragma link C++ typedef AliL3ConfMapFit;
+#pragma link C++ typedef AliL3Transform;
+#pragma link C++ typedef AliL3Merger;
+#pragma link C++ typedef AliL3TrackMerger;
+#pragma link C++ typedef AliL3GlobalMerger;
+#pragma link C++ typedef AliL3InterMerger;
+#pragma link C++ typedef AliL3TrackArray;
+#pragma link C++ typedef AliL3Logger;
+#pragma link C++ typedef AliL3MemHandler;
+#pragma link C++ typedef AliL3Display;
+#pragma link C++ typedef AliL3ClustFinderNew;
+#pragma link C++ typedef AliL3Fitter;
+#pragma link C++ typedef AliL3RawDataFileHandler;
+#pragma link C++ typedef AliL3TPCBeamTestMemHandler;
+
+#ifdef use_aliroot
+#pragma link C++ typedef AliL3FileHandler;
+#pragma link C++ typedef AliL3Evaluate;
+#ifdef use_reconstruction
+#pragma link C++ typedef AliL3Reconstructor;
+#pragma link C++ typedef AliL3TPCtracker;
+#endif
+#endif
+
+
+#pragma link C++ class AliHLTBenchmark;
+#pragma link C++ class AliHLTDigitRowData;
+#pragma link C++ class AliHLTDigitData;
+#pragma link C++ class AliHLTSpacePointData;
+#pragma link C++ class AliHLTConfMapper;
+#pragma link C++ class AliHLTConfMapPoint;
+#pragma link C++ class AliHLTVertex;
+#pragma link C++ class AliHLTVertexFinder;
+#pragma link C++ class AliHLTVertexArray;
+#pragma link C++ class AliHLTTrack;
+#pragma link C++ class AliHLTConfMapTrack;
+#pragma link C++ class AliHLTConfMapFit;
+#pragma link C++ class AliHLTTransform;
+#pragma link C++ class AliHLTMerger;
+#pragma link C++ class AliHLTTrackMerger;
+#pragma link C++ class AliHLTGlobalMerger;
+#pragma link C++ class AliHLTInterMerger;
+#pragma link C++ class AliLevel3;
+#pragma link C++ class AliHLTTrackArray;
+#pragma link C++ class AliHLTLogger;
+#pragma link C++ class AliHLTMemHandler;
+#pragma link C++ class AliHLTDisplay;
+#pragma link C++ class AliHLTClustFinderNew;
+#pragma link C++ class AliHLTFitter;
+#pragma link C++ class AliHLTRawDataFileHandler;
+#pragma link C++ class AliHLTTPCBeamTestMemHandler;
+
+#ifdef use_aliroot
+#pragma link C++ class AliHLTFileHandler;
+#pragma link C++ class AliHLTEvaluate;
+#ifdef use_reconstruction
+#pragma link C++ class AliHLTReconstructor;
+#pragma link C++ class AliHLTTPCtracker;
+#endif
+#endif
+
+#endif
+
// @(#) $Id$
-/** \class AliL3TPCBeamTestMemHandler
+/** \class AliHLTTPCBeamTestMemHandler
<pre>
//_____________________________________________________________
-// AliL3TPCBeamTestMemHandler
+// AliHLTTPCBeamTestMemHandler
//
// Class for converting the test beam data of May 2004
// to the HLT file format using R. Bramms tables.
</pre>
*/
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3MemHandler.h"
-#include "AliL3DigitData.h"
-#include "AliL3TPCBeamTestMemHandler.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTPCBeamTestMemHandler.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3TPCBeamTestMemHandler)
+ClassImp(AliHLTTPCBeamTestMemHandler)
-AliL3TPCBeamTestMemHandler::AliL3TPCBeamTestMemHandler(Char_t *fPathToMappingFile) : AliL3MemHandler()
+AliHLTTPCBeamTestMemHandler::AliHLTTPCBeamTestMemHandler(Char_t *fPathToMappingFile) : AliHLTMemHandler()
{
//constructor
fMinTimeBin=1;
#else
if(!in->is_open()){
#endif
- LOG(AliL3Log::kFatal,"AliL3TPCBeamTestMemHandler","Mapping File")
+ LOG(AliHLTLog::kFatal,"AliHLTTPCBeamTestMemHandler","Mapping File")
<<"Can't open file " << fPathToMappingFile << " !!!" <<ENDLOG;
}
fMapping = new short*[fNumOfChannels];
delete in;
}
-AliL3TPCBeamTestMemHandler::~AliL3TPCBeamTestMemHandler()
+AliHLTTPCBeamTestMemHandler::~AliHLTTPCBeamTestMemHandler()
{
//destructor
for(Int_t i = 0; i < 5504 ; i++) {
delete[] fMapping;
}
-AliL3DigitRowData* AliL3TPCBeamTestMemHandler::RawData2Memory(UInt_t &nrow,Int_t /*event*/)
+AliHLTDigitRowData* AliHLTTPCBeamTestMemHandler::RawData2Memory(UInt_t &nrow,Int_t /*event*/)
{
//convert the raw data
- AliL3DigitRowData *data = 0;
+ AliHLTDigitRowData *data = 0;
nrow=0;
- Int_t nrowsdummy=AliL3Transform::GetNRows(fPatch);
+ Int_t nrowsdummy=AliHLTTransform::GetNRows(fPatch);
fRows = new AliRowStructure[nrowsdummy];
for(Int_t i=0;i<nrowsdummy;i++){
fRows[i].fRow=-1;
fRows[i].fNDigits=0;
- fRows[i].fPadPos= new Int_t[AliL3Transform::GetNPads(i+fRowMin)];
- for(Int_t p=0;p<AliL3Transform::GetNPads(i+fRowMin);p++)
+ fRows[i].fPadPos= new Int_t[AliHLTTransform::GetNPads(i+fRowMin)];
+ for(Int_t p=0;p<AliHLTTransform::GetNPads(i+fRowMin);p++)
fRows[i].fPadPos[p]=-1;
}
- Int_t ntimebins=AliL3Transform::GetNTimeBins();
+ Int_t ntimebins=AliHLTTransform::GetNTimeBins();
Int_t npads=fInputSize/(ntimebins+1);
Int_t ndigitcount=0; //total number of digits to be published
for(Int_t i=0;i<npads;i++){
for(Int_t timebin = fMinTimeBin ; timebin <= ntimebins ; timebin++){
Int_t dig=fInputPtr[pos+timebin]-digmean;
- if(dig <= AliL3Transform::GetZeroSup()) continue;
- if(dig >= AliL3Transform::GetADCSat())
- dig = AliL3Transform::GetADCSat();
+ if(dig <= AliHLTTransform::GetZeroSup()) continue;
+ if(dig >= AliHLTTransform::GetADCSat())
+ dig = AliHLTTransform::GetADCSat();
fRows[lrow].fNDigits++; //for this row only
ndigitcount++;
}
Int_t nrows=0;
- for(Int_t i=0;i<AliL3Transform::GetNRows(fPatch);i++){
+ for(Int_t i=0;i<AliHLTTransform::GetNRows(fPatch);i++){
if(fRows[i].fRow!=-1) nrows++;
}
- if(nrows!=AliL3Transform::GetNRows(fPatch))
- LOG(AliL3Log::kError,"AliL3TPCBeamTestMemHandler::RawData2Memory","nrows")
- <<AliL3Log::kDec<<"Found Inconsistency "<<nrows<<" != "<<AliL3Transform::GetNRows(fPatch)<<ENDLOG;
+ if(nrows!=AliHLTTransform::GetNRows(fPatch))
+ LOG(AliHLTLog::kError,"AliHLTTPCBeamTestMemHandler::RawData2Memory","nrows")
+ <<AliHLTLog::kDec<<"Found Inconsistency "<<nrows<<" != "<<AliHLTTransform::GetNRows(fPatch)<<ENDLOG;
//allocate memory
- Int_t size = sizeof(AliL3DigitData)*ndigitcount
- + nrows*sizeof(AliL3DigitRowData);
- LOG(AliL3Log::kDebug,"AliL3TPCBeamTestMemHandler::RawData2Memory","Digits")
- <<AliL3Log::kDec<<"Found "<<ndigitcount<<" Digits on "<<nrows<<" rows"<<ENDLOG;
+ Int_t size = sizeof(AliHLTDigitData)*ndigitcount
+ + nrows*sizeof(AliHLTDigitRowData);
+ LOG(AliHLTLog::kDebug,"AliHLTTPCBeamTestMemHandler::RawData2Memory","Digits")
+ <<AliHLTLog::kDec<<"Found "<<ndigitcount<<" Digits on "<<nrows<<" rows"<<ENDLOG;
- data=(AliL3DigitRowData*)Allocate(size);
+ data=(AliHLTDigitRowData*)Allocate(size);
nrow = (UInt_t)nrows;
//memset(data,1,size); //for debugging
Int_t ndigitcounttest=0;
- AliL3DigitRowData *tempPt = data;
- for(Int_t i=0;i<AliL3Transform::GetNRows(fPatch);i++){
+ AliHLTDigitRowData *tempPt = data;
+ for(Int_t i=0;i<AliHLTTransform::GetNRows(fPatch);i++){
Int_t slrow=i+fRowMin;
if(slrow!=fRows[i].fRow){
- LOG(AliL3Log::kFatal,"AliL3TPCBeamTestMemHandler::RawData2Memory","Row Mismatch")
- <<AliL3Log::kDec<<"Mismatch: slrow "<<slrow<<" row "
+ LOG(AliHLTLog::kFatal,"AliHLTTPCBeamTestMemHandler::RawData2Memory","Row Mismatch")
+ <<AliHLTLog::kDec<<"Mismatch: slrow "<<slrow<<" row "
<<fRows[i].fRow<<ENDLOG;
}
tempPt->fNDigit = fRows[i].fNDigits;
Int_t localcount=0;
- for(Int_t pad=0;pad<AliL3Transform::GetNPads(slrow);pad++){
+ for(Int_t pad=0;pad<AliHLTTransform::GetNPads(slrow);pad++){
Int_t pos=fRows[i].fPadPos[pad];
if(pos==-1) continue; //no data on that pad;
Int_t digmean=0;
for(Int_t timebin = fMinTimeBin ; timebin <= ntimebins ; timebin++){
Int_t dig=fInputPtr[pos+timebin]-digmean;
- if(dig <= AliL3Transform::GetZeroSup()) continue;
- if(dig >= AliL3Transform::GetADCSat())
- dig = AliL3Transform::GetADCSat();
+ if(dig <= AliHLTTransform::GetZeroSup()) continue;
+ if(dig >= AliHLTTransform::GetADCSat())
+ dig = AliHLTTransform::GetADCSat();
//Exclude data outside cone:
- //AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ //AliHLTTransform::Raw2Local(xyz,sector,row,pad,time);
//if(fParam->GetPadRowRadii(sector,row)<230./250.*fabs(xyz[2])) continue;
tempPt->fDigitData[localcount].fCharge=(UShort_t)dig;
} //pad
if(localcount != fRows[i].fNDigits)
- LOG(AliL3Log::kFatal,"AliL3TPCBeamTestMemHandler::RawData2Memory","Memory")
- <<AliL3Log::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
+ LOG(AliHLTLog::kFatal,"AliHLTTPCBeamTestMemHandler::RawData2Memory","Memory")
+ <<AliHLTLog::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
<<fRows[i].fNDigits<<ENDLOG;
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData)
- + localcount*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData)
+ + localcount*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}//row
if(ndigitcount!=ndigitcounttest)
- LOG(AliL3Log::kError,"AliL3TPCBeamTestMemHandler::RawData2Memory","Digits")
- <<AliL3Log::kDec<<"Found Inconsistency "<<ndigitcount<<" != "<<ndigitcounttest<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTPCBeamTestMemHandler::RawData2Memory","Digits")
+ <<AliHLTLog::kDec<<"Found Inconsistency "<<ndigitcount<<" != "<<ndigitcounttest<<ENDLOG;
for(Int_t i=0;i<nrowsdummy;i++){
delete[] fRows[i].fPadPos;
return data;
}
-Bool_t AliL3TPCBeamTestMemHandler::RawData2CompBinary(Int_t event)
+Bool_t AliHLTTPCBeamTestMemHandler::RawData2CompBinary(Int_t event)
{
//raw data to memory
Bool_t out = kTRUE;
UInt_t ndigits=0;
- AliL3DigitRowData *digits=0;
+ AliHLTDigitRowData *digits=0;
digits = RawData2Memory(ndigits,event);
out = Memory2CompBinary(ndigits,digits);
Free();
#define ALIL3TPCBEAMTESTMEMHANDLER_H
//_____________________________________________________________
-// AliL3TPCBeamTestMemHandler
+// AliHLTTPCBeamTestMemHandler
//
// Class for converting the test beam data of May 2004
// to the HLT file format using R. Bramms tables.
// -- Copyright © ALICE HLT Group
-#include "AliL3MemHandler.h"
+#include "AliHLTMemHandler.h"
-class AliL3TPCBeamTestMemHandler : public AliL3MemHandler{
+class AliHLTTPCBeamTestMemHandler : public AliHLTMemHandler{
public:
- AliL3TPCBeamTestMemHandler(Char_t *fPathToMappingFile="./MappingHWAdress.data");
- virtual ~AliL3TPCBeamTestMemHandler();
+ AliHLTTPCBeamTestMemHandler(Char_t *fPathToMappingFile="./MappingHWAdress.data");
+ virtual ~AliHLTTPCBeamTestMemHandler();
void SetInputPointer(Short_t *ptr, Int_t s) {fInputPtr=ptr;fInputSize=s;}
void SetNTimeBins(Int_t i) {
- fNTimeBins=i;AliL3Transform::SetNTimeBins(i);
+ fNTimeBins=i;AliHLTTransform::SetNTimeBins(i);
}
void SetMinTimeBin(Int_t i) {
fMinTimeBin=i;
return retval;
}
- AliL3DigitRowData* RawData2Memory(UInt_t &nrow,Int_t event=-1);
+ AliHLTDigitRowData* RawData2Memory(UInt_t &nrow,Int_t event=-1);
Bool_t RawData2CompBinary(Int_t event=-1);
private:
Int_t fNTimeBins; // number of timebins
Int_t fMinTimeBin; // min timebin (not zero because of altro)
- ClassDef(AliL3TPCBeamTestMemHandler,1) //RawData Filehandler class
+ ClassDef(AliHLTTPCBeamTestMemHandler,1) //RawData Filehandler class
};
+
+typedef AliHLTTPCBeamTestMemHandler AliL3TPCBeamTestMemHandler; // for backward compatibility
+
#endif
#include "AliESD.h"
#include "AliRunLoader.h"
-#include "AliL3TPCtracker.h"
-#include "AliL3Hough.h"
+#include "AliHLTTPCtracker.h"
+#include "AliHLTHough.h"
-ClassImp(AliL3TPCtracker)
+ClassImp(AliHLTTPCtracker)
-AliL3TPCtracker::AliL3TPCtracker(AliRunLoader *runLoader):AliTracker()
+AliHLTTPCtracker::AliHLTTPCtracker(AliRunLoader *runLoader):AliTracker()
{
//--------------------------------------------------------------
// Constructor
//--------------------------------------------------------------
- if(AliL3Transform::GetVersion() == AliL3Transform::kVdefault) {
- Bool_t isinit=AliL3Transform::Init(runLoader);
- if(!isinit) AliWarning("Could not init AliL3Transform settings, using defaults!");
+ if(AliHLTTransform::GetVersion() == AliHLTTransform::kVdefault) {
+ Bool_t isinit=AliHLTTransform::Init(runLoader);
+ if(!isinit) AliWarning("Could not init AliHLTTransform settings, using defaults!");
}
fRunLoader = runLoader;
}
-Int_t AliL3TPCtracker::Clusters2Tracks(AliESD *event)
+Int_t AliHLTTPCtracker::Clusters2Tracks(AliESD *event)
{
//--------------------------------------------------------------------
// This method reconstructs HLT TPC Hough tracks
}
Int_t iEvent = fRunLoader->GetEventNumber();
- Float_t ptmin = 0.1*AliL3Transform::GetSolenoidField();
+ Float_t ptmin = 0.1*AliHLTTransform::GetSolenoidField();
Float_t zvertex = GetZ();
AliInfo(Form("Hough Transform will run with ptmin=%f and zvertex=%f",ptmin,zvertex));
- AliL3Hough *hough = new AliL3Hough();
+ AliHLTHough *hough = new AliHLTHough();
hough->SetThreshold(4);
hough->CalcTransformerParams(ptmin);
#include "AliTracker.h"
#include "AliLog.h"
-#include "AliL3Transform.h"
+#include "AliHLTTransform.h"
class AliRunLoader;
class AliESD;
//-------------------------------------------------------------------------
-class AliL3TPCtracker : public AliTracker {
+class AliHLTTPCtracker : public AliTracker {
public:
- AliL3TPCtracker(AliRunLoader *runLoader);
+ AliHLTTPCtracker(AliRunLoader *runLoader);
Int_t Clusters2Tracks(AliESD *event);
private:
AliRunLoader *fRunLoader; // Pointer to the runloader
- ClassDef(AliL3TPCtracker,1) //HLT TPC Hough tracker
+ ClassDef(AliHLTTPCtracker,1) //HLT TPC Hough tracker
};
+typedef AliHLTTPCtracker AliL3TPCtracker; // for backward compatibility
+
#endif
// Author: Anders Vestbo <mailto:vestbo$fi.uib.no>, Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3Track.h"
-#include "AliL3Transform.h"
-#include "AliL3Vertex.h"
-#include "AliL3SpacePointData.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTVertex.h"
+#include "AliHLTSpacePointData.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3Track
+/** \class AliHLTTrack
//<pre>
//_____________________________________________________________
-// AliL3Track
+// AliHLTTrack
//
// Track base class
//Begin_Html
</pre>
*/
-ClassImp(AliL3Track)
+ClassImp(AliHLTTrack)
-AliL3Track::AliL3Track()
+AliHLTTrack::AliHLTTrack()
{
//Constructor
fNHits = 0;
fPointPsi=0;
}
-void AliL3Track::Set(AliL3Track *tpt)
+void AliHLTTrack::Set(AliHLTTrack *tpt)
{
//setter
SetRowRange(tpt->GetFirstRow(),tpt->GetLastRow());
SetSector(tpt->GetSector());
}
-Int_t AliL3Track::Compare(const AliL3Track *track) const
+Int_t AliHLTTrack::Compare(const AliHLTTrack *track) const
{
// compare tracks
if(track->GetNHits() < GetNHits()) return 1;
return 0;
}
-AliL3Track::~AliL3Track()
+AliHLTTrack::~AliHLTTrack()
{
//Nothing to do
}
-Double_t AliL3Track::GetP() const
+Double_t AliHLTTrack::GetP() const
{
// Returns total momentum.
return fabs(GetPt())*sqrt(1. + GetTgl()*GetTgl());
}
-Double_t AliL3Track::GetPseudoRapidity() const
+Double_t AliHLTTrack::GetPseudoRapidity() const
{ //get pseudo rap
return 0.5 * log((GetP() + GetPz()) / (GetP() - GetPz()));
}
/*
-Double_t AliL3Track::GetEta() const
+Double_t AliHLTTrack::GetEta() const
{
return GetPseudoRapidity();
}
*/
-Double_t AliL3Track::GetRapidity() const
+Double_t AliHLTTrack::GetRapidity() const
{
//get rap
const Double_t kmpi = 0.13957;
return 0.5 * log((kmpi + GetPz()) / (kmpi - GetPz()));
}
-void AliL3Track::Rotate(Int_t slice,Bool_t tolocal)
+void AliHLTTrack::Rotate(Int_t slice,Bool_t tolocal)
{
//Rotate track to global parameters
//If flag tolocal is set, the track is rotated
Float_t psi[1] = {GetPsi()};
if(!tolocal)
- AliL3Transform::Local2GlobalAngle(psi,slice);
+ AliHLTTransform::Local2GlobalAngle(psi,slice);
else
- AliL3Transform::Global2LocalAngle(psi,slice);
+ AliHLTTransform::Global2LocalAngle(psi,slice);
SetPsi(psi[0]);
Float_t first[3];
first[0] = GetFirstPointX();
first[1] = GetFirstPointY();
first[2] = GetFirstPointZ();
if(!tolocal)
- AliL3Transform::Local2Global(first,slice);
+ AliHLTTransform::Local2Global(first,slice);
else
- AliL3Transform::Global2LocHLT(first,slice);
- //AliL3Transform::Global2Local(first,slice,kTRUE);
+ AliHLTTransform::Global2LocHLT(first,slice);
+ //AliHLTTransform::Global2Local(first,slice,kTRUE);
SetFirstPoint(first[0],first[1],first[2]);
Float_t last[3];
last[1] = GetLastPointY();
last[2] = GetLastPointZ();
if(!tolocal)
- AliL3Transform::Local2Global(last,slice);
+ AliHLTTransform::Local2Global(last,slice);
else
- AliL3Transform::Global2LocHLT(last,slice);
- //AliL3Transform::Global2Local(last,slice,kTRUE);
+ AliHLTTransform::Global2LocHLT(last,slice);
+ //AliHLTTransform::Global2Local(last,slice,kTRUE);
SetLastPoint(last[0],last[1],last[2]);
Float_t center[3] = {GetCenterX(),GetCenterY(),0};
if(!tolocal)
- AliL3Transform::Local2Global(center,slice);
+ AliHLTTransform::Local2Global(center,slice);
else
- AliL3Transform::Global2LocHLT(center,slice);
- //AliL3Transform::Global2Local(center,slice,kTRUE);
+ AliHLTTransform::Global2LocHLT(center,slice);
+ //AliHLTTransform::Global2Local(center,slice,kTRUE);
SetCenterX(center[0]);
SetCenterY(center[1]);
fIsLocal=kTRUE;
}
-void AliL3Track::CalculateHelix()
+void AliHLTTrack::CalculateHelix()
{
//Calculate Radius, CenterX and CenterY from Psi, X0, Y0
- fRadius = fPt / (AliL3Transform::GetBFieldValue());
+ fRadius = fPt / (AliHLTTransform::GetBFieldValue());
if(fRadius) fKappa = -fQ*1./fRadius;
else fRadius = 999999; //just zero
- Double_t trackPhi0 = fPsi + fQ * AliL3Transform::PiHalf();
+ Double_t trackPhi0 = fPsi + fQ * AliHLTTransform::PiHalf();
fCenterX = fFirstPoint[0] - fRadius * cos(trackPhi0);
fCenterY = fFirstPoint[1] - fRadius * sin(trackPhi0);
SetR0(sqrt(fFirstPoint[0]*fFirstPoint[0]+fFirstPoint[1]*fFirstPoint[1]));
}
-Double_t AliL3Track::GetCrossingAngle(Int_t padrow,Int_t slice)
+Double_t AliHLTTrack::GetCrossingAngle(Int_t padrow,Int_t slice)
{
//Calculate the crossing angle between track and given padrow.
//Take the dot product of the tangent vector of the track, and
Float_t angle=0;//Angle perpendicular to the padrow in local coordinates
if(slice>=0)//Global coordinates
{
- AliL3Transform::Local2GlobalAngle(&angle,slice);
- if(!CalculateReferencePoint(angle,AliL3Transform::Row2X(padrow)))
- cerr<<"AliL3Track::GetCrossingAngle : Track does not cross line in slice "<<slice<<" row "<<padrow<<endl;
+ AliHLTTransform::Local2GlobalAngle(&angle,slice);
+ if(!CalculateReferencePoint(angle,AliHLTTransform::Row2X(padrow)))
+ cerr<<"AliHLTTrack::GetCrossingAngle : Track does not cross line in slice "<<slice<<" row "<<padrow<<endl;
}
else //should be in local coordinates
{
return acos(cosbeta);
}
-Bool_t AliL3Track::GetCrossingPoint(Int_t padrow,Float_t *xyz)
+Bool_t AliHLTTrack::GetCrossingPoint(Int_t padrow,Float_t *xyz)
{
//Assumes the track is given in local coordinates
return false;
}
- Double_t xHit = AliL3Transform::Row2X(padrow);
+ Double_t xHit = AliHLTTransform::Row2X(padrow);
xyz[0] = xHit;
Double_t aa = (xHit - GetCenterX())*(xHit - GetCenterX());
Double_t yHit = xyz[1];
Double_t angle1 = atan2((yHit - GetCenterY()),(xHit - GetCenterX()));
- if(angle1 < 0) angle1 += 2.*AliL3Transform::Pi();
+ if(angle1 < 0) angle1 += 2.*AliHLTTransform::Pi();
Double_t angle2 = atan2((GetFirstPointY() - GetCenterY()),(GetFirstPointX() - GetCenterX()));
- if(angle2 < 0) angle2 += AliL3Transform::TwoPi();
+ if(angle2 < 0) angle2 += AliHLTTransform::TwoPi();
Double_t diffangle = angle1 - angle2;
- diffangle = fmod(diffangle,AliL3Transform::TwoPi());
- if((GetCharge()*diffangle) > 0) diffangle = diffangle - GetCharge()*AliL3Transform::TwoPi();
+ diffangle = fmod(diffangle,AliHLTTransform::TwoPi());
+ if((GetCharge()*diffangle) > 0) diffangle = diffangle - GetCharge()*AliHLTTransform::TwoPi();
Double_t stot = fabs(diffangle)*GetRadius();
Double_t zHit = GetFirstPointZ() + stot*GetTgl();
xyz[2] = zHit;
}
-Bool_t AliL3Track::CalculateReferencePoint(Double_t angle,Double_t radius)
+Bool_t AliHLTTrack::CalculateReferencePoint(Double_t angle,Double_t radius)
{
// Global coordinate: crossing point with y = ax+ b;
- // a=tan(angle-AliL3Transform::PiHalf());
+ // a=tan(angle-AliHLTTransform::PiHalf());
//
const Double_t krr=radius; //position of reference plane
const Double_t kxr = cos(angle) * krr;
const Double_t kyr = sin(angle) * krr;
- Double_t a = tan(angle-AliL3Transform::PiHalf());
+ Double_t a = tan(angle-AliHLTTransform::PiHalf());
Double_t b = kyr - a * kxr;
Double_t pp=(fCenterX+a*fCenterY-a*b)/(1+pow(a,2));
Double_t pointPhi0 = atan2(fPoint[1]-fCenterY,fPoint[0]-fCenterX);
Double_t trackPhi0 = atan2(fFirstPoint[1]-fCenterY,fFirstPoint[0]-fCenterX);
- if(fabs(trackPhi0-pointPhi0)>AliL3Transform::Pi()){
- if(trackPhi0<pointPhi0) trackPhi0 += AliL3Transform::TwoPi();
- else pointPhi0 += AliL3Transform::TwoPi();
+ if(fabs(trackPhi0-pointPhi0)>AliHLTTransform::Pi()){
+ if(trackPhi0<pointPhi0) trackPhi0 += AliHLTTransform::TwoPi();
+ else pointPhi0 += AliHLTTransform::TwoPi();
}
Double_t stot = -fQ * (pointPhi0-trackPhi0) * fRadius ;
fPoint[2] = fFirstPoint[2] + stot * fTanl;
- fPointPsi = pointPhi0 - fQ * AliL3Transform::PiHalf();
- if(fPointPsi<0.) fPointPsi+= AliL3Transform::TwoPi();
- fPointPsi = fmod(fPointPsi, AliL3Transform::TwoPi());
+ fPointPsi = pointPhi0 - fQ * AliHLTTransform::PiHalf();
+ if(fPointPsi<0.) fPointPsi+= AliHLTTransform::TwoPi();
+ fPointPsi = fmod(fPointPsi, AliHLTTransform::TwoPi());
return IsPoint(kTRUE);
}
-Bool_t AliL3Track::CalculateEdgePoint(Double_t angle)
+Bool_t AliHLTTrack::CalculateEdgePoint(Double_t angle)
{
// Global coordinate: crossing point with y = ax; a=tan(angle);
//
- Double_t rmin=AliL3Transform::Row2X(AliL3Transform::GetFirstRow(-1)); //min Radius of TPC
- Double_t rmax=AliL3Transform::Row2X(AliL3Transform::GetLastRow(-1)); //max Radius of TPC
+ Double_t rmin=AliHLTTransform::Row2X(AliHLTTransform::GetFirstRow(-1)); //min Radius of TPC
+ Double_t rmax=AliHLTTransform::Row2X(AliHLTTransform::GetLastRow(-1)); //max Radius of TPC
Double_t a = tan(angle);
Double_t pp=(fCenterX+a*fCenterY)/(1+pow(a,2));
if(r0>rmin&&r0<rmax){
Double_t da=atan2(y0,x0);
- if(da<0) da+=AliL3Transform::TwoPi();
+ if(da<0) da+=AliHLTTransform::TwoPi();
if(fabs(da-angle)<0.5)
ok0 = kTRUE;
}
if(r1>rmin&&r1<rmax){
Double_t da=atan2(y1,x1);
- if(da<0) da+=AliL3Transform::TwoPi();
+ if(da<0) da+=AliHLTTransform::TwoPi();
if(fabs(da-angle)<0.5)
ok1 = kTRUE;
}
Double_t pointPhi0 = atan2(fPoint[1]-fCenterY,fPoint[0]-fCenterX);
Double_t trackPhi0 = atan2(fFirstPoint[1]-fCenterY,fFirstPoint[0]-fCenterX);
- if(fabs(trackPhi0-pointPhi0)>AliL3Transform::Pi()){
- if(trackPhi0<pointPhi0) trackPhi0 += AliL3Transform::TwoPi();
- else pointPhi0 += AliL3Transform::TwoPi();
+ if(fabs(trackPhi0-pointPhi0)>AliHLTTransform::Pi()){
+ if(trackPhi0<pointPhi0) trackPhi0 += AliHLTTransform::TwoPi();
+ else pointPhi0 += AliHLTTransform::TwoPi();
}
Double_t stot = -fQ * (pointPhi0-trackPhi0) * fRadius ;
fPoint[2] = fFirstPoint[2] + stot * fTanl;
- fPointPsi = pointPhi0 - fQ * AliL3Transform::PiHalf();
- if(fPointPsi<0.) fPointPsi+= AliL3Transform::TwoPi();
- fPointPsi = fmod(fPointPsi, AliL3Transform::TwoPi());
+ fPointPsi = pointPhi0 - fQ * AliHLTTransform::PiHalf();
+ if(fPointPsi<0.) fPointPsi+= AliHLTTransform::TwoPi();
+ fPointPsi = fmod(fPointPsi, AliHLTTransform::TwoPi());
return IsPoint(kTRUE);
}
-Bool_t AliL3Track::CalculatePoint(Double_t xplane)
+Bool_t AliHLTTrack::CalculatePoint(Double_t xplane)
{
// Local coordinate: crossing point with x plane
//
Double_t pointPhi0 = atan2(fPoint[1]-fCenterY,fPoint[0]-fCenterX);
Double_t trackPhi0 = atan2(fFirstPoint[1]-fCenterY,fFirstPoint[0]-fCenterX);
- if(fabs(trackPhi0-pointPhi0)>AliL3Transform::Pi()){
- if(trackPhi0<pointPhi0) trackPhi0 += AliL3Transform::TwoPi();
- else pointPhi0 += AliL3Transform::TwoPi();
+ if(fabs(trackPhi0-pointPhi0)>AliHLTTransform::Pi()){
+ if(trackPhi0<pointPhi0) trackPhi0 += AliHLTTransform::TwoPi();
+ else pointPhi0 += AliHLTTransform::TwoPi();
}
Double_t stot = -fQ * (pointPhi0-trackPhi0) * fRadius ;
fPoint[2] = fFirstPoint[2] + stot * fTanl;
- fPointPsi = pointPhi0 - fQ * AliL3Transform::PiHalf();
- if(fPointPsi<0.) fPointPsi+= AliL3Transform::TwoPi();
- fPointPsi = fmod(fPointPsi, AliL3Transform::TwoPi());
+ fPointPsi = pointPhi0 - fQ * AliHLTTransform::PiHalf();
+ if(fPointPsi<0.) fPointPsi+= AliHLTTransform::TwoPi();
+ fPointPsi = fmod(fPointPsi, AliHLTTransform::TwoPi());
return IsPoint(kTRUE);
}
-void AliL3Track::UpdateToFirstPoint()
+void AliHLTTrack::UpdateToFirstPoint()
{
//Update track parameters to the innermost point on the track.
//This means that the parameters of the track will be given in the point
}
Double_t pointpsi = atan2(point[1]-GetCenterY(),point[0]-GetCenterX());
- pointpsi -= GetCharge()*AliL3Transform::PiHalf();
- if(pointpsi < 0) pointpsi += AliL3Transform::TwoPi();
+ pointpsi -= GetCharge()*AliHLTTransform::PiHalf();
+ if(pointpsi < 0) pointpsi += AliHLTTransform::TwoPi();
//Update the track parameters
SetR0(sqrt(point[0]*point[0]+point[1]*point[1]));
}
-void AliL3Track::GetClosestPoint(AliL3Vertex *vertex,Double_t &closestx,Double_t &closesty,Double_t &closestz)
+void AliHLTTrack::GetClosestPoint(AliHLTVertex *vertex,Double_t &closestx,Double_t &closesty,Double_t &closestz)
{
//Calculate the point of closest approach to the vertex
//This function calculates the minimum distance from the helix to the vertex, and choose
//Get the z coordinate:
Double_t angle1 = atan2((closesty-GetCenterY()),(closestx-GetCenterX()));
- if(angle1 < 0) angle1 = angle1 + AliL3Transform::TwoPi();
+ if(angle1 < 0) angle1 = angle1 + AliHLTTransform::TwoPi();
Double_t angle2 = atan2((GetFirstPointY()-GetCenterY()),(GetFirstPointX()-GetCenterX()));
- if(angle2 < 0) angle2 = angle2 + AliL3Transform::TwoPi();
+ if(angle2 < 0) angle2 = angle2 + AliHLTTransform::TwoPi();
Double_t diff_angle = angle1 - angle2;
- diff_angle = fmod(diff_angle,AliL3Transform::TwoPi());
+ diff_angle = fmod(diff_angle,AliHLTTransform::TwoPi());
- if((GetCharge()*diff_angle) < 0) diff_angle = diff_angle + GetCharge()*AliL3Transform::TwoPi();
+ if((GetCharge()*diff_angle) < 0) diff_angle = diff_angle + GetCharge()*AliHLTTransform::TwoPi();
Double_t stot = fabs(diff_angle)*GetRadius();
closestz = GetFirstPointZ() - stot*GetTgl();
}
-void AliL3Track::Print() const
+void AliHLTTrack::Print() const
{ //print out parameters of track
- LOG(AliL3Log::kInformational,"AliL3Track::Print","Print values")
+ LOG(AliHLTLog::kInformational,"AliHLTTrack::Print","Print values")
<<fNHits<<" "<<fMCid<<" "<<fKappa<<" "<<fRadius<<" "<<fCenterX<<" "<<fCenterY<<" "
<<fFromMainVertex<<" "<<fRowRange[0]<<" "<<fRowRange[1]<<" "<<fSector<<" "<<fQ<<" "
<<fTanl<<" "<<fPsi<<" "<<fPt<<" "<<fLength<<" "<<fPterr<<" "<<fPsierr<<" "<<fZ0err<<" "
#ifndef ALIL3TRACK_H
#define ALIL3TRACK_H
-class AliL3Vertex;
-class AliL3SpacePointData;
+class AliHLTVertex;
+class AliHLTSpacePointData;
-class AliL3Track {
+class AliHLTTrack {
public:
- AliL3Track();
- virtual ~AliL3Track();
+ AliHLTTrack();
+ virtual ~AliHLTTrack();
- virtual void Set(AliL3Track* track);
- virtual Int_t Compare(const AliL3Track *track) const;
+ virtual void Set(AliHLTTrack* track);
+ virtual Int_t Compare(const AliHLTTrack *track) const;
virtual void CalculateHelix();
Bool_t CalculateReferencePoint(Double_t angle,Double_t radius=132);//Calculate Reference Point
Bool_t GetCrossingPoint(Int_t padrow,Float_t *xyz);
Double_t GetDistance(Double_t /*x0*/,Double_t /*x1*/){return 0;}
void UpdateToFirstPoint();
- void GetClosestPoint(AliL3Vertex *vertex,Double_t &closest_x,Double_t &closest_y,Double_t &closest_z);
+ void GetClosestPoint(AliHLTVertex *vertex,Double_t &closest_x,Double_t &closest_y,Double_t &closest_z);
void Rotate(Int_t slice,Bool_t tolocal=kFALSE);
Bool_t IsLocal() const {return fIsLocal;}
void Print() const;
Bool_t IsPoint(Bool_t ispoint) {fIsPoint = ispoint;return fIsPoint;}
- ClassDef(AliL3Track,1) //Base track class
+ ClassDef(AliHLTTrack,1) //Base track class
};
+
+typedef AliHLTTrack AliL3Track; // for backward compatibility
+
#endif
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-
-#include "AliL3Logging.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3ConfMapTrack.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3Transform.h"
-#include "AliL3ConfMapPoint.h"
-
-/** \class AliL3TrackArray
+#include "AliHLTStandardIncludes.h"
+
+#include "AliHLTLogging.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTHoughTrack.h"
+#include "AliHLTModelTrack.h"
+#include "AliHLTConfMapTrack.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTConfMapPoint.h"
+
+/** \class AliHLTTrackArray
<pre>
//_____________________________________________________________
-// AliL3TrackArray
+// AliHLTTrackArray
//
// Track array class
//
using namespace std;
#endif
-ClassImp(AliL3TrackArray)
+ClassImp(AliHLTTrackArray)
-AliL3TrackArray::AliL3TrackArray()
+AliHLTTrackArray::AliHLTTrackArray()
{
//Default constructor
fSize = 0;
}
-AliL3TrackArray::AliL3TrackArray(Int_t ntrack)
+AliHLTTrackArray::AliHLTTrackArray(Int_t ntrack)
{
//Constructor.
fSize = 0;
SetSize(ntrack);
}
-AliL3TrackArray::AliL3TrackArray(char* tracktype,Int_t ntrack)
+AliHLTTrackArray::AliHLTTrackArray(char* tracktype,Int_t ntrack)
{
//Constructor.
fSize = 0;
fNTracks=0;
fNAbsent=0;
- if(strcmp(tracktype,"AliL3Track")==0) fTrackType='t';
- if(strcmp(tracktype,"AliL3ConfMapTrack")==0) fTrackType='c';
- if(strcmp(tracktype,"AliL3HoughTrack")==0) fTrackType='h';
- if(strcmp(tracktype,"AliL3ModelTrack")==0) fTrackType='m';
+ if(strcmp(tracktype,"AliHLTTrack")==0) fTrackType='t';
+ if(strcmp(tracktype,"AliHLTConfMapTrack")==0) fTrackType='c';
+ if(strcmp(tracktype,"AliHLTHoughTrack")==0) fTrackType='h';
+ if(strcmp(tracktype,"AliHLTModelTrack")==0) fTrackType='m';
SetSize(ntrack);
}
-AliL3TrackArray::AliL3TrackArray(char* tracktype)
+AliHLTTrackArray::AliHLTTrackArray(char* tracktype)
{
//Constructor.
fSize = 0;
fNTracks=0;
fNAbsent=0;
- if(strcmp(tracktype,"AliL3Track")==0) fTrackType='t';
- if(strcmp(tracktype,"AliL3ConfMapTrack")==0) fTrackType='c';
- if(strcmp(tracktype,"AliL3HoughTrack")==0) fTrackType='h';
- if(strcmp(tracktype,"AliL3ModelTrack")==0) fTrackType='m';
+ if(strcmp(tracktype,"AliHLTTrack")==0) fTrackType='t';
+ if(strcmp(tracktype,"AliHLTConfMapTrack")==0) fTrackType='c';
+ if(strcmp(tracktype,"AliHLTHoughTrack")==0) fTrackType='h';
+ if(strcmp(tracktype,"AliHLTModelTrack")==0) fTrackType='m';
SetSize();
}
-AliL3TrackArray::~AliL3TrackArray()
+AliHLTTrackArray::~AliHLTTrackArray()
{
//Destructor
DeleteArray();
}
-AliL3Track *AliL3TrackArray::NextTrack()
+AliHLTTrack *AliHLTTrackArray::NextTrack()
{
//next track in array
if(fNTracks<fSize) return fTrack[fNTracks++];
return fTrack[fNTracks++];
}
-void AliL3TrackArray::DeleteArray()
+void AliHLTTrackArray::DeleteArray()
{
//delete array
for(Int_t i=0; i<fSize;i++)
delete[] fTrack;
}
-Bool_t AliL3TrackArray::SetSize(Int_t newsize)
+Bool_t AliHLTTrackArray::SetSize(Int_t newsize)
{
//set size
if(newsize<=fSize) return kFALSE; //shrink comes later!!
if(!fSize){
fSize = newsize;
- fTrack = new AliL3Track*[fSize];
+ fTrack = new AliHLTTrack*[fSize];
fIsPresent = new Bool_t[fSize];
switch(fTrackType){
case 't':
for(Int_t i=0;i<fSize;i++){
- fTrack[i] = new AliL3Track();
+ fTrack[i] = new AliHLTTrack();
fIsPresent[i] = kTRUE;
}
break;
case 'c':
for(Int_t i=0;i<fSize;i++){
- fTrack[i] = new AliL3ConfMapTrack();
+ fTrack[i] = new AliHLTConfMapTrack();
fIsPresent[i] = kTRUE;
}
break;
case 'h':
for(Int_t i=0;i<fSize;i++){
- fTrack[i] = new AliL3HoughTrack();
+ fTrack[i] = new AliHLTHoughTrack();
fIsPresent[i] = kTRUE;
}
break;
case 'm':
for(Int_t i=0;i<fSize;i++){
- fTrack[i] = new AliL3ModelTrack();
+ fTrack[i] = new AliHLTModelTrack();
fIsPresent[i] = kTRUE;
}
break;
}
return kTRUE;
}
- AliL3Track **tmp = new AliL3Track*[fSize];
+ AliHLTTrack **tmp = new AliHLTTrack*[fSize];
Bool_t *pre = new Bool_t[fSize];
for(Int_t i=0; i<fSize;i++){
tmp[i] = fTrack[i];
}
delete[] fTrack;
delete[] fIsPresent;
- fTrack = new AliL3Track*[newsize];
+ fTrack = new AliHLTTrack*[newsize];
fIsPresent = new Bool_t[newsize];
for(Int_t i=0; i<fSize;i++){
fTrack[i] = tmp[i];
switch(fTrackType){
case 't':
for(Int_t i=fSize;i<newsize;i++){
- fTrack[i] = new AliL3Track();
+ fTrack[i] = new AliHLTTrack();
fIsPresent[i] = kTRUE;
}
break;
case 'c':
for(Int_t i=fSize;i<newsize;i++){
- fTrack[i] = new AliL3ConfMapTrack();
+ fTrack[i] = new AliHLTConfMapTrack();
fIsPresent[i] = kTRUE;
}
break;
case 'h':
for(Int_t i=fSize;i<newsize;i++){
- fTrack[i] = new AliL3HoughTrack();
+ fTrack[i] = new AliHLTHoughTrack();
fIsPresent[i] = kTRUE;
}
break;
case 'm':
for(Int_t i=fSize;i<newsize;i++){
- fTrack[i] = new AliL3ModelTrack();
+ fTrack[i] = new AliHLTModelTrack();
fIsPresent[i] = kTRUE;
}
break;
return kTRUE;
}
-void AliL3TrackArray::Reset()
+void AliHLTTrackArray::Reset()
{
//reset
fNTracks=0;
fIsPresent[i] = kTRUE;
}
-void AliL3TrackArray::Remove(Int_t track)
+void AliHLTTrackArray::Remove(Int_t track)
{
//remove track
if(fIsPresent[track]){
}
}
-void AliL3TrackArray::FillTracks(Int_t ntracks, AliL3TrackSegmentData* tr){
+void AliHLTTrackArray::FillTracks(Int_t ntracks, AliHLTTrackSegmentData* tr){
//Read tracks from shared memory (or memory)
- AliL3TrackSegmentData *trs = tr;
+ AliHLTTrackSegmentData *trs = tr;
for(Int_t i=0; i<ntracks; i++){
- AliL3Track *track = NextTrack();
+ AliHLTTrack *track = NextTrack();
track->SetPt(trs->fPt);
track->SetPsi(trs->fPsi);
track->SetTgl(trs->fTgl);
track->SetHits( trs->fNPoints, trs->fPointIDs );
#ifdef ROWHOUGHPARAMS
if(GetTrackType()=='h') {
- ((AliL3HoughTrack *)track)->SetWeight(trs->fWeight);
- ((AliL3HoughTrack *)track)->SetBinXY(trs->fBinX,trs->fBinY,trs->fBinXSize,trs->fBinYSize);
+ ((AliHLTHoughTrack *)track)->SetWeight(trs->fWeight);
+ ((AliHLTHoughTrack *)track)->SetBinXY(trs->fBinX,trs->fBinY,trs->fBinXSize,trs->fBinYSize);
}
track->SetMCid(trs->fTrackID);
track->SetRowRange(trs->fRowRange1,trs->fRowRange2);
track->SetPID(trs->fPID);
#endif
UChar_t *tmpP = (UChar_t*)trs;
- tmpP += sizeof(AliL3TrackSegmentData)+trs->fNPoints*sizeof(UInt_t);
- trs = (AliL3TrackSegmentData*)tmpP;
+ tmpP += sizeof(AliHLTTrackSegmentData)+trs->fNPoints*sizeof(UInt_t);
+ trs = (AliHLTTrackSegmentData*)tmpP;
}
}
-void AliL3TrackArray::FillTracks(Int_t ntracks, AliL3TrackSegmentData* tr,Int_t slice)
+void AliHLTTrackArray::FillTracks(Int_t ntracks, AliHLTTrackSegmentData* tr,Int_t slice)
{
//Read tracks from shared memory (or memory)
- AliL3TrackSegmentData *trs = tr;
+ AliHLTTrackSegmentData *trs = tr;
for(Int_t i=0; i<ntracks; i++){
- AliL3Track *track = NextTrack();
+ AliHLTTrack *track = NextTrack();
track->SetPt(trs->fPt);
track->SetPterr(trs->fPterr);
Float_t psi[1];
psi[0]=trs->fPsi;
- AliL3Transform::Local2GlobalAngle(psi,slice);
+ AliHLTTransform::Local2GlobalAngle(psi,slice);
track->SetPsi(psi[0]);
track->SetTgl(trs->fTgl);
track->SetPsierr(trs->fPsierr);
track->SetCharge(trs->fCharge);
Float_t first[3];
first[0]=trs->fX;first[1]=trs->fY;first[2]=trs->fZ;
- AliL3Transform::Local2Global(first,slice);
+ AliHLTTransform::Local2Global(first,slice);
track->SetFirstPoint(first[0],first[1],first[2]);
Float_t last[3];
last[0]=trs->fLastX;last[1]=trs->fLastY;last[2]=trs->fLastZ;
- AliL3Transform::Local2Global(last,slice);
+ AliHLTTransform::Local2Global(last,slice);
track->SetLastPoint(last[0],last[1],last[2]);
track->SetHits( trs->fNPoints, trs->fPointIDs );
#ifdef ROWHOUGHPARAMS
if(GetTrackType()=='h') {
- ((AliL3HoughTrack *)track)->SetWeight(trs->fWeight);
- ((AliL3HoughTrack *)track)->SetBinXY(trs->fBinX,trs->fBinY,trs->fBinXSize,trs->fBinYSize);
+ ((AliHLTHoughTrack *)track)->SetWeight(trs->fWeight);
+ ((AliHLTHoughTrack *)track)->SetBinXY(trs->fBinX,trs->fBinY,trs->fBinXSize,trs->fBinYSize);
}
track->SetMCid(trs->fTrackID);
track->SetRowRange(trs->fRowRange1,trs->fRowRange2);
track->SetPID(trs->fPID);
#endif
UChar_t *tmpP = (UChar_t*)trs;
- tmpP += sizeof(AliL3TrackSegmentData)+trs->fNPoints*sizeof(UInt_t);
- trs = (AliL3TrackSegmentData*)tmpP;
+ tmpP += sizeof(AliHLTTrackSegmentData)+trs->fNPoints*sizeof(UInt_t);
+ trs = (AliHLTTrackSegmentData*)tmpP;
}
}
-UInt_t AliL3TrackArray::GetOutSize()
+UInt_t AliHLTTrackArray::GetOutSize()
{
//get size for IO
UInt_t count = GetOutCount(); //use only present tracks
UInt_t tHits = 0;
for(Int_t i=0;i<fNTracks;i++){ //loop over all tracks
- AliL3Track *track = GetCheckedTrack(i); //use only present tracks
+ AliHLTTrack *track = GetCheckedTrack(i); //use only present tracks
if(track) //use only present tracks
tHits += track->GetNHits();
}
//calculate size of track
- return count*sizeof(AliL3TrackSegmentData)+sizeof(UInt_t)*tHits;
+ return count*sizeof(AliHLTTrackSegmentData)+sizeof(UInt_t)*tHits;
}
-UInt_t AliL3TrackArray::WriteTracks(UInt_t & ntracks,AliL3TrackSegmentData* tr)
+UInt_t AliHLTTrackArray::WriteTracks(UInt_t & ntracks,AliHLTTrackSegmentData* tr)
{
//write tracks
ntracks = GetOutCount();
return WriteTracks(tr);
}
-UInt_t AliL3TrackArray::WriteTracks(AliL3TrackSegmentData* tr)
+UInt_t AliHLTTrackArray::WriteTracks(AliHLTTrackSegmentData* tr)
{
//if(GetTrackType()=='c') return WriteConfMapTracks(tr);
- AliL3TrackSegmentData *tP = tr;
+ AliHLTTrackSegmentData *tP = tr;
UInt_t *pP;
UInt_t size = 0;
for(Int_t i=0; i<fNTracks; i++){ //loop over all tracks
- AliL3Track *track = GetCheckedTrack(i); //use only present tracks
+ AliHLTTrack *track = GetCheckedTrack(i); //use only present tracks
if(!track) continue; //use only present tracks
tP->fX = track->GetFirstPointX();
tP->fY = track->GetFirstPointY();
tP->fNPoints = track->GetNHits();
#ifdef ROWHOUGHPARAMS
if(GetTrackType()=='h') {
- tP->fWeight = ((AliL3HoughTrack *)track)->GetWeight();
- tP->fBinX = ((AliL3HoughTrack *)track)->GetBinX();
- tP->fBinY = ((AliL3HoughTrack *)track)->GetBinY();
- tP->fBinXSize = ((AliL3HoughTrack *)track)->GetSizeX();
- tP->fBinYSize = ((AliL3HoughTrack *)track)->GetSizeY();
+ tP->fWeight = ((AliHLTHoughTrack *)track)->GetWeight();
+ tP->fBinX = ((AliHLTHoughTrack *)track)->GetBinX();
+ tP->fBinY = ((AliHLTHoughTrack *)track)->GetBinY();
+ tP->fBinXSize = ((AliHLTHoughTrack *)track)->GetSizeX();
+ tP->fBinYSize = ((AliHLTHoughTrack *)track)->GetSizeY();
}
tP->fTrackID = track->GetMCid();
tP->fRowRange1 = track->GetFirstRow();
tP->fPointIDs[j] = pP[j];
}
Byte_t *tmpP = (Byte_t *)tP;
- tmpP += sizeof(AliL3TrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
- size += sizeof(AliL3TrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
- tP = (AliL3TrackSegmentData*)tmpP;
+ tmpP += sizeof(AliHLTTrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
+ size += sizeof(AliHLTTrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
+ tP = (AliHLTTrackSegmentData*)tmpP;
}
return size;
}
-UInt_t AliL3TrackArray::WriteConfMapTracks(AliL3TrackSegmentData* tr)
+UInt_t AliHLTTrackArray::WriteConfMapTracks(AliHLTTrackSegmentData* tr)
{
// use first and last point objects
- AliL3TrackSegmentData *tP = tr;
+ AliHLTTrackSegmentData *tP = tr;
UInt_t *pP;
UInt_t size = 0;
for(Int_t i=0; i<fNTracks; i++){ //loop over all tracks
- AliL3ConfMapTrack *track =(AliL3ConfMapTrack *) GetCheckedTrack(i); //use only present tracks
+ AliHLTConfMapTrack *track =(AliHLTConfMapTrack *) GetCheckedTrack(i); //use only present tracks
if(!track) continue; //use only present tracks
- AliL3ConfMapPoint *hit = (AliL3ConfMapPoint*)track->GetLastHit();
- AliL3ConfMapPoint *lastHit = (AliL3ConfMapPoint*)track->GetFirstHit();
+ AliHLTConfMapPoint *hit = (AliHLTConfMapPoint*)track->GetLastHit();
+ AliHLTConfMapPoint *lastHit = (AliHLTConfMapPoint*)track->GetFirstHit();
tP->fX = hit->GetX();
tP->fY = hit->GetY();
tP->fZ = hit->GetZ();
tP->fPointIDs[j] = pP[j];
}
Byte_t *tmpP = (Byte_t *)tP;
- tmpP += sizeof(AliL3TrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
- size +=sizeof(AliL3TrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
- tP = (AliL3TrackSegmentData*)tmpP;
+ tmpP += sizeof(AliHLTTrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
+ size +=sizeof(AliHLTTrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
+ tP = (AliHLTTrackSegmentData*)tmpP;
}
return size;
}
-void AliL3TrackArray::AddLast(AliL3Track *track)
+void AliHLTTrackArray::AddLast(AliHLTTrack *track)
{
//add track to last position
- AliL3Track *tpt = NextTrack();
+ AliHLTTrack *tpt = NextTrack();
tpt->Set(track);
}
-void AliL3TrackArray::AddTracks(AliL3TrackArray *newtrack,Bool_t remove_old,Int_t slice)
+void AliHLTTrackArray::AddTracks(AliHLTTrackArray *newtrack,Bool_t remove_old,Int_t slice)
{
//add tracks
if(GetTrackType() != newtrack->GetTrackType() && GetTrackType()!='t')
{
- LOG(AliL3Log::kError,"AliL3TrackArray::AddTracks","Track types")
+ LOG(AliHLTLog::kError,"AliHLTTrackArray::AddTracks","Track types")
<<"Bad idea to add tracks of different types"<<ENDLOG;
return;
}
if(fSize < fNTracks+newtrack->GetNPresent())
SetSize(fSize+newtrack->GetSize());
for(Int_t i =0;i<newtrack->GetNTracks();i++){
- AliL3Track *tpt = newtrack->GetCheckedTrack(i);
+ AliHLTTrack *tpt = newtrack->GetCheckedTrack(i);
if(!tpt) continue;
if(remove_old)
newtrack->Remove(i);
- AliL3Track *track = NextTrack();
+ AliHLTTrack *track = NextTrack();
track->Set(tpt);
if(slice>=0)
track->Rotate(slice); //Rotate track to global coordinates
/*
- AliL3Track *track;
+ AliHLTTrack *track;
if(GetTrackType()=='h')
- track = (AliL3HoughTrack*)NextTrack();
+ track = (AliHLTHoughTrack*)NextTrack();
else
track = NextTrack();
track->Set(tpt);
}
}
-void AliL3TrackArray::Compress()
+void AliHLTTrackArray::Compress()
{
//compress array
if(GetNPresent()==GetNTracks()) return;
- AliL3Track **tmp = new AliL3Track *[fNTracks];
+ AliHLTTrack **tmp = new AliHLTTrack *[fNTracks];
Int_t present=0;
Int_t absent=GetNPresent();
for(Int_t i=0;i<GetNTracks();i++){
fNAbsent = 0;
}
-void AliL3TrackArray::QSort()
+void AliHLTTrackArray::QSort()
{
// compress and sort
Compress();
QSort(fTrack,0,fNTracks);
}
-void AliL3TrackArray::QSort( AliL3Track **a, Int_t first, Int_t last)
+void AliHLTTrackArray::QSort( AliHLTTrack **a, Int_t first, Int_t last)
{
- // Sort array of AliL3Track pointers using a quicksort algorithm.
+ // Sort array of AliHLTTrack pointers using a quicksort algorithm.
// Uses TrackCompare() to compare objects.
// Thanks to Root!
- static AliL3Track *tmp;
+ static AliHLTTrack *tmp;
static int i; // "static" to save stack space
int j;
}
}
-Int_t AliL3TrackArray::TrackCompare(AliL3Track *a, AliL3Track *b) const
+Int_t AliHLTTrackArray::TrackCompare(AliHLTTrack *a, AliHLTTrack *b) const
{
// Compare the two tracks.
/*
if(fTrackType=='h')
{
- AliL3HoughTrack *tra = (AliL3HoughTrack*)a;
- AliL3HoughTrack *trb = (AliL3HoughTrack*)b;
+ AliHLTHoughTrack *tra = (AliHLTHoughTrack*)a;
+ AliHLTHoughTrack *trb = (AliHLTHoughTrack*)b;
if(tra->GetWeight() < trb->GetWeight()) return 1;
if(tra->GetWeight() > trb->GetWeight()) return -1;
}
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3TRACKARRAY_H
+#define ALIL3TRACKARRAY_H
+
+#include "AliHLTRootTypes.h"
+
+class AliHLTConfMapTrack;
+class AliHLTTrack;
+class AliHLTTrackSegmentData;
+
+class AliHLTTrackArray {
+
+ private:
+
+ Char_t fTrackType; //track type
+ Int_t fSize; //size of arra
+ Bool_t *fIsPresent;//!
+ Int_t fNAbsent; //ntracks absent
+
+ AliHLTTrack **fTrack;//!
+ Int_t fNTracks; //ntracks in
+
+ UInt_t WriteConfMapTracks(AliHLTTrackSegmentData* tr);
+ void DeleteArray();
+
+ public:
+ AliHLTTrackArray();
+ AliHLTTrackArray(Int_t ntrack);
+ AliHLTTrackArray(char* tracktype,Int_t ntrack);
+ AliHLTTrackArray(char* tracktype);
+ virtual ~AliHLTTrackArray();
+ Int_t GetTrackType(){return fTrackType;}
+ Int_t GetSize() const {return fSize;}
+ Bool_t SetSize(Int_t newsize=2000);
+
+ Int_t GetNPresent() const {return (fNTracks- fNAbsent);}
+ Int_t GetNTracks() const {return fNTracks;}
+ AliHLTTrack *NextTrack();
+ AliHLTTrack *GetCheckedTrack(Int_t t){if(fIsPresent[t]) return fTrack[t]; return 0;}
+ AliHLTTrack *GetTrack(Int_t t){return fTrack[t];}
+
+ void Remove(Int_t track);
+ void RemoveLast() {fNTracks--;}
+ void Compress();
+ void Reset();
+ void QSort();
+ void QSort( AliHLTTrack **a, Int_t first, Int_t last);
+ Int_t TrackCompare(AliHLTTrack *a, AliHLTTrack *b) const;
+
+ void FillTracks(Int_t ntracks, AliHLTTrackSegmentData* tr,Int_t slice); //Fill tracks and transform
+ void FillTracks(Int_t ntracks, AliHLTTrackSegmentData* tr); //Fill tracks
+ UInt_t WriteTracks(AliHLTTrackSegmentData* tr); //Write tracks
+ UInt_t WriteTracks(UInt_t & ntracks,AliHLTTrackSegmentData* tr); //Write tracks
+ UInt_t GetOutSize();
+ UInt_t GetOutCount(){return (UInt_t) GetNPresent();}
+ void AddTracks(AliHLTTrackArray *newtrack,Bool_t remove_old=kTRUE,Int_t slice=-1);//add all Tracks to this
+ void AddLast(AliHLTTrack *track);
+
+ ClassDef(AliHLTTrackArray,1) //Track array class
+};
+
+typedef AliHLTTrackArray AliL3TrackArray; // for backward compatibility
+
+#endif
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-/** \class AliL3TrackMerger
+/** \class AliHLTTrackMerger
<pre>
//_____________________________________________________________
-// AliL3TrackMerger
+// AliHLTTrackMerger
//
// The L3 track segment merger
//
</pre
*/
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3TrackMerger.h"
-#include "AliL3Track.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3Transform.h"
-#include "AliL3TrackArray.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTrackMerger.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTTransform.h"
+#include "AliHLTTrackArray.h"
#if __GNUC__ >= 3
using namespace std;
#endif
-ClassImp(AliL3TrackMerger)
+ClassImp(AliHLTTrackMerger)
-AliL3TrackMerger::AliL3TrackMerger(){
+AliHLTTrackMerger::AliHLTTrackMerger(){
//Default constructor
Is2Global(kFALSE);
fSlow = kFALSE;
}
-AliL3TrackMerger::AliL3TrackMerger(Int_t nsubsectors) : AliL3Merger()
+AliHLTTrackMerger::AliHLTTrackMerger(Int_t nsubsectors) : AliHLTMerger()
{
//Constructor.
InitMerger(nsubsectors);
}
-AliL3TrackMerger::~AliL3TrackMerger(){
+AliHLTTrackMerger::~AliHLTTrackMerger(){
//Destructor
}
-void AliL3TrackMerger::SetRows(Int_t *row){
+void AliHLTTrackMerger::SetRows(Int_t *row){
//Set the indeces of the first and last
//TPC padrows
//
}
}
-void AliL3TrackMerger::InitSector(Int_t slice,Int_t subsector){
+void AliHLTTrackMerger::InitSector(Int_t slice,Int_t subsector){
//
// Select Sector and subsector. The following FillTracks call will
// fill this subsector
fCurrentTracks = fSubSector;
}
-void AliL3TrackMerger::SlowMerge(AliL3TrackArray *mergedtrack,AliL3TrackArray *tracksin,AliL3TrackArray *tracksout,Double_t xval){
+void AliHLTTrackMerger::SlowMerge(AliHLTTrackArray *mergedtrack,AliHLTTrackArray *tracksin,AliHLTTrackArray *tracksout,Double_t xval){
//
- // Slow merging of two AliL3TrackArrays
+ // Slow merging of two AliHLTTrackArrays
// at reference plane x=xval
//
void *ntuple=GetNtuple();
const Int_t kNOut=tracksout->GetNTracks();
const Int_t kNIn =tracksin->GetNTracks();
const Int_t kNMerged =mergedtrack->GetNTracks();
- AliL3Track *tracks[2];
+ AliHLTTrack *tracks[2];
Bool_t merge = kTRUE;
while(merge){
Int_t inmin=-1,outmin=-1;
Double_t min=10;
for(Int_t out=0;out<kNOut;out++){
- AliL3Track *outertrack=tracksout->GetCheckedTrack(out);
+ AliHLTTrack *outertrack=tracksout->GetCheckedTrack(out);
if(!outertrack) continue;
for(Int_t in=0;in<kNIn;in++){
- AliL3Track *innertrack=tracksin->GetCheckedTrack(in);
+ AliHLTTrack *innertrack=tracksin->GetCheckedTrack(in);
if(!innertrack) continue;
Double_t diff = TrackDiff(innertrack,outertrack);
if(diff>=0&&diff<min){
}
}
if(inmin>=0&&outmin>=0){
- AliL3Track *outertrack=tracksout->GetTrack(outmin);
- AliL3Track *innertrack=tracksin->GetTrack(inmin);
+ AliHLTTrack *outertrack=tracksout->GetTrack(outmin);
+ AliHLTTrack *innertrack=tracksin->GetTrack(inmin);
tracks[0]=innertrack;
tracks[1]=outertrack;
SortTracks(tracks,2);
}
else merge = kFALSE;
}
- LOG(AliL3Log::kInformational,"AliL3TrackMerger::SlowMerge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "
+ LOG(AliHLTLog::kInformational,"AliHLTTrackMerger::SlowMerge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "
<<mergedtrack->GetNTracks()-kNMerged<<ENDLOG;
char name[256] = "ntuple_t.root";
for(Int_t i=0;i<4;i++)
WriteNtuple(name,ntuple);
}
-void AliL3TrackMerger::SlowMerge(){
+void AliHLTTrackMerger::SlowMerge(){
fSlow = kTRUE;
Merge();
}
-void AliL3TrackMerger::InterMerge(){
+void AliHLTTrackMerger::InterMerge(){
//
// Merging of the tracks
// between readout patches
//
for(Int_t patch=0;patch< GetNIn();patch++){
- AliL3TrackArray * tracks = GetInTracks(patch);
- Double_t xval = AliL3Transform::Row2X((fRowMax[patch]+fRowMin[patch])/2);
+ AliHLTTrackArray * tracks = GetInTracks(patch);
+ Double_t xval = AliHLTTransform::Row2X((fRowMax[patch]+fRowMin[patch])/2);
Int_t nrow= fRowMax[patch]-fRowMin[patch]+1;
const Int_t kNIn =tracks->GetNTracks();
- AliL3Track *tr[2];
+ AliHLTTrack *tr[2];
for(Int_t in=0;in<kNIn;in++){
- AliL3Track *t = tracks->GetCheckedTrack(in);
+ AliHLTTrack *t = tracks->GetCheckedTrack(in);
if(t){
t->CalculateHelix();
t->CalculatePoint(xval);
}
}
for(Int_t out=0;out<kNIn;out++){
- AliL3Track *outertrack=tracks->GetCheckedTrack(out);
+ AliHLTTrack *outertrack=tracks->GetCheckedTrack(out);
if(!outertrack) continue;
for(Int_t in=0;in<kNIn;in++){
if(in==out) continue;
- AliL3Track *innertrack=tracks->GetCheckedTrack(in);
+ AliHLTTrack *innertrack=tracks->GetCheckedTrack(in);
if(!innertrack) continue;
if(outertrack->GetNHits()+innertrack->GetNHits()>nrow) continue;
}
}
Int_t nmerged = tracks->GetNTracks()-kNIn;
- LOG(AliL3Log::kInformational,"AliL3TrackMerger::InterMerge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTTrackMerger::InterMerge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
}
}
-void AliL3TrackMerger::Merge(){
+void AliHLTTrackMerger::Merge(){
//Loop over tracks and pass them to the track merger.
- Double_t edge0 = AliL3Transform::Pi()/18;
- Double_t edge1 = AliL3Transform::TwoPi() - edge0;
- AliL3TrackArray *ttt = GetOutTracks();
+ Double_t edge0 = AliHLTTransform::Pi()/18;
+ Double_t edge1 = AliHLTTransform::TwoPi() - edge0;
+ AliHLTTrackArray *ttt = GetOutTracks();
if(fNSubSector==1) {
GetOutTracks()->AddTracks(GetInTracks(0));
- LOG(AliL3Log::kInformational,"AliL3TrackMerger::Merge","Result")
- <<AliL3Log::kDec<<"Total Copied Tracks: "<<GetOutTracks()->GetNPresent()
+ LOG(AliHLTLog::kInformational,"AliHLTTrackMerger::Merge","Result")
+ <<AliHLTLog::kDec<<"Total Copied Tracks: "<<GetOutTracks()->GetNPresent()
<<ENDLOG;
return;
}
Int_t subsec = fNSubSector -2;
for(Int_t i=subsec;i>=0;i--){
- AliL3TrackArray *tout = GetOutTracks();
+ AliHLTTrackArray *tout = GetOutTracks();
if(i==subsec) tout = GetInTracks(subsec+1);
- AliL3TrackArray *tin = GetInTracks(i);
- Double_t xval = AliL3Transform::Row2X(fRowMax[i]);
- Double_t xmax = AliL3Transform::Row2X(fRowMax[i+1]);
+ AliHLTTrackArray *tin = GetInTracks(i);
+ Double_t xval = AliHLTTransform::Row2X(fRowMax[i]);
+ Double_t xmax = AliHLTTransform::Row2X(fRowMax[i+1]);
Double_t ymax = xval*tan(edge0);
for(Int_t out=0;out<tout->GetNTracks();out++){
- AliL3Track *outtrack=tout->GetCheckedTrack(out);
+ AliHLTTrack *outtrack=tout->GetCheckedTrack(out);
if(!outtrack) continue;
outtrack->CalculateHelix();
outtrack->CalculatePoint(xval);
}
// tout->Compress();
for(Int_t in=0;in<tin->GetNTracks();in++){
- AliL3Track *intrack=(AliL3Track*)tin->GetTrack(in);
+ AliHLTTrack *intrack=(AliHLTTrack*)tin->GetTrack(in);
intrack->CalculateHelix();
intrack->CalculatePoint(xval);
}
if(fSlow) SlowMerge(ttt,tin,tout,xval);
else Merge(ttt,tin,tout);
for(Int_t in=0;in<tin->GetNTracks();in++){
- AliL3Track *intrack=(AliL3Track*)tin->GetCheckedTrack(in);
+ AliHLTTrack *intrack=(AliHLTTrack*)tin->GetCheckedTrack(in);
if(!intrack) continue;
if(intrack->CalculateEdgePoint(edge0)){
if(intrack->GetPointX()<xmax ){
}
/*
for(Int_t in=0;in<tin->GetNTracks();in++){
- AliL3Track *intrack=(AliL3Track*)tin->GetCheckedTrack(in);
+ AliHLTTrack *intrack=(AliHLTTrack*)tin->GetCheckedTrack(in);
if(!intrack) continue;
if(intrack->GetNHits()<10) continue;
AddTrack(ttt,intrack);
}
*/
} // end subsector loop
- LOG(AliL3Log::kInformational,"AliL3TrackMerger::Merge","Result")
- <<AliL3Log::kDec<<"Total Merged Tracks: "<<GetOutTracks()->GetNPresent()
+ LOG(AliHLTLog::kInformational,"AliHLTTrackMerger::Merge","Result")
+ <<AliHLTLog::kDec<<"Total Merged Tracks: "<<GetOutTracks()->GetNPresent()
<<ENDLOG;
}
-Int_t AliL3TrackMerger::Merge(AliL3TrackArray* mergedtrack,AliL3TrackArray *tracksin,AliL3TrackArray *tracksout){
+Int_t AliHLTTrackMerger::Merge(AliHLTTrackArray* mergedtrack,AliHLTTrackArray *tracksin,AliHLTTrackArray *tracksout){
//Loop over tracks and pass them to the track merger.
- AliL3Track *tracks[2];
+ AliHLTTrack *tracks[2];
const Int_t kNOut=tracksout->GetNTracks();
const Int_t kNIn =tracksin->GetNTracks();
for(Int_t out =0;out<kNOut;out++)
ismatchedout[out] = kFALSE;
for(Int_t out =0;out<kNOut;out++){
- AliL3Track *outertrack=(AliL3Track*)tracksout->GetCheckedTrack(out);
+ AliHLTTrack *outertrack=(AliHLTTrack*)tracksout->GetCheckedTrack(out);
if(!outertrack) continue;
for(Int_t in =0;in<kNIn;in++){
if(ismatchedin[in]) continue;
- AliL3Track *innertrack=(AliL3Track*)tracksin->GetCheckedTrack(in);
+ AliHLTTrack *innertrack=(AliHLTTrack*)tracksin->GetCheckedTrack(in);
if(!innertrack) continue;
if(outertrack==innertrack) continue;
if(outertrack->GetCharge()!=innertrack->GetCharge()) continue;
}
Int_t nmerged = mergedtrack->GetNTracks()-kNMerged;
- LOG(AliL3Log::kInformational,"AliL3TrackMerger::Merge","Result")
- <<AliL3Log::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTTrackMerger::Merge","Result")
+ <<AliHLTLog::kDec<<"Merged Tracks: "<<nmerged<<ENDLOG;
delete[] ismatchedin;
delete[] ismatchedout;
return nmerged;
#define ALIL3TRACKMERGER_H
//-------------------------------------------------------------------------
-// Class AliL3TrackMerger
+// Class AliHLTTrackMerger
// This class is responsible for the merging of the HLT tracks
// between TPC sectors and readout patches
//-------------------------------------------------------------------------
#ifndef __CINT__
-#include "AliL3Merger.h"
+#include "AliHLTMerger.h"
#endif
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3Merger;
+class AliHLTMerger;
-class AliL3TrackMerger : public AliL3Merger {
+class AliHLTTrackMerger : public AliHLTMerger {
public:
- AliL3TrackMerger();
- AliL3TrackMerger(Int_t nsubsectors);
- virtual ~AliL3TrackMerger();
+ AliHLTTrackMerger();
+ AliHLTTrackMerger(Int_t nsubsectors);
+ virtual ~AliHLTTrackMerger();
void SetRows(Int_t *row);
void InitSector(Int_t sector,Int_t subsector);
Int_t *fRowMin;//!
Int_t *fRowMax;//!
Bool_t fSlow;//Slow or fast merging
- void SlowMerge(AliL3TrackArray *mergedtrack,AliL3TrackArray *tracksin,AliL3TrackArray *tracksout,Double_t xval);
- Int_t Merge(AliL3TrackArray *mergedtrack,AliL3TrackArray *tracksin,AliL3TrackArray *tracksout);
+ void SlowMerge(AliHLTTrackArray *mergedtrack,AliHLTTrackArray *tracksin,AliHLTTrackArray *tracksout,Double_t xval);
+ Int_t Merge(AliHLTTrackArray *mergedtrack,AliHLTTrackArray *tracksin,AliHLTTrackArray *tracksout);
- ClassDef(AliL3TrackMerger,1) //Track merging class
+ ClassDef(AliHLTTrackMerger,1) //Track merging class
};
+typedef AliHLTTrackMerger AliL3TrackMerger; // for backward compatibility
+
#endif
#ifndef _ALIL3TRACKSEGMENTDATA_H_
#define _ALIL3TRACKSEGMENTDATA_H_
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-struct AliL3TrackSegmentData
+struct AliHLTTrackSegmentData
{
Float_t fX;
Float_t fY;
#endif
};
-typedef struct AliL3TrackSegmentData AliL3TrackSegmentData;
+typedef struct AliHLTTrackSegmentData AliHLTTrackSegmentData;
#endif /* _ALIL3TRACKSEGMENTDATA_H_ */
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#include "dirent.h"
#ifdef use_aliroot
#include <TError.h>
#endif
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
#if defined(__GNUC__) && __GNUC__ >= 3
using namespace std;
#endif
-/** \class AliL3Transform
+/** \class AliHLTTransform
<pre>
//_____________________________________________________________
-// AliL3Transform
+// AliHLTTransform
//
// Transformation class for ALICE TPC.
//
// The class is completely static, which means that no object needs
// to be instantiated. Function calls should then be done like, e.g.:
//
-// Double_t eta = AliL3Transform::GetEta(xyz);
+// Double_t eta = AliHLTTransform::GetEta(xyz);
//
// IMPORTANT: If used as is, default detector parameters will be used,
// and you really have to make sure that these correspond to
// the AliROOT version you are currently working on!!
// You should therefore always initialize the parameters by
//
-// AliL3Transform::Init(path);
+// AliHLTTransform::Init(path);
//
// where path is a char*, giving the path to where file containing
// the detector parameter is located. This file should be called
// You can also force reading the parameters from a AliTPCParam object
// by setting the flag;
//
-// AliL3Transform::Init(path,kTRUE);
+// AliHLTTransform::Init(path,kTRUE);
//
// where path is a char*
// either providing the rootfile name containing the geometry or
</pre>
*/
-ClassImp(AliL3Transform)
+ClassImp(AliHLTTransform)
-const Double_t AliL3Transform::fgkAnodeWireSpacing = 0.25; //Taken from the TDR
-const Double_t AliL3Transform::fgkBFACT = 0.0029980; //Conversion Factor
-const Double_t AliL3Transform::fgkPi = 3.141592653589793;
-const Double_t AliL3Transform::fgk2Pi = 2*3.141592653589793;
-const Double_t AliL3Transform::fgkPi2 = 0.5*3.141592653589793;
-const Double_t AliL3Transform::fgkToDeg = 180/3.141592653589793;
+const Double_t AliHLTTransform::fgkAnodeWireSpacing = 0.25; //Taken from the TDR
+const Double_t AliHLTTransform::fgkBFACT = 0.0029980; //Conversion Factor
+const Double_t AliHLTTransform::fgkPi = 3.141592653589793;
+const Double_t AliHLTTransform::fgk2Pi = 2*3.141592653589793;
+const Double_t AliHLTTransform::fgkPi2 = 0.5*3.141592653589793;
+const Double_t AliHLTTransform::fgkToDeg = 180/3.141592653589793;
//Defined by HLT and GSI
-Int_t AliL3Transform::fgNPatches = 6;
-Int_t AliL3Transform::fgRows[6][2] = {{0,29},{30,62},{63,90},{91,116},{117,139},{140,158}};
-Int_t AliL3Transform::fgNRows[6] = {30,33,28,26,23,19};
+Int_t AliHLTTransform::fgNPatches = 6;
+Int_t AliHLTTransform::fgRows[6][2] = {{0,29},{30,62},{63,90},{91,116},{117,139},{140,158}};
+Int_t AliHLTTransform::fgNRows[6] = {30,33,28,26,23,19};
// The following definition is generated by MakeInitFile function
-Double_t AliL3Transform::fgBField = 0.2;
-Double_t AliL3Transform::fgSolenoidBField = 2;
-Double_t AliL3Transform::fgBFieldFactor = 1;
-Int_t AliL3Transform::fgVersion = kVdefault;
-Int_t AliL3Transform::fgNTimeBins = 446;
-Int_t AliL3Transform::fgNRowLow = 63;
-Int_t AliL3Transform::fgNRowUp = 96;
-Int_t AliL3Transform::fgNRowUp1 = 64;
-Int_t AliL3Transform::fgNRowUp2 = 32;
-Int_t AliL3Transform::fgNSectorLow = 36;
-Int_t AliL3Transform::fgNSectorUp = 36;
-Int_t AliL3Transform::fgNSector = 72;
-Double_t AliL3Transform::fgPadPitchWidthLow = 0.4;
-Double_t AliL3Transform::fgPadPitchWidthUp = 0.6;
-Double_t AliL3Transform::fgZWidth = 0.5660;
-Double_t AliL3Transform::fgZSigma = 0.2288;
-Double_t AliL3Transform::fgZLength = 250.0000;
-Double_t AliL3Transform::fgZOffset = 0.6864;
-Double_t AliL3Transform::fgDiffT = 0.0220;
-Double_t AliL3Transform::fgDiffL = 0.0220;
-Double_t AliL3Transform::fgOmegaTau = 0.1450;
-Double_t AliL3Transform::fgInnerPadLength = 0.75;
-Double_t AliL3Transform::fgOuter1PadLength = 1.00;
-Double_t AliL3Transform::fgOuter2PadLength = 1.50;
-Double_t AliL3Transform::fgInnerPRFSigma = 0.203811;
-Double_t AliL3Transform::fgOuter1PRFSigma = 0.299325;
-Double_t AliL3Transform::fgOuter2PRFSigma = 0.299323;
-Double_t AliL3Transform::fgTimeSigma = 0.228809;
-Int_t AliL3Transform::fgADCSat = 1024;
-Int_t AliL3Transform::fgZeroSup = 0;
-Int_t AliL3Transform::fgNSlice = 36;
-Int_t AliL3Transform::fgNRow = 159;
-Double_t AliL3Transform::fgNRotShift = 0.5;
-Int_t AliL3Transform::fgSlice2Sector[36][2] = { { 0, 36},
+Double_t AliHLTTransform::fgBField = 0.2;
+Double_t AliHLTTransform::fgSolenoidBField = 2;
+Double_t AliHLTTransform::fgBFieldFactor = 1;
+Int_t AliHLTTransform::fgVersion = kVdefault;
+Int_t AliHLTTransform::fgNTimeBins = 446;
+Int_t AliHLTTransform::fgNRowLow = 63;
+Int_t AliHLTTransform::fgNRowUp = 96;
+Int_t AliHLTTransform::fgNRowUp1 = 64;
+Int_t AliHLTTransform::fgNRowUp2 = 32;
+Int_t AliHLTTransform::fgNSectorLow = 36;
+Int_t AliHLTTransform::fgNSectorUp = 36;
+Int_t AliHLTTransform::fgNSector = 72;
+Double_t AliHLTTransform::fgPadPitchWidthLow = 0.4;
+Double_t AliHLTTransform::fgPadPitchWidthUp = 0.6;
+Double_t AliHLTTransform::fgZWidth = 0.5660;
+Double_t AliHLTTransform::fgZSigma = 0.2288;
+Double_t AliHLTTransform::fgZLength = 250.0000;
+Double_t AliHLTTransform::fgZOffset = 0.6864;
+Double_t AliHLTTransform::fgDiffT = 0.0220;
+Double_t AliHLTTransform::fgDiffL = 0.0220;
+Double_t AliHLTTransform::fgOmegaTau = 0.1450;
+Double_t AliHLTTransform::fgInnerPadLength = 0.75;
+Double_t AliHLTTransform::fgOuter1PadLength = 1.00;
+Double_t AliHLTTransform::fgOuter2PadLength = 1.50;
+Double_t AliHLTTransform::fgInnerPRFSigma = 0.203811;
+Double_t AliHLTTransform::fgOuter1PRFSigma = 0.299325;
+Double_t AliHLTTransform::fgOuter2PRFSigma = 0.299323;
+Double_t AliHLTTransform::fgTimeSigma = 0.228809;
+Int_t AliHLTTransform::fgADCSat = 1024;
+Int_t AliHLTTransform::fgZeroSup = 0;
+Int_t AliHLTTransform::fgNSlice = 36;
+Int_t AliHLTTransform::fgNRow = 159;
+Double_t AliHLTTransform::fgNRotShift = 0.5;
+Int_t AliHLTTransform::fgSlice2Sector[36][2] = { { 0, 36},
{ 1, 37},
{ 2, 38},
{ 3, 39},
{35, 71}
};
-Int_t AliL3Transform::fgSector2Slice[72] = { 0,
+Int_t AliHLTTransform::fgSector2Slice[72] = { 0,
1,
2,
3,
35
};
-Int_t AliL3Transform::fgSectorLow[72] = { 1,
+Int_t AliHLTTransform::fgSectorLow[72] = { 1,
1,
1,
1,
0
};
-Double_t AliL3Transform::fgX[159] = { 85.195,
+Double_t AliHLTTransform::fgX[159] = { 85.195,
85.945,
86.695,
87.445,
245.930
};
-Int_t AliL3Transform::fgNPads[159] = {67,
+Int_t AliHLTTransform::fgNPads[159] = {67,
67,
69,
69,
139
};
-Double_t AliL3Transform::fgCos[36] = { 0.9848077297,
+Double_t AliHLTTransform::fgCos[36] = { 0.9848077297,
0.8660253882,
0.6427876353,
0.3420201540,
0.9848077297
};
-Double_t AliL3Transform::fgSin[36] = { 0.1736481786,
+Double_t AliHLTTransform::fgSin[36] = { 0.1736481786,
0.5000000000,
0.7660444379,
0.9396926165,
};
#ifdef use_aliroot
-Bool_t AliL3Transform::Init(AliRunLoader *runLoader)
+Bool_t AliHLTTransform::Init(AliRunLoader *runLoader)
{
//init with runloader
if(!runLoader) {
- LOG(AliL3Log::kFatal,"AliL3Transform::Init","RunLoader")
+ LOG(AliHLTLog::kFatal,"AliHLTTransform::Init","RunLoader")
<<" Missing RunLoader! 0x0"<<ENDLOG;
return kFALSE;
}
if(fgVersion != kVdefault)
- LOG(AliL3Log::kWarning,"AliL3Transform::Init","Init values")
- <<AliL3Log::kDec<<"You are initializing the parameters more than once; check your code please! "<<fgVersion<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTTransform::Init","Init values")
+ <<AliHLTLog::kDec<<"You are initializing the parameters more than once; check your code please! "<<fgVersion<<ENDLOG;
TDirectory* savedir1 = gDirectory;
runLoader->CdGAFile();
savedir1->cd();
if(!param)
{
- LOG(AliL3Log::kFatal,"AliL3Transform::Init","File")
+ LOG(AliHLTLog::kFatal,"AliHLTTransform::Init","File")
<<"No TPC parameters found!"<<ENDLOG;
return kFALSE;
}
TFile *prf_file = TFile::Open("$ALICE_ROOT/TPC/AliTPCprf2d.root");
if (!prf_file->IsOpen())
{
- LOG(AliL3Log::kError,"AliL3Transform::Init","File")
+ LOG(AliHLTLog::kError,"AliHLTTransform::Init","File")
<<"Can't open $ALICE_ROOT/TPC/AliTPCprf2d.root !"<<ENDLOG;
return kFALSE;
}
fgNRowUp2 = param->GetNRowUp2();
fgNRow= fgNRowLow + fgNRowUp;
if(fgNRow!=159){
- LOG(AliL3Log::kError,"AliL3Transform::Init","fNRow")
+ LOG(AliHLTLog::kError,"AliHLTTransform::Init","fNRow")
<<"Number of rows have changed in ALIROOT"<<ENDLOG;
return kFALSE;
}
Int_t shift1=TMath::Nint(irotshift/kDegtoRad);
Int_t shift2=TMath::Nint(orotshift/kDegtoRad+0.1);
if((shift1!=shift2) || (shift1!=10)){
- LOG(AliL3Log::kError,"AliL3Transform::Init","Rotshiftangle")
+ LOG(AliHLTLog::kError,"AliHLTTransform::Init","Rotshiftangle")
<<"Rotation shift angle has changed in ALIROOT"<<ENDLOG;
return kFALSE;
} else {
}
#endif
-Bool_t AliL3Transform::Init(Char_t* path,Bool_t UseAliTPCParam)
+Bool_t AliHLTTransform::Init(Char_t* path,Bool_t UseAliTPCParam)
{
//Overwrite the parameters with values stored in file "l3transform.config" in path.
//If file does not exist, old default values will be used.
//which then has to be called path/digitfile.root
if(fgVersion != kVdefault)
- LOG(AliL3Log::kWarning,"AliL3Transform::Init","Init values")
- <<AliL3Log::kDec<<"You are initializing the parameters more than once; check your code please! "<<fgVersion<<ENDLOG;
+ LOG(AliHLTLog::kWarning,"AliHLTTransform::Init","Init values")
+ <<AliHLTLog::kDec<<"You are initializing the parameters more than once; check your code please! "<<fgVersion<<ENDLOG;
if(UseAliTPCParam) //use rootfile to generate temporary init file
return ReadInit(path);
return ReadInitFile(pathname);
}
-Bool_t AliL3Transform::ReadInitFile(Char_t* pathname)
+Bool_t AliHLTTransform::ReadInitFile(Char_t* pathname)
{
//read transformer settings from pathname
FILE *fptr=fopen(pathname,"r");
if(!fptr){
- LOG(AliL3Log::kWarning,"AliL3Transform::ReadInitFile","File Open")
+ LOG(AliHLTLog::kWarning,"AliHLTTransform::ReadInitFile","File Open")
<<"Pointer to Config File \""<<pathname<<"\" 0x0!"<<ENDLOG;
return kFALSE;
}
fscanf(fptr,"%s %d %s",d2,&dummy,d3);
fgNRowLow=(Int_t)dummy;
if(fgNRowLow != 63)
- LOG(AliL3Log::kError,"AliL3Transform::ReadInitFile","Overflow")
+ LOG(AliHLTLog::kError,"AliHLTTransform::ReadInitFile","Overflow")
<<"Number of inner PadRows should be 63! Check and fgrep the code for 63 to see the consequences of this major change!"<<ENDLOG;
}
else if(strcmp(d1,"fNRowUp")==0){fscanf(fptr,"%s %d %s",d2,&dummy,d3);fgNRowUp=(Int_t)dummy;}
else if(strcmp(d1,"fNRow")==0){
fscanf(fptr,"%s %d %s",d2,&dummy,d3);fgNRow=(Int_t)dummy;
if(fgNRow!=159){
- LOG(AliL3Log::kError,"AliL3Transform::ReadInitFile","Overflow")<<"Number of PadRows should be 159! Check and fgrep the code for 159 to see the consequences of this major change!"<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::ReadInitFile","Overflow")<<"Number of PadRows should be 159! Check and fgrep the code for 159 to see the consequences of this major change!"<<ENDLOG;
}
}
else if(strcmp(d1,"fNRotShift")==0){fscanf(fptr,"%s %lf %s",d2,&ddummy,d3);fgNRotShift=(Double_t)ddummy;}
//Test if new config file has been used.
if(fgVersion==kVdeprecated){
- LOG(AliL3Log::kError,"AliL3Transform::ReadInitFile","Version")
+ LOG(AliHLTLog::kError,"AliHLTTransform::ReadInitFile","Version")
<<"Version is deprecated, you have to create a new config file."<<ENDLOG;
return kFALSE;
}
- LOG(AliL3Log::kInformational,"AliL3Transform::ReadInitFile","Config")
+ LOG(AliHLTLog::kInformational,"AliHLTTransform::ReadInitFile","Config")
<<"Successfully loaded values from config file \""<<pathname<<"\""<<ENDLOG;
return kTRUE;
}
-Bool_t AliL3Transform::ReadInit(Char_t *path)
+Bool_t AliHLTTransform::ReadInit(Char_t *path)
{
//Read all the parameters from a aliroot file, and store it in a temporary
//file which is read by Init. Use this if you want to read the parameters from
//the rootfile "every" time.
#ifndef use_aliroot
- LOG(AliL3Log::kError,"AliL3Transform::ReadInit","Version")
+ LOG(AliHLTLog::kError,"AliHLTTransform::ReadInit","Version")
<<"You have to compile with use_aliroot flag in order to read from AliROOT file"<<ENDLOG;
return kFALSE;
#else
#endif
}
-Bool_t AliL3Transform::MakeInitFile(Char_t *rootfilename,Char_t *filename)
+Bool_t AliHLTTransform::MakeInitFile(Char_t *rootfilename,Char_t *filename)
{
//Get the parameters from rootfile, and store it on the file "l3transform.config"
//which is being read by Init. fVersion will be kV_aliroot!
#ifndef use_aliroot
- LOG(AliL3Log::kError,"AliL3Transform::MakeInitFile","Version")
+ LOG(AliHLTLog::kError,"AliHLTTransform::MakeInitFile","Version")
<<"You have to compile with use_aliroot flag in order to use this function"<<ENDLOG;
return kFALSE;
#else
TFile *rootfile = TFile::Open(rootfilename);
if(!rootfile)
{
- LOG(AliL3Log::kError,"AliL3Transform::MakeInitFile","File")
+ LOG(AliHLTLog::kError,"AliHLTTransform::MakeInitFile","File")
<<"Could not open file: "<<rootfilename<<ENDLOG;
return kFALSE;
}
AliRun *gAlice = (AliRun*)rootfile->Get("gAlice");
if(!gAlice)
{
- LOG(AliL3Log::kError,"AliL3Transform::MakeInitFile","File")
+ LOG(AliHLTLog::kError,"AliHLTTransform::MakeInitFile","File")
<<"No gAlice in file: "<<rootfilename<<ENDLOG;
return kFALSE;
}
AliTPCParamSR *param=(AliTPCParamSR*)rootfile->Get(GetParamName());
if(!param)
{
- LOG(AliL3Log::kWarning,"AliL3Transform::MakeInitFile","File")
+ LOG(AliHLTLog::kWarning,"AliHLTTransform::MakeInitFile","File")
<<"No TPC parameters found in \""<<rootfilename
<<"\", creating standard parameters "
<<"which might not be what you want!"<<ENDLOG;
TFile *prf_file = TFile::Open("$ALICE_ROOT/TPC/AliTPCprf2d.root");
if (!prf_file->IsOpen())
{
- LOG(AliL3Log::kError,"AliL3Transform::MakeInitFile","File")
+ LOG(AliHLTLog::kError,"AliHLTTransform::MakeInitFile","File")
<<"Can't open $ALICE_ROOT/TPC/AliTPCprf2d.root !"<<ENDLOG;
return kFALSE;
}
fgNRowUp2 = param->GetNRowUp2();
fgNRow= fgNRowLow + fgNRowUp;
if(fgNRow!=159){
- LOG(AliL3Log::kError,"AliL3Transform::MakeInitFile","fNRow")
+ LOG(AliHLTLog::kError,"AliHLTTransform::MakeInitFile","fNRow")
<<"Number of rows have changed in ALIROOT"<<ENDLOG;
return kFALSE;
}
Int_t shift1=TMath::Nint(irotshift/kDegtoRad);
Int_t shift2=TMath::Nint(orotshift/kDegtoRad+0.1);
if((shift1!=shift2) || (shift1!=10)){
- LOG(AliL3Log::kError,"AliL3Transform::MakeInitFile","Rotshiftangle")
+ LOG(AliHLTLog::kError,"AliHLTTransform::MakeInitFile","Rotshiftangle")
<<"Rotation shift angle has changed in ALIROOT"<<ENDLOG;
return kFALSE;
} else {
#endif
}
-Bool_t AliL3Transform::SaveInitFile(Char_t *filenamepath)
+Bool_t AliHLTTransform::SaveInitFile(Char_t *filenamepath)
{
//store the parameters in the file "filenamepath"
FILE *f = fopen(filenamepath,"w");
if(!f){
- LOG(AliL3Log::kError,"AliL3Transform::SaveInitFile","File")
+ LOG(AliHLTLog::kError,"AliHLTTransform::SaveInitFile","File")
<<"Could not open file: "<<filenamepath<<ENDLOG;
return kFALSE;
}
- fprintf(f,"void AliL3Transform::Init(){\n");
+ fprintf(f,"void AliHLTTransform::Init(){\n");
fprintf(f," fVersion = %d;\n", fgVersion);
fprintf(f," fBFieldFactor = %.3f;\n",fgBFieldFactor);
fprintf(f," fSolenoidBField = %.3f;\n",fgSolenoidBField);
fprintf(f,"}\n");
fclose(f);
- LOG(AliL3Log::kInformational,"AliL3Transform::SaveInitFile","File created")
+ LOG(AliHLTLog::kInformational,"AliHLTTransform::SaveInitFile","File created")
<<"Init file \""<<filenamepath<<"\" created"<<ENDLOG;
return kTRUE;
}
-Int_t AliL3Transform::GetNPads(Int_t row)
+Int_t AliHLTTransform::GetNPads(Int_t row)
{
//get number of pads per row
if(row < 0 || row >= fgNRow)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetNPads","Row")
- <<AliL3Log::kDec<<"Wrong row "<<row<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetNPads","Row")
+ <<AliHLTLog::kDec<<"Wrong row "<<row<<ENDLOG;
return 0;
}
return fgNPads[row];
}
-Int_t AliL3Transform::GetFirstRow(Int_t patch)
+Int_t AliHLTTransform::GetFirstRow(Int_t patch)
{
//get first row per patch
return 0;
else if(patch < -1 || patch >= 6)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetFirstRow","Patch")
- <<AliL3Log::kDec<<"Wrong patch "<<patch<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetFirstRow","Patch")
+ <<AliHLTLog::kDec<<"Wrong patch "<<patch<<ENDLOG;
return 0;
}
else
return fgRows[patch][0];
}
-Int_t AliL3Transform::GetLastRow(Int_t patch)
+Int_t AliHLTTransform::GetLastRow(Int_t patch)
{
//get last row per patch
if(patch==-1)
return fgRows[5][1];
else if(patch < -1 || patch >= 6)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetLastRow","Patch")
- <<AliL3Log::kDec<<"Wrong patch "<<patch<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetLastRow","Patch")
+ <<AliHLTLog::kDec<<"Wrong patch "<<patch<<ENDLOG;
return 0;
}
else
return fgRows[patch][1];
}
-Int_t AliL3Transform::GetFirstRowOnDDL(Int_t patch)
+Int_t AliHLTTransform::GetFirstRowOnDDL(Int_t patch)
{
//get first row per patch
return 0;
else if(patch < -1 || patch >= 6)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetFirstRow","Patch")
- <<AliL3Log::kDec<<"Wrong patch "<<patch<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetFirstRow","Patch")
+ <<AliHLTLog::kDec<<"Wrong patch "<<patch<<ENDLOG;
return 0;
}
else
}
}
-Int_t AliL3Transform::GetLastRowOnDDL(Int_t patch)
+Int_t AliHLTTransform::GetLastRowOnDDL(Int_t patch)
{
//get last row per patch
if(patch==-1)
return fgRows[5][1];
else if(patch < -1 || patch >= 6)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetLastRow","Patch")
- <<AliL3Log::kDec<<"Wrong patch "<<patch<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetLastRow","Patch")
+ <<AliHLTLog::kDec<<"Wrong patch "<<patch<<ENDLOG;
return 0;
}
else
}
}
-Int_t AliL3Transform::GetNRows(Int_t patch)
+Int_t AliHLTTransform::GetNRows(Int_t patch)
{
//get number of rows per patch
if(patch==-1)
return fgNRow;
else if(patch < -1 || patch >= 6)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetNRows","Patch")
- <<AliL3Log::kDec<<"Wrong patch "<<patch<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetNRows","Patch")
+ <<AliHLTLog::kDec<<"Wrong patch "<<patch<<ENDLOG;
return 0;
}
else
return fgNRows[patch];
}
-Int_t AliL3Transform::GetPadRow(Float_t xvalue)
+Int_t AliHLTTransform::GetPadRow(Float_t xvalue)
{
//Find the padrow number corresponding to cartesian _local_ x value
if(xvalue < 0 || xvalue > 250)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetPadRow","X-value")
- <<AliL3Log::kDec<<"Suspicious x-value, make sure it is in local coordinate! "
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetPadRow","X-value")
+ <<AliHLTLog::kDec<<"Suspicious x-value, make sure it is in local coordinate! "
<<xvalue<<ENDLOG;
return -1;
}
}
}
-Int_t AliL3Transform::GetPatch(Int_t padrow)
+Int_t AliHLTTransform::GetPatch(Int_t padrow)
{
//get patch for padrow
if(padrow < 0 || padrow >= fgNRow)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetPatch","Padrow")
- <<AliL3Log::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetPatch","Padrow")
+ <<AliHLTLog::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
return -2;
}
Int_t patch=0;
return patch;
}
-Double_t AliL3Transform::GetPadLength(Int_t padrow)
+Double_t AliHLTTransform::GetPadLength(Int_t padrow)
{
//get pad length for padrow
if(padrow >= fgNRow){
- LOG(AliL3Log::kError,"AliL3Transform::GetPadLength","Padrow")
- <<AliL3Log::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetPadLength","Padrow")
+ <<AliHLTLog::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
return 0;
}
return fgOuter2PadLength;
//should never happen
- LOG(AliL3Log::kError,"AliL3Transform::GetPadLength","Padrow")
- <<AliL3Log::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetPadLength","Padrow")
+ <<AliHLTLog::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
return -1.0;
}
-Double_t AliL3Transform::GetPadPitchWidth(Int_t patch)
+Double_t AliHLTTransform::GetPadPitchWidth(Int_t patch)
{
//get pad patch width for patch
if(patch < 0 || patch > fgNPatches)
{
- LOG(AliL3Log::kError,"AliL3Transform::GetPadPitchWidth","patct")
- <<AliL3Log::kDec<<"Wrong patch "<<patch<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetPadPitchWidth","patct")
+ <<AliHLTLog::kDec<<"Wrong patch "<<patch<<ENDLOG;
return -1;
}
return patch < 2 ? fgPadPitchWidthLow : fgPadPitchWidthUp;
}
-Double_t AliL3Transform::GetParSigmaY2(Int_t padrow,Float_t z,Float_t angle)
+Double_t AliHLTTransform::GetParSigmaY2(Int_t padrow,Float_t z,Float_t angle)
{
//Calculate the expected transverse cluster width as a function of
//drift distance and crossing angle.
return (t1 + t2 + t3 + t4);
}
-Double_t AliL3Transform::GetParSigmaZ2(Int_t padrow,Float_t z,Float_t tgl)
+Double_t AliHLTTransform::GetParSigmaZ2(Int_t padrow,Float_t z,Float_t tgl)
{
//Calculate the expected longitudinal cluster width as a function of
//drift distance and track crossing angle.
Double_t drift;
if(z > 0)
- drift = AliL3Transform::GetZLength() - z;
+ drift = AliHLTTransform::GetZLength() - z;
else
- drift = AliL3Transform::GetZLength() + z;
+ drift = AliHLTTransform::GetZLength() + z;
Double_t t1 = fgZSigma*fgZSigma;
Double_t t2 = fgDiffL*fgDiffL*drift;
return (t1 + t2 + t3);
}
-Double_t AliL3Transform::GetPRFSigma(Int_t padrow)
+Double_t AliHLTTransform::GetPRFSigma(Int_t padrow)
{
//get sigma of pad response function for padrow
if(padrow >= fgNRow){
- LOG(AliL3Log::kError,"AliL3Transform::GetPRFSigma","Padrow")
- <<AliL3Log::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetPRFSigma","Padrow")
+ <<AliHLTLog::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
return 0;
}
if(padrow < fgNRowLow)
return fgOuter2PRFSigma;
//should never happen
- LOG(AliL3Log::kError,"AliL3Transform::GetPRFSigma","Padrow")
- <<AliL3Log::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::GetPRFSigma","Padrow")
+ <<AliHLTLog::kDec<<"Wrong padrow "<<padrow<<ENDLOG;
return -1.;
}
-Double_t AliL3Transform::GetEta(Float_t *xyz)
+Double_t AliHLTTransform::GetEta(Float_t *xyz)
{
//get eta
Double_t r3 = sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]+xyz[2]*xyz[2]);
return eta;
}
-void AliL3Transform::XYZtoRPhiEta(Float_t *rpe, Float_t *xyz)
+void AliHLTTransform::XYZtoRPhiEta(Float_t *rpe, Float_t *xyz)
{
//transform xyz into rpe
rpe[0] = sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]+xyz[2]*xyz[2]);
rpe[2] = 0.5 * log((rpe[0]+xyz[2])/(rpe[0]-xyz[2]));
}
-Double_t AliL3Transform::GetEta(Int_t slice,Int_t padrow,Int_t pad,Int_t time)
+Double_t AliHLTTransform::GetEta(Int_t slice,Int_t padrow,Int_t pad,Int_t time)
{
//get eta
Float_t xyz[3];
return GetEta(xyz);
}
-Double_t AliL3Transform::GetPhi(Float_t *xyz)
+Double_t AliHLTTransform::GetPhi(Float_t *xyz)
{
//get phi
Double_t phi = atan2(xyz[1],xyz[0]);
return phi;
}
-Bool_t AliL3Transform::Slice2Sector(Int_t slice, Int_t slicerow, Int_t & sector, Int_t &row)
+Bool_t AliHLTTransform::Slice2Sector(Int_t slice, Int_t slicerow, Int_t & sector, Int_t &row)
{
//slice to sector number
if(slicerow<0&&slicerow>=fgNRow){
- LOG(AliL3Log::kError,"AliL3Transform::Slice2Sector","Slicerow")
- <<AliL3Log::kDec<<"Wrong slicerow "<<slicerow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::Slice2Sector","Slicerow")
+ <<AliHLTLog::kDec<<"Wrong slicerow "<<slicerow<<ENDLOG;
return kFALSE;
}
if(slice<0||slice>=fgNSlice){
- LOG(AliL3Log::kError,"AliL3Transform::Slice2Sector","Slice")
- <<AliL3Log::kDec<<"Wrong slice "<<slice<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::Slice2Sector","Slice")
+ <<AliHLTLog::kDec<<"Wrong slice "<<slice<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3Transform::Sector2Slice(Int_t & slice, Int_t sector)
+Bool_t AliHLTTransform::Sector2Slice(Int_t & slice, Int_t sector)
{
//sector to slice
if(sector<0||sector>=fgNSector){
- LOG(AliL3Log::kError,"AliL3Transform::Sector2Slice","Sector")
- <<AliL3Log::kDec<<"Wrong sector "<<sector<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::Sector2Slice","Sector")
+ <<AliHLTLog::kDec<<"Wrong sector "<<sector<<ENDLOG;
return kFALSE;
}
return kTRUE;
}
-Bool_t AliL3Transform::Sector2Slice(Int_t & slice, Int_t & slicerow, Int_t sector, Int_t row)
+Bool_t AliHLTTransform::Sector2Slice(Int_t & slice, Int_t & slicerow, Int_t sector, Int_t row)
{
//sector to slice
if(sector<0 || sector>=fgNSector){
- LOG(AliL3Log::kError,"AliL3Transform::Sector2Slice","Sector")
- <<AliL3Log::kDec<<"Wrong sector "<<sector<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::Sector2Slice","Sector")
+ <<AliHLTLog::kDec<<"Wrong sector "<<sector<<ENDLOG;
return kFALSE;
}
if(row<0){
- LOG(AliL3Log::kError,"AliL3Transform::Sector2Slice","Row")
- <<AliL3Log::kDec<<"Wrong row "<<row<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::Sector2Slice","Row")
+ <<AliHLTLog::kDec<<"Wrong row "<<row<<ENDLOG;
return kFALSE;
}
if(fgSectorLow[sector]){
if(row>=fgNRowLow){
- LOG(AliL3Log::kError,"AliL3Transform::Sector2Slice","Row")
- <<AliL3Log::kDec<<"Wrong row "<<row<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::Sector2Slice","Row")
+ <<AliHLTLog::kDec<<"Wrong row "<<row<<ENDLOG;
return kFALSE;
}
slice = fgSector2Slice[sector];
}
else{
if(row>=fgNRowUp){
- LOG(AliL3Log::kError,"AliL3Transform::Sector2Slice","Row")
- <<AliL3Log::kDec<<"Wrong row "<<row<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::Sector2Slice","Row")
+ <<AliHLTLog::kDec<<"Wrong row "<<row<<ENDLOG;
return kFALSE;
}
slice = fgSector2Slice[sector];
return kTRUE;
}
-Double_t AliL3Transform::GetMaxY(Int_t slicerow)
+Double_t AliHLTTransform::GetMaxY(Int_t slicerow)
{
//get maximum y value (for slice 0)
if(slicerow < fgNRowLow)
}
-Double_t AliL3Transform::Row2X(Int_t slicerow)
+Double_t AliHLTTransform::Row2X(Int_t slicerow)
{
//slicerow to X value (slice 0)
if(slicerow<0||slicerow>=fgNRow){
- LOG(AliL3Log::kError,"AliL3Transform::Row2X","Slicerow")
- <<AliL3Log::kDec<<"Wrong slicerow "<<slicerow<<ENDLOG;
+ LOG(AliHLTLog::kError,"AliHLTTransform::Row2X","Slicerow")
+ <<AliHLTLog::kDec<<"Wrong slicerow "<<slicerow<<ENDLOG;
return 0;
}
return fgX[slicerow];
}
-Double_t AliL3Transform::GetZFast(Int_t slice, Int_t time, Float_t vertex)
+Double_t AliHLTTransform::GetZFast(Int_t slice, Int_t time, Float_t vertex)
{
//get z value
Double_t z=fgZWidth*time-fgZOffset;
return z;
}
-void AliL3Transform::Local2Global(Float_t *xyz,Int_t slice)
+void AliHLTTransform::Local2Global(Float_t *xyz,Int_t slice)
{
//Transformation to global coordinate system
Float_t x0 = xyz[0];
xyz[2]=xyz[2];//global z=local z
}
-void AliL3Transform::Local2GlobalAngle(Float_t *angle,Int_t slice)
+void AliHLTTransform::Local2GlobalAngle(Float_t *angle,Int_t slice)
{
//get angle global
angle[0] = fmod(angle[0]+(slice+fgNRotShift)*(2*fgkPi/18),2*fgkPi);
}
-void AliL3Transform::Global2LocalAngle(Float_t *angle,Int_t slice)
+void AliHLTTransform::Global2LocalAngle(Float_t *angle,Int_t slice)
{
//get angle local
angle[0] = angle[0]-(slice+fgNRotShift)*(2*fgkPi/18);
if(angle[0]<0) angle[0]+=2*fgkPi;
}
-void AliL3Transform::Raw2Local(Float_t *xyz,Int_t sector,Int_t row,Float_t pad,Float_t time)
+void AliHLTTransform::Raw2Local(Float_t *xyz,Int_t sector,Int_t row,Float_t pad,Float_t time)
{
//Transformation from rawdata to local coordinate system
xyz[2]=fgZWidth*time-fgZOffset-fgZLength;
}
-void AliL3Transform::Raw2Local(Float_t *xyz,Int_t sector,Int_t row,Int_t pad,Int_t time)
+void AliHLTTransform::Raw2Local(Float_t *xyz,Int_t sector,Int_t row,Int_t pad,Int_t time)
{
//Transformation from rawdata to local coordinate system
xyz[2]=fgZWidth*time-fgZOffset-fgZLength;
}
-void AliL3Transform::RawHLT2Local(Float_t *xyz,Int_t slice,
+void AliHLTTransform::RawHLT2Local(Float_t *xyz,Int_t slice,
Int_t slicerow,Float_t pad,Float_t time)
{
//Transformation from HLT rawdata to local coordinate system
xyz[2]=fgZWidth*time-fgZOffset-fgZLength;
}
-void AliL3Transform::RawHLT2Local(Float_t *xyz,Int_t slice,
+void AliHLTTransform::RawHLT2Local(Float_t *xyz,Int_t slice,
Int_t slicerow,Int_t pad,Int_t time)
{
//Transformation from HLT rawdata to local coordinate system
xyz[2]=fgZWidth*time-fgZOffset-fgZLength;
}
-void AliL3Transform::Local2Global(Float_t *xyz,Int_t sector,Int_t row)
+void AliHLTTransform::Local2Global(Float_t *xyz,Int_t sector,Int_t row)
{
//Transformation to global coordinate system
Int_t slice,slicerow;
xyz[2]=xyz[2];//global z=local z
}
-void AliL3Transform::LocHLT2Global(Float_t *xyz,Int_t slice,Int_t slicerow)
+void AliHLTTransform::LocHLT2Global(Float_t *xyz,Int_t slice,Int_t slicerow)
{
//Transformation from HLT to global coordinate system
Float_t r=Row2X(slicerow); //have to get x value first
xyz[2]=xyz[2];//global z=local z
}
-void AliL3Transform::Global2Local(Float_t *xyz,Int_t sector)
+void AliHLTTransform::Global2Local(Float_t *xyz,Int_t sector)
{ //check code
Int_t slice;
Sector2Slice(slice, sector);
xyz[1] = y1;
}
-void AliL3Transform::Global2LocHLT(Float_t *xyz,Int_t slice)
+void AliHLTTransform::Global2LocHLT(Float_t *xyz,Int_t slice)
{
Float_t x1 = xyz[0]*fgCos[slice] + xyz[1]*fgSin[slice];
Float_t y1 = -xyz[0]*fgSin[slice] + xyz[1]*fgCos[slice];
xyz[1] = y1;
}
-void AliL3Transform::Raw2Global(Float_t *xyz,Int_t sector,Int_t row,Float_t pad,Float_t time)
+void AliHLTTransform::Raw2Global(Float_t *xyz,Int_t sector,Int_t row,Float_t pad,Float_t time)
{
//Transformation from raw to global coordinates
Local2Global(xyz,sector,row);
}
-void AliL3Transform::Raw2Global(Float_t *xyz,Int_t sector,Int_t row,Int_t pad,Int_t time)
+void AliHLTTransform::Raw2Global(Float_t *xyz,Int_t sector,Int_t row,Int_t pad,Int_t time)
{
//Transformation from raw to global coordinates
Local2Global(xyz,sector,row);
}
-void AliL3Transform::RawHLT2Global(Float_t *xyz,Int_t slice,
+void AliHLTTransform::RawHLT2Global(Float_t *xyz,Int_t slice,
Int_t slicerow,Float_t pad,Float_t time)
{
//Transformation from raw to global coordinates
LocHLT2Global(xyz,slice,slicerow);
}
-void AliL3Transform::RawHLT2Global(Float_t *xyz,Int_t slice,
+void AliHLTTransform::RawHLT2Global(Float_t *xyz,Int_t slice,
Int_t slicerow,Int_t pad,Int_t time)
{
//Transformation from raw to global coordinates
LocHLT2Global(xyz,slice,slicerow);
}
-void AliL3Transform::Local2Raw(Float_t *xyz,Int_t sector,Int_t row)
+void AliHLTTransform::Local2Raw(Float_t *xyz,Int_t sector,Int_t row)
{
//Transformation from local coordinates to raw
xyz[2]=(fgZLength+xyz[2]+fgZOffset)/fgZWidth;
}
-void AliL3Transform::LocHLT2Raw(Float_t *xyz,Int_t slice,Int_t slicerow)
+void AliHLTTransform::LocHLT2Raw(Float_t *xyz,Int_t slice,Int_t slicerow)
{
//Transformation from local coordinates to raw
xyz[2]=(fgZLength+xyz[2]+fgZOffset)/fgZWidth;
}
-void AliL3Transform::Global2Raw(Float_t *xyz,Int_t sector,Int_t row)
+void AliHLTTransform::Global2Raw(Float_t *xyz,Int_t sector,Int_t row)
{
//Transformation from global coordinates to raw.
Local2Raw(xyz,sector,row);
}
-void AliL3Transform::Global2HLT(Float_t *xyz,Int_t slice,Int_t slicerow)
+void AliHLTTransform::Global2HLT(Float_t *xyz,Int_t slice,Int_t slicerow)
{
//Transformation from global coordinates to raw.
LocHLT2Raw(xyz,slice,slicerow);
}
-void AliL3Transform::PrintCompileOptions()
+void AliHLTTransform::PrintCompileOptions()
{
//print compile options
#if defined(__GNUC__)
#endif
#ifdef ROWHOUGHPARAMS
- cout << "Using extended AliL3TrackSegmentData: -DROWHOUGHPARAMS was given." << endl;
+ cout << "Using extended AliHLTTrackSegmentData: -DROWHOUGHPARAMS was given." << endl;
#else
- cout << "NOT using extended AliL3TrackSegmentData: -DROWHOUGHPARAMS was not given." << endl;
+ cout << "NOT using extended AliHLTTrackSegmentData: -DROWHOUGHPARAMS was not given." << endl;
#endif
#ifdef use_newio
class AliRunLoader;
#endif
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3Transform {
+class AliHLTTransform {
public:
enum VersionType { kVdefault=0, kVdeprecated=1, kValiroot=10, kVcosmics=100};
static Double_t fgSin[36]; //stores the sin value for local to global rotations
public:
- virtual ~AliL3Transform() {}
+ virtual ~AliHLTTransform() {}
#ifdef use_aliroot
static Bool_t Init(AliRunLoader *runLoader); //init transformer params using a run loader
#endif
static void PrintCompileOptions();
- ClassDef(AliL3Transform,1)
+ ClassDef(AliHLTTransform,1)
};
+
+typedef AliHLTTransform AliL3Transform; // for backward compatibility
+
#endif
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3Logging.h"
-#include "AliL3VertexData.h"
-#include "AliL3Vertex.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTVertexData.h"
+#include "AliHLTVertex.h"
-/** \class AliL3Vertex
+/** \class AliHLTVertex
<pre>
//_____________________________________________________________
-// AliL3Vertex
+// AliHLTVertex
//
// Stores the information of the vertex position
//
</pre>
*/
-ClassImp(AliL3Vertex)
+ClassImp(AliHLTVertex)
-AliL3Vertex::AliL3Vertex(){
+AliHLTVertex::AliHLTVertex(){
//
- // default constructor for the AliL3Vertex class.
+ // default constructor for the AliHLTVertex class.
//
SetZero();
}
-AliL3Vertex::~AliL3Vertex(){
+AliHLTVertex::~AliHLTVertex(){
//
// destructor
//
}
-void AliL3Vertex::SetZero()
+void AliHLTVertex::SetZero()
{
// set vertex to zero
SetX(0);
fMWxy = 1.;
}
-void AliL3Vertex::Read(const AliL3VertexData *vertex)
+void AliHLTVertex::Read(const AliHLTVertexData *vertex)
{
// read vertex
SetX(vertex->fX);
#ifndef ALIL3VERTEX_H
#define ALIL3VERTEX_H
-class AliL3VertexData;
+class AliHLTVertexData;
-class AliL3Vertex {
+class AliHLTVertex {
public:
- AliL3Vertex();
+ AliHLTVertex();
- virtual ~AliL3Vertex();
+ virtual ~AliHLTVertex();
void SetZero();
- void Read(const AliL3VertexData *vertex);
+ void Read(const AliHLTVertexData *vertex);
Double_t GetX() const {return fX;}
Double_t GetY() const {return fY;}
void SetXYWeight(Double_t f) {fMWxy = f;}
private:
- AliL3Vertex(const AliL3Vertex&){;}
- AliL3Vertex& operator=(const AliL3Vertex&){return *this;}
+ AliHLTVertex(const AliHLTVertex&){;}
+ AliHLTVertex& operator=(const AliHLTVertex&){return *this;}
Double_t fX; //x
Double_t fY; //y
Double_t fZErr; //error in y
Double_t fMWxy; //weight
- ClassDef(AliL3Vertex,1) // Vertex base class
+ ClassDef(AliHLTVertex,1) // Vertex base class
};
+
+typedef AliHLTVertex AliL3Vertex; // for backward compatibility
+
#endif
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3VertexArray.h"
+#include "AliHLTLogging.h"
+#include "AliHLTVertexArray.h"
-/** \class AliL3VertexArray
+/** \class AliHLTVertexArray
<pre>
//_____________________________________________________________
-// AliL3VertexArray
+// AliHLTVertexArray
//
// The L3 Fast Vertex Finder Base Class
//
using namespace std;
#endif
-ClassImp(AliL3VertexArray)
+ClassImp(AliHLTVertexArray)
-void AliL3VertexArray::AnalyzeSector(Float_t *vertex, Int_t *array, Int_t len)
+void AliHLTVertexArray::AnalyzeSector(Float_t *vertex, Int_t *array, Int_t len)
{
//loop over all seeds and all vertex position
- LOG(AliL3Log::kInformational,"AliL3VertexArray::AnalyzeSector","Analyze")
- <<AliL3Log::kDec<<"Number of Seeds: "<<fNSeed<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTVertexArray::AnalyzeSector","Analyze")
+ <<AliHLTLog::kDec<<"Number of Seeds: "<<fNSeed<<ENDLOG;
for(Int_t i =0;i<fNSeed;i++)
for(Int_t bin = 0;bin<len;bin++)
array[bin] += Trace(fZSeed[i],fRSeed[i],fSecSeed[i],vertex[bin]);
}
-void AliL3VertexArray::FindSectorVertex(Double_t pos, Double_t range, Int_t nbin)
+void AliHLTVertexArray::FindSectorVertex(Double_t pos, Double_t range, Int_t nbin)
{
//define position and range for search and
//loop over all seeds
delete[] ver;
}
-void AliL3VertexArray::FindMean(Float_t *vertex,Int_t *array, Int_t len)
+void AliHLTVertexArray::FindMean(Float_t *vertex,Int_t *array, Int_t len)
{
//find mean and error of array and store it in
//fZSector and fZSectorErr
// @(#) $Id$
-#ifndef AliL3VERTEXARRAY_H
-#define AliL3VERTEXARRAY_H
+#ifndef AliHLTVERTEXARRAY_H
+#define AliHLTVERTEXARRAY_H
#include <math.h>
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-class AliL3VertexArray {
+class AliHLTVertexArray {
private:
Char_t fArray[8320][8][8]; //array
void AnalyzeSector(Float_t *vertex, Int_t *array, Int_t len);
public:
- AliL3VertexArray(){fNSeed=0;fMaxSeed=400;}
- AliL3VertexArray(AliL3VertexArray&){fNSeed=0;fMaxSeed=400;}
- AliL3VertexArray(Int_t maxseed){fNSeed=0;fMaxSeed=maxseed;}
- virtual ~AliL3VertexArray(){;}
+ AliHLTVertexArray(){fNSeed=0;fMaxSeed=400;}
+ AliHLTVertexArray(AliHLTVertexArray&){fNSeed=0;fMaxSeed=400;}
+ AliHLTVertexArray(Int_t maxseed){fNSeed=0;fMaxSeed=maxseed;}
+ virtual ~AliHLTVertexArray(){;}
Int_t GetContent(Float_t z,Float_t r,Int_t sec);
Int_t Trace(Float_t z,Float_t r,Int_t sec,Float_t vertex);
void FindSectorVertex(Double_t pos = 0,Double_t range = 60,Int_t nbin = 60);
void ResetSector();
- ClassDef(AliL3VertexArray,1) //The L3 Fast Vertex Finder Base Class
+ ClassDef(AliHLTVertexArray,1) //The L3 Fast Vertex Finder Base Class
};
-inline void AliL3VertexArray::FillSector3D(Float_t x, Float_t y, Float_t z)
+typedef AliHLTVertexArray AliL3VertexArray; // for backward compatibility
+
+inline void AliHLTVertexArray::FillSector3D(Float_t x, Float_t y, Float_t z)
{
// Filling routine in coordinates
Int_t sec = Int_t( (y+.168*x)/(.336*x)*8); // 8 subsec!!
FillSector2D(z,r,sec);
}
-inline void AliL3VertexArray:: FillSectorSeed3D(Float_t x,Float_t y, Float_t z)
+inline void AliHLTVertexArray:: FillSectorSeed3D(Float_t x,Float_t y, Float_t z)
{
// Filling routine for seeds in coordinates
Int_t sec = Int_t( (y+.168*x)/(.336*x)*8); // 8 subsec!!
FillSectorSeed2D(z,r,sec);
}
-inline void AliL3VertexArray::FillSectorSeed2D(Float_t z,Float_t r,Int_t sec)
+inline void AliHLTVertexArray::FillSectorSeed2D(Float_t z,Float_t r,Int_t sec)
{
// Filling routine in r,z coordinates
if(fNSeed>=400) return;
fNSeed++;
}
-inline void AliL3VertexArray::FillSector2D(Float_t z,Float_t r,Int_t sec)
+inline void AliHLTVertexArray::FillSector2D(Float_t z,Float_t r,Int_t sec)
{
// Filling routine for seeds in r,z coordinates
if(z>r||z<=0||r<220||r>=252) return;
fArray[Int_t(z/r*32*260)][(Int_t(r-220))/4][sec] += 1;
}
-inline Int_t AliL3VertexArray::GetContent(Float_t z,Float_t r,Int_t sec)
+inline Int_t AliHLTVertexArray::GetContent(Float_t z,Float_t r,Int_t sec)
{
// Return content of array in r,z coordinates
if(z>r||z<=0||r<220||r>=252) return 0;
return fArray[Int_t(z/r*32*260)][(Int_t(r-220))/4][sec];
}
-inline void AliL3VertexArray::ResetSector()
+inline void AliHLTVertexArray::ResetSector()
{
// do it!
fZSector=0;
fArray[z][r][sec] = 0;
}
-inline Int_t AliL3VertexArray::Trace(Float_t z,Float_t r,Int_t sec,Float_t vertex)
+inline Int_t AliHLTVertexArray::Trace(Float_t z,Float_t r,Int_t sec,Float_t vertex)
{
// count the number of entries along starting from z,r to vertex,0
Int_t cont=0;
#ifndef VERTEXDATA_H
#define VERTEXDATA_H
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
-struct AliL3VertexData{
+struct AliHLTVertexData{
Double_t fX;
Double_t fY;
Double_t fZ;
Double_t fYErr;
Double_t fZErr;
};
-typedef struct AliL3VertexData AliL3VertexData;
+typedef struct AliHLTVertexData AliHLTVertexData;
#endif /* VERTEXDATA_H */
// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
-#include "AliL3RootTypes.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3VertexData.h"
-#include "AliL3Logging.h"
-#include "AliL3VertexArray.h"
-#include "AliL3Vertex.h"
-#include "AliL3VertexFinder.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3Transform.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTRootTypes.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTVertexData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTVertexArray.h"
+#include "AliHLTVertex.h"
+#include "AliHLTVertexFinder.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTTransform.h"
-/** \class AliL3VertexFinder
+/** \class AliHLTVertexFinder
<pre>
//_____________________________________________________________
-// AliL3VertexFinder
+// AliHLTVertexFinder
//
-// Implementation of AliL3Array
+// Implementation of AliHLTArray
// usage:
//
// ResetSector();
using namespace std;
#endif
-ClassImp(AliL3VertexFinder)
+ClassImp(AliHLTVertexFinder)
-AliL3VertexFinder::AliL3VertexFinder()
+AliHLTVertexFinder::AliHLTVertexFinder()
{
//
- // default constructor for the AliL3VertexFinder class.
+ // default constructor for the AliHLTVertexFinder class.
//
//Set vertex to zero.
fMWxy = 1.;
}
-AliL3VertexFinder::~AliL3VertexFinder()
+AliHLTVertexFinder::~AliHLTVertexFinder()
{
//
// destructor
//
}
-void AliL3VertexFinder::Reset()
+void AliHLTVertexFinder::Reset()
{
//
// Reset
}
-void AliL3VertexFinder::Read(Int_t ncluster, AliL3SpacePointData* hits )
+void AliHLTVertexFinder::Read(Int_t ncluster, AliHLTSpacePointData* hits )
{
//
// analyze sector
//
- const Int_t kseedRow = AliL3Transform::GetNRows() - 1;
+ const Int_t kseedRow = AliHLTTransform::GetNRows() - 1;
const Int_t kfirstRow = kseedRow-32;
for(Int_t n=0;n<ncluster;n++){
if(hits[n].fPadRow==kseedRow)
}
}
-void AliL3VertexFinder::Analyze()
+void AliHLTVertexFinder::Analyze()
{
//
// analyze all
FindSectorVertex();
SetZ(GetZSector());
SetZErr(GetZSectorErr());
- LOG(AliL3Log::kInformational,"AliL3VertexFinder::Analyze","Result")
- <<AliL3Log::kDec<<"Vertex: "<<GetZ()<<" RMS: "<<GetZErr()<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliHLTVertexFinder::Analyze","Result")
+ <<AliHLTLog::kDec<<"Vertex: "<<GetZ()<<" RMS: "<<GetZErr()<<ENDLOG;
}
-void AliL3VertexFinder::Write(AliL3Vertex *vertex) const
+void AliHLTVertexFinder::Write(AliHLTVertex *vertex) const
{
//
// write
vertex->SetXYWeight(GetXYWeight());
}
-void AliL3VertexFinder::Write(AliL3VertexData *vertex) const
+void AliHLTVertexFinder::Write(AliHLTVertexData *vertex) const
{
//
// write
// @(#) $Id$
-#ifndef AliL3VERTEXFINDER_H
-#define AliL3VERTEXFINDER_H
+#ifndef AliHLTVERTEXFINDER_H
+#define AliHLTVERTEXFINDER_H
-class AliL3SpacePointData;
-class AliL3VertexData;
-class AliL3Vertex;
+class AliHLTSpacePointData;
+class AliHLTVertexData;
+class AliHLTVertex;
-#include "AliL3VertexArray.h"
+#include "AliHLTVertexArray.h"
-class AliL3VertexFinder:public AliL3VertexArray {
+class AliHLTVertexFinder:public AliHLTVertexArray {
private:
Double_t fX; // x
Double_t fY; // y
Double_t fMWxy; // xy weight
public:
- AliL3VertexFinder();
- AliL3VertexFinder(AliL3VertexFinder &vf) : AliL3VertexArray(vf){;}
- virtual ~AliL3VertexFinder();
+ AliHLTVertexFinder();
+ AliHLTVertexFinder(AliHLTVertexFinder &vf) : AliHLTVertexArray(vf){;}
+ virtual ~AliHLTVertexFinder();
void Reset();
- void Read(Int_t ncluster, AliL3SpacePointData* hits);
+ void Read(Int_t ncluster, AliHLTSpacePointData* hits);
void Analyze();
- void Write(AliL3Vertex *vertex) const;
- void Write(AliL3VertexData *vertex) const;
+ void Write(AliHLTVertex *vertex) const;
+ void Write(AliHLTVertexData *vertex) const;
Double_t GetX() const {return fX;}
Double_t GetY() const {return fY;}
void SetXYWeight(Double_t f) {fMWxy = f;}
- ClassDef(AliL3VertexFinder,1) // Vertex finder class
+ ClassDef(AliHLTVertexFinder,1) // Vertex finder class
};
+
+typedef AliHLTVertexFinder AliL3VertexFinder; // for backward compatibility
+
#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3_ConfMapFit
-#define ALIL3_ConfMapFit
-
-class AliL3ConfMapTrack;
-class AliL3Vertex;
-
-class AliL3ConfMapFit {
-
- private:
- AliL3ConfMapTrack *fTrack; //!
- AliL3Vertex *fVertex; //!
-
- public:
- AliL3ConfMapFit (AliL3ConfMapTrack *track,AliL3Vertex *vertex);
- virtual ~AliL3ConfMapFit() {};
-
- Int_t FitHelix();
- Int_t FitCircle();
- Int_t FitLine();
-
- ClassDef(AliL3ConfMapFit,1) //Conformal mapping fit class
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef _DIGITDATA_H_
-#define _DIGITDATA_H_
-
-#include "AliL3RootTypes.h"
-
-struct AliL3DigitData
-{
-#ifdef do_mc
- Int_t fTrackID[3];
-#endif
- UShort_t fCharge;
- UChar_t fPad;
- UShort_t fTime;
-#ifdef IA64
- UChar_t dummy1;
- UChar_t dummy2;
-#endif
-};
-typedef struct AliL3DigitData AliL3DigitData;
-
-struct AliL3DigitRowData
-{
- UInt_t fNDigit;
- UInt_t fRow;
-#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
- AliL3DigitData fDigitData[1];
-#else
- AliL3DigitData fDigitData[0];
-#endif
-};
-typedef struct AliL3DigitRowData AliL3DigitRowData;
-
-struct AliL3RandomDigitData{
- UChar_t fRow;
- UShort_t fCharge;
- UChar_t fPad;
- UShort_t fTime;
-};
-typedef struct AliL3RandomDigitData AliL3RandomDigitData;
-#endif /* _DIGITDATA_H_ */
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3FITTER_H
-#define ALIL3FITTER_H
-
-//_____________________________________________________________
-// AliL3Fitter
-//
-// Fit class HLT
-//
-// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
-
-class AliL3Track;
-class AliL3Vertex;
-class AliL3SpacePointData;
-
-class AliL3Fitter {
-
- public:
- AliL3Fitter();
- AliL3Fitter(AliL3Vertex *vertex,Bool_t vertexconstraint=kTRUE);
- virtual ~AliL3Fitter();
-
- void LoadClusters(Char_t *path,Int_t event=0,Bool_t sp=kFALSE);
- void SortTrackClusters(AliL3Track *track) const;
- Int_t FitHelix(AliL3Track *track);
- Int_t FitCircle();
- Int_t FitLine();
- void NoVertex() {fVertexConstraint=kFALSE;}
-
- private:
- AliL3Track *fTrack; //! actual track
- AliL3Vertex *fVertex; //! vertex info
- Bool_t fVertexConstraint; // include vertex constraint
- AliL3SpacePointData *fClusters[36][6]; //! clusters
- UInt_t fNcl[36][6]; // cluster numbers
-
- ClassDef(AliL3Fitter,1) //HLT fit class
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3_GLOBALMERGER_H
-#define ALIL3_GLOBALMERGER_H
-
-#ifndef __CINT__
-#include "AliL3Merger.h"
-#endif
-
-#include "AliL3RootTypes.h"
-
-class AliL3GlobalMerger : public AliL3Merger{
-
- private:
- Int_t fNSlices;
- Int_t fFirst;
- Int_t fLast;
-
- Double_t CheckTracks(AliL3Track *innertrack,AliL3Track *outertrack,Int_t slice);
-
- public:
- AliL3GlobalMerger();
- virtual ~AliL3GlobalMerger();
-
- void Setup(Int_t first,Int_t last);
- void InitSlice(Int_t slice);
- void SlowMerge(Char_t *path="./");
- void Merge(); //Loop over tracks from different sectors
-
- ClassDef(AliL3GlobalMerger,1) //Slice merger
-};
-
-#endif
+++ /dev/null
-// $Id$
-
-#ifndef use_logging
-
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
-
-AliL3Log::TLogLevel AliL3Log::fgLevel=AliL3Log::kNone;
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3LOGGING_H
-#define ALIL3LOGGING_H
-
-#include "AliL3RootTypes.h"
-#include "AliL3StandardIncludes.h"
-
-#ifdef use_logging
-#include <MLUCLog.hpp>
-#include <MLUCLogServer.hpp>
-
-typedef MLUCLog AliL3Log;
-typedef MLUCLogServer AliL3LogServer;
-typedef MLUCDevNullLogServer AliL3DevNullLogServer;
-typedef MLUCStdoutLogServer AliL3StdoutLogServer;
-typedef MLUCStderrLogServer AliL3StderrLogServer;
-typedef MLUCStreamLogServer AliL3StreamLogServer;
-
-#else
-
-#include "AliL3Log.h"
-#endif /* use_logging */
-#endif /* ALIL3LOGGING_H */
+++ /dev/null
-// @(#) $Id$
-#ifndef ALIL3MERGER_H
-#define ALIL3MERGER_H
-//#define PI 3.14159265358979312
-
-#include "AliL3RootTypes.h"
-
-class AliL3Track;
-class AliL3TrackSegmentData;
-class AliL3Vertex;
-class AliL3TrackArray;
-
-class AliL3Merger {
- private:
- Double_t fMaxY; //maxy
- Double_t fMaxZ; //maxz
- Double_t fMaxKappa;//maxkappa
- Double_t fMaxPsi; //maxpsi
- Double_t fMaxTgl; //maxtgl
- Char_t fTrackType; //track type to merge
-
- AliL3TrackArray **fInTrack;//!
- Int_t fNIn; //ntracks
-
- AliL3TrackArray *fOutTrack;//!
-
- void SetArray(Int_t nin);
- void DeleteArray();
-
- protected:
- Int_t fCurrentTracks; //current number
- Int_t fSlice; //slice
- AliL3Vertex *fVertex; //!
- Bool_t f2Global; //global
- Bool_t Is2Global(Bool_t is){f2Global=is;return f2Global;}
- void InitMerger(Int_t ntrackarrays,Char_t *tracktype="AliL3Track");
-
- public:
- AliL3Merger();
- virtual ~AliL3Merger();
-
- Int_t GetNIn() const {return fNIn;}
- AliL3TrackArray *GetInTracks(Int_t in){return fInTrack[in];}
- AliL3TrackArray *GetOutTracks(){return fOutTrack;}
-
- Bool_t Is2Global() const {return f2Global;}
- void SetVertex(AliL3Vertex *vertex){fVertex=vertex;}
- void Reset();
- void SetParameter(Double_t maxy=1., Double_t maxz=1., Double_t maxkappa=0.001, Double_t maxpsi=0.05, Double_t maxtgl=0.1);
- void FillTracks(Int_t ntracks, AliL3TrackSegmentData* tr); //Fill tracks in fTrackArray[fCurrentTracks]
- Double_t GetAngle(Double_t a1,Double_t a2);
- void* GetNtuple() const;
- void* GetNtuple(char *varlist) const;
- Bool_t WriteNtuple(char *filename,void* nt) const;
- void FillNtuple(void* nt,Float_t *data) const ;
- void FillNtuple(void* nt,AliL3Track *innertrack,AliL3Track *outertrack);
- void AddAllTracks();//Copy all Tracks to Output Array
- void SortGlobalTracks(AliL3Track **tracks, Int_t ntrack);
- virtual void SortTracks(AliL3Track **tracks, Int_t ntrack) const;
- virtual void AddTrack(AliL3TrackArray *mergedtrack,AliL3Track *track);
- virtual AliL3Track * MultiMerge(AliL3TrackArray *mergedtrack,AliL3Track **tracks, Int_t ntrack);
- AliL3Track * MergeTracks(AliL3TrackArray *mergedtrack,AliL3Track *t0,AliL3Track *t1);
- virtual Bool_t IsTrack(AliL3Track *innertrack,AliL3Track *outertrack);
- Bool_t IsRTrack(AliL3Track *innertrack,AliL3Track *outertrack);
- Double_t TrackDiff(AliL3Track *innertrack,AliL3Track *outertrack);
- void Print();
- void PrintDiff(AliL3Track *innertrack,AliL3Track *outertrack);
- void PrintTrack(AliL3Track *track);
-
- ClassDef(AliL3Merger,1) //Merging base class
-};
-
-#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#pragma link C++ class AliL3Benchmark;
-#pragma link C++ class AliL3DigitRowData;
-#pragma link C++ class AliL3DigitData;
-#pragma link C++ class AliL3SpacePointData;
-#pragma link C++ class AliL3ConfMapper;
-#pragma link C++ class AliL3ConfMapPoint;
-#pragma link C++ class AliL3Vertex;
-#pragma link C++ class AliL3VertexFinder;
-#pragma link C++ class AliL3VertexArray;
-#pragma link C++ class AliL3Track;
-#pragma link C++ class AliL3ConfMapTrack;
-#pragma link C++ class AliL3ConfMapFit;
-#pragma link C++ class AliL3Transform;
-#pragma link C++ class AliL3Merger;
-#pragma link C++ class AliL3TrackMerger;
-#pragma link C++ class AliL3GlobalMerger;
-#pragma link C++ class AliL3InterMerger;
-#pragma link C++ class AliLevel3;
-#pragma link C++ class AliL3TrackArray;
-#pragma link C++ class AliL3Logger;
-#pragma link C++ class AliL3MemHandler;
-#pragma link C++ class AliL3Display;
-#pragma link C++ class AliL3ClustFinderNew;
-#pragma link C++ class AliL3Fitter;
-#pragma link C++ class AliL3RawDataFileHandler;
-#pragma link C++ class AliL3TPCBeamTestMemHandler;
-
-#ifdef use_aliroot
-#pragma link C++ class AliL3FileHandler;
-#pragma link C++ class AliL3Evaluate;
-#ifdef use_reconstruction
-#pragma link C++ class AliHLTReconstructor;
-#pragma link C++ class AliL3TPCtracker;
-#endif
-#endif
-
-#endif
-
+++ /dev/null
-// @(#) $Id$
-
-#ifndef ALIL3TRACKARRAY_H
-#define ALIL3TRACKARRAY_H
-
-#include "AliL3RootTypes.h"
-
-class AliL3ConfMapTrack;
-class AliL3Track;
-class AliL3TrackSegmentData;
-
-class AliL3TrackArray {
-
- private:
-
- Char_t fTrackType; //track type
- Int_t fSize; //size of arra
- Bool_t *fIsPresent;//!
- Int_t fNAbsent; //ntracks absent
-
- AliL3Track **fTrack;//!
- Int_t fNTracks; //ntracks in
-
- UInt_t WriteConfMapTracks(AliL3TrackSegmentData* tr);
- void DeleteArray();
-
- public:
- AliL3TrackArray();
- AliL3TrackArray(Int_t ntrack);
- AliL3TrackArray(char* tracktype,Int_t ntrack);
- AliL3TrackArray(char* tracktype);
- virtual ~AliL3TrackArray();
- Int_t GetTrackType(){return fTrackType;}
- Int_t GetSize() const {return fSize;}
- Bool_t SetSize(Int_t newsize=2000);
-
- Int_t GetNPresent() const {return (fNTracks- fNAbsent);}
- Int_t GetNTracks() const {return fNTracks;}
- AliL3Track *NextTrack();
- AliL3Track *GetCheckedTrack(Int_t t){if(fIsPresent[t]) return fTrack[t]; return 0;}
- AliL3Track *GetTrack(Int_t t){return fTrack[t];}
-
- void Remove(Int_t track);
- void RemoveLast() {fNTracks--;}
- void Compress();
- void Reset();
- void QSort();
- void QSort( AliL3Track **a, Int_t first, Int_t last);
- Int_t TrackCompare(AliL3Track *a, AliL3Track *b) const;
-
- void FillTracks(Int_t ntracks, AliL3TrackSegmentData* tr,Int_t slice); //Fill tracks and transform
- void FillTracks(Int_t ntracks, AliL3TrackSegmentData* tr); //Fill tracks
- UInt_t WriteTracks(AliL3TrackSegmentData* tr); //Write tracks
- UInt_t WriteTracks(UInt_t & ntracks,AliL3TrackSegmentData* tr); //Write tracks
- UInt_t GetOutSize();
- UInt_t GetOutCount(){return (UInt_t) GetNPresent();}
- void AddTracks(AliL3TrackArray *newtrack,Bool_t remove_old=kTRUE,Int_t slice=-1);//add all Tracks to this
- void AddLast(AliL3Track *track);
-
- ClassDef(AliL3TrackArray,1) //Track array class
-};
-
-#endif
// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>, Uli Frankenfeld <mailto:franken@fi.uib.no>
//*-- Copyright © ALICE HLT Group
-#include "AliL3StandardIncludes.h"
+#include "AliHLTStandardIncludes.h"
#ifndef no_root
#include <TFile.h>
#include <AliRunLoader.h>
#endif
-#include "AliL3Logging.h"
+#include "AliHLTLogging.h"
#include "AliLevel3.h"
-#include "AliL3ConfMapper.h"
-#include "AliL3Vertex.h"
-#include "AliL3VertexFinder.h"
-#include "AliL3TrackMerger.h"
-#include "AliL3GlobalMerger.h"
-#include "AliL3InterMerger.h"
-#include "AliL3ConfMapPoint.h"
-#include "AliL3ConfMapTrack.h"
-#include "AliL3Transform.h"
-#include "AliL3ClustFinderNew.h"
-#include "AliL3DigitData.h"
-#include "AliL3TrackArray.h"
-#include "AliL3MemHandler.h"
-#include "AliL3Fitter.h"
+#include "AliHLTConfMapper.h"
+#include "AliHLTVertex.h"
+#include "AliHLTVertexFinder.h"
+#include "AliHLTTrackMerger.h"
+#include "AliHLTGlobalMerger.h"
+#include "AliHLTInterMerger.h"
+#include "AliHLTConfMapPoint.h"
+#include "AliHLTConfMapTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTClustFinderNew.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTFitter.h"
#ifdef use_aliroot
-#include "AliL3FileHandler.h"
+#include "AliHLTFileHandler.h"
#endif
-#include "AliL3Benchmark.h"
-#include "AliL3DigitData.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3VertexData.h"
-#include "AliL3DDLDataFileHandler.h"
+#include "AliHLTBenchmark.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTTrackSegmentData.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTVertexData.h"
+#include "AliHLTDDLDataFileHandler.h"
/** \class AliLevel3
<pre>
//Init the whole standard tracker chain
#ifndef use_newio
if (filetype==kRunLoader){
- LOG(AliL3Log::kError,"AliLevel3::Init","Files")
+ LOG(AliHLTLog::kError,"AliLevel3::Init","Files")
<<"You have not supplied the input rootfile; if you want "
<<"to run with RunLoader use -Duse_newio for compiling!"<<ENDLOG;
}
if((filetype!=kBinary) && (filetype!=kDate)
&& (filetype!=kRunLoader)&& !fInputFile)
{
- LOG(AliL3Log::kError,"AliLevel3::Init","Files")
+ LOG(AliHLTLog::kError,"AliLevel3::Init","Files")
<<"You have not supplied the input rootfile; use the appropriate ctor!"<<ENDLOG;
return;
}
#if use_newio
if((filetype==kRunLoader) && !fRunLoader)
{
- LOG(AliL3Log::kError,"AliLevel3::Init","Files")
+ LOG(AliHLTLog::kError,"AliLevel3::Init","Files")
<<"You have not supplied the input runloader; use the appropriate ctor!"<<ENDLOG;
return;
}
fEvent=0;
#ifdef use_aliroot /*just to be sure*/
- AliL3FileHandler::CleanStaticIndex();
+ AliHLTFileHandler::CleanStaticIndex();
#endif
switch(npatches){
case 0:
fNPatch = 1;
- fRow[0][0] = AliL3Transform::GetFirstRow(3);
- fRow[0][1] = AliL3Transform::GetLastRow(5);
+ fRow[0][0] = AliHLTTransform::GetFirstRow(3);
+ fRow[0][1] = AliHLTTransform::GetLastRow(5);
break;
case 1:
fNPatch = 1; //number of patches change row in process
fRow[0][0] = 0;
- fRow[0][1] = AliL3Transform::GetLastRow(-1);
+ fRow[0][1] = AliHLTTransform::GetLastRow(-1);
break;
case 2:
fNPatch = 2; //number of patches change row in process
fRow[0][0] = 0; // first row
- fRow[0][1] = AliL3Transform::GetLastRow(1);
- fRow[1][0] = AliL3Transform::GetFirstRow(2);
- fRow[1][1] = AliL3Transform::GetLastRow(5);
+ fRow[0][1] = AliHLTTransform::GetLastRow(1);
+ fRow[1][0] = AliHLTTransform::GetFirstRow(2);
+ fRow[1][1] = AliHLTTransform::GetLastRow(5);
break;
default:
fNPatch = 6;
- fRow[0][0] = AliL3Transform::GetFirstRow(0);
- fRow[0][1] = AliL3Transform::GetLastRow(0);
- fRow[1][0] = AliL3Transform::GetFirstRow(1);
- fRow[1][1] = AliL3Transform::GetLastRow(1);
- fRow[2][0] = AliL3Transform::GetFirstRow(2);
- fRow[2][1] = AliL3Transform::GetLastRow(2);
- fRow[3][0] = AliL3Transform::GetFirstRow(3);
- fRow[3][1] = AliL3Transform::GetLastRow(3);
- fRow[4][0] = AliL3Transform::GetFirstRow(4);
- fRow[4][1] = AliL3Transform::GetLastRow(4);
- fRow[5][0] = AliL3Transform::GetFirstRow(5);
- fRow[5][1] = AliL3Transform::GetLastRow(5);
+ fRow[0][0] = AliHLTTransform::GetFirstRow(0);
+ fRow[0][1] = AliHLTTransform::GetLastRow(0);
+ fRow[1][0] = AliHLTTransform::GetFirstRow(1);
+ fRow[1][1] = AliHLTTransform::GetLastRow(1);
+ fRow[2][0] = AliHLTTransform::GetFirstRow(2);
+ fRow[2][1] = AliHLTTransform::GetLastRow(2);
+ fRow[3][0] = AliHLTTransform::GetFirstRow(3);
+ fRow[3][1] = AliHLTTransform::GetLastRow(3);
+ fRow[4][0] = AliHLTTransform::GetFirstRow(4);
+ fRow[4][1] = AliHLTTransform::GetLastRow(4);
+ fRow[5][0] = AliHLTTransform::GetFirstRow(5);
+ fRow[5][1] = AliHLTTransform::GetLastRow(5);
}
- fVertexFinder = new AliL3VertexFinder();
- fVertex = new AliL3Vertex();
- fTracker = new AliL3ConfMapper();
- fTrackMerger = new AliL3TrackMerger(fNPatch);
- fInterMerger = new AliL3InterMerger();
- fGlobalMerger = new AliL3GlobalMerger();
+ fVertexFinder = new AliHLTVertexFinder();
+ fVertex = new AliHLTVertex();
+ fTracker = new AliHLTConfMapper();
+ fTrackMerger = new AliHLTTrackMerger(fNPatch);
+ fInterMerger = new AliHLTInterMerger();
+ fGlobalMerger = new AliHLTGlobalMerger();
SetMergerParameters();//Set default merger parameters
#ifdef use_aliroot
if(filetype==kRoot){
- fFileHandler = new AliL3FileHandler(kTRUE); //static version
+ fFileHandler = new AliHLTFileHandler(kTRUE); //static version
fFileHandler->SetAliInput(fInputFile);
}else if(filetype==kRaw){
- fFileHandler = new AliL3DDLDataFileHandler();
+ fFileHandler = new AliHLTDDLDataFileHandler();
fFileHandler->SetReaderInput(fInputFile);
}else if(filetype==kDate){
- fFileHandler = new AliL3DDLDataFileHandler();
+ fFileHandler = new AliHLTDDLDataFileHandler();
fFileHandler->SetReaderInput(fInputFile,-1);
}
#if use_newio
else if(filetype==kRunLoader){
- fFileHandler = new AliL3FileHandler(kTRUE); //static version
+ fFileHandler = new AliHLTFileHandler(kTRUE); //static version
fFileHandler->SetAliInput(fRunLoader);
}
#endif
else{
- fFileHandler = new AliL3MemHandler();
+ fFileHandler = new AliHLTMemHandler();
}
#else
if(filetype==kRaw){
- fFileHandler = new AliL3DDLDataFileHandler();
+ fFileHandler = new AliHLTDDLDataFileHandler();
fFileHandler->SetReaderInput(fInputFile);
}else{
- fFileHandler = new AliL3MemHandler();
+ fFileHandler = new AliHLTMemHandler();
}
#endif
- fBenchmark = new AliL3Benchmark();
+ fBenchmark = new AliHLTBenchmark();
}
void AliLevel3::DoBench(char* name)
//dobench
fBenchmark->Analyze(name);
delete fBenchmark;
- fBenchmark = new AliL3Benchmark();
+ fBenchmark = new AliHLTBenchmark();
}
void AliLevel3::DoMc(char* file)
fGlobalMerger->Setup(first,last);
#ifdef use_aliroot
- if(fEvent!=event) AliL3FileHandler::CleanStaticIndex();
+ if(fEvent!=event) AliHLTFileHandler::CleanStaticIndex();
#endif
fEvent=event;
for(Int_t i=first; i<=last; i++){
UseCF = kFALSE;
const Int_t kmaxpoints=120000;
- const Int_t kpointsize = kmaxpoints * sizeof(AliL3SpacePointData);
- AliL3MemHandler *memory = new AliL3MemHandler();
+ const Int_t kpointsize = kmaxpoints * sizeof(AliHLTSpacePointData);
+ AliHLTMemHandler *memory = new AliHLTMemHandler();
fTrackMerger->Reset();
fTrackMerger->SetRows(fRow[0]);
for(Int_t patch=fNPatch-1;patch>=0;patch--){
fFileHandler->Init(slice,patch,&fRow[patch][0]);
UInt_t npoints=0;
- AliL3SpacePointData *points =0;
+ AliHLTSpacePointData *points =0;
UInt_t ndigits=0;
- AliL3DigitRowData *digits =0;
+ AliHLTDigitRowData *digits =0;
if(UseCF){
if(fUseBinary){
if(!fDoRoi){
if(!fFileHandler->SetBinaryInput(name)) return;
if(fPileUp)
{ //Read binary files which are not RLE
- digits = (AliL3DigitRowData*)fFileHandler->Allocate();
+ digits = (AliHLTDigitRowData*)fFileHandler->Allocate();
fFileHandler->Binary2Memory(ndigits,digits);
}
else //Read RLE binary files
- digits= (AliL3DigitRowData *)fFileHandler->CompBinary2Memory(ndigits);
+ digits= (AliHLTDigitRowData *)fFileHandler->CompBinary2Memory(ndigits);
fFileHandler->CloseBinaryInput();
}
memory->CompBinary2CompMemory(ndigits,comp);
memory->CloseBinaryInput();
UInt_t datasize=memory->GetMemorySize(ndigits,comp);
- digits=(AliL3DigitRowData *)fFileHandler->Allocate(datasize);
+ digits=(AliHLTDigitRowData *)fFileHandler->Allocate(datasize);
fBenchmark->Start("Unpacker");
fFileHandler->CompMemory2Memory(ndigits,digits,comp);
fBenchmark->Stop("Unpacker");
memory->CloseBinaryInput();
UInt_t dsize=memory->GetMemorySize(ndigits,comp);
UInt_t rsize=fFileHandler->GetRandomSize();
- digits=(AliL3DigitRowData*)fFileHandler->Allocate(dsize+rsize);
+ digits=(AliHLTDigitRowData*)fFileHandler->Allocate(dsize+rsize);
fBenchmark->Start("Unpacker");
fFileHandler->CompMemory2Memory(ndigits,digits,comp);
fBenchmark->Stop("Unpacker");
memory->CompBinary2CompMemory(ndigits,comp);
memory->CloseBinaryInput();
UInt_t datasize=memory->GetMemorySize(ndigits,comp);
- digits=(AliL3DigitRowData *)fFileHandler->Allocate(datasize);
+ digits=(AliHLTDigitRowData *)fFileHandler->Allocate(datasize);
fBenchmark->Start("Unpacker");
datasize = fFileHandler->CompMemory2Memory(ndigits,digits,comp);
fBenchmark->Stop("Unpacker");
}
if(1){ //Ali to Memory
- digits=(AliL3DigitRowData *)fFileHandler->AliAltroDigits2Memory(ndigits,fEvent);
+ digits=(AliHLTDigitRowData *)fFileHandler->AliAltroDigits2Memory(ndigits,fEvent);
if(0){ //Memory to Binary
fFileHandler->SetBinaryOutput(name);
fFileHandler->Memory2CompBinary(ndigits,digits);
#endif
}//end else UseBinary
- points = (AliL3SpacePointData *) memory->Allocate(kpointsize);
- fClusterFinder = new AliL3ClustFinderNew();
+ points = (AliHLTSpacePointData *) memory->Allocate(kpointsize);
+ fClusterFinder = new AliHLTClustFinderNew();
fClusterFinder->InitSlice(slice,patch,fRow[patch][0],fRow[patch][1],kmaxpoints);
fClusterFinder->SetDeconv(fClusterDeconv);
fClusterFinder->SetXYError(fXYClusterError);
delete fClusterFinder;
fClusterFinder = 0;
fFileHandler->Free();
- LOG(AliL3Log::kInformational,"AliLevel3::ProcessSlice","Cluster Finder")
- <<AliL3Log::kDec<<"Found "<<npoints<<" Points"<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliLevel3::ProcessSlice","Cluster Finder")
+ <<AliHLTLog::kDec<<"Found "<<npoints<<" Points"<<ENDLOG;
}//end UseCF
else{// if not use Clusterfinder
if(fUseBinary){//Binary to Memory
else
sprintf(name,"%s/points_%d_%d_%d.raw",fPath,fEvent,slice,patch);
if(!memory->SetBinaryInput(name)) return;
- points = (AliL3SpacePointData *) memory->Allocate();
+ points = (AliHLTSpacePointData *) memory->Allocate();
memory->Binary2Memory(npoints,points);
memory->CloseBinaryInput();
- LOG(AliL3Log::kInformational,"AliLevel3::ProcessSlice","Read Cluster")
- <<AliL3Log::kDec<<"Found "<<npoints<<" Points in File"<<ENDLOG;
+ LOG(AliHLTLog::kInformational,"AliLevel3::ProcessSlice","Read Cluster")
+ <<AliHLTLog::kDec<<"Found "<<npoints<<" Points in File"<<ENDLOG;
}
#ifdef use_aliroot
else{
fBenchmark->Stop("Vertex Finder Read");
fBenchmark->Start("Vertex Finder");
fVertexFinder->Analyze();
- AliL3VertexData vertex[1];
+ AliHLTVertexData vertex[1];
fVertexFinder->Write(vertex);
fVertex->Read(vertex);
fBenchmark->Stop("Vertex Finder");
fFileHandler->Free();
UInt_t ntracks0 =0;
- AliL3TrackSegmentData *trackdata0 =
- (AliL3TrackSegmentData *) memory->Allocate(fTracker->GetTracks());
+ AliHLTTrackSegmentData *trackdata0 =
+ (AliHLTTrackSegmentData *) memory->Allocate(fTracker->GetTracks());
memory->TrackArray2Memory(ntracks0,trackdata0,fTracker->GetTracks());
//write tracks
memory->Free();
UInt_t ntracks1 =0;
- AliL3TrackSegmentData *trackdata1 =
- (AliL3TrackSegmentData *) memory->Allocate(fInterMerger->GetInTracks(0));
+ AliHLTTrackSegmentData *trackdata1 =
+ (AliHLTTrackSegmentData *) memory->Allocate(fInterMerger->GetInTracks(0));
memory->TrackArray2Memory(ntracks1,trackdata1,fInterMerger->GetInTracks(0));
fTrackMerger->InitSector(slice,patch);
WriteTracks(name,fTrackMerger,'o'); //write output of trackmerger
}
*/
- fTrackData = (AliL3TrackSegmentData *)
+ fTrackData = (AliHLTTrackSegmentData *)
fFileHandler->Allocate(fTrackMerger->GetOutTracks());
fFileHandler->TrackArray2Memory(fNTrackData,fTrackData,
void AliLevel3::FitGlobalTracks()
{
//fit global tracks
- AliL3Fitter *fitter = new AliL3Fitter(fVertex,AliLevel3::DoVertexFit());
+ AliHLTFitter *fitter = new AliHLTFitter(fVertex,AliLevel3::DoVertexFit());
if(fNPatch==1)
fitter->LoadClusters(fWriteOutPath,fEvent,kTRUE);
else
fitter->LoadClusters(fWriteOutPath,fEvent,kFALSE);
fBenchmark->Start("Global track fitter");
- AliL3TrackArray *tracks = fGlobalMerger->GetOutTracks();
+ AliHLTTrackArray *tracks = fGlobalMerger->GetOutTracks();
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3Track *tr = tracks->GetCheckedTrack(i);
+ AliHLTTrack *tr = tracks->GetCheckedTrack(i);
if(!tr) continue;
fitter->FitHelix(tr);
tr->UpdateToFirstPoint();
delete fitter;
}
-void AliLevel3::WriteSpacePoints(UInt_t npoints,AliL3SpacePointData *points,
+void AliLevel3::WriteSpacePoints(UInt_t npoints,AliHLTSpacePointData *points,
Int_t slice,Int_t patch) const
{
//write space points
sprintf(name,"%s/points_%d_%d_%d.raw",fWriteOutPath,fEvent,slice,-1);
else
sprintf(name,"%s/points_%d_%d_%d.raw",fWriteOutPath,fEvent,slice,patch);
- AliL3MemHandler * memory = new AliL3MemHandler();
+ AliHLTMemHandler * memory = new AliHLTMemHandler();
memory->SetBinaryOutput(name);
memory->Transform(npoints,points,slice);
memory->Memory2Binary(npoints,points);
delete memory;
}
-Int_t AliLevel3::WriteTracks(char *filename,AliL3Merger *merger,char opt) const
+Int_t AliLevel3::WriteTracks(char *filename,AliHLTMerger *merger,char opt) const
{
//write tracks
- AliL3MemHandler *memory = new AliL3MemHandler();
+ AliHLTMemHandler *memory = new AliHLTMemHandler();
memory->SetBinaryOutput(filename);
if(opt=='a'||opt=='i'){ //add intracks
for(Int_t i=0;i<merger->GetNIn();i++){
- AliL3TrackArray *tr=merger->GetInTracks(i);
+ AliHLTTrackArray *tr=merger->GetInTracks(i);
memory->TrackArray2Binary(tr);
}
}
if(opt=='o'||opt=='a'){
- AliL3TrackArray *tr=merger->GetOutTracks();
+ AliHLTTrackArray *tr=merger->GetOutTracks();
memory->TrackArray2Binary(tr);
}
class AliRunLoader;
#endif
-#include "AliL3DigitData.h"
-#include "AliL3RootTypes.h"
-
-class AliL3SpacePointData;
-class AliL3DigitRowData;
-class AliL3TrackSegmentData;
-class AliL3DigitData;
-class AliL3ConfMapper;
-class AliL3Vertex;
-class AliL3VertexFinder;
-class AliL3TrackMerger;
-class AliL3GlobalMerger;
+#include "AliHLTDigitData.h"
+#include "AliHLTRootTypes.h"
+
+class AliHLTSpacePointData;
+class AliHLTDigitRowData;
+class AliHLTTrackSegmentData;
+class AliHLTDigitData;
+class AliHLTConfMapper;
+class AliHLTVertex;
+class AliHLTVertexFinder;
+class AliHLTTrackMerger;
+class AliHLTGlobalMerger;
#ifndef no_root
class TDirectory;
#endif
-class AliL3ClustFinderNew;
-class AliL3Merger;
-class AliL3InterMerger;
-class AliL3FileHandler;
-class AliL3MemHandler;
-class AliL3Benchmark;
+class AliHLTClustFinderNew;
+class AliHLTMerger;
+class AliHLTInterMerger;
+class AliHLTFileHandler;
+class AliHLTMemHandler;
+class AliHLTBenchmark;
#ifdef no_root
class AliLevel3 {
private:
UInt_t fNTrackData; //count data
- AliL3TrackSegmentData* fTrackData; //!
- AliL3ConfMapper *fTracker; //!
- AliL3Vertex *fVertex; //!
- AliL3VertexFinder *fVertexFinder; //!
- AliL3TrackMerger *fTrackMerger; //!
- AliL3GlobalMerger *fGlobalMerger; //!
- AliL3InterMerger *fInterMerger; //!
- AliL3ClustFinderNew *fClusterFinder; //!
- AliL3MemHandler *fFileHandler; //!
- AliL3Benchmark *fBenchmark;//!
+ AliHLTTrackSegmentData* fTrackData; //!
+ AliHLTConfMapper *fTracker; //!
+ AliHLTVertex *fVertex; //!
+ AliHLTVertexFinder *fVertexFinder; //!
+ AliHLTTrackMerger *fTrackMerger; //!
+ AliHLTGlobalMerger *fGlobalMerger; //!
+ AliHLTInterMerger *fInterMerger; //!
+ AliHLTClustFinderNew *fClusterFinder; //!
+ AliHLTMemHandler *fFileHandler; //!
+ AliHLTBenchmark *fBenchmark;//!
Int_t fEvent; //event number
Int_t fNPatch; //number of patches
Float_t fXYClusterError; //Cluster error
Float_t fZClusterError; //Cluster error
- void WriteSpacePoints(UInt_t npoints,AliL3SpacePointData *points,
+ void WriteSpacePoints(UInt_t npoints,AliHLTSpacePointData *points,
Int_t slice,Int_t patch) const;
- Int_t WriteTracks(char *filename,AliL3Merger *merger,char opt='o') const;
+ Int_t WriteTracks(char *filename,AliHLTMerger *merger,char opt='o') const;
void WriteResults();
void FitGlobalTracks();
void SetPath(char *p){sprintf(fPath,"%s",p);}
# Constantin Loizides #
#################################
-MODNAME = AliL3Src
+MODNAME = AliHLTSrc
ifndef ALIHLT_TOPDIR
ALIHLT_TOPDIR = $(shell pwd)/..
include $(ALIHLT_TOPDIR)/Makefile.conf
-SRCS = AliL3ConfMapper.cxx AliL3ConfMapPoint.cxx \
- AliL3ConfMapTrack.cxx AliL3ConfMapFit.cxx AliL3Track.cxx\
- AliL3Transform.cxx AliL3TrackMerger.cxx AliL3VertexArray.cxx \
- AliL3Vertex.cxx AliL3VertexFinder.cxx \
- AliL3Merger.cxx AliL3GlobalMerger.cxx AliL3ClustFinderNew.cxx \
- AliL3TrackArray.cxx AliL3InterMerger.cxx AliL3Logger.cxx \
- AliL3MemHandler.cxx AliLevel3.cxx AliL3Benchmark.cxx \
- AliL3Fitter.cxx AliL3RawDataFileHandler.cxx AliL3Log.cxx \
- AliL3TPCBeamTestMemHandler.cxx
+SRCS = AliHLTConfMapper.cxx AliHLTConfMapPoint.cxx \
+ AliHLTConfMapTrack.cxx AliHLTConfMapFit.cxx AliHLTTrack.cxx\
+ AliHLTTransform.cxx AliHLTTrackMerger.cxx AliHLTVertexArray.cxx \
+ AliHLTVertex.cxx AliHLTVertexFinder.cxx \
+ AliHLTMerger.cxx AliHLTGlobalMerger.cxx AliHLTClustFinderNew.cxx \
+ AliHLTTrackArray.cxx AliHLTInterMerger.cxx AliHLTLogger.cxx \
+ AliHLTMemHandler.cxx AliLevel3.cxx AliHLTBenchmark.cxx \
+ AliHLTFitter.cxx AliHLTRawDataFileHandler.cxx AliHLTLog.cxx \
+ AliHLTTPCBeamTestMemHandler.cxx
ifeq ($(ARCH),macosx)
-EXTRA_SRCS = AliL3HoughTrack.cxx AliL3ModelTrack.cxx \
- AliL3DataCompressorHelper.cxx AliL3DataHandler.cxx \
- AliL3TransBit.cxx AliL3DDLDataFileHandler.cxx
+EXTRA_SRCS = AliHLTHoughTrack.cxx AliHLTModelTrack.cxx \
+ AliHLTDataCompressorHelper.cxx AliHLTDataHandler.cxx \
+ AliHLTTransBit.cxx AliHLTDDLDataFileHandler.cxx
endif
SRCS += $(EXTRA_SRCS)
ifeq ($(ALIHLT_USEPACKAGE),ROOT)
-SRCS += AliL3Display.cxx
-HDRS = $(SRCS:.cxx=.h) AliL3SpacePointData.h $(MODNAME)LinkDef.h
+SRCS += AliHLTDisplay.cxx
+HDRS = $(SRCS:.cxx=.h) AliHLTSpacePointData.h $(MODNAME)LinkDef.h
OBJS = $(patsubst %.cxx,$(OBJDIR)/%.o,$(SRCS)) $(DICTO)
endif
ifeq ($(ALIHLT_USEPACKAGE),ALIROOT)
-SRCS += AliL3Display.cxx AliL3FileHandler.cxx AliL3Evaluate.cxx AliHLTReconstructor.cxx
-HDRS = $(SRCS:.cxx=.h) AliL3SpacePointData.h $(MODNAME)LinkDef.h
+SRCS += AliHLTDisplay.cxx AliHLTFileHandler.cxx AliHLTEvaluate.cxx AliHLTReconstructor.cxx
+HDRS = $(SRCS:.cxx=.h) AliHLTSpacePointData.h $(MODNAME)LinkDef.h
OBJS = $(patsubst %.cxx,$(OBJDIR)/%.o,$(SRCS)) $(DICTO)
endif
-void AliL3Transform::Init(){
+void AliHLTTransform::Init(){
fVersion = 10;
fBFieldFactor = 1.000;
fSolenoidBField = 5.000;
#include "AliD0Trigger.h"
#include <TMath.h>
#include "AliITStrackV2.h"
-#include "AliL3Transform.h"
+#include "AliHLTTransform.h"
#include <TVector3.h>
#include <iostream.h>
Gxneg=negTrack->GetX()*cos(negTrack->GetAlpha())-negTrack->GetY()*sin(negTrack->GetAlpha());
Gyneg=negTrack->GetX()*sin(negTrack->GetAlpha())+negTrack->GetY()*cos(negTrack->GetAlpha());
- r1=fabs(1/(AliL3Transform::GetBFact()*Bfield*posTrack->Get1Pt()));
- r2=fabs(1/(AliL3Transform::GetBFact()*Bfield*negTrack->Get1Pt()));
+ r1=fabs(1/(AliHLTTransform::GetBFact()*Bfield*posTrack->Get1Pt()));
+ r2=fabs(1/(AliHLTTransform::GetBFact()*Bfield*negTrack->Get1Pt()));
a1=Gxpos-(r1*cos(posTrack->GetAlpha()+asin(posTrack->GetSnp())+TMath::PiOver2()));
a2=Gxneg-(r2*cos(negTrack->GetAlpha()+asin(negTrack->GetSnp())-TMath::PiOver2()));
//This method moves the momenta to the secondary vertex
- double r1=fabs(1/(AliL3Transform::GetBFact()*Bfield*posTrack->Get1Pt()));
- double r2=fabs(1/(AliL3Transform::GetBFact()*Bfield*negTrack->Get1Pt()));
+ double r1=fabs(1/(AliHLTTransform::GetBFact()*Bfield*posTrack->Get1Pt()));
+ double r2=fabs(1/(AliHLTTransform::GetBFact()*Bfield*negTrack->Get1Pt()));
double Gx1=posTrack->GetX()*cos(posTrack->GetAlpha())-posTrack->GetY()*sin(posTrack->GetAlpha());
double Gy1=posTrack->GetX()*sin(posTrack->GetAlpha())+posTrack->GetY()*cos(posTrack->GetAlpha());
#ifndef AliD0_Trigger
#define AliD0_Trigger
-#include "AliL3RootTypes.h"
+#include "AliHLTRootTypes.h"
#include <math.h>
#include <TObject.h>
#include <TObjArray.h>
-#include "AliL3Trigger.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Transform.h"
-#include "AliL3Vertex.h"
-#include "AliL3Defs.h"
-#include "AliL3DigitData.h"
-#include "AliL3Logging.h"
-#include "AliL3Track.h"
-#include "AliL3MemHandler.h"
+#include "AliHLTTrigger.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTransform.h"
+#include "AliHLTVertex.h"
+#include "AliHLTDefs.h"
+#include "AliHLTDigitData.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTrack.h"
+#include "AliHLTMemHandler.h"
-ClassImp(AliL3Trigger)
+ClassImp(AliHLTTrigger)
-AliL3Trigger::AliL3Trigger()
+AliHLTTrigger::AliHLTTrigger()
{
fDataSize=0;
fTracks=0;
fVertex=0;
}
-AliL3Trigger::~AliL3Trigger()
+AliHLTTrigger::~AliHLTTrigger()
{
if(fTracks)
delete fTracks;
}
-void AliL3Trigger::InitTrigger()
+void AliHLTTrigger::InitTrigger()
{
if(fTracks)
delete fTracks;
- fTracks = new AliL3TrackArray();
+ fTracks = new AliHLTTrackArray();
}
-void AliL3Trigger::InitPatch(Int_t slice,Int_t patch)
+void AliHLTTrigger::InitPatch(Int_t slice,Int_t patch)
{
fSlice=slice;
fPatch=patch;
fTracks->Reset();
}
-void AliL3Trigger::FillTracks(Int_t ntracks,AliL3TrackSegmentData *tr)
+void AliHLTTrigger::FillTracks(Int_t ntracks,AliHLTTrackSegmentData *tr)
{
fTracks->FillTracks(ntracks,tr);
}
-void AliL3Trigger::FillData(AliL3DigitRowData *data)
+void AliHLTTrigger::FillData(AliHLTDigitRowData *data)
{
fDigitRowData = data;
}
-void AliL3Trigger::SetParameters(Float_t zcut,Int_t timematch,Int_t padmatch)
+void AliHLTTrigger::SetParameters(Float_t zcut,Int_t timematch,Int_t padmatch)
{
fZcut=zcut;
fTimeMatch=timematch;
fPadMatch=padmatch;
}
-void AliL3Trigger::SetOutputData(AliL3DigitRowData *ptr)
+void AliHLTTrigger::SetOutputData(AliHLTDigitRowData *ptr)
{
fOutput=ptr;
}
-void AliL3Trigger::RemovePileupTracks()
+void AliHLTTrigger::RemovePileupTracks()
{
Double_t xc,yc,zc;
for(Int_t i=0; i<fTracks->GetNTracks(); i++)
{
- AliL3Track *track = fTracks->GetCheckedTrack(i);
+ AliHLTTrack *track = fTracks->GetCheckedTrack(i);
if(!track) continue;
track->Rotate(fSlice,kTRUE);
track->CalculateHelix();
fTracks->Compress();
}
-void AliL3Trigger::RemovePileupData()
+void AliHLTTrigger::RemovePileupData()
{
Float_t hit[3];
Int_t sector,row;
rowhit row_cross[(fTracks->GetNTracks())];
Int_t digitcount[(NumRows[fPatch])];
Int_t totalcount=0;
- AliL3DigitRowData *rowPt = fDigitRowData;
+ AliHLTDigitRowData *rowPt = fDigitRowData;
for(Int_t i=NRows[fPatch][0]; i<=NRows[fPatch][1]; i++)
{
digitcount[(i-NRows[fPatch][0])]=0;
for(Int_t j=0; j<fTracks->GetNTracks(); j++)
{
- AliL3Track *track = fTracks->GetCheckedTrack(j);
+ AliHLTTrack *track = fTracks->GetCheckedTrack(j);
if(!track) continue;
track->GetCrossingPoint(i,hit);
- AliL3Transform::Slice2Sector(fSlice,i,sector,row);
- AliL3Transform::Local2Raw(hit,sector,row);
+ AliHLTTransform::Slice2Sector(fSlice,i,sector,row);
+ AliHLTTransform::Local2Raw(hit,sector,row);
row_cross[j].pad = (Int_t)rint(hit[1]);
row_cross[j].time = (Int_t)rint(hit[2]);
}
- AliL3DigitData *digPt = (AliL3DigitData*)rowPt->fDigitData;
+ AliHLTDigitData *digPt = (AliHLTDigitData*)rowPt->fDigitData;
Bool_t mark;
for(Int_t k=0; k<rowPt->fNDigit; k++)
{
if(mark==kTRUE)
digPt[k].fCharge=0;
}
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
}
- Int_t size = totalcount*sizeof(AliL3DigitData) + NumRows[fPatch]*sizeof(AliL3DigitRowData);
+ Int_t size = totalcount*sizeof(AliHLTDigitData) + NumRows[fPatch]*sizeof(AliHLTDigitRowData);
fDataSize = size;
- LOG(AliL3Log::kDebug,"AliL3Trigger::RemovePileupData","Memory")
+ LOG(AliHLTLog::kDebug,"AliHLTTrigger::RemovePileupData","Memory")
<<"Allocating "<<size<<" bytes of data for trigger event"<<ENDLOG;
Byte_t *data = new Byte_t[size];
memset(data,0,size);
- AliL3DigitRowData *tempPt = (AliL3DigitRowData*)data;
+ AliHLTDigitRowData *tempPt = (AliHLTDigitRowData*)data;
rowPt = fDigitRowData;
Int_t localcount;
{
tempPt->fRow = i;
tempPt->fNDigit = digitcount[(i-NRows[fPatch][0])];
- AliL3DigitData *digPt = (AliL3DigitData*)rowPt->fDigitData;
+ AliHLTDigitData *digPt = (AliHLTDigitData*)rowPt->fDigitData;
localcount=0;
for(Int_t j=0; j<rowPt->fNDigit; j++)
{
if(digPt[j].fCharge==0) continue;
if(localcount >= digitcount[(i-NRows[fPatch][0])])
{
- LOG(AliL3Log::kFatal,"AliL§Trigger::RemovePileupData","Array")
+ LOG(AliHLTLog::kFatal,"AliL§Trigger::RemovePileupData","Array")
<<"Mismatch in digitcount: "<<localcount<<" "<<digitcount[(i-NRows[fPatch][0])]<<ENDLOG;
return;
}
}
if(digitcount[(i-NRows[fPatch][0])]!=localcount)
{
- LOG(AliL3Log::kFatal,"AliL§Trigger::RemovePileupData","Array")
+ LOG(AliHLTLog::kFatal,"AliL§Trigger::RemovePileupData","Array")
<<"Mismatch in digitcount: "<<localcount<<" "<<digitcount[(i-NRows[fPatch][0])]<<ENDLOG;
}
- AliL3MemHandler::UpdateRowPointer(rowPt);
+ AliHLTMemHandler::UpdateRowPointer(rowPt);
Byte_t *tmp = (Byte_t*)tempPt;
- Int_t size = sizeof(AliL3DigitRowData)+digitcount[(i-NRows[fPatch][0])]*sizeof(AliL3DigitData);
+ Int_t size = sizeof(AliHLTDigitRowData)+digitcount[(i-NRows[fPatch][0])]*sizeof(AliHLTDigitData);
tmp += size;
- tempPt = (AliL3DigitRowData*)tmp;
+ tempPt = (AliHLTDigitRowData*)tmp;
}
- fOutput=(AliL3DigitRowData*)data;
+ fOutput=(AliHLTDigitRowData*)data;
}
--- /dev/null
+// @(#) $Id$
+
+#ifndef AliHLT_Trigger
+#define AliHLT_Trigger
+
+#include "AliHLTRootTypes.h"
+
+class AliHLTTrackSegmentData;
+class AliHLTDigitRowData;
+class AliHLTTrackArray;
+class AliHLTVertex;
+
+class AliHLTTrigger {
+
+ private:
+ AliHLTTrackArray *fTracks; //!
+ AliHLTDigitRowData *fDigitRowData; //!
+ AliHLTDigitRowData *fOutput; //!
+ AliHLTVertex *fVertex; //!
+ Int_t fDataSize;
+
+ Float_t fZcut;
+ Int_t fTimeMatch;
+ Int_t fPadMatch;
+ Int_t fSlice;
+ Int_t fPatch;
+
+ public:
+ AliHLTTrigger();
+ virtual ~AliHLTTrigger();
+
+ void InitTrigger();
+ void InitPatch(Int_t slice,Int_t patch);
+ void FillTracks(Int_t ntracks,AliHLTTrackSegmentData *tr);
+ void FillData(AliHLTDigitRowData *data);
+ void SetOutputData(AliHLTDigitRowData *ptr);
+ void SetVertex(AliHLTVertex *vertex) {fVertex = vertex;}
+ void SetParameters(Float_t zcut,Int_t timematch,Int_t padmatch);
+ void RemovePileupTracks();
+ void RemovePileupData();
+
+ Int_t GetDataSize() {return fDataSize;}
+
+ ClassDef(AliHLTTrigger,1)
+
+};
+
+typedef AliHLTTrigger AliL3Trigger; // for backward compatibility
+
+#endif
+++ /dev/null
-// @(#) $Id$
-
-#ifndef AliL3_Trigger
-#define AliL3_Trigger
-
-#include "AliL3RootTypes.h"
-
-class AliL3TrackSegmentData;
-class AliL3DigitRowData;
-class AliL3TrackArray;
-class AliL3Vertex;
-
-class AliL3Trigger {
-
- private:
- AliL3TrackArray *fTracks; //!
- AliL3DigitRowData *fDigitRowData; //!
- AliL3DigitRowData *fOutput; //!
- AliL3Vertex *fVertex; //!
- Int_t fDataSize;
-
- Float_t fZcut;
- Int_t fTimeMatch;
- Int_t fPadMatch;
- Int_t fSlice;
- Int_t fPatch;
-
- public:
- AliL3Trigger();
- virtual ~AliL3Trigger();
-
- void InitTrigger();
- void InitPatch(Int_t slice,Int_t patch);
- void FillTracks(Int_t ntracks,AliL3TrackSegmentData *tr);
- void FillData(AliL3DigitRowData *data);
- void SetOutputData(AliL3DigitRowData *ptr);
- void SetVertex(AliL3Vertex *vertex) {fVertex = vertex;}
- void SetParameters(Float_t zcut,Int_t timematch,Int_t padmatch);
- void RemovePileupTracks();
- void RemovePileupData();
-
- Int_t GetDataSize() {return fDataSize;}
-
- ClassDef(AliL3Trigger,1)
-
-};
-
-#endif
# Constantin Loizides #
##################################
-MODNAME = AliL3Trigger
+MODNAME = AliHLTTrigger
ifndef ALIHLT_TOPDIR
TOPDIR = $(shell pwd)/..
#include <AliESD.h>
#include <AliESDtrack.h>
#include <AliESDHLTtrack.h>
-#include <AliL3Track.h>
-#include <AliL3Vertex.h>
+#include <AliHLTTrack.h>
+#include <AliHLTVertex.h>
#include <AliKalmanTrack.h>
#include <AliJetEventParticles.h>
#include "AliJetParticlesReaderHLT.h"
fEventParticles->SetVertex(vertexpos[0],vertexpos[1],vertexpos[2]);
//cout << vertexpos[0] << " " << vertexpos[1] << " " << vertexpos[2] << endl;
- AliL3Vertex v;
+ AliHLTVertex v;
v.SetX(vertexpos[0]);
v.SetY(vertexpos[1]);
v.SetZ(vertexpos[2]);
py=mom[1];
pz=mom[2];
#else
- AliL3Track l3;
+ AliHLTTrack l3;
//if(!kesdtrack->ComesFromMainVertex()) continue;
//cout << "Pos: " << kesdtrack->GetFirstPointX() << " " << kesdtrack->GetFirstPointY() << " " << kesdtrack->GetFirstPointZ() << endl;
l3.SetFirstPoint(kesdtrack->GetFirstPointX(),kesdtrack->GetFirstPointY(),kesdtrack->GetFirstPointZ());
Int_t saveErrIgLevel=gErrorIgnoreLevel;
gErrorIgnoreLevel=kFatal;
- gSystem->Load("libAliL3ITS.so");
+ gSystem->Load("libAliHLTITS.so");
gSystem->Load("libTkJetFinder.so");
gSystem->Load("libJetFinder.so");
#include "AliLog.h"
#include <TFolder.h>
#include <stdlib.h>
-#include "AliL3MemHandler.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Track.h"
-#include "AliL3Transform.h"
-#include "AliL3Vertex.h"
+#include "AliHLTMemHandler.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTVertex.h"
//_____________________________________________________________________________
AliMonitorHLT::AliMonitorHLT(AliTPCParam* param):
{
// fill the HLT monitor histogrms
- AliL3MemHandler clusterHandler[36];
- AliL3SpacePointData *clusters[36];
+ AliHLTMemHandler clusterHandler[36];
+ AliHLTSpacePointData *clusters[36];
for (Int_t iSector = 0; iSector < fParam->GetNInnerSector(); iSector++) {
char fileName[256];
sprintf(fileName, "hlt/points_%d_-1.raw", iSector);
AliWarning(Form("could not open file %s", fileName));
continue;
}
- clusters[iSector] = (AliL3SpacePointData*) clusterHandler[iSector].Allocate();
+ clusters[iSector] = (AliHLTSpacePointData*) clusterHandler[iSector].Allocate();
UInt_t nClusters = 0;
clusterHandler[iSector].Binary2Memory(nClusters, clusters[iSector]);
for (UInt_t iCluster = 0; iCluster < nClusters; iCluster++) {
- AliL3SpacePointData& cluster = clusters[iSector][iCluster];
+ AliHLTSpacePointData& cluster = clusters[iSector][iCluster];
fClustersCharge->Fill(cluster.fCharge);
fNClustersVsRow->Fill(cluster.fPadRow);
fNClustersVsSector->Fill(iSector);
fNClustersVsSector->ScaleErrorBy(10.);
- AliL3MemHandler memHandler;
+ AliHLTMemHandler memHandler;
if (!memHandler.SetBinaryInput("hlt/tracks.raw")) {
AliWarning("could not open file hlt/tracks.raw");
return;
}
- AliL3TrackArray* tracks = new AliL3TrackArray;
+ AliHLTTrackArray* tracks = new AliHLTTrackArray;
memHandler.Binary2TrackArray(tracks);
Double_t xc,yc,zc;
- AliL3Vertex vertex;
+ AliHLTVertex vertex;
fNTracks->Fill(tracks->GetNTracks());
for (Int_t iTrack = 0; iTrack < tracks->GetNTracks(); iTrack++) {
- AliL3Track* track = tracks->GetCheckedTrack(iTrack);
+ AliHLTTrack* track = tracks->GetCheckedTrack(iTrack);
if(!track) continue;
track->CalculateHelix();
track->GetClosestPoint(&vertex,xc,yc,zc);
Int_t iSector = (hitID>>25) & 0x7f;
UInt_t position = hitID&0x3fffff;
UChar_t padrow = clusters[iSector][position].fPadRow;
- Float_t pWidth = AliL3Transform::GetPadPitchWidthLow();
+ Float_t pWidth = AliHLTTransform::GetPadPitchWidthLow();
if (padrow>63)
- pWidth = AliL3Transform::GetPadPitchWidthUp();
+ pWidth = AliHLTTransform::GetPadPitchWidthUp();
Float_t corr=1.; if (padrow>63) corr=0.67;
sampleDEdx[iHit] = clusters[iSector][position].fCharge/pWidth*corr;
Double_t crossingangle = track->GetCrossingAngle(padrow,iSector);
#include "AliLog.h"
#include <TFolder.h>
#include <stdlib.h>
-#include <AliL3MemHandler.h>
-#include <AliL3TrackArray.h>
-#include <AliL3SpacePointData.h>
-#include <AliL3HoughTrack.h>
-#include <AliL3Transform.h>
+#include <AliHLTMemHandler.h>
+#include <AliHLTTrackArray.h>
+#include <AliHLTSpacePointData.h>
+#include <AliHLTHoughTrack.h>
+#include <AliHLTTransform.h>
//_____________________________________________________________________________
AliMonitorHLTHough::AliMonitorHLTHough(AliTPCParam* param):
{
// fill the HLT Hough transform monitor histograms
- AliL3MemHandler clusterHandler[36][6];
- AliL3SpacePointData *clusters[36][6];
+ AliHLTMemHandler clusterHandler[36][6];
+ AliHLTSpacePointData *clusters[36][6];
for (Int_t iSector = 0; iSector < fParam->GetNInnerSector(); iSector++) {
for (Int_t iPatch = 0; iPatch < 6; iPatch++) {
char fileName[256];
AliWarning(Form("could not open file %s", fileName));
continue;
}
- clusters[iSector][iPatch] = (AliL3SpacePointData*) clusterHandler[iSector][iPatch].Allocate();
+ clusters[iSector][iPatch] = (AliHLTSpacePointData*) clusterHandler[iSector][iPatch].Allocate();
UInt_t nClusters = 0;
clusterHandler[iSector][iPatch].Binary2Memory(nClusters, clusters[iSector][iPatch]);
for (UInt_t iCluster = 0; iCluster < nClusters; iCluster++) {
- AliL3SpacePointData& cluster = clusters[iSector][iPatch][iCluster];
+ AliHLTSpacePointData& cluster = clusters[iSector][iPatch][iCluster];
fClustersCharge->Fill(cluster.fCharge);
fNClustersVsRow->Fill(cluster.fPadRow);
fNClustersVsSector->Fill(iSector);
fNClustersVsSector->ScaleErrorBy(10.);
- AliL3MemHandler memHandler;
+ AliHLTMemHandler memHandler;
Int_t nHoughTracks = 0;
char fileName[256];
AliWarning("could not open file hlt/fitter/tracks.raw");
return;
}
- AliL3TrackArray* tracks = new AliL3TrackArray;
+ AliHLTTrackArray* tracks = new AliHLTTrackArray;
memHandler.Binary2TrackArray(tracks);
nHoughTracks += tracks->GetNTracks();
for (Int_t iTrack = 0; iTrack < tracks->GetNTracks(); iTrack++) {
- AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(iTrack);
+ AliHLTHoughTrack *track = (AliHLTHoughTrack*)tracks->GetCheckedTrack(iTrack);
if(!track) continue;
track->CalculateHelix();
Int_t iPatch = (hitID>>22) & 0x7;
UInt_t position = hitID&0x3fffff;
UChar_t padrow = clusters[iSector][iPatch][position].fPadRow;
- Float_t pWidth = AliL3Transform::GetPadPitchWidthLow();
+ Float_t pWidth = AliHLTTransform::GetPadPitchWidthLow();
if (padrow>63)
- pWidth = AliL3Transform::GetPadPitchWidthUp();
+ pWidth = AliHLTTransform::GetPadPitchWidthUp();
Float_t corr=1.; if (padrow>63) corr=0.67;
sampleDEdx[iHit] = clusters[iSector][iPatch][position].fCharge/pWidth*corr;
Double_t crossingangle = track->GetCrossingAngle(padrow,iSector);
#include "AliTPCtrackerMI.h"
#include "AliV0vertexer.h"
-#include <AliL3StandardIncludes.h>
-#include <AliL3MemHandler.h>
-#include <AliL3ClusterFitter.h>
-#include <AliL3Fitter.h>
-#include <AliL3Hough.h>
-#include <AliL3HoughBaseTransformer.h>
-#include <AliL3StandardIncludes.h>
-#include <AliL3Track.h>
-#include <AliL3TrackArray.h>
-#include <AliL3Transform.h>
-#include <AliL3Vertex.h>
+#include <AliHLTStandardIncludes.h>
+#include <AliHLTMemHandler.h>
+#include <AliHLTClusterFitter.h>
+#include <AliHLTFitter.h>
+#include <AliHLTHough.h>
+#include <AliHLTHoughBaseTransformer.h>
+#include <AliHLTStandardIncludes.h>
+#include <AliHLTTrack.h>
+#include <AliHLTTrackArray.h>
+#include <AliHLTTransform.h>
+#include <AliHLTVertex.h>
#include <AliLevel3.h>
ClassImp(AliMonitorProcess)
if (!fITSgeom) AliFatal("could not load ITS geometry");
// Init TPC parameters for HLT
- Bool_t isinit=AliL3Transform::Init(const_cast<char*>(fileNameGalice),kTRUE);
+ Bool_t isinit=AliHLTTransform::Init(const_cast<char*>(fileNameGalice),kTRUE);
if(!isinit){
AliFatal("Could not create transform settings, please check log for error messages!");
}
char name[256];
strcpy(name, fileName);
- fHLTHough = new AliL3Hough();
+ fHLTHough = new AliHLTHough();
fHLTHough->SetThreshold(4);
fHLTHough->SetTransformerParams(140,150,0.5,-1);
fHLTHough->SetPeakThreshold(9000,-1);// or 6000
fHLTHough->WriteTracks("./hlt/hough");
// Run cluster fitter
- AliL3ClusterFitter *fitter = new AliL3ClusterFitter("./hlt");
+ AliHLTClusterFitter *fitter = new AliHLTClusterFitter("./hlt");
// Set debug flag for the cluster fitter
// fitter->Debug();
//fitter->SetChiSqMax(5,kFALSE); //isolated clusters
fitter->SetChiSqMax(5,kTRUE); //overlapping clusters
- Int_t rowrange[2] = {0,AliL3Transform::GetNRows()-1};
+ Int_t rowrange[2] = {0,AliHLTTransform::GetNRows()-1};
// Takes input from global hough tracks produced by HT
fitter->LoadSeeds(rowrange,kFALSE,iEvent);
for(Int_t islice = 0; islice <= 35; islice++)
{
- for(Int_t ipatch = 0; ipatch < AliL3Transform::GetNPatches(); ipatch++)
+ for(Int_t ipatch = 0; ipatch < AliHLTTransform::GetNPatches(); ipatch++)
{
// Read digits
fHLTHough->GetMemHandler(ipatch)->Free();
fHLTHough->GetMemHandler(ipatch)->Init(islice,ipatch);
- AliL3DigitRowData *digits = (AliL3DigitRowData *)fHLTHough->GetMemHandler(ipatch)->AliAltroDigits2Memory(ndigits,iEvent);
+ AliHLTDigitRowData *digits = (AliHLTDigitRowData *)fHLTHough->GetMemHandler(ipatch)->AliAltroDigits2Memory(ndigits,iEvent);
fitter->Init(islice,ipatch);
fitter->SetInputData(digits);
}
// Refit of the clusters
- AliL3Vertex vertex;
+ AliHLTVertex vertex;
//The seeds are the input tracks from circle HT
- AliL3TrackArray *tracks = fitter->GetSeeds();
- AliL3Fitter *ft = new AliL3Fitter(&vertex,1);
+ AliHLTTrackArray *tracks = fitter->GetSeeds();
+ AliHLTFitter *ft = new AliHLTFitter(&vertex,1);
ft->LoadClusters("./hlt/fitter/",iEvent,kFALSE);
for(Int_t i=0; i<tracks->GetNTracks(); i++)
{
- AliL3Track *track = tracks->GetCheckedTrack(i);
+ AliHLTTrack *track = tracks->GetCheckedTrack(i);
if(!track) continue;
if(track->GetNHits() < 20) continue;
ft->SortTrackClusters(track);
class AliRunLoader;
class AliTPCParam;
class AliLevel3;
-class AliL3Hough;
+class AliHLTHough;
class AliMonitorProcess : public TObject {
TString fLogicalFileName; // logical AliEn file name
TString fFileName; // physical file name
AliLevel3* fHLT; // the HLT tracker
- AliL3Hough* fHLTHough; // the HLT hough transformer
+ AliHLTHough* fHLTHough; // the HLT hough transformer
UInt_t fRunNumber; // current run number
UInt_t fSubRunNumber; // current part (=resets per run)
ifdef DATE_ROOT
ELIBSDIR:=${DATE_MONITOR_DIR}/${DATE_SYS}
-ELIBS:= ESD CDB STEER RAWDatabase RAWDatarec RAWDatasim monitor shift TPCbase TPCsim TPCrec ITSbase ITSsim ITSrec AliL3Src AliL3Comp AliL3Misc AliL3Hough AliL3ITS AliL3MUON MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONmapping
+ELIBS:= ESD CDB STEER RAWDatabase RAWDatarec RAWDatasim monitor shift TPCbase TPCsim TPCrec ITSbase ITSsim ITSrec AliHLTSrc AliHLTComp AliHLTMisc AliHLTHough AliHLTITS AliHLTMUON MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONmapping
EINCLUDE+= ${DATE_COMMON_DEFS} ${DATE_MONITOR_DIR}
endif
ifdef DATE_ROOT
ELIBSDIR:=${DATE_MONITOR_DIR}/${DATE_SYS}
-ELIBS:=ESD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec AliL3Src AliL3Misc AliL3Hough AliL3Comp AliL3ITS AliL3MUON ITSbase ITSsim ITSrec monitor shift MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONmapping
+ELIBS:=ESD CDB STEER RAWDatabase RAWDatarec RAWDatasim TPCbase TPCsim TPCrec AliHLTSrc AliHLTMisc AliHLTHough AliHLTComp AliHLTITS AliHLTMUON ITSbase ITSsim ITSrec monitor shift MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONmapping
EINCLUDE+= ${DATE_COMMON_DEFS} ${DATE_MONITOR_DIR}
endif
{
// load libraries
if (!gROOT->GetClass("AliLevel3")) {
- gSystem->Load("libAliL3Src.so");
- gSystem->Load("libAliL3Misc.so");
- gSystem->Load("libAliL3Hough.so");
- gSystem->Load("libAliL3Comp.so");
+ gSystem->Load("libAliHLTSrc.so");
+ gSystem->Load("libAliHLTMisc.so");
+ gSystem->Load("libAliHLTHough.so");
+ gSystem->Load("libAliHLTComp.so");
}
if (!gROOT->GetClass("AliMonitorClient")) {
gSystem->Load("libMONITOR.so");
{
// load libraries
if (!gROOT->GetClass("AliLevel3")) {
- gSystem->Load("libAliL3Src.so");
- gSystem->Load("libAliL3Misc.so");
- gSystem->Load("libAliL3Hough.so");
- gSystem->Load("libAliL3Comp.so");
+ gSystem->Load("libAliHLTSrc.so");
+ gSystem->Load("libAliHLTMisc.so");
+ gSystem->Load("libAliHLTHough.so");
+ gSystem->Load("libAliHLTComp.so");
}
if (!gROOT->GetClass("AliMonitorProcess")) {
gSystem->Load("libMONITOR.so");
#include "AliRawReaderDate.h"
#include "event.h"
#include "monitor.h"
-#include <AliL3StandardIncludes.h>
-#include <AliL3Transform.h>
-#include <AliL3MemHandler.h>
-#include <AliL3TrackArray.h>
-#include <AliL3HoughMaxFinder.h>
-#include <AliL3HoughBaseTransformer.h>
-#include <AliL3Hough.h>
-#include <AliL3Benchmark.h>
+#include <AliHLTStandardIncludes.h>
+#include <AliHLTTransform.h>
+#include <AliHLTMemHandler.h>
+#include <AliHLTTrackArray.h>
+#include <AliHLTHoughMaxFinder.h>
+#include <AliHLTHoughBaseTransformer.h>
+#include <AliHLTHough.h>
+#include <AliHLTBenchmark.h>
#include <AliKalmanTrack.h>
#include "AliITSgeom.h"
#include "AliMagF.h"
#include "AliMagFMaps.h"
-#include <AliL3ITSclusterer.h>
-#include <AliL3ITSVertexerZ.h>
-#include <AliL3ITStracker.h>
+#include <AliHLTITSclusterer.h>
+#include <AliHLTITSVertexerZ.h>
+#include <AliHLTITStracker.h>
#endif
//_____________________________________________________________________________
if (status) ::Fatal("monitorDeclareMp", monitorDecodeError(status));
// initialize HLT transformations
- if (!AliL3Transform::Init("./", kFALSE)) {
- ::Fatal("AliL3Transform::Init", "HLT initialization failed");
+ if (!AliHLTTransform::Init("./", kFALSE)) {
+ ::Fatal("AliHLTTransform::Init", "HLT initialization failed");
}
AliESD *esd = new AliESD;
// AliKalmanTrack::SetConvConst(
- // 1000/0.299792458/AliL3Transform::GetSolenoidField()
+ // 1000/0.299792458/AliHLTTransform::GetSolenoidField()
// );
AliITSgeom *geom = new AliITSgeom();
geom->ReadNewFile("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det");
if (!geom) return 1;
Int_t sfield = 0;
- switch ((Int_t)(AliL3Transform::GetSolenoidField()+0.5)) {
+ switch ((Int_t)(AliHLTTransform::GetSolenoidField()+0.5)) {
case 2:
sfield = AliMagFMaps::k2kG;
break;
sfield = AliMagFMaps::k5kG;
break;
default:
- ::Fatal("AliL3Transform::GetSolenoidField", "Incorrect magnetic field");
+ ::Fatal("AliHLTTransform::GetSolenoidField", "Incorrect magnetic field");
}
AliMagF* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., sfield);
AliTracker::SetFieldMap(field,kTRUE);
} else {
- AliL3Benchmark *fBenchmark = new AliL3Benchmark();
+ AliHLTBenchmark *fBenchmark = new AliHLTBenchmark();
fBenchmark->Start("Overall timing");
// ITS clusterer and vertexer
fBenchmark->Start("ITS Clusterer");
- AliL3ITSclusterer clusterer(geom);
+ AliHLTITSclusterer clusterer(geom);
AliRawReader *itsrawreader=new AliRawReaderDate(ptr);
TTree* treeClusters = new TTree("TreeL3ITSclusters"," "); //make a tree
clusterer.Digits2Clusters(itsrawreader,treeClusters);
fBenchmark->Stop("ITS Clusterer");
- AliL3ITSVertexerZ vertexer;
+ AliHLTITSVertexerZ vertexer;
AliESDVertex *vertex = vertexer.FindVertexForCurrentEvent(geom,treeClusters);
Double_t vtxPos[3];
Double_t vtxErr[3]={0.005,0.005,0.010};
esd->SetVertex(vertex);
// TPC Hough reconstruction
- Float_t ptmin = 0.1*AliL3Transform::GetSolenoidField();
+ Float_t ptmin = 0.1*AliHLTTransform::GetSolenoidField();
Float_t zvertex = vtxPos[2];
// Run the Hough Transformer
fBenchmark->Start("Init");
- AliL3Hough *hough1 = new AliL3Hough();
+ AliHLTHough *hough1 = new AliHLTHough();
hough1->SetThreshold(4);
hough1->CalcTransformerParams(ptmin);
fBenchmark->Stop("Init");
fBenchmark->Start("Init");
- AliL3Hough *hough2 = new AliL3Hough();
+ AliHLTHough *hough2 = new AliHLTHough();
hough2->SetThreshold(4);
hough2->CalcTransformerParams(ptmin);
// gSystem->Sleep(20000);
if(hough1->WaitForThreadFinish())
- ::Fatal("AliL3Hough::WaitForThreadFinish"," Can not join the required thread! ");
+ ::Fatal("AliHLTHough::WaitForThreadFinish"," Can not join the required thread! ");
if(hough2->WaitForThreadFinish())
- ::Fatal("AliL3Hough::WaitForThreadFinish"," Can not join the required thread! ");
+ ::Fatal("AliHLTHough::WaitForThreadFinish"," Can not join the required thread! ");
gSystem->MakeDirectory("hough1");
hough1->WriteTracks("./hough1");
hough1->AddTracks();
fBenchmark->Stop("AddTracks");
- // AliL3TrackArray* tracks = (AliL3TrackArray*)hough1->GetTracks(0);
+ // AliHLTTrackArray* tracks = (AliHLTTrackArray*)hough1->GetTracks(0);
// nglobaltracks += tracks->GetNTracks();
}
for(int slice=18; slice<=35; slice++)
hough2->AddTracks();
fBenchmark->Stop("AddTracks");
- // AliL3TrackArray* tracks = (AliL3TrackArray*)hough2->GetTracks(0);
+ // AliHLTTrackArray* tracks = (AliHLTTrackArray*)hough2->GetTracks(0);
// nglobaltracks += tracks->GetNTracks();
}
nglobaltracks += hough2->FillESD(esd);
// ITS tracker
- AliL3ITStracker itsTracker(geom);
+ AliHLTITStracker itsTracker(geom);
itsTracker.SetVertex(vtxPos,vtxErr);
itsTracker.LoadClusters(treeClusters);
#include <TStopwatch.h>
-#include "AliL3StandardIncludes.h"
-#include "AliL3Logging.h"
-#include "AliL3Transform.h"
-#include "AliL3Hough.h"
+#include "AliHLTStandardIncludes.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTransform.h"
+#include "AliHLTHough.h"
#include "AliLog.h"
-#include <AliL3ITSclusterer.h>
-#include <AliL3ITSVertexerZ.h>
-#include <AliL3ITStracker.h>
+#include <AliHLTITSclusterer.h>
+#include <AliHLTITSVertexerZ.h>
+#include <AliHLTITStracker.h>
#include "AliHoughFilter.h"
// default constructor
// Init debug level
- AliL3Log::fgLevel = AliL3Log::kError;
- if (AliDebugLevel() > 0) AliL3Log::fgLevel = AliL3Log::kWarning;
- if (AliDebugLevel() > 1) AliL3Log::fgLevel = AliL3Log::kInformational;
- if (AliDebugLevel() > 2) AliL3Log::fgLevel = AliL3Log::kDebug;
+ AliHLTLog::fgLevel = AliHLTLog::kError;
+ if (AliDebugLevel() > 0) AliHLTLog::fgLevel = AliHLTLog::kWarning;
+ if (AliDebugLevel() > 1) AliHLTLog::fgLevel = AliHLTLog::kInformational;
+ if (AliDebugLevel() > 2) AliHLTLog::fgLevel = AliHLTLog::kDebug;
// Init TPC HLT geometry
const char *path = gSystem->Getenv("ALICE_ROOT");
Char_t pathname[1024];
strcpy(pathname,path);
strcat(pathname,"/HLT/src");
- if (!AliL3Transform::Init(pathname, kFALSE))
+ if (!AliHLTTransform::Init(pathname, kFALSE))
AliError("HLT initialization failed!");
// Init magnetic field
AliMagF* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
AliTracker::SetFieldMap(field,kTRUE);
- fPtmin = 0.1*AliL3Transform::GetSolenoidField();
+ fPtmin = 0.1*AliHLTTransform::GetSolenoidField();
// Init ITS geometry
fITSgeom = new AliITSgeom();
if(!fITSgeom)
AliError("ITS geometry not created!");
- AliL3ITSclusterer clusterer(fITSgeom);
+ AliHLTITSclusterer clusterer(fITSgeom);
AliRawReader *itsrawreader=new AliRawReaderRoot(event);
clusterer.Digits2Clusters(itsrawreader,treeClusters);
delete itsrawreader;
TStopwatch timer;
timer.Start();
- AliL3ITSVertexerZ vertexer;
+ AliHLTITSVertexerZ vertexer;
AliESDVertex *vertex = vertexer.FindVertexForCurrentEvent(fITSgeom,treeClusters);
esd->SetVertex(vertex);
AliInfo(Form("ITS vertexer has finished in %f seconds\n",timer.RealTime()));
const AliESDVertex *vertex = esd->GetVertex();
Float_t zvertex = vertex->GetZv();
- AliL3Hough *hough1 = new AliL3Hough();
+ AliHLTHough *hough1 = new AliHLTHough();
hough1->SetThreshold(4);
hough1->CalcTransformerParams(fPtmin);
hough1->Init(100,4,event,zvertex);
hough1->SetAddHistograms();
- AliL3Hough *hough2 = new AliL3Hough();
+ AliHLTHough *hough2 = new AliHLTHough();
hough2->SetThreshold(4);
hough2->CalcTransformerParams(fPtmin);
hough2->StartProcessInThread(18,35);
if(hough1->WaitForThreadFinish())
- ::Fatal("AliL3Hough::WaitForThreadFinish"," Can not join the required thread! ");
+ ::Fatal("AliHLTHough::WaitForThreadFinish"," Can not join the required thread! ");
if(hough2->WaitForThreadFinish())
- ::Fatal("AliL3Hough::WaitForThreadFinish"," Can not join the required thread! ");
+ ::Fatal("AliHLTHough::WaitForThreadFinish"," Can not join the required thread! ");
/* In case we run HLT code in the main thread
for(Int_t slice=0; slice<=17; slice++)
const AliESDVertex *vertex = esd->GetVertex();
vertex->GetXYZ(vtxPos);
- AliL3ITStracker itsTracker(fITSgeom);
+ AliHLTITStracker itsTracker(fITSgeom);
itsTracker.SetVertex(vtxPos,vtxErr);
itsTracker.LoadClusters(treeClusters);
ifneq ($(findstring hlt,$(MAKECMDGOALS)),)
include ../HLT/hlt.conf
CXXFLAGS += -DUSE_HLT ${HLTDEFS} -I${ALICE_ROOT}/include -I../HLT/src -I../HLT/hough -I../HLT/comp
-LIBS += -lEG -lVMC -lGeom -lThread -L../lib/tgt_linuxDEBUG -lSTEER -lRAWData -lTPCbase -lTPCsim -lTPCrec -lCONTAINERS -lAliL3Src -lAliL3Misc -lAliL3Hough -lAliL3Comp
+LIBS += -lEG -lVMC -lGeom -lThread -L../lib/tgt_linuxDEBUG -lSTEER -lRAWData -lTPCbase -lTPCsim -lTPCrec -lCONTAINERS -lAliHLTSrc -lAliHLTMisc -lAliHLTHough -lAliHLTComp
endif
##### DATE #####
PACKBLIBS := $(ROOTCLIBS) $(SYSLIBS)
-ELIBS:=ESD RAWDatabase RAWDatarec RAWDatasim MDC MDCFilter CDB STEER TPCbase TPCsim TPCrec AliL3Src AliL3Misc AliL3Hough AliL3Comp AliL3ITS AliL3MUON ITSbase ITSsim ITSrec MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONmapping
+ELIBS:=ESD RAWDatabase RAWDatarec RAWDatasim MDC MDCFilter CDB STEER TPCbase TPCsim TPCrec AliHLTSrc AliHLTMisc AliHLTHough AliHLTComp AliHLTITS AliHLTMUON ITSbase ITSsim ITSrec MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONmapping
ifneq (,$(findstring macosx,$(ALICE_TARGET)))
PACKLDFLAGS:=$(LDFLAGS) $(@PACKAGE@LIBSINIT:%=-Wl,-u,_G__cpp_setupG__%)
PACKBLIBS := $(ROOTCLIBS) $(SYSLIBS)
-ELIBS:=ESD RAWDatabase RAWDatarec RAWDatasim MDC MDCFilter CDB STEER TPCbase TPCsim TPCrec AliL3Src AliL3Misc AliL3Hough AliL3Comp AliL3ITS AliL3MUON ITSbase ITSsim ITSrec MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONmapping
+ELIBS:=ESD RAWDatabase RAWDatarec RAWDatasim MDC MDCFilter CDB STEER TPCbase TPCsim TPCrec AliHLTSrc AliHLTMisc AliHLTHough AliHLTComp AliHLTITS AliHLTMUON ITSbase ITSsim ITSrec MUONsim MUONrec MUONbase MUONgeometry MUONraw MUONmapping
ifneq (,$(findstring macosx,$(ALICE_TARGET)))
PACKLDFLAGS:=$(LDFLAGS) $(@PACKAGE@LIBSINIT:%=-Wl,-u,_G__cpp_setupG__%)
if (detName == "HLT") {
if (!gROOT->GetClass("AliLevel3")) {
- gSystem->Load("libAliL3Src.so");
- gSystem->Load("libAliL3Misc.so");
- gSystem->Load("libAliL3Hough.so");
- gSystem->Load("libAliL3Comp.so");
+ gSystem->Load("libAliHLTSrc.so");
+ gSystem->Load("libAliHLTMisc.so");
+ gSystem->Load("libAliHLTHough.so");
+ gSystem->Load("libAliHLTComp.so");
}
}
HBTP/module.mk: HBTP/libHBTP.pkg
HERWIG/module.mk: HERWIG/libherwig.pkg
HIJING/module.mk: HIJING/libhijing.pkg
-HLT/module.mk: HLT/libAliL3Src.pkg HLT/libAliL3Hough.pkg HLT/libAliL3Misc.pkg HLT/libAliL3Comp.pkg HLT/libAliL3ITS.pkg HLT/libAliL3MUON.pkg
+HLT/module.mk: HLT/libAliHLTSrc.pkg HLT/libAliHLTHough.pkg HLT/libAliHLTMisc.pkg HLT/libAliHLTComp.pkg HLT/libAliHLTITS.pkg HLT/libAliHLTMUON.pkg
ITS/module.mk: ITS/libITSbase.pkg ITS/libITSsim.pkg ITS/libITSrec.pkg
JETAN/module.mk: JETAN/libJETAN.pkg
MEVSIM/module.mk: MEVSIM/libmevsim.pkg
gSystem->Load("libTOFsim");
gSystem->Load("libTOFrec");
- gSystem->Load("libAliL3ITS");
- gSystem->Load("libAliL3Src");
- gSystem->Load("libAliL3Misc");
- gSystem->Load("libAliL3Comp");
+ gSystem->Load("libAliHLTITS");
+ gSystem->Load("libAliHLTSrc");
+ gSystem->Load("libAliHLTMisc");
+ gSystem->Load("libAliHLTComp");
gSystem->Load("libThread");
- gSystem->Load("libAliL3Hough");
+ gSystem->Load("libAliHLTHough");
}
gSystem->Load("libTOFsim");
gSystem->Load("libTOFrec");
- gSystem->Load("libAliL3ITS");
- gSystem->Load("libAliL3Src");
- gSystem->Load("libAliL3Misc");
- gSystem->Load("libAliL3Comp");
+ gSystem->Load("libAliHLTITS");
+ gSystem->Load("libAliHLTSrc");
+ gSystem->Load("libAliHLTMisc");
+ gSystem->Load("libAliHLTComp");
gSystem->Load("libThread");
- gSystem->Load("libAliL3Hough");
+ gSystem->Load("libAliHLTHough");
}