]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/STRANGENESS/Hypernuclei/AliAnalysisTaskESDNuclExFilter.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Hypernuclei / AliAnalysisTaskESDNuclExFilter.cxx
index 46dbc33521679dc534014763c1fb51d669505446..69debc3d9e4a9f8b1de184fb7aa0ce425dade224 100644 (file)
 using std::cout;
 using std::endl;
 ClassImp(AliAnalysisTaskESDNuclExFilter)
-ClassImp(AliAnalysisNonMuonTrackCuts)
+//ClassImp(AliAnalysisNonMuonTrackCuts)
 
 ////////////////////////////////////////////////////////////////////////
 
-AliAnalysisNonMuonTrackCuts::AliAnalysisNonMuonTrackCuts()
-{
-  // default ctor 
-}
+// AliAnalysisNonMuonTrackCuts::AliAnalysisNonMuonTrackCuts()
+// {
+//   // default ctor 
+// }
 
-Bool_t AliAnalysisNonMuonTrackCuts::IsSelected(TObject* obj)
-{
-  // Returns true if the object is a muon track
-  AliAODTrack* track = dynamic_cast<AliAODTrack*>(obj);
+// Bool_t AliAnalysisNonMuonTrackCuts::IsSelected(TObject* obj)
+// {
+//   // Returns true if the object is a muon track
+//   AliAODTrack* track = dynamic_cast<AliAODTrack*>(obj);
 
-  ULong_t  status;
+//   ULong_t  status;
 
-  if(track){
+//   if(track){
     
-    status  = (ULong_t)track->GetStatus();
-
-    if(track->GetTPCNcls() > 80 &&
-       track->Chi2perNDF() < 5  &&
-       track->IsOn(AliAODTrack::kTPCrefit) &&
-       track->IsOn(AliAODTrack::kTPCin)    &&
-       !track->IsOn(AliAODTrack::kITSpureSA))
-      {
-       return kTRUE;
-      }
-  } 
+//     status  = (ULong_t)track->GetStatus();
+
+//     if(track->GetTPCNcls() > 80 &&
+//        track->Chi2perNDF() < 5  &&
+//        track->IsOn(AliAODTrack::kTPCrefit) &&
+//        track->IsOn(AliAODTrack::kTPCin)    &&
+//        !track->IsOn(AliAODTrack::kITSpureSA))
+//       {
+//     return kTRUE;
+//       }
+//   } 
   
-  else 
-    return kFALSE;
+//   else 
+//     return kFALSE;
   
 
-}
+// }
 
-AliAnalysisNonPrimaryVertices::AliAnalysisNonPrimaryVertices()
-{
-  // default ctor   
-}
+// AliAnalysisNonPrimaryVertices::AliAnalysisNonPrimaryVertices()
+// {
+//   // default ctor   
+// }
 
-Bool_t AliAnalysisNonPrimaryVertices::IsSelected(TObject* obj)
-{
-  // Returns true if the object is a primary vertex
+// Bool_t AliAnalysisNonPrimaryVertices::IsSelected(TObject* obj)
+// {
+//   // Returns true if the object is a primary vertex
   
-  AliAODVertex* vertex = dynamic_cast<AliAODVertex*>(obj);
-  if (vertex)
-    {
-      if ( vertex->GetType() == AliAODVertex::kPrimary     ||
-          vertex->GetType() == AliAODVertex::kMainSPD     ||
-          vertex->GetType() == AliAODVertex::kPileupSPD   ||
-          vertex->GetType() == AliAODVertex::kPileupTracks||
-          vertex->GetType() == AliAODVertex::kMainTPC )
-       {
-         return kTRUE;
-       }
-    }
+//   AliAODVertex* vertex = dynamic_cast<AliAODVertex*>(obj);
+//   if (vertex)
+//     {
+//       if ( vertex->GetType() == AliAODVertex::kPrimary     ||
+//        vertex->GetType() == AliAODVertex::kMainSPD     ||
+//        vertex->GetType() == AliAODVertex::kPileupSPD   ||
+//        vertex->GetType() == AliAODVertex::kPileupTracks||
+//        vertex->GetType() == AliAODVertex::kMainTPC )
+//     {
+//       return kTRUE;
+//     }
+//     }
   
-  //  enum AODVtx_t {kUndef=-1, kPrimary, kKink, kV0, kCascade, kMulti, kMainSPD, kPileupSPD, kPileupTracks,kMainTPC};
+//   //  enum AODVtx_t {kUndef=-1, kPrimary, kKink, kV0, kCascade, kMulti, kMainSPD, kPileupSPD, kPileupTracks,kMainTPC};
 
-  return kFALSE;
+//   return kFALSE;
   
-}
+// }
+//-----------------------------------------------------------------------------------
 
 AliAnalysisTaskESDNuclExFilter::AliAnalysisTaskESDNuclExFilter(Bool_t onlyMuon, Bool_t keepAllEvents, Int_t mcMode, Int_t nsigmaTrk1,Int_t nsigmaTrk2, Int_t partType1,Int_t partType2):
   AliAnalysisTaskSE(),
@@ -134,6 +135,7 @@ AliAnalysisTaskESDNuclExFilter::AliAnalysisTaskESDNuclExFilter(Bool_t onlyMuon,
   fnSigmaTrk2(nsigmaTrk2),
   fpartType1(partType1),
   fpartType2(partType2),
+  murep(0x0),
   fPIDResponse(0)
 {
   // Default constructor
@@ -151,7 +153,7 @@ AliAnalysisTaskESDNuclExFilter::AliAnalysisTaskESDNuclExFilter(const char* name,
   fnSigmaTrk2(nsigmaTrk2),
   fpartType1(partType1),
   fpartType2(partType2),
-  murep(0),
+  murep(0x0),
   fPIDResponse(0)
 {
   // Constructor
@@ -209,67 +211,71 @@ void AliAnalysisTaskESDNuclExFilter::PrintTask(Option_t *option, Int_t indent) c
 }
 
 //______________________________________________________________________________
-void AliAnalysisTaskESDNuclExFilter::AddFilteredAOD(const char* aodfilename, const char* title)
+void AliAnalysisTaskESDNuclExFilter::AddFilteredAOD(const char* aodfilename, const char* title, Bool_t toMerge)
 {
   
   //cout<<"Entro ne ADDFILTETEDAOD"<<endl;
 
   AliAODHandler *aodH = (AliAODHandler*)((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
   if (!aodH) Fatal("UserCreateOutputObjects", "No AOD handler");
-  //cout<<"Add Filterd AOD "<<aodH->AddFilteredAOD(aodfilename,title)<<endl;
-  AliAODExtension* ext = aodH->AddFilteredAOD(aodfilename,title);
-  //cout<<"Handle inside add filterAOD: "<<aodH<<endl;
-  //cout<<"########### ext: "<<ext<<endl;
-  
-  if (!ext) return;
-  
-  //cout<<"ONLY MUON?? "<<fOnlyMuon<<endl;
-
-  if ( fOnlyMuon ) 
-    {    
-    
-      //cout<<"Inside fonly muon: "<<endl;
-
-      
-      if(!murep)delete murep;
 
-      murep = new AliAODNuclExReplicator("NuclExReplicator",
-                                        "remove non interesting tracks",
-                                        new AliAnalysisNonMuonTrackCuts,
-                                        new AliAnalysisNonPrimaryVertices,
-                                        fMCMode,fnSigmaTrk1,fnSigmaTrk2,fpartType1,fpartType2);
-      
-      //cout<<"murep: "<<murep<<endl;
-      
-      ext->DropUnspecifiedBranches(); // all branches not part of a FilterBranch call (below) will be dropped
-      
-      // ext->FilterBranch("header",murep);    
-      // ext->FilterBranch("tracks",murep);    
-      // ext->FilterBranch("vertices",murep);  
-      // ext->FilterBranch("dimuons",murep); //per test
-      // ext->FilterBranch("AliAODVZERO",murep);
-      // ext->FilterBranch("AliAODTZERO",murep);
-      
-      ext->FilterBranch("header",murep);    
-      ext->FilterBranch("vertices",murep);    
-      ext->FilterBranch("nuclei",murep);  
-      ext->FilterBranch("secvertices",murep); //per test
-      ext->FilterBranch("daughtertracks",murep);
+  if(aodH){
 
-      //cout<<"add filterd aod"<<endl;
-      
-      if ( fMCMode > 0 ) 
-       {
-         // MC branches will be copied (if present), as they are, but only
-         // for events with at least one muon. 
-         // For events w/o muon, mcparticles array will be empty and mcheader will be dummy
-         // (e.g. strlen(GetGeneratorName())==0)
-         
-         ext->FilterBranch("mcparticles",murep);
-         ext->FilterBranch("mcHeader",murep);
-       }
-    }  
-  
+    //cout<<"Add Filterd AOD "<<aodH->AddFilteredAOD(aodfilename,title)<<endl;
+    AliAODExtension* ext = aodH->AddFilteredAOD(aodfilename,title,toMerge);
+    //cout<<"Handle inside add filterAOD: "<<aodH<<endl;
+    //cout<<"########### ext: "<<ext<<endl;
+    
+    if (!ext) return;
+    
+    //cout<<"ONLY MUON?? "<<fOnlyMuon<<endl;
+    
+    if ( fOnlyMuon ) 
+      {    
+       
+       //cout<<"Inside fonly muon: "<<endl;
+       
+       
+       if(!murep)delete murep;
+       
+       murep = new AliAODNuclExReplicator("NuclExReplicator",
+                                          "remove non interesting tracks",
+                                          // new AliAnalysisNonMuonTrackCuts,
+                                          // new AliAnalysisNonPrimaryVertices,
+                                          fMCMode,fnSigmaTrk1,fnSigmaTrk2,fpartType1,fpartType2);
+       
+       //cout<<"murep: "<<murep<<endl;
+       
+       ext->DropUnspecifiedBranches(); // all branches not part of a FilterBranch call (below) will be dropped
+       
+       // ext->FilterBranch("header",murep);    
+       // ext->FilterBranch("tracks",murep);    
+       // ext->FilterBranch("vertices",murep);  
+       // ext->FilterBranch("dimuons",murep); //per test
+       // ext->FilterBranch("AliAODVZERO",murep);
+       // ext->FilterBranch("AliAODTZERO",murep);
+       
+       ext->FilterBranch("header",murep);    
+       ext->FilterBranch("vertices",murep);    
+       ext->FilterBranch("nuclei",murep);  
+       ext->FilterBranch("secvertices",murep); //per test
+       ext->FilterBranch("daughtertracks",murep);
+       
+       //cout<<"add filterd aod"<<endl;
+       
+       if ( fMCMode > 0 ) 
+         {
+           // MC branches will be copied (if present), as they are, but only
+           // for events with at least one muon. 
+           // For events w/o muon, mcparticles array will be empty and mcheader will be dummy
+           // (e.g. strlen(GetGeneratorName())==0)
+           
+           ext->FilterBranch("mcparticles",murep);
+           ext->FilterBranch("mcHeader",murep);
+         }
+      }  
+    
+  }
   //cout<<"fine add filterd"<<endl;
 }
 
@@ -280,7 +286,7 @@ void AliAnalysisTaskESDNuclExFilter::Init()
   //cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sono in INIT"<<endl;
   // Initialization
   if(fEnableMuonAOD) 
-    AddFilteredAOD("AliAOD.NuclEx.root", "MuonEvents");
+    AddFilteredAOD("AliAOD.NuclEx.root", "NuclexFilteredEvents",kTRUE);
   //cout<<"Fine INIT"<<endl;
   //  if(fEnableDimuonAOD) AddFilteredAOD("AliAOD.Dimuons.root", "DimuonEvents");    
 }
@@ -329,14 +335,7 @@ void AliAnalysisTaskESDNuclExFilter::ConvertESDtoAOD()
   //cout<<"========================> CONVERT ESD TO AOD <============================="<<endl;
 
   
-  AliVEvent *event = InputEvent();
-  //cout<<"VEvent: "<<event<<endl;
   AliAODEvent *lAODevent=(AliAODEvent*)InputEvent();
-  //cout<<"AOD Event: "<<event<<endl;
-  AliAODHeader* header =lAODevent->GetHeader();
-  //cout<<"header :"<<header<<endl;
-  Int_t jTracks =  lAODevent->GetNumberOfTracks();
-  //cout<<"n jtracks :"<<jTracks<<endl;
 
   // Read primary vertex from AOD event 
   // AliAODVertex *primary = *(AODEvent()->GetPrimaryVertex());
@@ -367,10 +366,15 @@ void AliAnalysisTaskESDNuclExFilter::ConvertESDtoAOD()
 
     if ( extNuclEx ) {                         
      //   extNuclEx->Init("");
-     extNuclEx->SetEvent(lAODevent);
-     extNuclEx->SelectEvent();
-     extNuclEx->Print();
-     extNuclEx->FinishEvent();
+      
+      // extNuclEx->GetAOD()->GetHeader()->ResetEventplanePointer();
+      // extNuclEx->GetTree()->Fill(); // fill header for all events without tracks
+
+      extNuclEx->SetEvent(lAODevent);
+      extNuclEx->SelectEvent();
+      // extNuclEx->IsFilteredAOD();
+      // extNuclEx->Print();
+      extNuclEx->FinishEvent();
      
      //cout<<"extMuons? "<<extMuons<<endl;