]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/macros/AddTaskPartCorr.C
AliTPCcalibCalib.cxx - use also alignmnet - not implemented yet
[u/mrichter/AliRoot.git] / PWG4 / macros / AddTaskPartCorr.C
index 00c61fdb7a47c0bcaa92515d9db2872a20925d91..465d982acb382880241227df9f78cebb2845d2e7 100644 (file)
@@ -1,4 +1,4 @@
-AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(Char_t * analysis, TString data, TString calorimeter)
+AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calorimeter, Bool_t kUseKinematics = kFALSE, Bool_t kPrintSettings = kFALSE)
 {
   // Creates a PartCorr task, configures it and adds it to the analysis manager.
   
@@ -16,8 +16,11 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(Char_t * analysis, TString d
     ::Error("AddTaskPartCorr", "This task requires an input event handler");
     return NULL;
   }
-   //TString dataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
-  
+   TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
+   //cout<<"DATA TYPE :: "<<inputDataType<<endl;
+   // inputDataType: data managed by the input handler
+   // data: can be same as one managed by input handler, or the output AOD created by the filter. By default use AOD
+       
    // Configure analysis
    //===========================================================================
   
@@ -25,267 +28,129 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(Char_t * analysis, TString d
   AliCaloTrackReader * reader = 0x0;
   if(data=="AOD") reader = new AliCaloTrackAODReader();
   else if(data=="ESD") reader = new AliCaloTrackESDReader();
-  else if(data=="MC") reader = new AliCaloTrackMCReader();
+  else if(data=="MC" && dataType == "ESD") reader = new AliCaloTrackMCReader();
   reader->SetDebug(-1);//10 for lots of messages
-  
-  AliAnaPartCorrMaker * maker = new AliAnaPartCorrMaker();
-  switch (analysis) {
-  case "Pi0":
-    AnalysisPi0(maker,reader,calorimeter);
-    break;
-  case "GammaJetFinder":
-    //JETAN must run before
-    AnalysisGammaJetFinderCorrelation(maker,reader,calorimeter);               
-    break;     
-  case "GammaHadron":
-    AnalysisGammaHadronCorrelation(maker,reader,calorimeter);          
-    break;             
+  reader->SwitchOnCTS();
+  if(calorimeter == "EMCAL") {
+         reader->SwitchOnEMCALCells();  
+         reader->SwitchOnEMCAL();
   }
-  
-  
-   // Create task
-   //===========================================================================
-  AliAnalysisTaskParticleCorrelation * task = new AliAnalysisTaskParticleCorrelation (analysis);
-  task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
-  //task->SetDebugLevel(-1);
-  task->SetAnalysisMaker(maker);                               
-  mgr->AddTask(task);
-  
-  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form("%s", analysis),TList::Class(),
-                                                          AliAnalysisManager::kOutputContainer, Form("%s_%s.root",analysis,calorimeter.Data()));
-  
-  // Create ONLY the output containers for the data produced by the task.
-  // Get and connect other common input/output containers via the manager as below
-  //==============================================================================
-  mgr->ConnectInput  (task, 0, mgr->GetCommonInputContainer());
-  // AOD output slot will be used in a different way in future
-  mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
-  mgr->ConnectOutput (task, 1, cout_pc);
-  
-  return task;
-}
-
-//_________________________________________________________________________________________________
-void AnalysisPi0(AliAnaPartCorrMaker * maker, AliCaloTrackReader *  reader, TString calorimeter){
-  //Configuration for pi0 invariant mass analysis
-  
-  // #### Reader ####
-  //Switch on or off the detectors 
-  if(calorimeter=="EMCAL"){
-    reader->SwitchOnEMCAL();
-    reader->SwitchOffPHOS();
+  if(calorimeter == "PHOS") { 
+         reader->SwitchOnPHOSCells();  
+         reader->SwitchOnPHOS();
   }
-  else if(calorimeter=="PHOS"){
-    reader->SwitchOffEMCAL();
-    reader->SwitchOnPHOS();
+  if(kUseKinematics){
+       if(inputDataType == "ESD"){
+               reader->SwitchOnStack();          
+               reader->SwitchOffAODMCParticles(); 
+       }
+       else if(inputDataType == "AOD"){
+               reader->SwitchOffStack();          
+               reader->SwitchOnAODMCParticles(); 
+       }
   }
-  else if {
-    printf("ABORT analysis: Wrong calorimeter in configuration: %s\n",calorimeter.Data());
-    abort();
-  }    
-  reader->SwitchOffCTS();
-  
+       
   //Min particle pT
-  reader->SetEMCALPtMin(0.5); 
-  reader->SetPHOSPtMin(0.5);
-  reader->Print("");
-  
-  // ##### Analysis algorithm ####
+  reader->SetEMCALPtMin(0.2); 
+  reader->SetPHOSPtMin(0.2);
+  reader->SetCTSPtMin(0.2);
+  if(kPrintSettings) reader->Print("");
+       
+  // ##### Analysis algorithm settings ####
+
+  // --------------------
+  // --- Pi0 Analysis ---
+  // --------------------
   
   AliCaloPID * pid = new AliCaloPID();
   pid->SetDispersionCut(1.5);
   pid->SetTOFCut(5.e-9);
   pid->SetDebug(-1);
-  pid->Print("");
-  
-  AliAnaPhoton *anaphoton = new AliAnaPhoton();
-  anaphoton->SetDebug(-1); //10 for lots of messages
+  if(kPrintSettings) pid->Print("");
+       
+  AliFiducialCut * fidCut = new AliFiducialCut();
+  fidCut->DoCTSFiducialCut(kFALSE) ;
+  fidCut->DoEMCALFiducialCut(kTRUE) ;
+  fidCut->DoPHOSFiducialCut(kTRUE) ;
+       
+  AliAnaCalorimeterQA *qa = new AliAnaCalorimeterQA();
+  qa->SetDebug(-1); //10 for lots of messages
+  qa->SetCalorimeter(calorimeter);
+  if(kUseKinematics && inputDataType!="AOD") qa->SwitchOnDataMC() ;//Access MC stack and fill more histograms, AOD MC not implemented yet.
+  else  qa->SwitchOffDataMC() ;
+  //qa->AddToHistogramsName(Form("AnaCaloQA_%s",calorimeter.Data()));
+  qa->AddToHistogramsName("AnaCaloQA_");
+  qa->SetFiducialCut(fidCut);
+  qa->SwitchOnFiducialCut();
+  if(kPrintSettings) qa->Print("");    
+       
+  AliFiducialCut * fidCut1stYear = new AliFiducialCut();
+  fidCut1stYear->DoCTSFiducialCut(kFALSE) ;
+  fidCut1stYear->DoEMCALFiducialCut(kTRUE) ;
+  fidCut1stYear->DoPHOSFiducialCut(kTRUE) ;
+  fidCut1stYear->SetSimpleEMCALFiducialCut(0.7,80.,120.);
+  fidCut1stYear->SetSimplePHOSFiducialCut(0.12,260.,320.);
+       
+  AliAnaPhoton *anaphoton1 = new AliAnaPhoton();
+  anaphoton1->SetDebug(-1); //10 for lots of messages
   //anaphoton->SetMinPt(0.5);
-  anaphoton->SetMinDistanceToBadChannel(2, 4, 5);
-  anaphoton->SetCaloPID(pid);
-  anaphoton->SetCalorimeter(calorimeter);
-  anaphoton->SwitchOffDataMC() ;//Access MC stack and fill more histograms
-  anaphoton->SwitchOffCaloPID();
-  anaphoton->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
-  anaphoton->SwitchOffFidutialCut();
-  anaphoton->SetOutputAODName("Photons"+calorimeter);
-  anaphoton->SetOutputAODClassName("AliAODPWG4Particle");
-  
+  anaphoton1->SetMinDistanceToBadChannel(2, 4, 5);
+  anaphoton1->SetCaloPID(pid);
+  anaphoton1->SetCalorimeter(calorimeter);
+  if(kUseKinematics) anaphoton1->SwitchOnDataMC() ;//Access MC stack and fill more histograms
+  else  anaphoton1->SwitchOffDataMC() ;
+  anaphoton1->SwitchOffCaloPID();
+  anaphoton1->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
+  anaphoton1->SwitchOnFiducialCut();
+  anaphoton1->SetFiducialCut(fidCut1stYear);
+  anaphoton1->SetOutputAODName(Form("PhotonsForIM%s",calorimeter.Data()));
+  if(kPrintSettings) anaphoton1->Print("");
+
   AliAnaPi0 *anapi0 = new AliAnaPi0();
   anapi0->SetDebug(-1);//10 for lots of messages
-  anapi0->SetInputAODName("Photons"+calorimeter);
+  anapi0->SetInputAODName(Form("PhotonsForIM%s",calorimeter.Data()));
   anapi0->SetCaloPID(pid);
   anapi0->SetCalorimeter(calorimeter);
-  anapi0->SwitchOnFidutialCut();
+  anapi0->SwitchOnFiducialCut();
   anapi0->SwitchOffDataMC() ;//Access MC stack and fill more histograms
-  anapi0->Print("");
-  
-  // #### Configure Maker ####
-  maker->SetReader(reader);//pointer to reader
-  maker->AddAnalysis(anaphoton,0);
-  maker->AddAnalysis(anapi0,1);
-  maker->SetAnaDebug(-1)  ;
-  maker->SwitchOnHistogramsMaker()  ;
-  maker->SwitchOnAODsMaker()  ;
-  maker->Print("");
-  //
-  printf("======================== \n");
-  printf("End Configuration of AnalysisPi0() \n");
-  printf("======================== \n");
-  
-  
-}
-//_________________________________________________________________________________________________
-void AnalysisGammaJetFinderCorrelation(AliAnaPartCorrMaker * maker, AliCaloTrackReader *  reader, TString calorimeter){
-  //Configuration for pi0 invariant mass analysis
-  
-  // #### Reader ####
-  //Switch on or off the detectors 
-  if(calorimeter=="PHOS")
-    reader->SwitchOnPHOS();
-  else if(calorimeter=="EMCAL")        
-    reader->SwitchOffPHOS();
-  else if {
-    printf("ABORT analysis: Wrong calorimeter in configuration: %s\n",calorimeter.Data());
-    abort();
-  }    
-  reader->SwitchOnEMCAL();
-  reader->SwitchOnCTS();
-  
-  //Min particle pT
-  reader->SetEMCALPtMin(0.5); 
-  reader->SetPHOSPtMin(0.5);
-  reader->SetCTSPtMin(0.1);
-  reader->Print("");
-  
-  // ##### Analysis algorithm ####
-  // ### Photon analysis ###
-  //AliCaloPID * pid = new AliCaloPID();
-  //pid->Print("");
-  
-  AliAnaPhoton *anaphoton = new AliAnaPhoton();
-  anaphoton->SetDebug(-1); //10 for lots of messages
-  anaphoton->SetMinPt(5);
-  //anaphoton->SetCaloPID(pid);
-  anaphoton->SetCalorimeter(calorimeter);
-  anaphoton->SwitchOffDataMC() ;//Access MC stack and fill more histograms
-  anaphoton->SwitchOnCaloPID();
-  if(calorimeter == "EMCAL") anaphoton->SwitchOnCaloPIDRecalculation();
-  anaphoton->SwitchOffFidutialCut();
-  anaphoton->SetOutputAODName("DirectPhotonsJet"+calorimeter);
-  anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
-  
-  // ### Isolation analysis ###        
-  
-  AliIsolationCut * ic = new AliIsolationCut();
-  ic->SetConeSize(0.5);
-  ic->SetPtThreshold(1.);
-  ic->SetICMethod(AliIsolationCut::kPtThresIC);
-  ic->Print("");
-  
-  AliAnaParticleIsolation *anaisol = new AliAnaParticleIsolation();
-  anaisol->SetDebug(-1);
-  //anaisol->SetMinPt(5);
-  anaisol->SetInputAODName("DirectPhotonsJet"+calorimeter);
-  anaisol->SetCalorimeter(calorimeter);
-  anaisol->SwitchOffDataMC() ;//Access MC stack and fill more histograms
-  //Select clusters with no pair, if both clusters with pi0 mass
-  anaisol->SwitchOffInvariantMass();
-  //anaisol->SetNeutralMesonSelection(nms);
-  //Do isolation cut
-  anaisol->SetIsolationCut(ic);        
-  //Do or not do isolation with previously produced AODs.
-  //No effect if use of SwitchOnSeveralIsolation()
-  anaisol->SwitchOffReIsolation();
-  //Multiple IC
-  anaisol->SwitchOffSeveralIsolation() ;
-  anaisol->Print("");
-  
-  // ### Correlatio with Jet Finder AOD output
-  AliAnaParticleJetFinderCorrelation *anacorr = new AliAnaParticleJetFinderCorrelation();
-  anacorr->SetInputAODName("DirectPhotonsJet"+calorimeter);
-  anacorr->SwitchOffFidutialCut();
-  anacorr->SetDebug(-1);
-  anacorr->SetConeSize(1);  
-  anacorr->SelectIsolated(kTRUE); // do correlation with isolated photons
-  anacorr->SetPtThresholdInCone(0.2);
-  anacorr->SetDeltaPhiCutRange(0.5,5.5);//Mostly Open Cuts 
-  anacorr->SetRatioCutRange(0.01,3); //Mostly Open Cuts
-  anacorr->UseJetRefTracks(kFALSE); //Not working now
-  anacorr->Print("");
-  
-  // #### Configure Maker ####
-  maker->SetReader(reader);//pointer to reader
-  maker->AddAnalysis(anaphoton,0);
-  maker->AddAnalysis(anaisol,1);
-  maker->AddAnalysis(anacorr,2);
-  maker->SetAnaDebug(-1)  ;
-  maker->SwitchOnHistogramsMaker()  ;
-  maker->SwitchOnAODsMaker()  ;
-  maker->Print("");
-  //
-  printf("======================== \n");
-  printf("End Configuration of AnalysisGammaJetFinderCorrelation() \n");
-  printf("======================== \n");
-  
-  
-}
-
-
-//_________________________________________________________________________________________________
-void AnalysisGammaHadronCorrelation(AliAnaPartCorrMaker * maker, AliCaloTrackReader *  reader, TString calorimeter){
-  //Configuration for pi0 invariant mass analysis
-  
-  // #### Reader ####
-  //Switch on or off the detectors 
-  if(calorimeter=="PHOS")
-    reader->SwitchOnPHOS();
-  else if(calorimeter=="EMCAL")        
-    reader->SwitchOffPHOS();
-  else if {
-    printf("ABORT analysis: Wrong calorimeter in configuration: %s\n",calorimeter.Data());
-    abort();
-  }    
-  reader->SwitchOnEMCAL();
-  reader->SwitchOnCTS();
-  
-  //Min particle pT
-  reader->SetEMCALPtMin(0.5); 
-  reader->SetPHOSPtMin(0.5);
-  reader->SetCTSPtMin(0.1);
-  reader->Print("");
-  
-  // ##### Analysis algorithm ####
-  // ### Photon analysis ###
-  //AliCaloPID * pid = new AliCaloPID();
-  //pid->Print("");
-  
-  AliAnaPhoton *anaphoton = new AliAnaPhoton();
-  anaphoton->SetDebug(-1); //10 for lots of messages
-  anaphoton->SetMinPt(5);
-  //anaphoton->SetCaloPID(pid);
-  anaphoton->SetCalorimeter(calorimeter);
-  anaphoton->SwitchOffDataMC() ;//Access MC stack and fill more histograms
-  anaphoton->SwitchOnCaloPID();
-  if(calorimeter == "EMCAL") anaphoton->SwitchOnCaloPIDRecalculation();
-  anaphoton->SwitchOffFidutialCut();
-  anaphoton->SetOutputAODName("DirectPhotonsHadron"+calorimeter);
-  anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
-  
+  if(calorimeter=="PHOS") anapi0->SetNumberOfModules(3); //PHOS first year
+  else  anapi0->SetNumberOfModules(4); //EMCAL first year
+  if(kPrintSettings) anapi0->Print("");
+  
+       
+  // -------------------------------------------------
+  // --- Photon Isolation and Correlation Analysis ---
+  // -------------------------------------------------
+  
+  AliAnaPhoton *anaphoton2 = new AliAnaPhoton();
+  anaphoton2->SetDebug(-1); //10 for lots of messages
+  anaphoton2->SetMinPt(5);
+  anaphoton2->SetCaloPID(pid);
+  anaphoton2->SetCalorimeter(calorimeter);
+  if(kUseKinematics) anaphoton2->SwitchOnDataMC() ;//Access MC stack and fill more histograms
+  else  anaphoton2->SwitchOffDataMC() ;
+  anaphoton2->SwitchOnCaloPID();
+  if(calorimeter == "EMCAL") anaphoton2->SwitchOnCaloPIDRecalculation();
+  anaphoton2->SwitchOffFiducialCut();
+  anaphoton2->SetOutputAODName(Form("DirectPhotons%s",calorimeter.Data()));
+  anaphoton2->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
+  anaphoton2->AddToHistogramsName("AnaPhotonCorr_");
+  if(kPrintSettings) anaphoton2->Print("");
   // ### Isolation analysis ###        
   
   AliIsolationCut * ic = new AliIsolationCut();
   ic->SetConeSize(0.5);
   ic->SetPtThreshold(1.);
   ic->SetICMethod(AliIsolationCut::kPtThresIC);
-  ic->Print("");
+  if(kPrintSettings) ic->Print("");
   
   AliAnaParticleIsolation *anaisol = new AliAnaParticleIsolation();
   anaisol->SetDebug(-1);
   //anaisol->SetMinPt(5);
-  anaisol->SetInputAODName("DirectPhotonsHadron"+calorimeter);
+  anaisol->SetInputAODName(Form("DirectPhotons%s",calorimeter.Data()));
   anaisol->SetCalorimeter(calorimeter);
-  anaisol->SwitchOffDataMC() ;//Access MC stack and fill more histograms
+  if(kUseKinematics) anaisol->SwitchOnDataMC() ;//Access MC stack and fill more histograms
+  else  anaisol->SwitchOffDataMC() ;
   //Select clusters with no pair, if both clusters with pi0 mass
   anaisol->SwitchOffInvariantMass();
   //anaisol->SetNeutralMesonSelection(nms);
@@ -296,34 +161,85 @@ void AnalysisGammaHadronCorrelation(AliAnaPartCorrMaker * maker, AliCaloTrackRea
   anaisol->SwitchOffReIsolation();
   //Multiple IC
   anaisol->SwitchOffSeveralIsolation() ;
-  anaisol->Print("");
+  if(kPrintSettings) anaisol->Print("");
+  
+  // ### Correlation with Jet Finder AOD output
+  AliAnaParticleJetFinderCorrelation *anacorrjet = new AliAnaParticleJetFinderCorrelation();
+  anacorrjet->SetInputAODName(Form("DirectPhotons%s",calorimeter.Data()));
+  anacorrjet->SwitchOffFiducialCut();
+  anacorrjet->SetDebug(-1);
+  anacorrjet->SetConeSize(1);  
+  anacorrjet->SelectIsolated(kTRUE); // do correlation with isolated photons
+  anacorrjet->SetPtThresholdInCone(0.2);
+  anacorrjet->SetDeltaPhiCutRange(0.5,5.5);//Mostly Open Cuts 
+  anacorrjet->SetRatioCutRange(0.01,3); //Mostly Open Cuts
+  anacorrjet->UseJetRefTracks(kFALSE); //Not working now
+  if(kPrintSettings) anacorrjet->Print("");
   
   // ### Correlation with hadrons
-  AliAnaParticleHadronCorrelation *anacorr = new AliAnaParticleHadronCorrelation();
-  anacorr->SetInputAODName("DirectPhotonsHadron"+calorimeter);
-  anacorr->SetDebug(-1);
-  anacorr->SwitchOffFidutialCut();
-  anacorr->SetPtCutRange(1,100);
-  anacorr->SetDeltaPhiCutRange(1.5,4.5);
+  AliAnaParticleHadronCorrelation *anacorrhadron = new AliAnaParticleHadronCorrelation();
+  anacorrhadron->SetInputAODName(Form("DirectPhotons%s",calorimeter.Data()));
+  anacorrhadron->SetOutputAODName(Form("CorrelatedPi0s%s",calorimeter.Data()));
+  anacorrhadron->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
+  anacorrhadron->SetDebug(-1);
+  anacorrhadron->SwitchOffCaloPID();
+  anacorrhadron->SwitchOffFiducialCut();
+  anacorrhadron->SetPtCutRange(1,100);
+  anacorrhadron->SetDeltaPhiCutRange(1.5,4.5);
+  anacorrhadron->SelectIsolated(kTRUE); // do correlation with isolated photons
   if(calorimeter=="PHOS"){
     //Correlate with particles in EMCAL
-    anacorr->SwitchOnCaloPID();
-    anacorr->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
+    anacorrhadron->SwitchOnCaloPID();
+    anacorrhadron->SwitchOnCaloPIDRecalculation(); //recommended for EMCAL
   }
-  anacorr->Print("");
+  if(kPrintSettings) anacorrhadron->Print("");
   
   // #### Configure Maker ####
+  AliAnaPartCorrMaker * maker = new AliAnaPartCorrMaker();
   maker->SetReader(reader);//pointer to reader
-  maker->AddAnalysis(anaphoton,0);
-  maker->AddAnalysis(anaisol,1);
-  maker->AddAnalysis(anacorr,2);
+  maker->AddAnalysis(qa,0);
+  maker->AddAnalysis(anaphoton1,1);
+  maker->AddAnalysis(anapi0,2);
+  maker->AddAnalysis(anaphoton2,3);
+  maker->AddAnalysis(anaisol,4);
+  maker->AddAnalysis(anacorrjet,5);
+  maker->AddAnalysis(anacorrhadron,6);
   maker->SetAnaDebug(-1)  ;
   maker->SwitchOnHistogramsMaker()  ;
   maker->SwitchOnAODsMaker()  ;
-  maker->Print("");
-  //
+  if(kPrintSettings) maker->Print("");
+  
   printf("======================== \n");
-  printf("End Configuration of AnalysisGammaJetFinderCorrelation() \n");
+  printf(" End Configuration of PartCorr analysis with detector %s \n",calorimeter.Data());
   printf("======================== \n");
   
+   // Create task
+   //===========================================================================
+  AliAnalysisTaskParticleCorrelation * task = new AliAnalysisTaskParticleCorrelation (Form("PartCorr%s",calorimeter.Data()));
+  task->SetConfigFileName(""); //Don't configure the analysis via configuration file.
+  //task->SetDebugLevel(-1);
+  task->SetAnalysisMaker(maker);                               
+  mgr->AddTask(task);
+  
+  char name[128];
+  sprintf(name,"PartCorr_%s",calorimeter.Data());
+  cout<<"Name of task "<<name<<endl;
+  //AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form(name),TList::Class(),
+       //                                         AliAnalysisManager::kOutputContainer, Form("PartCorr_%s.root",calorimeter.Data()));
+  
+  TString outputfile = AliAnalysisManager::GetCommonFileName(); 
+  //  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(Form("PartCorr_%s",calorimeter.Data()),  TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:PartCorr_%s",outputfile.Data(),calorimeter.Data()));
+  AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(calorimeter.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:PartCorr",outputfile.Data()));
+
+  // Create ONLY the output containers for the data produced by the task.
+  // Get and connect other common input/output containers via the manager as below
+  //==============================================================================
+  mgr->ConnectInput  (task, 0, mgr->GetCommonInputContainer());
+  // AOD output slot will be used in a different way in future
+  mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());
+  mgr->ConnectOutput (task, 1, cout_pc);
+  
+  return task;
 }
+
+