a->Add(b), can't be initialized

Hello guys:
I want to know why one histogram can’t be initialized after adding a histogram, like below hQ2Q2Q2Q2_HFmHFmHFpHFp, even through I initial the histogram. Second times or more, though get the same histograms in files, I found the entries and mean of hQ2Q2Q2Q2_HFmHFmHFpHFp changed.

TH1D* hQ2Q2Q2Q2_HFmHFmHFpHFp ;
Tstring label_centbin = “”;
for(int pT=0; pT< n; pT++){
hQ2Q2Q2Q2_HFmHFmHFpHFp =
TH1D hQ2Q2_HFmHFp = (TH1D)file1->Get(“Q2Q2_HFmHFp_Re_”+label_centbin);
TH1D* hQ4Q4_HFmHFp = (TH1D*)file1->Get(“Q4Q4_HFmHFp_Re_”+label_centbin);
TH1D* hQ4Q2Q2_HFmHFpHFp =
TH1D* hQ2Q2Q4_HFmHFmHFp =

   hQ2Q2Q2Q2_HFmHFmHFpHFp->Add(hQ4Q2Q2_HFmHFpHFp, -1);
   hQ2Q2Q2Q2_HFmHFmHFpHFp->Add(hQ2Q2Q4_HFmHFmHFp, -1);
   aux_Q2Q2Q2Q2_HFmHFmHFpHFp_mean = hQ2Q2Q2Q2_HFmHFmHFpHFp->GetMean();
   aux_Q2Q2_HFmHFp_mean = hQ2Q2_HFmHFp->GetMean();
   vn_den = TMath::Power(fabs(aux_Q2Q2Q2Q2_HFmHFmHFpHFp_mean - 2.0*aux_Q2Q2_HFmHFp_mean*aux_Q2Q2_HFmHFp_mean),3./4.);


Hi @Liuyao_Zhang,
please check this post about posting code on the forum.

I am afraid I did not understand the question: can you provide the simplest possible recipe for me to reproduce the problem and state what is the result you expect and what is the result you get instead?


Hi @eguiraud
Thanks for your kind reminder.
I mean like below,

for(int pT=0; pT<npT; pT++){
TH1D* a = (TH1D*) file1->("a");
TH1D* b = (TH1D*) file1->("b");

The “a” object in file1 in first pT has a right entries.
But Added “b” object. “a” object don’t has a right entires, mean value.
I think the value may be covered?
Now, I try to:

for(int pT=0; pT<npT; pT++){
TH1D* a = (TH1D*) file1->("a");
TH1D* a_copy = (TH1D*) a->Clone("a_copy");
TH1D* b = (TH1D*) file1->("b");

That is is correct in every pT loop.

Sorry, I had missed your reply.

@faeli’s reply is off-topic.

Your original loop creates many histograms with the same name. I don’t think that’s what you want?
Maybe you want to get the histogram from the file outside of the loop?

I can try to debug if you can produce a small reproducer that includes a check for the expected output.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.