Kuo_Mi
April 19, 2022, 9:30am
1
When columns ID >19 , AddNtupleRow gets failed!
My src/RunAction.cc
is defined based on example B5, and the biggest columns like these.
// 位置探测器2
analysisManager->CreateNtupleIColumn("worldPos_LD_2_DigCal_Hits"); // column Id = 18
analysisManager // column Id = 19
->CreateNtupleDColumn("worldPos_LD_2_DigCal_Hits");
analysisManager // column Id = 20
->CreateNtupleDColumn("worldPos_LD_2_DigCal_Hits");
analysisManager // column Id = 21
->CreateNtupleDColumn("worldPos_LD_2_DigCal_Hits");
while in src/B5EventAction.cc
, get the information from the detectors, but get the error like this:
-------- WWWW ------- G4Exception-START -------- WWWW -------
*** G4Exception : Analysis_W022
issued by : G4RootPNtupleManager::AddNtupleRow()
ntupleId 0adding row has failed.
*** This is just a warning message. ***
-------- WWWW -------- G4Exception-END --------- WWWW -------
Gods of the Geant4 , help me plz!!!
Kuo_Mi
April 19, 2022, 9:33am
2
Only when columns more than 19 get this error. In Python read the .root
file get empty.
When I delete the column > 19, everything get well and could get the data in Python.
ivana
April 19, 2022, 1:04pm
3
Hello,
There is no limitation for the number of columns in an ntuple; I added 18 columns in the B5 ntuple in RunAction.cc:
analysisManager->CreateNtupleDColumn("Time3"); // column Id = 8; etc.
and their filling in EventAction.cc:
analysisManager->FillNtupleDColumn(8, hit->GetTime());
and the example runs ok.
Check, if you sett the columnId’s in Fill call correctly.
Increasing G4AnalysisManager verbosity level and checking the output can help.
Best regards,
Kuo_Mi
April 20, 2022, 1:44am
4
Thank you!
You must be the goddess of Geant4.
I try simply added 20 columns to example B5 like
analysisManager->CreateNtupleDColumn("Time3"); // column Id = 8; etc.
it could work without error information.
But when I added the columns like these
analysisManager->CreateNtupleIColumn("Dc11Hits"); // column Id = 6
analysisManager->CreateNtupleDColumn("abs_Dc11_x"); // column Id = 7
analysisManager->CreateNtupleDColumn("abs_Dc11_y"); // column Id = 8
analysisManager->CreateNtupleDColumn("abs_Dc11_z"); // column Id = 9
analysisManager->CreateNtupleIColumn("Dc12Hits"); // column Id = 10
analysisManager->CreateNtupleDColumn("abs_Dc12_x"); // column Id = 11
analysisManager->CreateNtupleDColumn("abs_Dc12_y"); // column Id = 12
analysisManager->CreateNtupleDColumn("abs_Dc12_z"); // column Id = 13
// eventID
analysisManager->CreateNtupleIColumn("EventID"); // column Id = 14
// Input
analysisManager->CreateNtupleDColumn("InputEnergy"); // column Id = 15
// Primary
analysisManager->CreateNtupleDColumn("Primary_pos_x"); // column Id = 16
analysisManager->CreateNtupleDColumn("Primary_pos_y"); // column Id = 17
analysisManager->CreateNtupleDColumn("Primary_pos_z"); // column Id = 18
// =========================================================
// // IdealEnergy
analysisManager->CreateNtupleDColumn("IdealECEnergy"); // column Id = 19
// 2022-4-18
// Detector 1
analysisManager->CreateNtupleIColumn("worldPos_LD_1_DigCal_Hits"); // column Id = 20
analysisManager // column Id = 21
->CreateNtupleDColumn("worldPos_LD_1_DigCal_x");
analysisManager // column Id = 22
->CreateNtupleDColumn("worldPos_LD_1_DigCal_y");
analysisManager // column Id = 23
->CreateNtupleDColumn("worldPos_LD_1_DigCal_z");
// Detector 2
analysisManager->CreateNtupleIColumn("worldPos_LD_2_DigCal_Hits"); // column Id = 24
analysisManager // column Id = 25
->CreateNtupleDColumn("worldPos_LD_2_DigCal_Hits");
and rerun the B5, get the error like these:
WHY…
Does it because too long name for the column???
Help me plz,
best wishes to the goddess of Geant4
Kuo_Mi
April 20, 2022, 1:45am
5
And the addrow error happen again
Kuo_Mi
April 20, 2022, 2:01am
6
Goddess of Geant4:
When I change the column name like these:
analysisManager->CreateNtuple("B5", "Hits");
analysisManager->CreateNtupleIColumn("Dc1Hits"); // column Id = 0
analysisManager->CreateNtupleIColumn("Dc2Hits"); // column Id = 1
analysisManager->CreateNtupleDColumn("ECEnergy"); // column Id = 2
analysisManager->CreateNtupleDColumn("HCEnergy"); // column Id = 3
analysisManager->CreateNtupleDColumn("Time1"); // column Id = 4
analysisManager->CreateNtupleDColumn("Time2"); // column Id = 5
analysisManager->CreateNtupleIColumn("Dc11Hits"); // column Id = 6
analysisManager->CreateNtupleDColumn("Dc11_x"); // column Id = 7
analysisManager->CreateNtupleDColumn("Dc11_y"); // column Id = 8
analysisManager->CreateNtupleDColumn("Dc11_z"); // column Id = 9
analysisManager->CreateNtupleIColumn("Dc12Hits"); // column Id = 10
analysisManager->CreateNtupleDColumn("Dc12_x"); // column Id = 11
analysisManager->CreateNtupleDColumn("Dc12_y"); // column Id = 12
analysisManager->CreateNtupleDColumn("Dc12_z"); // column Id = 13
analysisManager->CreateNtupleIColumn("EventID"); // column Id = 14
analysisManager->CreateNtupleDColumn("In.En."); // column Id = 15
analysisManager->CreateNtupleDColumn("Pri.x"); // column Id = 16
analysisManager->CreateNtupleDColumn("Pri.y"); // column Id = 17
analysisManager->CreateNtupleDColumn("Pri.z"); // column Id = 18
// 理想能量
analysisManager->CreateNtupleDColumn("Ide.Out.En."); // column Id = 19
// 位置探测器部分 2022年4月20日
// 位置探测器1 击中数、绝对坐标
analysisManager->CreateNtupleIColumn("LD1_Hits"); // column Id = 20
analysisManager->CreateNtupleDColumn("LD1_x"); // column Id = 21
analysisManager->CreateNtupleDColumn("LD1_y"); // column Id = 22
analysisManager->CreateNtupleDColumn("LD1_z"); // column Id = 23
// 位置探测器2
analysisManager->CreateNtupleIColumn("LD2_Hits"); // column Id = 24
analysisManager->CreateNtupleDColumn("LD2_x"); // column Id = 25
analysisManager // column Id = 26
->CreateNtupleDColumn("ECEnergyVector", fEventAction->GetEmCalEdep());
analysisManager // column Id = 27
->CreateNtupleDColumn("HCEnergyVector", fEventAction->GetHadCalEdep());
analysisManager->FinishNtuple();
Done like this is just by make the column name shorter and shorter.
And rerun the B5, now it goes well…
So the column name couldn’t too long???
But how long is the limited?
Thank goddess!
Kuo_Mi
April 20, 2022, 3:08am
7
ivana
April 20, 2022, 12:49pm
8
In your first sample, you define the columns 24 and 25 with the same name; you should get in the output the warning:
... create file : B5ntuple.root - done
tools::wroot::ntuple : create_column(worldPos_LD_2_DigCal_Hits) failed.
This problem then induced further errors. When I changed the last name as “worldPos_LD_2_DigCal_Hits_x” the example runs ok.
Kuo_Mi
April 20, 2022, 2:03pm
9
Actually I change the column name and got another warning like this:
Oh well , I now got the idea that the same column name couldn’t work…
I use the short name in my code now, now it could work temporary.
Thank goddess of Geant4!
system
Closed
April 27, 2022, 2:04pm
10
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.