ROOT logo
// EMCal tender task adder
// Author: Jiri Kral

AliTender *AddTaskEMCALTender(const char *geoname="EMCAL_COMPLETEV1", AliEMCALRecParam *pars = 0 , Bool_t withNonlinearity = kTRUE , Bool_t withReclusterizing = kFALSE, Int_t trackmatchcuts==0)
{
  // Parameters: geoname = "EMCAL_FIRSTYEARV1" or "EMCAL_COMPLETEV1" or ""

  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskEMCALTender", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // Create the task and configure it.
  //===========================================================================
  AliTender* ana = new  AliTender("TenderTask");
  
  mgr->AddTask(ana);

  // Adding EMCAL supply
  AliEMCALTenderSupply *EMCALSupply=new AliEMCALTenderSupply("EMCALtender");  

  EMCALSupply->SetEMCALGeometryName(geoname);  

  // prepare the reco params ------------------------------------------------
	if( pars == 0 ){
		// you can write your reco params here to avoid loading them automatically
		// from OCDB during execution time
		AliEMCALRecParam *params = new AliEMCALRecParam();
		// reclustering parameters
		// use v1 for pp and v2 for PbPb
		params->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv2);
		params->SetClusteringThreshold(0.1); // 100 MeV
		params->SetMinECut(0.05); //50 MeV  
		params->SetW0(4.5);
		// you may want to enable the timing cut
		params->SetTimeCut(1e6);// s
		params->SetTimeMin(-1);
		params->SetTimeMax(1e6);//s

		EMCALSupply->SetRecParam(params);
	}
	else{
		cout << "------- TENDER is using supplied reco params -------" << endl;
		pars->Print( "reco" );
		cout << "----------------------------------------------------" << endl;
		EMCALSupply->SetRecParam(pars);
	}

  // prepare tender parameters ----------------------------------------------
  EMCALSupply->SetDebugLevel( 0 );

  // fiducial cut
  EMCALSupply->SetNumberOfCellsFromEMCALBorder( 1 );

  // nonlinearity
  EMCALSupply->SetNonLinearityFunction( AliEMCALTenderSupply::kBeamTestCorrected );

  // track matching parameters
  //EMCALSupply->SetMass(0.139);
  //EMCALSupply->SetStep(5);
  //EMCALSupply->SwitchOnCutEtaPhiSum(); 
  //EMCALSupply->SetRCut(0.025);
  EMCALSupply->SwitchOnCutEtaPhiSeparate();
//   EMCALSupply->SetEtaCut(0.015);
//   EMCALSupply->SetPhiCut(0.03);
  if(trackmatchcuts==0){//default
    EMCALSupply->SetEtaCut(0.025);
    EMCALSupply->SetPhiCut(0.05);
  }
  if(trackmatchcuts==1){//tighter
    EMCALSupply->SetEtaCut(0.015);
    EMCALSupply->SetPhiCut(0.03);
  }
  if(trackmatchcuts==2){//looser
    EMCALSupply->SetEtaCut(0.035);
    EMCALSupply->SetPhiCut(0.07);
  }

  // switches ---------------------------------------------------------------
  EMCALSupply->SwitchOnBadCellRemove();
  EMCALSupply->SwitchOnExoticCellRemove();
  EMCALSupply->SwitchOnCalibrateEnergy();
  EMCALSupply->SwitchOnCalibrateTime();
  EMCALSupply->SwitchOnUpdateCell();
  if(withReclusterizing) EMCALSupply->SwitchOnReclustering();
  EMCALSupply->SwitchOnClusterBadChannelCheck();
  EMCALSupply->SwitchOnClusterExoticChannelCheck();
  EMCALSupply->SwitchOnCellFiducialRegion();
  EMCALSupply->SwitchOnReCalibrateCluster();
  EMCALSupply->SwitchOnRecalculateClusPos();
  EMCALSupply->SwitchOnRecalShowerShape();
  EMCALSupply->SwitchOnRecalDistBadChannel();
 if(withNonlinearity) EMCALSupply->SwitchOnNonLinearityCorrection();
else{cout<<"WARNING:  TURNING OFF NONLINEARITY"<<endl;}
  EMCALSupply->SwitchOnTrackMatch();
  

  ana->AddSupply(EMCALSupply);
  // 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
  //==============================================================================
//  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("histosEmcalTender", TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s", AliAnalysisManager::GetCommonFileName()));
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("emcal_tender_event", AliESDEvent::Class(),
                           AliAnalysisManager::kExchangeContainer,"emcal_tender");
  
  mgr->ConnectInput  (ana, 0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput (ana, 1, coutput1 );
   
  return ana;
}
 
 AddTaskEMCALTenderForEtAnalysis.C:1
 AddTaskEMCALTenderForEtAnalysis.C:2
 AddTaskEMCALTenderForEtAnalysis.C:3
 AddTaskEMCALTenderForEtAnalysis.C:4
 AddTaskEMCALTenderForEtAnalysis.C:5
 AddTaskEMCALTenderForEtAnalysis.C:6
 AddTaskEMCALTenderForEtAnalysis.C:7
 AddTaskEMCALTenderForEtAnalysis.C:8
 AddTaskEMCALTenderForEtAnalysis.C:9
 AddTaskEMCALTenderForEtAnalysis.C:10
 AddTaskEMCALTenderForEtAnalysis.C:11
 AddTaskEMCALTenderForEtAnalysis.C:12
 AddTaskEMCALTenderForEtAnalysis.C:13
 AddTaskEMCALTenderForEtAnalysis.C:14
 AddTaskEMCALTenderForEtAnalysis.C:15
 AddTaskEMCALTenderForEtAnalysis.C:16
 AddTaskEMCALTenderForEtAnalysis.C:17
 AddTaskEMCALTenderForEtAnalysis.C:18
 AddTaskEMCALTenderForEtAnalysis.C:19
 AddTaskEMCALTenderForEtAnalysis.C:20
 AddTaskEMCALTenderForEtAnalysis.C:21
 AddTaskEMCALTenderForEtAnalysis.C:22
 AddTaskEMCALTenderForEtAnalysis.C:23
 AddTaskEMCALTenderForEtAnalysis.C:24
 AddTaskEMCALTenderForEtAnalysis.C:25
 AddTaskEMCALTenderForEtAnalysis.C:26
 AddTaskEMCALTenderForEtAnalysis.C:27
 AddTaskEMCALTenderForEtAnalysis.C:28
 AddTaskEMCALTenderForEtAnalysis.C:29
 AddTaskEMCALTenderForEtAnalysis.C:30
 AddTaskEMCALTenderForEtAnalysis.C:31
 AddTaskEMCALTenderForEtAnalysis.C:32
 AddTaskEMCALTenderForEtAnalysis.C:33
 AddTaskEMCALTenderForEtAnalysis.C:34
 AddTaskEMCALTenderForEtAnalysis.C:35
 AddTaskEMCALTenderForEtAnalysis.C:36
 AddTaskEMCALTenderForEtAnalysis.C:37
 AddTaskEMCALTenderForEtAnalysis.C:38
 AddTaskEMCALTenderForEtAnalysis.C:39
 AddTaskEMCALTenderForEtAnalysis.C:40
 AddTaskEMCALTenderForEtAnalysis.C:41
 AddTaskEMCALTenderForEtAnalysis.C:42
 AddTaskEMCALTenderForEtAnalysis.C:43
 AddTaskEMCALTenderForEtAnalysis.C:44
 AddTaskEMCALTenderForEtAnalysis.C:45
 AddTaskEMCALTenderForEtAnalysis.C:46
 AddTaskEMCALTenderForEtAnalysis.C:47
 AddTaskEMCALTenderForEtAnalysis.C:48
 AddTaskEMCALTenderForEtAnalysis.C:49
 AddTaskEMCALTenderForEtAnalysis.C:50
 AddTaskEMCALTenderForEtAnalysis.C:51
 AddTaskEMCALTenderForEtAnalysis.C:52
 AddTaskEMCALTenderForEtAnalysis.C:53
 AddTaskEMCALTenderForEtAnalysis.C:54
 AddTaskEMCALTenderForEtAnalysis.C:55
 AddTaskEMCALTenderForEtAnalysis.C:56
 AddTaskEMCALTenderForEtAnalysis.C:57
 AddTaskEMCALTenderForEtAnalysis.C:58
 AddTaskEMCALTenderForEtAnalysis.C:59
 AddTaskEMCALTenderForEtAnalysis.C:60
 AddTaskEMCALTenderForEtAnalysis.C:61
 AddTaskEMCALTenderForEtAnalysis.C:62
 AddTaskEMCALTenderForEtAnalysis.C:63
 AddTaskEMCALTenderForEtAnalysis.C:64
 AddTaskEMCALTenderForEtAnalysis.C:65
 AddTaskEMCALTenderForEtAnalysis.C:66
 AddTaskEMCALTenderForEtAnalysis.C:67
 AddTaskEMCALTenderForEtAnalysis.C:68
 AddTaskEMCALTenderForEtAnalysis.C:69
 AddTaskEMCALTenderForEtAnalysis.C:70
 AddTaskEMCALTenderForEtAnalysis.C:71
 AddTaskEMCALTenderForEtAnalysis.C:72
 AddTaskEMCALTenderForEtAnalysis.C:73
 AddTaskEMCALTenderForEtAnalysis.C:74
 AddTaskEMCALTenderForEtAnalysis.C:75
 AddTaskEMCALTenderForEtAnalysis.C:76
 AddTaskEMCALTenderForEtAnalysis.C:77
 AddTaskEMCALTenderForEtAnalysis.C:78
 AddTaskEMCALTenderForEtAnalysis.C:79
 AddTaskEMCALTenderForEtAnalysis.C:80
 AddTaskEMCALTenderForEtAnalysis.C:81
 AddTaskEMCALTenderForEtAnalysis.C:82
 AddTaskEMCALTenderForEtAnalysis.C:83
 AddTaskEMCALTenderForEtAnalysis.C:84
 AddTaskEMCALTenderForEtAnalysis.C:85
 AddTaskEMCALTenderForEtAnalysis.C:86
 AddTaskEMCALTenderForEtAnalysis.C:87
 AddTaskEMCALTenderForEtAnalysis.C:88
 AddTaskEMCALTenderForEtAnalysis.C:89
 AddTaskEMCALTenderForEtAnalysis.C:90
 AddTaskEMCALTenderForEtAnalysis.C:91
 AddTaskEMCALTenderForEtAnalysis.C:92
 AddTaskEMCALTenderForEtAnalysis.C:93
 AddTaskEMCALTenderForEtAnalysis.C:94
 AddTaskEMCALTenderForEtAnalysis.C:95
 AddTaskEMCALTenderForEtAnalysis.C:96
 AddTaskEMCALTenderForEtAnalysis.C:97
 AddTaskEMCALTenderForEtAnalysis.C:98
 AddTaskEMCALTenderForEtAnalysis.C:99
 AddTaskEMCALTenderForEtAnalysis.C:100
 AddTaskEMCALTenderForEtAnalysis.C:101
 AddTaskEMCALTenderForEtAnalysis.C:102
 AddTaskEMCALTenderForEtAnalysis.C:103
 AddTaskEMCALTenderForEtAnalysis.C:104
 AddTaskEMCALTenderForEtAnalysis.C:105
 AddTaskEMCALTenderForEtAnalysis.C:106
 AddTaskEMCALTenderForEtAnalysis.C:107
 AddTaskEMCALTenderForEtAnalysis.C:108
 AddTaskEMCALTenderForEtAnalysis.C:109
 AddTaskEMCALTenderForEtAnalysis.C:110
 AddTaskEMCALTenderForEtAnalysis.C:111
 AddTaskEMCALTenderForEtAnalysis.C:112
 AddTaskEMCALTenderForEtAnalysis.C:113
 AddTaskEMCALTenderForEtAnalysis.C:114
 AddTaskEMCALTenderForEtAnalysis.C:115