]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/hfe/AliHFEefficiency.cxx
Add fast merging option (Diego)
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEefficiency.cxx
index 54c6ec83b581687e912820a9a295d23d584f73db..30bb40e96919c1de3828780f6bdc9bfab856cf96 100644 (file)
@@ -119,16 +119,18 @@ void AliHFEefficiency::UserCreateOutputObjects(){
   if(fCutTRD){
     AliHFEcutStep *hfeTRD = fFilter->GetCutStep("HFETRD");
     AliHFEextraCuts *hfecuts = dynamic_cast<AliHFEextraCuts *>(hfeTRD->GetCut("HFETRDCuts"));
-    hfecuts->SetMinTrackletsTRD(4);
+    if(hfecuts) hfecuts->SetMinTrackletsTRD(4);
   }
   AliHFEcutStep *hfeITS = fFilter->GetCutStep("HFEITS");
   AliHFEextraCuts *hfeitscuts = dynamic_cast<AliHFEextraCuts *>(hfeITS->GetCut("HFEPixelsCuts"));
-  hfeitscuts->SetRequireITSpixel(AliHFEextraCuts::kFirst);
+  if(hfeitscuts)hfeitscuts->SetRequireITSpixel(AliHFEextraCuts::kFirst);
 
   AliHFEcutStep *primary = fFilter->GetCutStep("Primary");
   AliCFTrackIsPrimaryCuts *primcuts = dynamic_cast<AliCFTrackIsPrimaryCuts *>(primary->GetCut("PrimaryCuts"));
-  primcuts->SetMaxDCAToVertexXY(3);
-  primcuts->SetMaxDCAToVertexZ(5);
+  if(primcuts){ 
+    primcuts->SetMaxDCAToVertexXY(3);
+    primcuts->SetMaxDCAToVertexZ(5);
+  }
 
   fAcceptanceCuts = new AliCFAcceptanceCuts("Acceptance", "MC Acceptance Cuts");
   fAcceptanceCuts->SetMinNHitITS(3);
@@ -150,17 +152,26 @@ void AliHFEefficiency::UserExec(Option_t *){
   // Event Loop
   // Filter track, fill Efficiency container
   //
+  AliESDEvent *esdevent = dynamic_cast<AliESDEvent *>(fInputEvent);
+  if(!esdevent){
+    AliError("ESD Event required");
+    return;
+  }
   fEfficiency->NewEvent();
   fFilter->SetRecEvent(fInputEvent);
   if(fMCEvent){
     AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler *>(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
-    if(!mcH->InitOk()) return;
-    if(!mcH->TreeK()) return;
-    if(!mcH->TreeTR()) return;
+   if ( ! mcH ) {
+     AliError("Cannot get MC truth event handler");
+     return;
+    }  
+    if(mcH &&(!mcH->InitOk())) return;
+    if(mcH &&(!mcH->TreeK())) return;
+    if(mcH &&(!mcH->TreeTR())) return;
     fFilter->SetMC(fMCEvent);
     FilterMC();
   }
-  fFilter->FilterTracks(dynamic_cast<AliESDEvent *>(fInputEvent));
+  fFilter->FilterTracks(esdevent);
   TObjArray *tracks = fFilter->GetFilteredTracks();
   TIterator *iter = tracks->MakeIterator();
   fOutput->Fill("hNtracks", tracks->GetEntriesFast());
@@ -204,7 +215,7 @@ void AliHFEefficiency::Terminate(Option_t *){
   PostProcess();
 
   TList *l = dynamic_cast<TList *>(GetOutputData(2));
-  DrawPtResolution(l);
+  if(l) DrawPtResolution(l);
 }
 
 void AliHFEefficiency::FilterMC(){
@@ -215,6 +226,7 @@ void AliHFEefficiency::FilterMC(){
   AliMCParticle *track = NULL;
   for(Int_t itrack = 0; itrack < fMCEvent->GetNumberOfTracks(); itrack++){
     track = dynamic_cast<AliMCParticle *>(fMCEvent->GetTrack(itrack));
+    if(!track) continue;
     if(!fMCcut->IsSelected(track)) continue;
     cont[0] = track->Pt();
     cont[1] = track->Eta();
@@ -234,7 +246,7 @@ void AliHFEefficiency::Load(const char* filename){
   //
   TFile *input = TFile::Open(filename);
   AliHFEcontainer *cin = dynamic_cast<AliHFEcontainer *>(input->Get("Efficiency"));
-  fEfficiency = dynamic_cast<AliHFEcontainer *>(cin->Clone());
+  if(cin) fEfficiency = dynamic_cast<AliHFEcontainer *>(cin->Clone());
   input->Close();
   delete input;
 }
@@ -371,6 +383,7 @@ void AliHFEefficiency::DrawPtResolution(const TList * const l){
   // Draw pt resolution
   //
   TH2 *h2 = dynamic_cast<TH2 *>(l->FindObject("ptres"));
+  if(!h2) return;
   TGraphErrors *mean = new TGraphErrors(h2->GetNbinsX());
   TGraphErrors *rms = new TGraphErrors(h2->GetNbinsX());