]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/AliAnalysisTaskDielectronFilter.cxx
Merge remote-tracking branch 'origin/master' into mergingFlat
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliAnalysisTaskDielectronFilter.cxx
index 3177aa886067f24080d54ab7c2f40fed0674bff4..59cd123d7775032b74edb82fb7fd12c4e33616e9 100644 (file)
@@ -216,8 +216,12 @@ void AliAnalysisTaskDielectronFilter::UserExec(Option_t *)
    fEventStat->Fill(kV0andEvents);
 
   //Fill Event histograms before the event filter
+  AliDielectronHistos *h=fDielectron->GetHistoManager();
+
   Double_t values[AliDielectronVarManager::kNMaxValues]={0};
   Double_t valuesMC[AliDielectronVarManager::kNMaxValues]={0};
+  if(h)  AliDielectronVarManager::SetFillMap(h->GetUsedVars());
+  else   AliDielectronVarManager::SetFillMap(0x0);
   AliDielectronVarManager::SetEvent(InputEvent());
   AliDielectronVarManager::Fill(InputEvent(),values);
   AliDielectronVarManager::Fill(InputEvent(),valuesMC);
@@ -228,13 +232,12 @@ void AliAnalysisTaskDielectronFilter::UserExec(Option_t *)
       AliDielectronVarManager::Fill(AliDielectronMC::Instance()->GetMCEvent(),valuesMC);
   }
 
-  AliDielectronHistos *h=fDielectron->GetHistoManager();
-    if (h){
-      if (h->GetHistogramList()->FindObject("Event_noCuts"))
-        h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,values);
-      if (hasMC && h->GetHistogramList()->FindObject("MCEvent_noCuts"))
-        h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,valuesMC);
-    }
+  if (h){
+    if (h->GetHistogramList()->FindObject("Event_noCuts"))
+      h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,values);
+    if (hasMC && h->GetHistogramList()->FindObject("MCEvent_noCuts"))
+      h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,valuesMC);
+  }
 
   //event filter
   if (fEventFilter) {
@@ -284,8 +287,8 @@ void AliAnalysisTaskDielectronFilter::UserExec(Option_t *)
       if(!obj) continue;
       for(int j=0;j<obj->GetEntriesFast();j++){
         AliDielectronPair *pairObj = (AliDielectronPair*)obj->UncheckedAt(j);
-        Int_t id1 = ((AliVTrack*)pairObj->GetFirstDaughter())->GetID();
-        Int_t id2 = ((AliVTrack*)pairObj->GetSecondDaughter())->GetID();
+        Int_t id1 = ((AliVTrack*)pairObj->GetFirstDaughterP())->GetID();
+        Int_t id2 = ((AliVTrack*)pairObj->GetSecondDaughterP())->GetID();
         
         for(Int_t it=0;it<aod->GetNumberOfTracks();it++){
           if(aod->GetTrack(it)->GetID() == id1) pairObj->SetRefFirstDaughter(aod->GetTrack(it)); 
@@ -323,11 +326,15 @@ void AliAnalysisTaskDielectronFilter::UserExec(Option_t *)
        nanoEv->GetVertex(0)->SetNContributors((static_cast<AliAODEvent*>(InputEvent()))->GetPrimaryVertex()->GetNContributors());
        nanoEv->GetVertex(1)->SetNContributors((static_cast<AliAODEvent*>(InputEvent()))->GetPrimaryVertexSPD()->GetNContributors());
        // set event plane 
-       nanoEv->GetHeader()->SetEventplane((static_cast<AliAODEvent*>(InputEvent()))->GetHeader()->GetEventplaneP());
-       nanoEv->GetHeader()->ResetEventplanePointer(); 
+       AliAODHeader * header = dynamic_cast<AliAODHeader*>(nanoEv->GetHeader());
+       if(!header) AliFatal("Not a standard AOD");
+
+
+       header->SetEventplane(((AliVAODHeader*)static_cast<AliAODEvent*>(InputEvent())->GetHeader())->GetEventplaneP());
+       header->ResetEventplanePointer(); 
        // set multiplicity
-       nanoEv->GetHeader()->SetRefMultiplicity((Int_t)values[AliDielectronVarManager::kNTrk]);
-       nanoEv->GetHeader()->SetRefMultiplicityPos((Int_t)values[AliDielectronVarManager::kNacc]);
+       header->SetRefMultiplicity((Int_t)values[AliDielectronVarManager::kNTrk]);
+       header->SetRefMultiplicityPos((Int_t)values[AliDielectronVarManager::kNacc]);
        //nanoEv->GetHeader()->SetRefMultiplicityNeg(values[AliDielectronVarManager::kMatchEffITSTPC]);
 
          for(int kj=0; kj<(fDielectron->GetTrackArray(0))->GetEntries(); kj++){
@@ -348,7 +355,9 @@ void AliAnalysisTaskDielectronFilter::UserExec(Option_t *)
          nanoEv->GetCaloCluster(posCaloCls)->AddTrackMatched((AliAODTrack*)nanoEv->GetTrack(posit)); 
          }
          // set references for vtx
-         nanoEv->GetTrack(posit)->SetProdVertex(nanoEv->GetVertex(posVtx));
+         AliAODTrack * trk = dynamic_cast<AliAODTrack*>(nanoEv->GetTrack(posit));
+         if(!trk) AliFatal("Not a standard AOD");
+         trk->SetProdVertex(nanoEv->GetVertex(posVtx));
          }
 
          for(int kj=0; kj<(fDielectron->GetTrackArray(1))->GetEntries(); kj++){
@@ -368,7 +377,9 @@ void AliAnalysisTaskDielectronFilter::UserExec(Option_t *)
          for(int u=0; u<clCls->GetNTracksMatched(); u++) clCls->RemoveTrackMatched(clCls->GetTrackMatched(u));
          nanoEv->GetCaloCluster(negCaloCls)->AddTrackMatched((AliAODTrack*)nanoEv->GetTrack(negat));
          }
-         nanoEv->GetTrack(negat)->SetProdVertex(nanoEv->GetVertex(negVtx)); 
+         AliAODTrack * trk = dynamic_cast<AliAODTrack*>(nanoEv->GetTrack(negat));
+         if(!trk) AliFatal("Not a standard AOD");
+         trk->SetProdVertex(nanoEv->GetVertex(negVtx)); 
          }  
         delete tmp; delete tmpSpd; 
         nanoEv->GetTracks()->Expand(nTracks); 
@@ -381,10 +392,12 @@ void AliAnalysisTaskDielectronFilter::UserExec(Option_t *)
  
   if(fCreateNanoAOD && isAOD && (!hasCand) &&  fStoreHeader)  
    {
-   // set event plane 
-   extDielectron->GetAOD()->GetHeader()->SetEventplane((static_cast<AliAODEvent*>(InputEvent()))->GetHeader()->GetEventplaneP());
-   extDielectron->GetAOD()->GetHeader()->ResetEventplanePointer();
-   extDielectron->GetTree()->Fill(); // fill header for all events without tracks
+     // set event plane 
+     AliAODHeader * header = dynamic_cast<AliAODHeader*>(extDielectron->GetAOD()->GetHeader());
+     if(!header) AliFatal("Not a standard AOD");     
+     header->SetEventplane(((AliAODHeader*)(static_cast<AliAODEvent*>(InputEvent()))->GetHeader())->GetEventplaneP());
+     header->ResetEventplanePointer();
+     extDielectron->GetTree()->Fill(); // fill header for all events without tracks
    }
  
   PostData(1, const_cast<THashList*>(fDielectron->GetHistogramList()));