ROOT logo

AliAnalysisTaskFastEmbedding* AddTaskFastEmbedding(){

   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if(!mgr){
      ::Error("AddTaskCentralitySelection", "No analysis manager to connect ot.");
      return NULL;
   }
   if(!mgr->GetInputEventHandler()){
      ::Error("AddTaskCentralitySelection", "This task requires an input event handler.");
      return NULL;
   }


   AliAnalysisTaskFastEmbedding *task = new AliAnalysisTaskFastEmbedding("FastEmbedding");
   // ## set embedding mode ##
   // kAODFull=0, kAODJetTracks, kAODJet4Mom, kToySingle4Mom
   task->SetEmbedMode(AliAnalysisTaskFastEmbedding::kToyTracks);

   // ## set ranges for toy ##
   //SetToyTrackRanges(
   Double_t minPt = 50.;   Double_t maxPt = 100.;
   Double_t minEta = -0.5; Double_t maxEta = 0.5;
   //Double_t minEta = -0.4; Double_t maxEta = 0.4;  // for LHC10h pass1
   Double_t minPhi = 0.;   Double_t maxPhi = 2*TMath::Pi();
   //fToyDistributionTrackPt: 0 = uniform distribution
   //                         else = exponential / power law (not implemented yet)
   //task->SetToyNumberOfTrackRange(4,4);
   //task->SetToyTrackRanges(0.15, 300., 5,-.9, .9, 0., 2*TMath::Pi());
   task->SetToyTrackRanges(minPt,maxPt,0.,minEta,maxEta,minPhi,maxPhi);
   task->SetToyFilterMap((1<<32)-1);

   // ## set event selection for events of the addition AOD ##
   // kEventsAll=0; kEventsJetPt
   task->SetEvtSelecMode(AliAnalysisTaskFastEmbedding::kEventsJetPt);

   // ## set jet pT range for event selection ##
   // SetEvtSelJetPtRange(Float_t minPt, Float_t maxPt)
   task->SetEvtSelJetPtRange(50.,110.);
   //task->SetEvtSelJetEtaRange(-0.4, 0.4); // smaller eta window for LHC10h pass1
   task->SetEvtSelJetEtaRange(-0.5, 0.5);

   task->SetTrackFilterMap(272);

   // event selection
   task->SetOfflineTrgMask(AliVEvent::kMB);
   task->SetCentMin(0.);
   task->SetCentMax(80.);

   //task->SetVtxMin(-10.);
   //task->SetVtxMax(10.);

   mgr->AddTask(task);

   // ## create the output containers ##
   AliAnalysisDataContainer *coutputFastEmbedding = mgr->CreateContainer(
   "fastembedding", TList::Class(), AliAnalysisManager::kOutputContainer,
   Form("%s:PWGJE_FastEmbedding", AliAnalysisManager::GetCommonFileName()));

   mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer());
   mgr->ConnectOutput(task, 1, coutputFastEmbedding);


   return task;

}

AliAnalysisTaskFastEmbedding* AddTaskFastEmbedding(TObjArray* aodarray){

   AliAnalysisTaskFastEmbedding *task = AddTaskFastEmbedding();
   if(aodarray){
      task->SetArrayOfAODPaths(aodarray);
      task->SetEmbedMode(AliAnalysisTaskFastEmbedding::kAODFull);
   }

   return task;
}


AliAnalysisTaskFastEmbedding* AddTaskFastEmbedding(const char* filepath, Int_t mode = 0){

   AliAnalysisTaskFastEmbedding *task = AddTaskFastEmbedding();
   if(strlen(filepath)){

      if(mode==0){ // path to single AOD
         task->SetAODPath(filepath);
      }
      if(mode==1){ // path to text file with list of paths of multiple AODs
         Printf("Read aod paths from file %s", filepath);
         TObjArray* array = new TObjArray();
         TObjString* ostr = 0;
         TString line;
         ifstream in;
         in.open(filepath);
         while(in.good()){
            in >> line;
            if(line.Length() == 0)  continue;
	    
            Printf("found aod path %s", line.Data());
            ostr = new TObjString(line.Data());
            array->Add(ostr);
         }
         Printf("-> %d aod paths found", array->GetEntries());
         
         task->SetArrayOfAODPaths(array);
      }
      if(mode==2) { //read root file which contains object array
	TFile *f = TFile::Open(filepath);
	TObjArray *objarray;
	f->GetObject("array",objarray);

        Printf("-> %d aod paths found", objarray->GetEntries());
	
	task->SetArrayOfAODPaths(objarray);


	Int_t count = 0;
	Int_t iEntry = -1;
	Int_t iEntrySum = 0;
	Int_t iEntryMax = 0;

	TArrayI* array = new TArrayI();

	for(int i=0; i<objarray->GetEntriesFast(); i++) {
	  TObjString *objStr = (TObjString*) objarray->At(i);
	  TString str = objStr->GetString();
	  iEntry = str.Atoi();
	  array->Set(count+1);
	  array->AddAt(iEntry,count);
	  count++;
	  iEntrySum += iEntry;
	  if(iEntry>iEntryMax) iEntryMax = iEntry;
	}
	
	task->SetArrayOfAODEntries(array);
	task->SetAODEntriesSum(iEntrySum);
	task->SetAODEntriesMax(iEntryMax);

      }

      task->SetEmbedMode(AliAnalysisTaskFastEmbedding::kAODFull);
   }

   return task;
}

AliAnalysisTaskFastEmbedding* AddTaskFastEmbedding(const char* aodpath, const char* entriespath){

   AliAnalysisTaskFastEmbedding *task = AddTaskFastEmbedding(aodpath, 1);

   Printf("Read entries of aod files from %s", entriespath);
   TArrayI* array = new TArrayI();
   Int_t count = 0;
   Int_t iEntry = -1;
   Int_t iEntrySum = 0;
   Int_t iEntryMax = 0;
   TString line;
   ifstream in;
   in.open(entriespath);
   while(in.good()){
      in >> line;
      iEntry = line.Atoi();

      array->Set(count+1);
      array->AddAt(iEntry,count);
      count++;
      iEntrySum += iEntry;
      if(iEntry>iEntryMax) iEntryMax = iEntry;
   }

   task->SetArrayOfAODEntries(array);
   task->SetAODEntriesSum(iEntrySum);
   task->SetAODEntriesMax(iEntryMax);

   return task;
}

 AddTaskFastEmbedding.C:1
 AddTaskFastEmbedding.C:2
 AddTaskFastEmbedding.C:3
 AddTaskFastEmbedding.C:4
 AddTaskFastEmbedding.C:5
 AddTaskFastEmbedding.C:6
 AddTaskFastEmbedding.C:7
 AddTaskFastEmbedding.C:8
 AddTaskFastEmbedding.C:9
 AddTaskFastEmbedding.C:10
 AddTaskFastEmbedding.C:11
 AddTaskFastEmbedding.C:12
 AddTaskFastEmbedding.C:13
 AddTaskFastEmbedding.C:14
 AddTaskFastEmbedding.C:15
 AddTaskFastEmbedding.C:16
 AddTaskFastEmbedding.C:17
 AddTaskFastEmbedding.C:18
 AddTaskFastEmbedding.C:19
 AddTaskFastEmbedding.C:20
 AddTaskFastEmbedding.C:21
 AddTaskFastEmbedding.C:22
 AddTaskFastEmbedding.C:23
 AddTaskFastEmbedding.C:24
 AddTaskFastEmbedding.C:25
 AddTaskFastEmbedding.C:26
 AddTaskFastEmbedding.C:27
 AddTaskFastEmbedding.C:28
 AddTaskFastEmbedding.C:29
 AddTaskFastEmbedding.C:30
 AddTaskFastEmbedding.C:31
 AddTaskFastEmbedding.C:32
 AddTaskFastEmbedding.C:33
 AddTaskFastEmbedding.C:34
 AddTaskFastEmbedding.C:35
 AddTaskFastEmbedding.C:36
 AddTaskFastEmbedding.C:37
 AddTaskFastEmbedding.C:38
 AddTaskFastEmbedding.C:39
 AddTaskFastEmbedding.C:40
 AddTaskFastEmbedding.C:41
 AddTaskFastEmbedding.C:42
 AddTaskFastEmbedding.C:43
 AddTaskFastEmbedding.C:44
 AddTaskFastEmbedding.C:45
 AddTaskFastEmbedding.C:46
 AddTaskFastEmbedding.C:47
 AddTaskFastEmbedding.C:48
 AddTaskFastEmbedding.C:49
 AddTaskFastEmbedding.C:50
 AddTaskFastEmbedding.C:51
 AddTaskFastEmbedding.C:52
 AddTaskFastEmbedding.C:53
 AddTaskFastEmbedding.C:54
 AddTaskFastEmbedding.C:55
 AddTaskFastEmbedding.C:56
 AddTaskFastEmbedding.C:57
 AddTaskFastEmbedding.C:58
 AddTaskFastEmbedding.C:59
 AddTaskFastEmbedding.C:60
 AddTaskFastEmbedding.C:61
 AddTaskFastEmbedding.C:62
 AddTaskFastEmbedding.C:63
 AddTaskFastEmbedding.C:64
 AddTaskFastEmbedding.C:65
 AddTaskFastEmbedding.C:66
 AddTaskFastEmbedding.C:67
 AddTaskFastEmbedding.C:68
 AddTaskFastEmbedding.C:69
 AddTaskFastEmbedding.C:70
 AddTaskFastEmbedding.C:71
 AddTaskFastEmbedding.C:72
 AddTaskFastEmbedding.C:73
 AddTaskFastEmbedding.C:74
 AddTaskFastEmbedding.C:75
 AddTaskFastEmbedding.C:76
 AddTaskFastEmbedding.C:77
 AddTaskFastEmbedding.C:78
 AddTaskFastEmbedding.C:79
 AddTaskFastEmbedding.C:80
 AddTaskFastEmbedding.C:81
 AddTaskFastEmbedding.C:82
 AddTaskFastEmbedding.C:83
 AddTaskFastEmbedding.C:84
 AddTaskFastEmbedding.C:85
 AddTaskFastEmbedding.C:86
 AddTaskFastEmbedding.C:87
 AddTaskFastEmbedding.C:88
 AddTaskFastEmbedding.C:89
 AddTaskFastEmbedding.C:90
 AddTaskFastEmbedding.C:91
 AddTaskFastEmbedding.C:92
 AddTaskFastEmbedding.C:93
 AddTaskFastEmbedding.C:94
 AddTaskFastEmbedding.C:95
 AddTaskFastEmbedding.C:96
 AddTaskFastEmbedding.C:97
 AddTaskFastEmbedding.C:98
 AddTaskFastEmbedding.C:99
 AddTaskFastEmbedding.C:100
 AddTaskFastEmbedding.C:101
 AddTaskFastEmbedding.C:102
 AddTaskFastEmbedding.C:103
 AddTaskFastEmbedding.C:104
 AddTaskFastEmbedding.C:105
 AddTaskFastEmbedding.C:106
 AddTaskFastEmbedding.C:107
 AddTaskFastEmbedding.C:108
 AddTaskFastEmbedding.C:109
 AddTaskFastEmbedding.C:110
 AddTaskFastEmbedding.C:111
 AddTaskFastEmbedding.C:112
 AddTaskFastEmbedding.C:113
 AddTaskFastEmbedding.C:114
 AddTaskFastEmbedding.C:115
 AddTaskFastEmbedding.C:116
 AddTaskFastEmbedding.C:117
 AddTaskFastEmbedding.C:118
 AddTaskFastEmbedding.C:119
 AddTaskFastEmbedding.C:120
 AddTaskFastEmbedding.C:121
 AddTaskFastEmbedding.C:122
 AddTaskFastEmbedding.C:123
 AddTaskFastEmbedding.C:124
 AddTaskFastEmbedding.C:125
 AddTaskFastEmbedding.C:126
 AddTaskFastEmbedding.C:127
 AddTaskFastEmbedding.C:128
 AddTaskFastEmbedding.C:129
 AddTaskFastEmbedding.C:130
 AddTaskFastEmbedding.C:131
 AddTaskFastEmbedding.C:132
 AddTaskFastEmbedding.C:133
 AddTaskFastEmbedding.C:134
 AddTaskFastEmbedding.C:135
 AddTaskFastEmbedding.C:136
 AddTaskFastEmbedding.C:137
 AddTaskFastEmbedding.C:138
 AddTaskFastEmbedding.C:139
 AddTaskFastEmbedding.C:140
 AddTaskFastEmbedding.C:141
 AddTaskFastEmbedding.C:142
 AddTaskFastEmbedding.C:143
 AddTaskFastEmbedding.C:144
 AddTaskFastEmbedding.C:145
 AddTaskFastEmbedding.C:146
 AddTaskFastEmbedding.C:147
 AddTaskFastEmbedding.C:148
 AddTaskFastEmbedding.C:149
 AddTaskFastEmbedding.C:150
 AddTaskFastEmbedding.C:151
 AddTaskFastEmbedding.C:152
 AddTaskFastEmbedding.C:153
 AddTaskFastEmbedding.C:154
 AddTaskFastEmbedding.C:155
 AddTaskFastEmbedding.C:156
 AddTaskFastEmbedding.C:157
 AddTaskFastEmbedding.C:158
 AddTaskFastEmbedding.C:159
 AddTaskFastEmbedding.C:160
 AddTaskFastEmbedding.C:161
 AddTaskFastEmbedding.C:162
 AddTaskFastEmbedding.C:163
 AddTaskFastEmbedding.C:164
 AddTaskFastEmbedding.C:165
 AddTaskFastEmbedding.C:166
 AddTaskFastEmbedding.C:167
 AddTaskFastEmbedding.C:168
 AddTaskFastEmbedding.C:169
 AddTaskFastEmbedding.C:170
 AddTaskFastEmbedding.C:171
 AddTaskFastEmbedding.C:172
 AddTaskFastEmbedding.C:173
 AddTaskFastEmbedding.C:174
 AddTaskFastEmbedding.C:175
 AddTaskFastEmbedding.C:176
 AddTaskFastEmbedding.C:177
 AddTaskFastEmbedding.C:178
 AddTaskFastEmbedding.C:179