Home » PANDA » PandaRoot » Tracking » Running the Kalman on the Mvd
Running the Kalman on the Mvd [message #6591] |
Thu, 24 April 2008 11:54 |
Ralf Kliemt
Messages: 507 Registered: May 2007 Location: GSI, Darmstadt
|
first-grade participant |
From: 141.30.85*
|
|
Hi all,
I started to try out genfit on MvdHits. After some issues concerning the Mvd package itself I ran into some fitting problems which don't tell me much. Here we go:
- I checked in the stuff into rev. 2589 (and 2588).
- I run the macros in macro/mvd/Tracking
- The simulation does 1GeV protons with Mvd & Field
- The digi & hitreco runs
- MC Trackfinding runs
Anyway somehow the Kalman cannot fit the tracks I make. Here you have some detailed output (I uncommented the info output in the Kalman class).
Hopefully someone can help...
Ralf.
Toggle Spoiler
PndMvdKalmanTask::Exec
-I- PndMvdKalmanTask: contains 1 Tracks.
Detailed Debug info on the tracks:
TrackCand no. 0 has 6 hits.
[ ihit | detid | index ]
[ 0 | 3 | 0 ]
[ 1 | 3 | 1 ]
[ 2 | 3 | 2 ]
[ 3 | 4 | 0 ]
[ 4 | 4 | 1 ]
[ 5 | 4 | 2 ]
starting track0
-I- PndMvdRecoHit::PndMvdRecoHit(PndMvdHit*) called.
Mvd hit in detector 1_1/34_0/119_1/118_2/98_14/92_1/90_1/89_1/ at (1.60909, 0.271733, 1.94354) cm with 46929.8 e, Cluster No. 0
o: 2.11 0.656733 1.94354
u: 0 1 0
v: -1 0 0
-I- PndMvdRecoHit::PndMvdRecoHit(PndMvdHit*) called.
Mvd hit in detector 1_1/34_0/102_1/101_3/98_1/92_1/90_1/89_1/ at (4.16446, 0.653887, 5.0215) cm with 92495.9 e, Cluster No. 1
o: 4.08241 1.43459 4.5
u: -0.104528 0.994522 0
v: 0 0 1
-I- PndMvdRecoHit::PndMvdRecoHit(PndMvdHit*) called.
Mvd hit in detector 1_1/34_0/66_2/65_12/59_1/57_1/56_1/ at (4.9599, 0.758694, 5.975) cm with 32364.3 e, Cluster No. 2
o: 4.10249 -1.00282 5.975
u: 0.707107 0.707107 0
v: -0.707107 0.707107 0
-I- PndMvdRecoHit::PndMvdRecoHit(PndMvdHit*) called.
Mvd hit in detector 1_1/34_0/80_1/78_1/77_4/75_29/72_1/71_1/ at (7.89362, 1.08679, 9.48283) cm with 122466 e, Cluster No. 0
o: 7.67364 1.9824 10.65
u: 0 0 1
v: 0.238533 -0.971134 0
-I- PndMvdRecoHit::PndMvdRecoHit(PndMvdHit*) called.
Mvd hit in detector 1_1/34_0/80_1/79_1/77_9/75_29/72_1/71_1/ at (7.44033, 1.04598, 8.9416) cm with 66616.9 e, Cluster No. 2
o: 7.4256 -0.00891832 10.65
u: 0 0 1
v: -0.0139622 -0.999903 0
-I- PndMvdRecoHit::PndMvdRecoHit(PndMvdHit*) called.
Mvd hit in detector 1_1/34_0/86_1/83_1/82_5/81_1/72_2/71_1/ at (12.4543, 1.43929, 14.9139) cm with 65711.7 e, Cluster No. 4
o: 12.3431 2.06957 16.7752
u: 0 0 1
v: 0.173648 -0.984808 0
6 hits in track 0
starting fit
Kalman::processTrack::Starting track
3x1 matrix is as follows
| 0 |
------------------
0 | 1.609
1 | 0.2717
2 | 1.944
Process hit #0 of rep #0
.DetPlane: O(2.11,0.656733,1.94354) u(0,1,0) v(-1,0,0)
++++++++++++++ do prediction: ++++++++++++++++
s before extrapolation: 0
s_to: 1.94354
unew[2]=z=1.94354s after extrapolation: 0
s before extrapolation: 0
s_to: 1.94354
unew[2]=z=1.94354s after extrapolation: 0
s before extrapolation: 0
s_to: 1.94354
unew[2]=z=1.94354s after extrapolation: 0
s before extrapolation: 0
s_to: 1.94354
unew[2]=z=1.94354s after extrapolation: 0
s before extrapolation: 0
s_to: 1.94354
unew[2]=z=1.94354s after extrapolation: 0
s before extrapolation: 0
s_to: 1.94354
unew[2]=z=1.94354s after extrapolation: 0
5x1 matrix is as follows
| 0 |
------------------
0 | 0
1 | 0
2 | 0
3 | 0
4 | 0
5x5 matrix is as follows
| 0 | 1 | 2 | 3 | 4 |
----------------------------------------------------------------------
0 | 0 0 0 0 0
1 | 0 0 0 0 0
2 | 0 0 0 0 0
3 | 0 0 0 0 0
4 | 0 0 0 0 0
++++++++++++++++++++++++++++++++++++++++++++++
Error in <TDecompLU::DecomposeLUCrout>: matrix is singular
Error in <TDecompLU::InvertLU>: matrix is singular, 0 diag elements < tolerance of 2.2204e-16
FitterException thrown with whatString:
cannot invert covsum in Kalman Gain - det=0
in line: 265 in file: /home/ralfk/Pandaroot/pandaroot/genfit/Kalman.cxx
|
|
|
|
Re: Running the Kalman on the Mvd [message #6617 is a reply to message #6591] |
Mon, 28 April 2008 12:44 |
Ralf Kliemt
Messages: 507 Registered: May 2007 Location: GSI, Darmstadt
|
first-grade participant |
From: 141.30.85*
|
|
Hello again,
Thanks for the hint to use GeaneTrackRep.
Of course I still cannot run the Kalman, so I'll ask my question:
When making a new CbmGeanePro() the program breaks. with:
Toggle Spoiler
PndFieldCreator::createCbmField()
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1224078560 (LWP 28569)]
0xb3f81377 in CbmGeanePro (this=0xa25b468) at /home/ralfk/Pandaroot/pandaroot/geane/CbmGeanePro.cxx:35
35 afErtrio=gMC3->fErtrio;
(gdb) bt
#0 0xb3f81377 in CbmGeanePro (this=0xa25b468) at /home/ralfk/Pandaroot/pandaroot/geane/CbmGeanePro.cxx:35
#1 0xb3d9b052 in PndMvdKalmanTask::Init (this=0x872ac08) at /home/ralfk/Pandaroot/pandaroot/mvd/MvdTracking/PndMvdKalmanTask.cxx:115
#2 0xb4bb72ef in CbmTask::InitTask (this=0x872ac08) at /home/ralfk/Pandaroot/pandaroot/base/CbmTask.cxx:36
#3 0xb4bb73d4 in CbmTask::InitTasks (this=0x8562078) at /home/ralfk/Pandaroot/pandaroot/base/CbmTask.cxx:101
#4 0xb4bb738a in CbmTask::InitTask (this=0x8562078) at /home/ralfk/Pandaroot/pandaroot/base/CbmTask.cxx:43
#5 0xb4bb35f3 in CbmRunAna::Init (this=0x8561fe0) at /home/ralfk/Pandaroot/pandaroot/base/CbmRunAna.cxx:114
#6 0xb4bf0cfb in G__CbmDict_531_0_4 (result7=0xbfd712ac, funcname=0x855f1b8 "\001", libp=0xbfd6d808, hash=0) at /home/ralfk/Pandaroot/build/base/CbmDict.cxx:9361
#7 0xb73fd5fb in Cint::G__ExceptionWrapper (funcp=0xb4bf0cd4 <G__CbmDict_531_0_4>, result7=0xbfd712ac, funcname=0x855f1b8 "\001", libp=0xbfd6d808, hash=0) at cint/src/Api.cxx:364
#8 0xb750d87a in G__call_cppfunc (result7=0xbfd712ac, libp=0xbfd6d808, ifunc=0x855f1b8, ifn=0) at cint/src/v6_newlink.cxx:512
#9 0xb74d4855 in G__interpret_func (result7=0xbfd712ac, funcname=0xbfd70dac "Init", libp=0xbfd6d808, hash=404, p_ifunc=0x855f1b8, funcmatch=1, memfunc_flag=1)
at cint/src/v6_ifunc.cxx:5133
#10 0xb74c3e9e in G__getfunction (item=0xbfd74d86 "Init()", known3=0xbfd7334c, memfunc_flag=1) at cint/src/v6_func.cxx:2517
#11 0xb759b6d8 in G__getstructmem (store_var_type=112, varname=0xbfd72790 "'\025_\001", membername=0xbfd74d86 "Init()", tagname=0xbfd72cf8 "fRun", known2=0xbfd7334c,
varglobal=0xb76413a0, objptr=2) at cint/src/v6_var.cxx:6606
#12 0xb758c496 in G__getvariable (item=0xbfd74d80 "fRun->Init()", known=0xbfd7334c, varglobal=0xb76413a0, varlocal=0x0) at cint/src/v6_var.cxx:5237
#13 0xb7491bde in G__getitem (item=0xbfd74d80 "fRun->Init()") at cint/src/v6_expr.cxx:1884
#14 0xb74a4d7f in G__getexpr (expression=0xbfd753b8 "fRun->Init()") at cint/src/v6_expr.cxx:1470
#15 0xb751fd09 in G__exec_function (statement=0xbfd753b8 "fRun->Init()", pc=0xbfd7599c, piout=0xbfd75998, plargestep=0xbfd75990, presult=0xbfd7594c) at cint/src/v6_parse.cxx:600
#16 0xb7526f84 in G__exec_statement (mparen=0xbfd7c858) at cint/src/v6_parse.cxx:6995
#17 0xb747a8d0 in G__exec_tempfile_core (file=0xbfd7e94c "/home/ralfk/Pandaroot/pandaroot/macro/mvd/Tracking/./runMvdKalmanTask.C", fp=0x0) at cint/src/v6_debug.cxx:251
#18 0xb747ac0d in G__exec_tempfile (file=0xbfd7e94c "/home/ralfk/Pandaroot/pandaroot/macro/mvd/Tracking/./runMvdKalmanTask.C") at cint/src/v6_debug.cxx:798
#19 0xb753964e in G__process_cmd (line=0xb7f27736 "al_14", prompt=0x80cd584 "", more=0x80cd57c, err=0xbfd7f608, rslt=0xbfd7f5d8) at cint/src/v6_pause.cxx:3070
#20 0xb79e8c93 in TCint::ProcessLine (this=0x80cd560, line=0xb7f27736 "al_14", error=0xbfd81e18) at meta/src/TCint.cxx:300
#21 0xb79e30dc in TCint::ProcessLineSynch (this=0x80cd560, line=0xb7f27736 "al_14", error=0xbfd81e18) at meta/src/TCint.cxx:365
#22 0xb792a326 in TApplication::ExecuteFile (file=0xbfd7fd41 "runMvdKalmanTask.C", error=0xbfd81e18) at base/src/TApplication.cxx:921
#23 0xb792a4f8 in TApplication::ProcessFile (this=0x80e8058, file=0xbfd7fd41 "runMvdKalmanTask.C", error=0xbfd81e18) at base/src/TApplication.cxx:810
#24 0xb792caff in TApplication::ProcessLine (this=0x80e8058, line=0xbfd7fd3e ".x runMvdKalmanTask.C", sync=false, err=0xbfd81e18) at base/src/TApplication.cxx:783
#25 0xb736dd59 in TRint::Run (this=0x80e8058, retrn=false) at rint/src/TRint.cxx:354
#26 0x08048e49 in main (argc=1, argv=0xbfd81f34) at main/src/rmain.cxx:29
(gdb) list
30 {
31 gMC3 = (TGeant3*) gMC;
32 nepred=1;
33 fdbPDG= TDatabasePDG::Instance();
34 fErrorMat= new TArrayD(15);
35 afErtrio=gMC3->fErtrio;
36 Pos=TVector3(0, 0 , 0);
37 PosErr = TVector3(0,0,0);
38 Mom=TVector3(0,0,0);
39 fTrkPar= new CbmTrackPar();
(gdb) q
So maybe I miss some detail which is needed by CbmGeanePro.
Maybe one of you has already dealt with this and can tell me what to do.
Greetings from Dresden, Ralf.
|
|
|
|
|
Re: Running the Kalman on the Mvd (solved dependency) [message #6624 is a reply to message #6617] |
Mon, 28 April 2008 17:24 |
Ralf Kliemt
Messages: 507 Registered: May 2007 Location: GSI, Darmstadt
|
first-grade participant |
From: 141.30.85*
|
|
Hi again,
I solved my library problems to start the fitter:
- Add
- ${GEANT3_INCLUDE_DIR}
- ${CMAKE_SOURCE_DIR}/genfit
- ${CMAKE_SOURCE_DIR}/recotasks
- ${CMAKE_SOURCE_DIR}/trackbase
- ${CMAKE_SOURCE_DIR}/trackrep
- ${CMAKE_SOURCE_DIR}/geane
to CMakeLists.txt
- Make a CbmGeane object in your macro
Toggle Spoiler
CbmGeane *Geane = new CbmGeane(MCFile);
PndConstField *fMagField=new PndConstField();
fMagField->SetField(0, 0 ,20. ); // values are in kG
fMagField->SetFieldRegion(-500, 500,-500, 500, -200, 200);
Geane->SetField(fMagField);
At my current stage I have to apply a correct handling of the MvdRecoHit.
Greetings again,
Ralf.
|
|
|
|
Re: Running the Kalman on the Mvd (solved dependency) [message #6657 is a reply to message #6656] |
Fri, 02 May 2008 14:47 |
Ralf Kliemt
Messages: 507 Registered: May 2007 Location: GSI, Darmstadt
|
first-grade participant |
From: 141.30.85*
|
|
Hi Vanni,
I made the additions to the pandaroot/mvd/CMakeLists.txt. It should be connected to the library where the kalman task is located.
Regards, Ralf.
Toggle Spoiler
# Create a library called "" which includes the source files given in
# the array .
# The extension is already found. Any number of sources could be listed here.
set(INCLUDE_DIRECTORIES
${ROOT_INCLUDE_DIR}
${GEANT3_INCLUDE_DIR}
${CLHEP_INCLUDE_DIR}
${CMAKE_SOURCE_DIR}/geobase
${CMAKE_SOURCE_DIR}/parbase
${CMAKE_SOURCE_DIR}/base
${CMAKE_SOURCE_DIR}/field
${CMAKE_SOURCE_DIR}/mcstack
${CMAKE_SOURCE_DIR}/passive
${CMAKE_SOURCE_DIR}/mvd/MvdMC
${CMAKE_SOURCE_DIR}/mvd/MvdData
${CMAKE_SOURCE_DIR}/mvd/MvdDigi
${CMAKE_SOURCE_DIR}/mvd/PndMvdReco
${CMAKE_SOURCE_DIR}/mvd/MvdTools
${CMAKE_SOURCE_DIR}/mvd/transport
${CMAKE_SOURCE_DIR}/mvd
${CMAKE_SOURCE_DIR}/genfit
${CMAKE_SOURCE_DIR}/recotasks
${CMAKE_SOURCE_DIR}/trackbase
${CMAKE_SOURCE_DIR}/trackrep
${CMAKE_SOURCE_DIR}/geane
)
include_directories( ${INCLUDE_DIRECTORIES})
set(LINK_DIRECTORIES
${ROOT_LIBRARY_DIR}
)
link_directories( ${LINK_DIRECTORIES})
########################### create libMvd ######################################
set(MVD_SRCS
MvdData/PndMvdDigi.cxx
MvdData/PndMvdDigiPixel.cxx
MvdData/PndMvdDigiStrip.cxx
MvdData/PndMvdMCPoint.cxx
MvdDigi/PndMvdCalcFePixel.cxx
MvdDigi/PndMvdCalcPixel.cxx
MvdDigi/PndMvdCalcStrip.cxx
MvdDigi/PndMvdDigiAna.cxx
MvdDigi/PndMvdHybridHitProducer.cxx
MvdDigi/PndMvdStripHitProducer.cxx
MvdDigi/PndMvdHitProducerIdeal.cxx
MvdDigi/PndMvdDigiTask.cxx
MvdMC/PndMvdContFact.cxx
MvdMC/PndMvdDetector.cxx
MvdMC/PndMvdGeo.cxx
MvdMC/PndMvdGeoPar.cxx
MvdMC/PndMvdGeoMappingPar.cxx
MvdMC/PndMvdMaterialDet.cxx
MvdTools/PndMvdPixelDigiPar.cxx
MvdTools/PndMvdStripDigiPar.cxx
MvdTools/PndStringVector.cxx
MvdTools/PndMvdGeoHandling.cxx
MvdTools/PndMvdEventAna.cxx
MvdTools/PndMvdMCEventAna.cxx
MvdTools/PndMvdDigiEventAna.cxx
MvdTools/PndMvdAllDataEventAna.cxx
MvdTools/PndMvdFileNameCreator.cxx
MvdTools/PndGeoHitList.cxx
MvdTools/PndEventDisplay.cxx
)
# fill list of header files from list of source files
# by exchanging the file extension
CHANGE_FILE_EXTENSION(*.cxx *.h MVD_HEADERS "${MVD_SRCS}")
# SET(MVD_SRCS ${MVD_SRCS} ${DIGI_SRCS})
# SET(MVD_HEADERS ${MVD_HEADERS} ${DIGI_HEADERS})
set(MVD_LINKDEF MvdLinkDef.h)
set(MVD_DICTIONARY ${CMAKE_CURRENT_BINARY_DIR}/MvdDict.cxx)
ROOT_GENERATE_DICTIONARY("${MVD_HEADERS}" "${MVD_LINKDEF}" "${MVD_DICTIONARY}" "${INCLUDE_DIRECTORIES}")
SET(MVD_SRCS ${MVD_SRCS} ${MVD_DICTIONARY})
add_library(Mvd SHARED ${MVD_SRCS})
target_link_libraries(Mvd ${ROOT_LIBRARIES})
set_target_properties(Mvd PROPERTIES ${CBMROOT_LIBRARY_PROPERTIES})
########################### create libMvdReco ##################################
set(MVDRECO_SRCS
# MvdData/PndMvdCluster.cxx
# MvdData/PndMvdStripCluster.cxx
# MvdData/PndMvdPixelCluster.cxx
MvdData/PndMvdRecoHit.cxx
MvdData/PndMvdPidCand.cxx
MvdData/PndMvdCluster.cxx
MvdData/PndMvdHit.cxx
MvdData/PndMvdHitInfo.cxx
MvdPid/PndMvdPidIdealTask.cxx
MvdPid/PndMvdIdealPidAlgo.cxx
MvdPid/PndMvdSimplePidAlgo.cxx
MvdPid/PndMvdAdvancedPidAlgo.cxx
MvdReco/PndMvdAccessRTDBTask.cxx
MvdReco/PndMvdRecoTask.cxx
MvdReco/PndMvdClusterTask.cxx
MvdReco/PndMvdPixelClusterFinder.cxx
MvdReco/PndMvdSimplePixelClusterFinder.cxx
MvdReco/PndMvdIdealPixelClusterFinder.cxx
MvdReco/PndMvdPixelClusterTask.cxx
MvdReco/PndMvdIdealClusterTask.cxx
MvdReco/PndMvdChargeWeightedPixelMapping.cxx
MvdReco/PndMvdStripClusterBuilder.cxx
MvdReco/PndMvdStripClusterTask.cxx
MvdReco/PndMvdIdealRecoTask.cxx
MvdTracking/PndMvdIdealTrackFinderTask.cxx
MvdTracking/PndMvdIdealTrackingTask.cxx
MvdTracking/PndMvdKalmanTask.cxx
)
# fill list of header files from list of source files
# by exchanging the file extension
CHANGE_FILE_EXTENSION(*.cxx *.h MVDRECO_HEADERS "${MVDRECO_SRCS}")
set(MVDRECO_LINKDEF MvdRecoLinkDef.h)
set(MVDRECO_DICTIONARY ${CMAKE_CURRENT_BINARY_DIR}/MvdRecoDict.cxx)
ROOT_GENERATE_DICTIONARY("${MVDRECO_HEADERS}" "${MVDRECO_LINKDEF}" "${MVDRECO_DICTIONARY}" "${INCLUDE_DIRECTORIES}")
SET(MVDRECO_SRCS ${MVDRECO_SRCS} ${MVDRECO_DICTIONARY})
add_library(MvdReco SHARED ${MVDRECO_SRCS})
target_link_libraries(MvdReco ${ROOT_LIBRARIES})
set_target_properties(MvdReco PROPERTIES ${CBMROOT_LIBRARY_PROPERTIES})
################################## install #####################################
install(TARGETS Mvd DESTINATION ${CMAKE_BINARY_DIR}/lib)
install(TARGETS MvdReco DESTINATION ${CMAKE_BINARY_DIR}/lib)
|
|
|
Goto Forum:
Current Time: Wed Nov 27 01:59:36 CET 2024
Total time taken to generate the page: 0.00725 seconds
|