+//____________________________________________________________
+AliCFDataGrid* AliHFEInclusiveSpectrum::SubtractPhotonicBackground(){
+ //
+ // Apply Photonic background subtraction
+ //
+
+ printf("Photonic Background Subtraction \n");
+
+ // Raw spectrum
+ AliCFContainer *dataContainer = GetContainer(kDataContainer);
+ if(!dataContainer){
+ AliError("Data Container not available");
+ return NULL;
+ }
+ printf("Step data: %d\n",fStepData);
+ AliCFDataGrid *spectrumPhotonicSubtracted = new AliCFDataGrid("spectrumPhotonicSubtracted", "Data Grid for spectrum after Photonic Background subtraction", *dataContainer,fStepData);
+
+ AliCFDataGrid *dataSpectrumBeforePhotonicSubstraction = (AliCFDataGrid *) ((AliCFDataGrid *)GetSpectrum(GetContainer(kDataContainer),fStepData))->Clone();
+ dataSpectrumBeforePhotonicSubstraction->SetName("dataSpectrumBeforePhotonicSubstraction");
+
+
+ // Background Estimate
+ AliCFContainer *photonicContainer = GetContainer(kPhotonicBackground);
+ if(!photonicContainer){
+ AliError("Photonic background container not found");
+ return NULL;
+ }
+
+ Int_t stepbackground = 0;
+ AliCFDataGrid *photonicGrid = new AliCFDataGrid("ContaminationGrid","ContaminationGrid",*photonicContainer,stepbackground);
+
+ // Subtract
+ spectrumPhotonicSubtracted->Add(photonicGrid,-1.0);
+
+ // QA
+ TH1D *photonicsubtractedspectrum = (TH1D *) spectrumPhotonicSubtracted->Project(0);
+ CorrectFromTheWidth(photonicsubtractedspectrum);
+ TH1D *newrawspectrum = (TH1D *) dataSpectrumBeforePhotonicSubstraction->Project(0);
+ CorrectFromTheWidth(newrawspectrum);
+ fQA->AddResultAt(photonicsubtractedspectrum,AliHFEInclusiveSpectrumQA::kAfterSPB);
+ fQA->AddResultAt(newrawspectrum,AliHFEInclusiveSpectrumQA::kBeforeSPB);
+ fQA->DrawSubtractPhotonicBackground();
+
+ return spectrumPhotonicSubtracted;
+}
+
+