+
+Int_t AliHLTTRDCalibrationComponent::EORCalibration()
+{
+ //Also Fill histograms for the online display
+ TH2I *hCH2d=(TH2I*)fOutArray->FindObject("CH2d");
+ TProfile2D *hPH2d=(TProfile2D*)fOutArray->FindObject("PH2d");
+ TProfile2D *hPRF2d= (TProfile2D*)fOutArray->FindObject("PRF2d");
+ AliTRDCalibraVdriftLinearFit* hVdriftLinearFit = (AliTRDCalibraVdriftLinearFit*)fOutArray->FindObject("AliTRDCalibraVdriftLinearFit");
+
+
+ if(!hCH2d || !hPH2d || !hPRF2d || !hVdriftLinearFit) return 0;
+
+ //Fit
+ AliTRDCalibraFit *calibra = AliTRDCalibraFit::Instance();
+
+ //Gain
+ calibra->SetMinEntries(100);
+ calibra->AnalyseCH(hCH2d);
+ Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(0))
+ + 6* 18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(0));
+ Int_t nbfit = calibra->GetNumberFit();
+ Int_t nbE = calibra->GetNumberEnt();
+ TH1F *coefgain = 0x0;
+ // enough statistics
+ //if ((nbtg > 0) &&
+ // (nbfit >= 0.2*nbE)) {
+ // create the cal objects
+ //calibra->PutMeanValueOtherVectorFit(1,kTRUE);
+ TObjArray object = calibra->GetVectorFit();
+ AliTRDCalDet *objgaindet = calibra->CreateDetObjectGain(&object,kFALSE);
+ coefgain = objgaindet->MakeHisto1DAsFunctionOfDet();
+ //}
+ calibra->ResetVectorFit();
+
+ // vdrift second method
+ calibra->SetMinEntries(100); // If there is less than 100
+ hVdriftLinearFit->FillPEArray();
+ calibra->AnalyseLinearFitters(hVdriftLinearFit);
+ nbtg = 540;
+ nbfit = calibra->GetNumberFit();
+ nbE = calibra->GetNumberEnt();
+ TH1F *coefdriftsecond = 0x0;
+ // enough statistics
+ //if ((nbtg > 0) &&
+ // (nbfit >= 0.1*nbE)) {
+ // create the cal objects
+ //calibra->PutMeanValueOtherVectorFit(1,kTRUE);
+ object = calibra->GetVectorFit();
+ AliTRDCalDet *objdriftvelocitydetsecond = calibra->CreateDetObjectVdrift(&object,kTRUE);
+ objdriftvelocitydetsecond->SetTitle("secondmethodvdrift");
+ coefdriftsecond = objdriftvelocitydetsecond->MakeHisto1DAsFunctionOfDet();
+ //}
+ calibra->ResetVectorFit();
+
+ // vdrift first method
+ calibra->SetMinEntries(100*20); // If there is less than 20000
+ calibra->AnalysePH(hPH2d);
+ nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(1))
+ + 6* 18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(1));
+ nbfit = calibra->GetNumberFit();
+ nbE = calibra->GetNumberEnt();
+ TH1F *coefdrift = 0x0;
+ TH1F *coeft0 = 0x0;
+ // enough statistics
+ //if ((nbtg > 0) &&
+ // (nbfit >= 0.2*nbE)) {
+ // create the cal objects
+ //calibra->PutMeanValueOtherVectorFit(1,kTRUE);
+ //calibra->PutMeanValueOtherVectorFit2(1,kTRUE);
+ object = calibra->GetVectorFit();
+ AliTRDCalDet *objdriftvelocitydet = calibra->CreateDetObjectVdrift(&object,kTRUE);
+ coefdrift = objdriftvelocitydet->MakeHisto1DAsFunctionOfDet();
+ object = calibra->GetVectorFit2();
+ AliTRDCalDet *objtime0det = calibra->CreateDetObjectT0(&object,kTRUE);
+ coeft0 = objtime0det->MakeHisto1DAsFunctionOfDet();
+ //}
+ calibra->ResetVectorFit();
+
+
+ //PRF
+ calibra->SetMinEntries(200);
+ calibra->AnalysePRFMarianFit(hPRF2d);
+ nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(2))
+ + 6* 18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(2));
+ nbfit = calibra->GetNumberFit();
+ nbE = calibra->GetNumberEnt();
+ TH1F *coefprf = 0x0;
+ // enough statistics
+ //if ((nbtg > 0) &&
+ // (nbfit >= 0.95*nbE)) {
+ // create cal pad objects
+ object = calibra->GetVectorFit();
+ TObject *objPRFpad = calibra->CreatePadObjectPRF(&object);
+ coefprf = ((AliTRDCalPad *) objPRFpad)->MakeHisto1D();
+ //}
+ calibra->ResetVectorFit();
+
+
+ coefgain->SetName("coefgain");
+ coefprf->SetName("coefprf");
+ coefdrift->SetName("coefdrift");
+ coefdriftsecond->SetName("coefdriftsecond");
+ coeft0->SetName("coeft0");
+ if(coefgain) fAfterRunArray->Add(coefgain);
+ if(coefprf) fAfterRunArray->Add(coefprf);
+ if(coefdrift) fAfterRunArray->Add(coefdrift);
+ if(coefdriftsecond) fAfterRunArray->Add(coefdriftsecond);
+ if(coeft0) fAfterRunArray->Add(coeft0);
+
+
+ if(coefgain||coefprf||coefdrift||coeft0||coefdriftsecond) {
+ PushBack(fAfterRunArray, AliHLTTRDDefinitions::fgkEORCalibrationDataType);
+ }
+
+ // TString fileName="/tmp/CalibHistoDump_run";
+ // fileName+=AliCDBManager::Instance()->GetRun();
+ // fileName+=".root";
+ // HLTInfo("Dumping Histogram file to %s",fileName.Data());
+ // TFile* file = TFile::Open(fileName, "RECREATE");
+ // fAfterRunArray->Write();
+ // fOutArray->Write();
+ // file->Close();
+ // HLTInfo("Histogram file dumped");
+
+ return 0;
+}
+