+ cfd0 = 0;
+ for (Int_t im=0; im<nmips; im++)
+ {
+ TString cfd = Form("hCFD%i_%i",i+1,im+1);
+ TString qtc = Form("hQTC%i_%i",i+1,im+1);
+ TString led = Form("hLED%i_%i",i+1,im+1);
+
+ TH1F *hCFD = (TH1F*) gFile->Get(cfd.Data()) ;
+ TH1F *hLED = (TH1F*) gFile->Get(led.Data());
+ TH1F *hQTC = (TH1F*) gFile->Get(qtc.Data()) ;
+ // hCFD->SetDirectory(0);
+ // hQTC->SetDirectory(0);
+ // hLED->SetDirectory(0);
+ if(!hCFD )
+ AliWarning(Form(" no CFD data in LASER DA for channel %i for amplitude %f MIPs",i,mips[im]));
+ if(!hQTC )
+ AliWarning(Form(" no QTC correction data in LASER DA for channel %i for amplitude %f MIPs",i,mips[im]));
+ if(!hLED)
+ AliWarning(Form(" no LED correction data in LASER DA for channel %i for amplitude %f MIPs",i,mips[im]));
+ if( hCFD && hCFD->GetEntries()<500 ) {
+ ok=false;
+ printf("no peak in CFD spectrum for PMT %i amplitude %i\n",i,im);
+ return ok;
+ }
+ if(hCFD && hCFD->GetEntries()>500 ) {
+ if( hCFD->GetRMS() >= 1.5)
+ GetMeanAndSigma(hCFD, cfdmean, sigma);
+ else
+ cfdmean = hCFD->GetMean();
+
+ Int_t maxBin = hCFD->GetMaximumBin();
+ Double_t meanEstimate = hCFD->GetBinCenter( maxBin);
+ if(TMath::Abs(meanEstimate - cfdmean) > 20 ) cfdmean = meanEstimate;
+ if (im == 0) cfd0 = cfdmean;
+ y1[im] = cfdmean - cfd0;
+ }
+ if(hQTC && hQTC->GetEntries()>500) {
+ GetMeanAndSigma(hQTC, qtmean, sigma);
+
+ x1[im] = qtmean;
+ if( x1[im] == 0) {
+ ok=false;
+ printf("no peak in QTC signal for PMT %i amplitude %i\n",i,im);
+ return ok;
+ }
+ }
+
+ if( hLED && hLED->GetEntries()>500) {
+ GetMeanAndSigma(hLED, ledmean, sigma);
+ }
+ else
+ {
+ // ok=false;
+ printf("no peak in LED spectrum for PMT %i amplitude %i\n",i,im);
+ ledmean=0;
+ // return ok;
+ }
+ x2[im] = ledmean;
+ xx2[im] = x2[nmips-im-1];
+
+ xx[im]=mips[im];
+ if (hQTC) delete hQTC;
+ if (hCFD) delete hCFD;
+ if (hLED) delete hLED;
+
+ }
+
+ for (Int_t imi=0; imi<nmips; imi++)
+ {
+ yy1[imi] = Float_t (mips[nmips-imi-1]);
+ xx1[imi] = x2[nmips-imi-1];
+ // cout<<" LED rev "<<i<<" "<<imi<<" "<<xx1[imi]<<" "<< yy1[imi]<<"nmips-imi-1 = "<< nmips-imi-1<<endl;
+ }
+
+ if(i==0) cout<<"Making graphs..."<<endl;
+
+ TGraph *grwalkqtc = new TGraph (nmips,x1,y1);
+ grwalkqtc->SetTitle(Form("PMT%i",i));
+ TGraph *grwalkled = new TGraph (nmips,x2,y1);
+ grwalkled->SetTitle(Form("PMT%i",i));
+ if(!fCalibByData)
+ fWalk.AddAtAndExpand(grwalkqtc,i);
+ fAmpLEDRec.AddAtAndExpand(grwalkled,i);
+ // cout<<" add walk "<<i<<endl;
+
+ //fit amplitude graphs to make comparison wth new one
+ TGraph *grampled = new TGraph (nmips,xx1,yy1);
+ TGraph *grqtc = new TGraph (nmips,x1,xx);
+ fQTC.AddAtAndExpand(grqtc,i);
+ fAmpLED.AddAtAndExpand(grampled,i);
+ // cout<<" add amp "<<i<<endl;
+
+ if(i==23)
+ cout<<"Graphs created..."<<endl;