ROOT logo
/************************************************************************* 
* Copyright(c) 1998-2048, ALICE Experiment at CERN, All rights reserved. * 
*                                                                        * 
* Author: The ALICE Off-line Project.                                    * 
* Contributors are mentioned in the code where appropriate.              * 
*                                                                        * 
* Permission to use, copy, modify and distribute this software and its   * 
* documentation strictly for non-commercial purposes is hereby granted   * 
* without fee, provided that the above copyright notice appears in all   * 
* copies and that both the copyright notice and this permission notice   * 
* appear in the supporting documentation. The authors make no claims     * 
* about the suitability of this software for any purpose. It is          * 
* provided "as is" without express or implied warranty.                  * 
**************************************************************************/

//Author: Dariusz Miskowiec 2007

//=============================================================================
// unicor analysis task
//=============================================================================
#include "AliUnicorAnalGlobal.h"
#include "AliUnicorAnalSingle.h"
#include "AliUnicorAnalCorrel.h"
#include "AliUnicorAnalPtfluc.h"
#include "AliUnicorAnalHighpt.h"
#include "AliUnicorEventAliceESD.h"
#include "AliESDEvent.h"
#include "AliAnalysisTaskUnicor.h"

ClassImp(AliAnalysisTaskUnicor)

//=============================================================================
AliAnalysisTaskUnicor::AliAnalysisTaskUnicor(const char *name) : 
  AliAnalysisTaskSE(name), 
  fEv0(0),
  fOutputList(0)
{
  // constructor

  fEv0 = new AliUnicorEventAliceESD(); // needed for eta ranges only
  DefineOutput(1, TList::Class());
}
//=============================================================================
void AliAnalysisTaskUnicor::UserCreateOutputObjects() 
{
  // executed once on each worker 

  fOutputList = new TList();
  fOutputList->SetOwner();
  fOutputList->Add(new AliUnicorAnalGlobal("dag"));
  fOutputList->Add(new AliUnicorAnalSingle("all",fEv0->Etamin(),fEv0->Etamax(),0));
  fOutputList->Add(new AliUnicorAnalSingle("pim",fEv0->Etamin(),fEv0->Etamax(),-211));
  fOutputList->Add(new AliUnicorAnalSingle("pip",fEv0->Etamin(),fEv0->Etamax(), 211));
  AliUnicorAnalCorrel::AnalysisFrame frame = AliUnicorAnalCorrel::kLCMS;
  fOutputList->Add(new AliUnicorAnalCorrel("cnn",fEv0->Etamin(),fEv0->Etamax(),-211,-211, frame));
  fOutputList->Add(new AliUnicorAnalCorrel("cpp",fEv0->Etamin(),fEv0->Etamax(), 211, 211, frame));
  fOutputList->Add(new AliUnicorAnalCorrel("cnp",fEv0->Etamin(),fEv0->Etamax(),-211, 211, frame));
  fOutputList->Add(new AliUnicorAnalPtfluc("ptf",0,0));
  fOutputList->Add(new AliUnicorAnalHighpt("hpt",fEv0->Etamin(),fEv0->Etamax(),0,0));
}
//=============================================================================
void AliAnalysisTaskUnicor::UserExec(Option_t */*option*/)
{
  // process one event

  fEv0->SetESD(((AliESDEvent*) InputEvent()));
  if (!fEv0->Good()) return;
  ((AliUnicorAnalGlobal *) fOutputList->At(0))->Process(fEv0);
  ((AliUnicorAnalSingle *) fOutputList->At(1))->Process(fEv0);
  ((AliUnicorAnalSingle *) fOutputList->At(2))->Process(fEv0);
  ((AliUnicorAnalSingle *) fOutputList->At(3))->Process(fEv0);
  ((AliUnicorAnalCorrel *) fOutputList->At(4))->Process(0,fEv0,fEv0,0);
  ((AliUnicorAnalCorrel *) fOutputList->At(4))->Process(2,fEv0,fEv0,TMath::DegToRad()*180);
  ((AliUnicorAnalCorrel *) fOutputList->At(5))->Process(0,fEv0,fEv0,0);
  ((AliUnicorAnalCorrel *) fOutputList->At(5))->Process(2,fEv0,fEv0,TMath::DegToRad()*180);
  ((AliUnicorAnalCorrel *) fOutputList->At(6))->Process(0,fEv0,fEv0,0);
  ((AliUnicorAnalCorrel *) fOutputList->At(6))->Process(2,fEv0,fEv0,TMath::DegToRad()*180);
  ((AliUnicorAnalPtfluc *) fOutputList->At(7))->Process(0,fEv0,fEv0);
  ((AliUnicorAnalHighpt *) fOutputList->At(8))->Process(fEv0,fEv0);
  PostData(1, fOutputList);
} 
//=============================================================================
void AliAnalysisTaskUnicor::Terminate(Option_t */*option*/)
{
  // terminate

  printf("terminate \n");
  TList *outputlist = (TList*) GetOutputData(1);
  int n = outputlist->GetEntries();
  if (n) ((AliUnicorAnal *) outputlist->At(0))->Save("unicor-result.root","recreate");
  for (int i=1; i<n; i++) ((AliUnicorAnal *) outputlist->At(i))->Save("unicor-result.root");
}
//=============================================================================
 AliAnalysisTaskUnicor.cxx:1
 AliAnalysisTaskUnicor.cxx:2
 AliAnalysisTaskUnicor.cxx:3
 AliAnalysisTaskUnicor.cxx:4
 AliAnalysisTaskUnicor.cxx:5
 AliAnalysisTaskUnicor.cxx:6
 AliAnalysisTaskUnicor.cxx:7
 AliAnalysisTaskUnicor.cxx:8
 AliAnalysisTaskUnicor.cxx:9
 AliAnalysisTaskUnicor.cxx:10
 AliAnalysisTaskUnicor.cxx:11
 AliAnalysisTaskUnicor.cxx:12
 AliAnalysisTaskUnicor.cxx:13
 AliAnalysisTaskUnicor.cxx:14
 AliAnalysisTaskUnicor.cxx:15
 AliAnalysisTaskUnicor.cxx:16
 AliAnalysisTaskUnicor.cxx:17
 AliAnalysisTaskUnicor.cxx:18
 AliAnalysisTaskUnicor.cxx:19
 AliAnalysisTaskUnicor.cxx:20
 AliAnalysisTaskUnicor.cxx:21
 AliAnalysisTaskUnicor.cxx:22
 AliAnalysisTaskUnicor.cxx:23
 AliAnalysisTaskUnicor.cxx:24
 AliAnalysisTaskUnicor.cxx:25
 AliAnalysisTaskUnicor.cxx:26
 AliAnalysisTaskUnicor.cxx:27
 AliAnalysisTaskUnicor.cxx:28
 AliAnalysisTaskUnicor.cxx:29
 AliAnalysisTaskUnicor.cxx:30
 AliAnalysisTaskUnicor.cxx:31
 AliAnalysisTaskUnicor.cxx:32
 AliAnalysisTaskUnicor.cxx:33
 AliAnalysisTaskUnicor.cxx:34
 AliAnalysisTaskUnicor.cxx:35
 AliAnalysisTaskUnicor.cxx:36
 AliAnalysisTaskUnicor.cxx:37
 AliAnalysisTaskUnicor.cxx:38
 AliAnalysisTaskUnicor.cxx:39
 AliAnalysisTaskUnicor.cxx:40
 AliAnalysisTaskUnicor.cxx:41
 AliAnalysisTaskUnicor.cxx:42
 AliAnalysisTaskUnicor.cxx:43
 AliAnalysisTaskUnicor.cxx:44
 AliAnalysisTaskUnicor.cxx:45
 AliAnalysisTaskUnicor.cxx:46
 AliAnalysisTaskUnicor.cxx:47
 AliAnalysisTaskUnicor.cxx:48
 AliAnalysisTaskUnicor.cxx:49
 AliAnalysisTaskUnicor.cxx:50
 AliAnalysisTaskUnicor.cxx:51
 AliAnalysisTaskUnicor.cxx:52
 AliAnalysisTaskUnicor.cxx:53
 AliAnalysisTaskUnicor.cxx:54
 AliAnalysisTaskUnicor.cxx:55
 AliAnalysisTaskUnicor.cxx:56
 AliAnalysisTaskUnicor.cxx:57
 AliAnalysisTaskUnicor.cxx:58
 AliAnalysisTaskUnicor.cxx:59
 AliAnalysisTaskUnicor.cxx:60
 AliAnalysisTaskUnicor.cxx:61
 AliAnalysisTaskUnicor.cxx:62
 AliAnalysisTaskUnicor.cxx:63
 AliAnalysisTaskUnicor.cxx:64
 AliAnalysisTaskUnicor.cxx:65
 AliAnalysisTaskUnicor.cxx:66
 AliAnalysisTaskUnicor.cxx:67
 AliAnalysisTaskUnicor.cxx:68
 AliAnalysisTaskUnicor.cxx:69
 AliAnalysisTaskUnicor.cxx:70
 AliAnalysisTaskUnicor.cxx:71
 AliAnalysisTaskUnicor.cxx:72
 AliAnalysisTaskUnicor.cxx:73
 AliAnalysisTaskUnicor.cxx:74
 AliAnalysisTaskUnicor.cxx:75
 AliAnalysisTaskUnicor.cxx:76
 AliAnalysisTaskUnicor.cxx:77
 AliAnalysisTaskUnicor.cxx:78
 AliAnalysisTaskUnicor.cxx:79
 AliAnalysisTaskUnicor.cxx:80
 AliAnalysisTaskUnicor.cxx:81
 AliAnalysisTaskUnicor.cxx:82
 AliAnalysisTaskUnicor.cxx:83
 AliAnalysisTaskUnicor.cxx:84
 AliAnalysisTaskUnicor.cxx:85
 AliAnalysisTaskUnicor.cxx:86
 AliAnalysisTaskUnicor.cxx:87
 AliAnalysisTaskUnicor.cxx:88
 AliAnalysisTaskUnicor.cxx:89
 AliAnalysisTaskUnicor.cxx:90
 AliAnalysisTaskUnicor.cxx:91
 AliAnalysisTaskUnicor.cxx:92
 AliAnalysisTaskUnicor.cxx:93