Incompatible between TH1D and TH1

I try to run code like this:
//-----------------------
85 TH1* parShot(TH1D h1, double shots)
86 {
87 TString HistoName = h1->GetName();
88 HistoName += “_parShot”;
89
90 TH1D hist = (TH1D)h1->Clone(HistoName);
91 hist->Scale(1/shots);
92 return (TH1
)hist;
93 }

284 void Poisson(double mean)
285 {
286 TRandom3 ran3;
287 TH1D *hist = new TH1D(“Poison”,Form(“Poison(%.2f)”,mean),200,0,100);
288
289 for (int i=0 ; i<100000; i++)
290 hist->Fill(ran3.Poisson(mean));
291 TH1D *histPS = parShot(hist,100000);
292 }
//------------------------
Then I get error:

/moto.C:291:8: error: cannot initialize a variable of
type ‘TH1D *’ with an rvalue of type 'TH1 *'
TH1D *histPS = parShot(hist,100000);

I understand it is because of different type between ‘=’ at line 291, what shall I do?
Thanks in advance

TH1D *parShot(TH1D *h1, double shots)
// …
return hist;
// …