Home » PANDA » PandaRoot » Bugs, Fixes, Releases » compilation of macros
compilation of macros [message #9831] |
Tue, 01 December 2009 21:40 |
Bertram Kopf
Messages: 110 Registered: March 2006
|
continuous participant |
From: *pools.arcor-ip.net
|
|
Dear all,
as decided during the last PandaRoot meeting, I am currently developing tools to automatize the link/run procedure for all macros. Very first rudimental tools are already existing on my local version. As a starting point I used the properly running emc macro "sim_emc.C" where a slight modification was needed by e.g. including the relevant header files. The first trial to compile this modified macro failed, since the forward declaration of a class, namely "class PndGeoDrc" in "PndDrc.h", was missing. After fixing this bug, the macro has been compiled successfully, but unfortunately with a lot of warnings in the log output:
Toggle Spoiler
Processing runMacros.C...
Warning in <TClassTable::Add>: class PndSttTrack already in TClassTable
Warning in <TClassTable::Add>: class PndMvdPixel already in TClassTable
Warning in <TClassTable::Add>: class PndMvdStrip already in TClassTable
Warning in <TClassTable::Add>: class PndMvdMCPoint already in TClassTable
Warning in <TClassTable::Add>: class PndMvdDigi already in TClassTable
Warning in <TClassTable::Add>: class PndMvdDigiPixel already in TClassTable
Warning in <TClassTable::Add>: class PndMvdApvHit already in TClassTable
Warning in <TClassTable::Add>: class PndMvdPidCand already in TClassTable
Info in <TUnixSystem::ACLiC>: creating shared library /home/bertram/PndRoot/091123/trunk/macro/emc/./AbsArgTest_C.so
Info in <TUnixSystem::ACLiC>: creating shared library /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C.so
In file included from /home/bertram/PndRoot/091123/trunk/base/FairRunSim.h:9,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:8,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/FairRootExt/july09/tools/root/include/TObject.h:125: warning: ‘virtual const char* TObject::GetName() const’ was hidden
/home/bertram/PndRoot/091123/trunk/base/FairParticle.h:46: warning: by ‘const TString& FairParticle::GetName()’
/FairRootExt/july09/tools/root/include/TObject.h:144: warning: ‘virtual void TObject::Print(const Option_t*) const’ was hidden
/home/bertram/PndRoot/091123/trunk/base/FairParticle.h:37: warning: by ‘void FairParticle::Print() const’
In file included from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:9,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/FairRootExt/july09/tools/root/include/TNamed.h:59: warning: ‘virtual void TNamed::Print(const Option_t*) const’ was hidden
/home/bertram/PndRoot/091123/trunk/base/FairModule.h:34: warning: by ‘virtual void FairModule::Print() const’
/home/bertram/PndRoot/091123/trunk/base/FairModule.h:55: warning: unused parameter ‘vname’
In file included from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:10,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/home/bertram/PndRoot/091123/trunk/base/FairDetector.h:60: warning: unused parameter ‘cl1’
/home/bertram/PndRoot/091123/trunk/base/FairDetector.h:60: warning: unused parameter ‘cl2’
/home/bertram/PndRoot/091123/trunk/base/FairDetector.h:60: warning: unused parameter ‘offset’
In file included from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:11,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/home/bertram/PndRoot/091123/trunk/base/FairModule.h:53: warning: ‘virtual void FairModule::ExpandNode(TGeoNode*)’ was hidden
/home/bertram/PndRoot/091123/trunk/emc/EmcMC/PndEmc.h:116: warning: by ‘void PndEmc::ExpandNode(TGeoVolume*, TGeoVolume*)’
In file included from /home/bertram/PndRoot/091123/trunk/mdt/MdtMC/PndMdt.h:14,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:12,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/FairRootExt/july09/tools/root/include/TObject.h:152: warning: ‘virtual Int_t TObject::Write(const char*, Int_t, Int_t)’ was hidden
/home/bertram/PndRoot/091123/trunk/base/FairRootManager.h:69: warning: by ‘void FairRootManager::Write()’
/FairRootExt/july09/tools/root/include/TObject.h:153: warning: ‘virtual Int_t TObject::Write(const char*, Int_t, Int_t) const’ was hidden
/home/bertram/PndRoot/091123/trunk/base/FairRootManager.h:69: warning: by ‘void FairRootManager::Write()’
In file included from /home/bertram/PndRoot/091123/trunk/mdt/MdtMC/PndMdt.h:16,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:12,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/FairRootExt/july09/tools/root/include/TNamed.h:51: warning: ‘virtual const char* TNamed::GetName() const’ was hidden
/home/bertram/PndRoot/091123/trunk/base/FairVolume.h:29: warning: by ‘const char* FairVolume::GetName()’
In file included from /home/bertram/PndRoot/091123/trunk/parbase/FairParGenericSet.h:5,
from /home/bertram/PndRoot/091123/trunk/mdt/MdtMC/PndGeoMdtPar.h:5,
from /home/bertram/PndRoot/091123/trunk/mdt/MdtMC/PndMdt.h:18,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:12,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/home/bertram/PndRoot/091123/trunk/parbase/FairParSet.h:22: warning: unused parameter ‘io’
In file included from /home/bertram/PndRoot/091123/trunk/mdt/MdtMC/PndGeoMdtPar.h:5,
from /home/bertram/PndRoot/091123/trunk/mdt/MdtMC/PndMdt.h:18,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:12,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/home/bertram/PndRoot/091123/trunk/parbase/FairParSet.h:23: warning: ‘virtual Int_t FairParSet::write()’ was hidden
/home/bertram/PndRoot/091123/trunk/parbase/FairParGenericSet.h:20: warning: by ‘virtual Int_t FairParGenericSet::write(FairParIo*)’
/home/bertram/PndRoot/091123/trunk/parbase/FairParSet.h:21: warning: ‘virtual Bool_t FairParSet::init()’ was hidden
/home/bertram/PndRoot/091123/trunk/parbase/FairParGenericSet.h:19: warning: by ‘virtual Bool_t FairParGenericSet::init(FairParIo*)’
In file included from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:13,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/home/bertram/PndRoot/091123/trunk/base/FairDetector.h:60: warning: ‘virtual void FairDetector::CopyClones(TClonesArray*, TClonesArray*, Int_t)’ was hidden
/home/bertram/PndRoot/091123/trunk/drc/PndDrc.h:102: warning: by ‘virtual void PndDrc::CopyClones(TClonesArray*, TClonesArray*, TClonesArray*, TClonesArray*, Int_t)’
In file included from /home/bertram/PndRoot/091123/trunk/field/PndMultiField.h:18,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:16,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/FairRootExt/july09/tools/root/include/TNamed.h:59: warning: ‘virtual void TNamed::Print(const Option_t*) const’ was hidden
/home/bertram/PndRoot/091123/trunk/base/FairField.h:123: warning: by ‘virtual void FairField::Print()’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:97: warning: unused parameter ‘x’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:97: warning: unused parameter ‘y’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:97: warning: unused parameter ‘z’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:103: warning: unused parameter ‘x’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:103: warning: unused parameter ‘y’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:103: warning: unused parameter ‘z’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:109: warning: unused parameter ‘x’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:109: warning: unused parameter ‘y’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:109: warning: unused parameter ‘z’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:125: warning: unused parameter ‘point’
/home/bertram/PndRoot/091123/trunk/base/FairField.h:125: warning: unused parameter ‘bField’
In file included from /home/bertram/PndRoot/091123/trunk/emc/EmcData/PndEmcHit.h:17,
from /home/bertram/PndRoot/091123/trunk/emc/EmcDigi/PndEmcHitProducer.h:14,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:20,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/home/bertram/PndRoot/091123/trunk/base/FairHit.h:65: warning: unused parameter ‘opt’
In file included from /home/bertram/PndRoot/091123/trunk/emc/EmcDigi/PndEmcHitProducer.h:18,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:20,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/FairRootExt/july09/tools/root/include/TObject.h:144: warning: ‘virtual void TObject::Print(const Option_t*) const’ was hidden
/home/bertram/PndRoot/091123/trunk/emc/EmcTools/PndEmcStructure.h:39: warning: by ‘void PndEmcStructure::Print(std::string, Int_t) const’
In file included from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. h:34,
from /home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new_C_ACLiC_dict. cxx:17:
/home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C: In function ‘void sim_emc_new(Int_t, Float_t)’:
/home/bertram/PndRoot/091123/trunk/macro/emc/./sim_emc_new.C:76: warning: unused variable ‘Pipe’
This example shows that the pre-compilation of the macros could result in a helpful diagnostic tool to improve the software, even for macros which seem to work properly.
Best regards,
Bertram.
|
|
|
|
|
|
|
|
|
|
|
Re: compilation of macros [message #9844 is a reply to message #9831] |
Wed, 02 December 2009 23:24 |
Elwin Dijck
Messages: 16 Registered: June 2009 Location: Groningen, The Netherland...
|
occasional visitor |
From: *mxp.dsl.internl.net
|
|
I also experimented with compiling macros and actually used g++ instead of ACLiC for compilation and then linked with the PandaRoot libraries. The linking part gave me several errors about undefined symbols, because the PandaRoot libraries contain (public) functions that are declared but not implemented. I guess it should be possible to ignore the errors as none of these functions are ever called, but in any case it might be better to remove their declarations from the class interfaces. This won't break any code as calling these function would result in crashes anyway.
I compiled a list of functions that are declared, but don't seem to be implemented. It might be good to comment-out the declarations for functions that are supposed to be implemented at some point or otherwise just remove them (or make them private).
List
dch/PndDchDrifter.h:59 void PndDchDrifter::Initialize()
emc/EmcDigi/PndEmcApdHitProducer.h:42 PndEmcApdHit *PndEmcApdHitProducer::AddHit(Int_t, Int_t, Float_t, Float_t)
emc/EmcDigi/PndEmcApdHitProducer.h:46 PndEmcApdHit *PndEmcApdHitProducer::AddHit(Int_t, Int_t, Float_t, Float_t, vector<PndEmcApdPoint *>)
emc/EmcDigi/PndEmcHitProducer.h:48 PndEmcHit *PndEmcHitProducer::AddHit(Int_t, Int_t, Float_t, Float_t, vector<PndEmcPoint *>)
emc/EmcData/PndEmcWaveform.h:98 int PndEmcWaveform::getWaveformLength() const
emc/EmcData/PndEmcCluster.h:77 Int_t PndEmcCluster::thetaIndexInt() const
emc/EmcData/PndEmcCluster.h:80 Int_t PndEmcCluster::phiIndexInt() const
gem/PndGemSensor.h:126 Bool_t PndGemSensor::ActivateChannels(Int_t, Double_t, Double_t)
gem/PndGemSensor.h:137 Int_t PndGemSensor::Intersect(Int_t, Int_t, vector<Double_t> &, vector<Double_t> &)
gem/PndGemSensor.h:145 Int_t PndGemSensor::IntersectClusters(Double_t, Double_t, Double_t &, Double_t &, Double_t &)
gem/PndGemSensor.h:154 Int_t PndGemSensor::PointIndex(Int_t, Int_t)
hyp/hypDigi/PndHypCalcStrip.h:80 ostream &PndHypCalcStrip::operator<<(ostream &)
lhetrack/PndLheTrackCuts.h:60 Double_t PndLheTrackCuts::GetDelY(Int_t) (implementation trivial)
lhetrack/PndLheTrackCuts.h:81 Double_t PndLheTrackCuts::TrackHitAlpha(PndLheCMCandidate *, PndLheCMPoint *, Bool_t)
lhetrack/PndLheTrackCuts.h:82 Double_t PndLheTrackCuts::TrackHitCircleDist(PndLheCMCandidate *, PndLheCMPoint *, Bool_t)
lhetrack/PndLheSegments.h:56 Int_t PndLheSegments::GetRadiusSegm(const PndLheCMPoint *)
lhetrack/PndLheSegments.h:57 Int_t PndLheSegments::GetRadiusSegm(Int_t)
lhetrack/PndLheSegments.h:64 Int_t PndLheSegments::GetStation(Int_t)
lhetrack/PndLheHitsMaker.h:105 void PndLheHitsMaker::GetStripPoints()
lumi/LumiDigi/PndLumiStripHitProducer.h:46 void PndLumiStripHitProducer::Print() const
mvd/MvdDigi/PndMvdCalcStrip.h:106 ostream &PndMvdCalcStrip::operator<<(ostream &)
mvd/MvdTracking/PndMvdTpcRiemannCorrelatorTask.h:32 void PndMvdTpcRiemannCorrelatorTask::PrintResult()
mvd/MvdTracking/PndMvdTPCRiemannTrackFinderTaskEff.h:32 void PndMvdTPCRiemannTrackFinderTaskEff::PrintResult()
mvd/MvdTracking/PndMvdRiemannTrackFinderTask.h:32 void PndMvdRiemannTrackFinderTask::PrintResult()
mvd/MvdTracking/PndTpcClustPlusRTFTask.h:26 void PndTpcClustPlusRTFTask::PrintResult()
mvd/MvdTracking/PndMvdTrackFinderAnaTask.h:30 void PndMvdTrackFinderAnaTask::PrintResult()
mvd/MvdTracking/PndMvdTPCRiemannTrackFinderTask.h:39 void PndMvdTPCRiemannTrackFinderTask::PrintResult()
mvd/MvdTracking/PndMvdRiemannVertexFinderTask.h:28 void PndMvdRiemannVertexFinderTask::PrintResult()
mvd/MvdTracking/PndMvdRiemannTrackFinderTaskCutPar.h:35 void PndMvdRiemannTrackFinderTaskCutPar::PrintResult()
mvd/MvdTracking/PndMvdRiemannTrackFinderTaskEff.h:32 void PndMvdRiemannTrackFinderTaskEff::PrintResult()
mvd/MvdTracking/PndTpcClustPlusRTFTaskCutPar.h:36 void PndTpcClustPlusRTFTaskCutPar::PrintResult()
mvd/MvdTracking/PndMvdTPCRiemannTrackFinderTaskCutPar.h:37 void PndMvdTPCRiemannTrackFinderTaskCutPar::PrintResult()
pnddata/MvdData/PndMvdDigiStrip.h:32 PndMvdDigiStrip::PndMvdDigiStrip(Int_t, Int_t, TString, Int_t, Int_t, Double_t)
pnddata/TrackData/PndTrackID.h:38 void PndTrackID::Sort()
pnddata/SttData/PndSttGeomPoint.h:57 void PndSttGeomPoint::Transform()
pnddata/SttData/PndSttPoint.h:52 void PndSttPoint::SetMomentumtot(TVector3)
pnddata/MdtData/PndMdtHit.h:25 void PndMdtHit::Clear()
PndTools/AnalysisTools/Fitter/PndVtxFitter.h:107 void PndVtxFitter::SetBeamProfile(const TMatrixDSym &)
PndTools/AnalysisTools/Fitter/PndVtxFitter.h:108 void PndVtxFitter::SetVertexProfile(const TMatrixDSym &)
PndTools/AnalysisTools/Fitter/PndVtxFitter.h:110 TMatrixDSym PndVtxFitter::GetVertexProfile() const
PndTools/AnalysisTools/Fitter/PndVtxFitterParticle.h:91 PndVtxFitterParticle &PndVtxFitterParticle::operator=(const PndVtxFitterParticle &) # should propably be private
stt/PndSttSingleStraw.h:121 Int_t PndSttSingleStraw::StrawTot()
stt/PndSttTrackFinderIdeal.h:42 void PndSttTrackFinderIdeal::ZoomTrack(Double_t &, Double_t &, Double_t &, PndSttTrack *)
tpc/DebugLogger.h:56 unsigned int DebugLogger::addOutFile(string)
tpc/tpcreco/test/PndTpcRecoTester.h:50 void PndTpcRecoTester::testRiemannTrack()
tpc/PndTpcLaserFitTask.h:57 void PndTpcLaserFitTask::setOpeningAngle(double)
trackbase/FairTrackParP.h:67 void FairTrackParP::SetTrackPar(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Int_t, Double_t[15])
trackbase/FairTrackParP.h:70 void FairTrackParP::SetTrackPar(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t[15])
Additionally, the PndMvdGeo class is referenced in the code, but the source code file PndMvdGeo.cxx is excluded from the build by default (mvd/MvdLinkDef.h:19 and mvd/CMakeLists.txt:62), which also results in undefined references when externally linking.
|
|
|
Re: compilation of macros [message #9845 is a reply to message #9844] |
Thu, 03 December 2009 00:40 |
Bertram Kopf
Messages: 110 Registered: March 2006
|
continuous participant |
From: *pools.arcor-ip.net
|
|
Hi Elwin,
Elwin Dijck wrote on Wed, 02 December 2009 23:24 | I also experimented with compiling macros and actually used g++ instead of ACLiC for compilation and then linked with the PandaRoot libraries. The linking part gave me several errors about undefined symbols, because the PandaRoot libraries contain (public) functions that are declared but not implemented. I guess it should be possible to ignore the errors as none of these functions are ever called, but in any case it might be better to remove their declarations from the class interfaces. This won't break any code as calling these function would result in crashes anyway.
|
These errors should not be ignored. In any case, one has to fix it! Your example shows that it is might be better to link with g++ instead of ACLiC.
Therefore I would like to ask everybody to think about the idea to get rid of the existing macros and create binaries with g++ instead. In order to steer the applications, the application framework can provide an additional interpreter with the purpose to enable/disable tasks, communicate with the tasks, etc. I know, it is just an idea and it would require lots of changes. Anyhow, it would be great to think about such an idea.
Cheers,
Bertram.
|
|
|
|
Re: compilation of macros [message #9847 is a reply to message #9831] |
Thu, 03 December 2009 09:34 |
Johan Messchendorp
Messages: 693 Registered: April 2007 Location: University of Groningen
|
first-grade participant |
From: *xs4all.nl
|
|
Dear all,
Lets not get too excited here and start a war about the usage of ROOTCINT! We really have other priorities to focus on. First of all, the reason why we decided to compile the macros is to clean up the existing code and find potential problems. And, indeed it proofs to be useful, hurray!. So, many thanks to Bertram and Elwin!
For the longer term, I would propose is to have as - a QA check! - the "all-in-one-macros" compiled and linked as well as binary. The outcome of such a compilation, we can place on the dashboard, so that the developers can take a look at it and use it to clean up their code. For the rest, I am very very very hesitative to start forgetting about CINT. I like it as a steering facility (flexible, simple, ....), like many many many others... And that fact also has an important value, do not underestimate it!
Greetings,
Johan.
|
|
|
Re: compilation of macros [message #9848 is a reply to message #9840] |
Thu, 03 December 2009 09:48 |
Florian Uhlig
Messages: 424 Registered: May 2007
|
first-grade participant |
From: *gsi.de
|
|
Hi Mathias
Quote: | did I understood correctly, that the order of #include statements has some effect?? This must be a joke. If not, what about cleaning up all header files?
|
It is not a joke. This is real life and a well known problem.
If all the header files would be both self sufficient and idempotent then the order would not matter. As you can see with
this problem if they are not you can have problems.
I add below a part from Bruce Eckels book "Thinking in C++, Volume 1" which hopefully makes the point more clear.
Quote: |
Order of header inclusion
Headers are included from "the most specific to the most general." That is, any header files in the local directory are included first, then any of my own "tool" headers such as require.h or purge.h, then any third-party library headers, then the standard C++ library headers, and finally the C library headers.
The justification for this comes from John Lakos in Large-Scale C++ Software Design (Addison-Wesley, 1996):
Latent usage errors can be avoided by ensuring that the .h file of a component parses by itself -- without externally-provided declarations or definitions... Including the .h file as the very first line of the .c file ensures that no critical piece of information intrinsic to the physical interface of the component is missing from the .h file (or, if there is, that you will find out about it as soon as you try to compile the .c file).
If the order of header inclusion goes "from most specific to most general," then it's more likely that if your header doesn't parse by itself, you'll find out about it sooner and prevent annoyances down the road.
|
By the way the PndDrc.h file was the first header included in PndDrc.cxx until 22.07.09. At that point the order was changed, probaly to overcome the problem in the header file which came in at the same time.
To clean all header files would be a good idea but i fear that it will not help. We did this some time ago and now it is again a mess.
Ciao
Florian
|
|
|
|
|
|
|
Re: compilation of macros [message #9864 is a reply to message #9845] |
Fri, 04 December 2009 15:29 |
Elwin Dijck
Messages: 16 Registered: June 2009 Location: Groningen, The Netherland...
|
occasional visitor |
From: *KVI.nl
|
|
The declarations of functions that were not implemented are now commented-out, except for the following two in FairTrackParP. Can someone please look at those?
trackbase/FairTrackParP.h:67 void FairTrackParP::SetTrackPar(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Int_t, Double_t[15])
trackbase/FairTrackParP.h:70 void FairTrackParP::SetTrackPar(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t[15])
-Elwin
[Updated on: Fri, 04 December 2009 15:30] Report message to a moderator
|
|
|
|
|
Re: compilation of macros [message #9867 is a reply to message #9865] |
Fri, 04 December 2009 16:52 |
Elwin Dijck
Messages: 16 Registered: June 2009 Location: Groningen, The Netherland...
|
occasional visitor |
From: *KVI.nl
|
|
Thanks!
There is now an example of how I compiled macros with g++ in the macro/run/compile_example/ directory. There you'll find a Makefile and source code that compile something like sim_complete_tpc.C into a stand-alone executable that accepts parameters from the command-line. The final linking step should now work with the newest PandaRoot revision.
Best regards,
Elwin Dijck
|
|
|
|
|
|
Re: compilation of macros [message #9897 is a reply to message #9896] |
Mon, 07 December 2009 17:24 |
Bertram Kopf
Messages: 110 Registered: March 2006
|
continuous participant |
From: 140.181.10*
|
|
Hi Mohammad,
Quote: |
just for my curiosity, do you have any real use case for this? I thought you do not want to use macros at all, you wanted simply to compile these macros, and now you want to control even the sub-tasks (Which is by the way possible!) from the macros. It would be really great if all this would have a technical background and use cases and not simply like it is now!
|
the full reconstruction and analysis application for example will exist of a huge amount of individual tasks. To keep everything under control, it would be good/mandatory to set it up via an hierarchical structure, i.e. with sequences consisting of subtasks and subsubtasks. And such tasks are needed to be controled via an interpreter. Great, if this is possible with the existing application framework!
As I already mentioned before, one use case would be the high level analysis tools.
Cheers,
Bertram.
[Updated on: Mon, 07 December 2009 17:27] Report message to a moderator
|
|
|
Re: compilation of macros [message #9898 is a reply to message #9897] |
Mon, 07 December 2009 19:16 |
Johan Messchendorp
Messages: 693 Registered: April 2007 Location: University of Groningen
|
first-grade participant |
From: *xs4all.nl
|
|
Dear Bertram and others,
It is really great that Bertram thinks about the very important high-level analysis tools and its corresponding framework. From the physics book activities, Bertram has gained lots of experiences in this direction, in particular with a good overview of the needs of users. Furthermore, we indeed need these higher-level tools/framework and at the moment this is far from complete (mostly due to lack of manpower in this direction). I would therefore encourage any thought in this direction!
The question is what the best strategy is to proceed here. Personally, I would like to see that such a high-level framework is developed along the lines within the present framework. For two reasons: first of all, it would be good to keep things transparent for developers and users, and secondly, it is simply much more efficient to build on something we already have than to re-invent the wheel. We really do not have any resources to follow more lines (and we will also not have this in the future).
Following this discussion in the forum, I understand that - in principle - the development of a higher-level analysis framework with sub-sub-sub tasks etc is possible within the existing framework. My request is therefore to first start looking into what is there and how this can be used to continue the higher-level analysis developments. For me this is the most logical approach. But if someone has another point-of-view on this, let me know....
Kind wishes,
Johan.
|
|
|
Re: compilation of macros [message #9938 is a reply to message #9831] |
Thu, 07 January 2010 15:49 |
Elwin Dijck
Messages: 16 Registered: June 2009 Location: Groningen, The Netherland...
|
occasional visitor |
From: *KVI.nl
|
|
At the moment the compilation of macros doesn't work anymore because there is again a declared but unimplemented public function. In change 7385, the implementation of PndMvdDigiStrip::PndMvdDigiStrip(Int_t, Int_t, TString, Int_t, Int_t, Double_t, Int_t) was removed, but it's still declared and actually also used (in PndMvdConvertApv). Could someone repair this?
|
|
|
|
Goto Forum:
Current Time: Sat Nov 09 08:36:25 CET 2024
Total time taken to generate the page: 0.00782 seconds
|