Dear all,
I want to generate a tree to record each step’s coordinates of each event based on example B4a. I use vector to do that. A vector means a event, and it would contain all the steps’ coordinates. Of course, I can’t use G4AnalysisManager because it only can fill “double”, “int”, and “float”. I write another file such as “B4aAnalysisManager” to do that. And it can be run in single thread successfully. But when multi-thread, it mentioned me
“Break Segmentation violation”. I tried use G4AutoLock to lock the file, but it seems not work. Is there any reference? Or any suggestions?
Thanks
1 Like
The B4aAnalysisManager is just like follows, and I added them into B4RunAction, B4aEventAction and B4aSteppingAction.
class B4aAnalysisManager{
public:
virtual ~B4aAnalysisManager();
static B4aAnalysisManager* Instance();
void FillTree();
void Book();
void CloseFile();
void Back(G4double b, G4double c, G4double d, G4double e);
void ClearV();
private:
B4aAnalysisManager();
static B4aAnalysisManager* instance;
TFile* fFile;
TTree* fTree;
};
Hello,
This is a ROOT problem, so you should ask help at the ROOT forum.
I would just like to point that G4AnalysisManager allows to create ntuples with vector columns, see:
Best regards,