Message: Re: Using shared_ptr (from the boost library) Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Re: Using shared_ptr (from the boost library) 

Forum: Installation and Configuration
Re: None Using shared_ptr (from the boost library)
Re: Question Re: Using shared_ptr (from the boost library) (Gabriele Cosmo)
Re: None Re: Using shared_ptr (from the boost library) (Peter Niessen )
Re: More Re: Using shared_ptr (from the boost library) (Gabriele Cosmo)
Date: 21 Nov, 2007
From: Peter Niessen <>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

Content-Type: TEXT/PLAIN; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT

On Wed, 21 Nov 2007, Gabriele Cosmo wrote:

> *** Discussion title: Installation and Configuration
> Email replies to must include:
>   In-Reply-To: <"/installconfig/1017/1/1/1">
>   Subject: ...change this to be about your reply.
> Hi Peter,
> > In my application, I usually do a lot of "new", espescially in the
> > detector construction: New Elements, new Material Properties, new
> > volumes, etc.
> >
> > Then, before returning the physical world volume, I lose all these
> > pointers, as they go out of scope:
> materials and geometrical volumes/solids are 'cached' and registered in stores internally
> in Geant4. These pointers are de-registered and deleted at the end of the application
> if not explicitly done by the user. If an exception occurs, no tiding up is done implicitly
> by the Geant4 kernel...

Hi Gabriele,

I just tried it in a small example and replaced all the 

G4Material *ne102a = new G4Material ("NE102A", 1.032 * g / cm3, 2);

etc. by 

boost::shared_ptr<G4Material> ne102a (new G4Material (...));

and pass them to the other methods like

boost::shared_ptr<G4LogicalVolume> scintillator_log
	(new G4LogicalVolume (scintillator_box.get (),
	ne102a.get (),

but of course, since I pass the pointer and not the shared_ptr in the
G4LogicalVolume constructor, boost doesn't increase the count and
deletes the stuff at the end of ::Construct () -> not good.

I guess I'll leave it as it is.

> btw, you certainly don't want to delete the pointers within the construct() method... you
> may want to keep the pointers as members of the class, or implement a way to cache
> them if wish to reuse them elsewhere within the lifetime of your DetectorConstruction
> object.

> Gabriele

Peter Nießen (Peter Niessen for special character challenged displays)
Bartol Research Institute
University of Delaware
Newark, DE 19716-4793
U.S. of America

Tel (+1)302/831-8700
Fax (+1)302/831-1843

Aber icerec, der alte Knochen, war ja schon immer die H-Milch unter
den Metaprojekten, also koennte sim2.0+rec1.5.9 ne lange Ehe werden.

S. Klepser, August 2007

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

 Add Message Add Message
to: "Re: Using shared_ptr (from the boost library)"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]