What kind of data needs to be processed using G4Run's Merge function


I’ve been learning some basic examples of G4 recently, but there is one place I don’t quite understand. In the B3b example I found that the data extracted by the G4MultiFunctionalDetector needs to be merged using the transfer to the Run::Merge function.

So I checked the manual and according to the official explanation, in multi-threaded mode and when dealing with values that need to be accumulated, you need to override two virtual functions in G4run. They are the virtual void RecordEvent(const G4Event*) and void Merge(const G4Run*) functions.

But when I saw the B5 example, it was obvious that the example was also a cumulative value in the edpt of the statistics, but at this time I noticed that the official example did not use the class G4run.

So I would like to ask you guys when the virtual function in the class G4run is mandatory to be overridden. Also what do I need to pay attention to when processing experimental data in multi-threaded mode. Thank you for your replies.