ROOT logo
#include "TChain.h"
#include "TTree.h"

#include "AliAnalysisTaskME.h"
#include "AliAnalysisManager.h"

#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "AliAODVertex.h"
#include "AliMultiEventInputHandler.h"
#include "AliAODHandler.h"

#include "AliAnalysisTaskCreateMixedDimuons.h"
#include "AliEventPoolMuon.h"
#include "TDatabasePDG.h"
#include "TRandom.h"

// Example of an analysis task creating aod events filled with mixed muon pairs
//
// Authors Alessandro De Falco and Antonio Uras, INFN Cagliari
// alessandro.de.falco@ca.infn.it  antonio.uras@ca.infn.it

#define AliAnalysisTaskCreateMixedDimuons_CXX

ClassImp(AliAnalysisTaskCreateMixedDimuons)

//=================================================================================

AliAnalysisTaskCreateMixedDimuons::AliAnalysisTaskCreateMixedDimuons(const char *name) 
: AliAnalysisTaskME(name),
  fBufferSize(0),
  fOutputUserHandler(0x0),
  fOutputUserAOD(0X0),
  fOutputUserAODTree(0X0),
  fPoolMuon(0X0),
  fDebug(0X0)
{

  // Constructor

  // Default input and output containers
  DefineInput (0, TChain::Class());

  // User-defined input and output containers
  DefineOutput(1, TTree::Class());

  // ---------------------------------------------------------------

  fDebug = kFALSE;
  fBufferSize = 0;

  RequireFreshBuffer();

  for (Int_t i=0; i<100; i++) fInputAOD[i] = 0;

  fOutputUserHandler = 0;
  fOutputUserAOD     = 0;
  fOutputUserAODTree = 0;  

}

//=================================================================================

void AliAnalysisTaskCreateMixedDimuons::ConnectInputData(Option_t *) {

  // Connect ESD or AOD here
  // Called once

  printf("-> AliAnalysisTaskCreateMixedDimuons::ConnectInputData\n");

  TTree* tree = (TTree*) GetInputData(0);

  if (!tree) {
    Printf("ERROR: Could not read chain from input slot 0");
  } 
  else {

    fInputHandler = (AliMultiEventInputHandler*) AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
    fPoolMuon     = (AliEventPoolMuon*)          AliAnalysisManager::GetAnalysisManager()->GetEventPool();

    if (!fInputHandler) {
      Printf("ERROR: Could not get AliMultiAODInputHandler");
    }
    else {  
      fBufferSize = fInputHandler->GetBufferSize();
      if (fBufferSize>100) {
        printf("\n*** WARNING AliAnalysisTaskCreateMixedDimuons::ConnectInputData -> Trying to set fBufferSize>100, forcing fBufferSize=100 ***\n\n");
        fBufferSize = 100;
      }
      for (Int_t i=0; i<fBufferSize; i++) fInputAOD[i] = (AliAODEvent*) fInputHandler->GetEvent(i);
    }
  }

  printf("<- AliAnalysisTaskCreateMixedDimuons::ConnectInputData\n");

}

//=================================================================================

void AliAnalysisTaskCreateMixedDimuons::UserCreateOutputObjects() {

  // Here the user-defined output containers should be created!!!
  // Called once

  fOutputUserHandler = new AliAODHandler();

  fOutputUserHandler -> Init("");

  fOutputUserAOD = fOutputUserHandler -> GetAOD();

  fOutputUserAODTree = fOutputUserHandler -> GetTree();

}

//=================================================================================

void AliAnalysisTaskCreateMixedDimuons::UserExec(Option_t *) {

  if (!fOutputUserAOD) {
    Printf("ERROR: fOutputUserAOD not available\n");
    return;
  }

  printf("Calling USER EXEC\n\n");

  for (Int_t iEv=0; iEv<fBufferSize; iEv++) {
    for (Int_t jEv=0; jEv<iEv; jEv++) {

      Int_t nTracksEv[2]  = {0};
      Int_t nFWMuonsEv[2] = {0};
      
      nTracksEv[0] = fInputAOD[iEv]->GetNumberOfTracks();
      nTracksEv[1] = fInputAOD[jEv]->GetNumberOfTracks();
      // Check if both events contain std aod tracks
      if (!dynamic_cast<AliAODTrack*>(fInputAOD[iEv]->GetTrack(0)) || dynamic_cast<AliAODTrack*>(fInputAOD[jEv]->GetTrack(0))){
        AliFatal("Not a standard AOD");
      }

      for (Int_t i=0; i<nTracksEv[0]; i++) if(((AliAODTrack*)fInputAOD[iEv]->GetTrack(i))->IsMuonTrack()) nFWMuonsEv[0]++;
      for (Int_t i=0; i<nTracksEv[1]; i++) if(((AliAODTrack*)fInputAOD[jEv]->GetTrack(i))->IsMuonTrack()) nFWMuonsEv[1]++;
      
      // Muon track mixing to fill a mass spectrum
      
      if (nFWMuonsEv[0] && nFWMuonsEv[1]) {
	
	Int_t rndMuonTrack[2] = {0};
	rndMuonTrack[0] = gRandom->Integer(nFWMuonsEv[0]);
	rndMuonTrack[1] = gRandom->Integer(nFWMuonsEv[1]);
	
	Int_t nFWMUonsAdded = 0;
	Int_t nPosTracksAdded = 0;
	Int_t nNegTracksAdded = 0;
	
	AliAODVertex *vertex = new AliAODVertex();
	vertex -> SetX(0.0);
	vertex -> SetY(0.0);
	vertex -> SetZ(fPoolMuon->GetMeanPrimaryVertexZ());
	
	Int_t muonCounter[2] = {0};
	
	// adding tracks and vertex to the output event...
	
	for (Int_t i=0; i<nTracksEv[0]; i++) {
	  if(((AliAODTrack*)fInputAOD[iEv]->GetTrack(i))->IsMuonTrack()) {
	    if (fDebug) printf("fInputAOD[%d]->GetTrack(%d) = %p    pt = %f     uniqueID = %d\n",
			       iEv,i,fInputAOD[iEv]->GetTrack(i),fInputAOD[iEv]->GetTrack(i)->Pt(),
			       fInputAOD[iEv]->GetTrack(i)->GetUniqueID());
	    if (muonCounter[0]==rndMuonTrack[0]) {
	      fOutputUserAOD->AddTrack((AliAODTrack*)fInputAOD[iEv]->GetTrack(i));
	      nFWMUonsAdded++;
	      if (fInputAOD[iEv]->GetTrack(i)->Charge()>0) nPosTracksAdded++;
	      else nNegTracksAdded++;
	    }
	    muonCounter[0]++;
	  }
	}
	
	for (Int_t i=0; i<nTracksEv[1]; i++) {
	  if(((AliAODTrack*)fInputAOD[jEv]->GetTrack(i))->IsMuonTrack()) {
	    if (fDebug) printf("fInputAOD[%d]->GetTrack(%d) = %p    pt = %f     uniqueID = %d\n",
			       jEv,i,fInputAOD[jEv]->GetTrack(i),fInputAOD[jEv]->GetTrack(i)->Pt(),
			       fInputAOD[jEv]->GetTrack(i)->GetUniqueID());
	    if (muonCounter[1]==rndMuonTrack[1]) {
	      fOutputUserAOD->AddTrack((AliAODTrack*)fInputAOD[jEv]->GetTrack(i));
	      nFWMUonsAdded++;
	      if (fInputAOD[jEv]->GetTrack(i)->Charge()>0) nPosTracksAdded++;
	      else nNegTracksAdded++;
	    }
	    muonCounter[1]++;	
	  }
	}
	
	fOutputUserAOD->AddVertex(vertex);
	
	// ... done!
	
	if (fDebug) {
	  for (Int_t i=0; i<nFWMUonsAdded; i++) {
	    AliAODTrack *tr = dynamic_cast<AliAODTrack*>( fOutputUserAOD->GetTrack(i));
	    if(!tr) AliFatal("Not a standard AOD");
	    printf("fOutputUserAOD->GetTrack(%d) = %p    pt = %f\n",i,tr,tr->Pt());
	  }
	}
	

        AliAODHeader * header = dynamic_cast<AliAODHeader*>(fOutputUserAOD->GetHeader());
        if(!header) AliFatal("Not a standard AOD");
	header->SetRefMultiplicity(nFWMUonsAdded); 
	header->SetRefMultiplicityPos(nPosTracksAdded);
	header->SetRefMultiplicityNeg(nNegTracksAdded);
	
	fOutputUserHandler -> FinishEvent();
	
      }

      PostData(1, fOutputUserAODTree);
      
    }
    
  }
  
}      

//===================================================================================

void AliAnalysisTaskCreateMixedDimuons::Terminate(Option_t *) {

  // Called once at the end of the query

  printf("\n\nCalling TERMINATE \n\n\n");

  fOutputUserHandler -> Terminate();

}

//===================================================================================
 AliAnalysisTaskCreateMixedDimuons.cxx:1
 AliAnalysisTaskCreateMixedDimuons.cxx:2
 AliAnalysisTaskCreateMixedDimuons.cxx:3
 AliAnalysisTaskCreateMixedDimuons.cxx:4
 AliAnalysisTaskCreateMixedDimuons.cxx:5
 AliAnalysisTaskCreateMixedDimuons.cxx:6
 AliAnalysisTaskCreateMixedDimuons.cxx:7
 AliAnalysisTaskCreateMixedDimuons.cxx:8
 AliAnalysisTaskCreateMixedDimuons.cxx:9
 AliAnalysisTaskCreateMixedDimuons.cxx:10
 AliAnalysisTaskCreateMixedDimuons.cxx:11
 AliAnalysisTaskCreateMixedDimuons.cxx:12
 AliAnalysisTaskCreateMixedDimuons.cxx:13
 AliAnalysisTaskCreateMixedDimuons.cxx:14
 AliAnalysisTaskCreateMixedDimuons.cxx:15
 AliAnalysisTaskCreateMixedDimuons.cxx:16
 AliAnalysisTaskCreateMixedDimuons.cxx:17
 AliAnalysisTaskCreateMixedDimuons.cxx:18
 AliAnalysisTaskCreateMixedDimuons.cxx:19
 AliAnalysisTaskCreateMixedDimuons.cxx:20
 AliAnalysisTaskCreateMixedDimuons.cxx:21
 AliAnalysisTaskCreateMixedDimuons.cxx:22
 AliAnalysisTaskCreateMixedDimuons.cxx:23
 AliAnalysisTaskCreateMixedDimuons.cxx:24
 AliAnalysisTaskCreateMixedDimuons.cxx:25
 AliAnalysisTaskCreateMixedDimuons.cxx:26
 AliAnalysisTaskCreateMixedDimuons.cxx:27
 AliAnalysisTaskCreateMixedDimuons.cxx:28
 AliAnalysisTaskCreateMixedDimuons.cxx:29
 AliAnalysisTaskCreateMixedDimuons.cxx:30
 AliAnalysisTaskCreateMixedDimuons.cxx:31
 AliAnalysisTaskCreateMixedDimuons.cxx:32
 AliAnalysisTaskCreateMixedDimuons.cxx:33
 AliAnalysisTaskCreateMixedDimuons.cxx:34
 AliAnalysisTaskCreateMixedDimuons.cxx:35
 AliAnalysisTaskCreateMixedDimuons.cxx:36
 AliAnalysisTaskCreateMixedDimuons.cxx:37
 AliAnalysisTaskCreateMixedDimuons.cxx:38
 AliAnalysisTaskCreateMixedDimuons.cxx:39
 AliAnalysisTaskCreateMixedDimuons.cxx:40
 AliAnalysisTaskCreateMixedDimuons.cxx:41
 AliAnalysisTaskCreateMixedDimuons.cxx:42
 AliAnalysisTaskCreateMixedDimuons.cxx:43
 AliAnalysisTaskCreateMixedDimuons.cxx:44
 AliAnalysisTaskCreateMixedDimuons.cxx:45
 AliAnalysisTaskCreateMixedDimuons.cxx:46
 AliAnalysisTaskCreateMixedDimuons.cxx:47
 AliAnalysisTaskCreateMixedDimuons.cxx:48
 AliAnalysisTaskCreateMixedDimuons.cxx:49
 AliAnalysisTaskCreateMixedDimuons.cxx:50
 AliAnalysisTaskCreateMixedDimuons.cxx:51
 AliAnalysisTaskCreateMixedDimuons.cxx:52
 AliAnalysisTaskCreateMixedDimuons.cxx:53
 AliAnalysisTaskCreateMixedDimuons.cxx:54
 AliAnalysisTaskCreateMixedDimuons.cxx:55
 AliAnalysisTaskCreateMixedDimuons.cxx:56
 AliAnalysisTaskCreateMixedDimuons.cxx:57
 AliAnalysisTaskCreateMixedDimuons.cxx:58
 AliAnalysisTaskCreateMixedDimuons.cxx:59
 AliAnalysisTaskCreateMixedDimuons.cxx:60
 AliAnalysisTaskCreateMixedDimuons.cxx:61
 AliAnalysisTaskCreateMixedDimuons.cxx:62
 AliAnalysisTaskCreateMixedDimuons.cxx:63
 AliAnalysisTaskCreateMixedDimuons.cxx:64
 AliAnalysisTaskCreateMixedDimuons.cxx:65
 AliAnalysisTaskCreateMixedDimuons.cxx:66
 AliAnalysisTaskCreateMixedDimuons.cxx:67
 AliAnalysisTaskCreateMixedDimuons.cxx:68
 AliAnalysisTaskCreateMixedDimuons.cxx:69
 AliAnalysisTaskCreateMixedDimuons.cxx:70
 AliAnalysisTaskCreateMixedDimuons.cxx:71
 AliAnalysisTaskCreateMixedDimuons.cxx:72
 AliAnalysisTaskCreateMixedDimuons.cxx:73
 AliAnalysisTaskCreateMixedDimuons.cxx:74
 AliAnalysisTaskCreateMixedDimuons.cxx:75
 AliAnalysisTaskCreateMixedDimuons.cxx:76
 AliAnalysisTaskCreateMixedDimuons.cxx:77
 AliAnalysisTaskCreateMixedDimuons.cxx:78
 AliAnalysisTaskCreateMixedDimuons.cxx:79
 AliAnalysisTaskCreateMixedDimuons.cxx:80
 AliAnalysisTaskCreateMixedDimuons.cxx:81
 AliAnalysisTaskCreateMixedDimuons.cxx:82
 AliAnalysisTaskCreateMixedDimuons.cxx:83
 AliAnalysisTaskCreateMixedDimuons.cxx:84
 AliAnalysisTaskCreateMixedDimuons.cxx:85
 AliAnalysisTaskCreateMixedDimuons.cxx:86
 AliAnalysisTaskCreateMixedDimuons.cxx:87
 AliAnalysisTaskCreateMixedDimuons.cxx:88
 AliAnalysisTaskCreateMixedDimuons.cxx:89
 AliAnalysisTaskCreateMixedDimuons.cxx:90
 AliAnalysisTaskCreateMixedDimuons.cxx:91
 AliAnalysisTaskCreateMixedDimuons.cxx:92
 AliAnalysisTaskCreateMixedDimuons.cxx:93
 AliAnalysisTaskCreateMixedDimuons.cxx:94
 AliAnalysisTaskCreateMixedDimuons.cxx:95
 AliAnalysisTaskCreateMixedDimuons.cxx:96
 AliAnalysisTaskCreateMixedDimuons.cxx:97
 AliAnalysisTaskCreateMixedDimuons.cxx:98
 AliAnalysisTaskCreateMixedDimuons.cxx:99
 AliAnalysisTaskCreateMixedDimuons.cxx:100
 AliAnalysisTaskCreateMixedDimuons.cxx:101
 AliAnalysisTaskCreateMixedDimuons.cxx:102
 AliAnalysisTaskCreateMixedDimuons.cxx:103
 AliAnalysisTaskCreateMixedDimuons.cxx:104
 AliAnalysisTaskCreateMixedDimuons.cxx:105
 AliAnalysisTaskCreateMixedDimuons.cxx:106
 AliAnalysisTaskCreateMixedDimuons.cxx:107
 AliAnalysisTaskCreateMixedDimuons.cxx:108
 AliAnalysisTaskCreateMixedDimuons.cxx:109
 AliAnalysisTaskCreateMixedDimuons.cxx:110
 AliAnalysisTaskCreateMixedDimuons.cxx:111
 AliAnalysisTaskCreateMixedDimuons.cxx:112
 AliAnalysisTaskCreateMixedDimuons.cxx:113
 AliAnalysisTaskCreateMixedDimuons.cxx:114
 AliAnalysisTaskCreateMixedDimuons.cxx:115
 AliAnalysisTaskCreateMixedDimuons.cxx:116
 AliAnalysisTaskCreateMixedDimuons.cxx:117
 AliAnalysisTaskCreateMixedDimuons.cxx:118
 AliAnalysisTaskCreateMixedDimuons.cxx:119
 AliAnalysisTaskCreateMixedDimuons.cxx:120
 AliAnalysisTaskCreateMixedDimuons.cxx:121
 AliAnalysisTaskCreateMixedDimuons.cxx:122
 AliAnalysisTaskCreateMixedDimuons.cxx:123
 AliAnalysisTaskCreateMixedDimuons.cxx:124
 AliAnalysisTaskCreateMixedDimuons.cxx:125
 AliAnalysisTaskCreateMixedDimuons.cxx:126
 AliAnalysisTaskCreateMixedDimuons.cxx:127
 AliAnalysisTaskCreateMixedDimuons.cxx:128
 AliAnalysisTaskCreateMixedDimuons.cxx:129
 AliAnalysisTaskCreateMixedDimuons.cxx:130
 AliAnalysisTaskCreateMixedDimuons.cxx:131
 AliAnalysisTaskCreateMixedDimuons.cxx:132
 AliAnalysisTaskCreateMixedDimuons.cxx:133
 AliAnalysisTaskCreateMixedDimuons.cxx:134
 AliAnalysisTaskCreateMixedDimuons.cxx:135
 AliAnalysisTaskCreateMixedDimuons.cxx:136
 AliAnalysisTaskCreateMixedDimuons.cxx:137
 AliAnalysisTaskCreateMixedDimuons.cxx:138
 AliAnalysisTaskCreateMixedDimuons.cxx:139
 AliAnalysisTaskCreateMixedDimuons.cxx:140
 AliAnalysisTaskCreateMixedDimuons.cxx:141
 AliAnalysisTaskCreateMixedDimuons.cxx:142
 AliAnalysisTaskCreateMixedDimuons.cxx:143
 AliAnalysisTaskCreateMixedDimuons.cxx:144
 AliAnalysisTaskCreateMixedDimuons.cxx:145
 AliAnalysisTaskCreateMixedDimuons.cxx:146
 AliAnalysisTaskCreateMixedDimuons.cxx:147
 AliAnalysisTaskCreateMixedDimuons.cxx:148
 AliAnalysisTaskCreateMixedDimuons.cxx:149
 AliAnalysisTaskCreateMixedDimuons.cxx:150
 AliAnalysisTaskCreateMixedDimuons.cxx:151
 AliAnalysisTaskCreateMixedDimuons.cxx:152
 AliAnalysisTaskCreateMixedDimuons.cxx:153
 AliAnalysisTaskCreateMixedDimuons.cxx:154
 AliAnalysisTaskCreateMixedDimuons.cxx:155
 AliAnalysisTaskCreateMixedDimuons.cxx:156
 AliAnalysisTaskCreateMixedDimuons.cxx:157
 AliAnalysisTaskCreateMixedDimuons.cxx:158
 AliAnalysisTaskCreateMixedDimuons.cxx:159
 AliAnalysisTaskCreateMixedDimuons.cxx:160
 AliAnalysisTaskCreateMixedDimuons.cxx:161
 AliAnalysisTaskCreateMixedDimuons.cxx:162
 AliAnalysisTaskCreateMixedDimuons.cxx:163
 AliAnalysisTaskCreateMixedDimuons.cxx:164
 AliAnalysisTaskCreateMixedDimuons.cxx:165
 AliAnalysisTaskCreateMixedDimuons.cxx:166
 AliAnalysisTaskCreateMixedDimuons.cxx:167
 AliAnalysisTaskCreateMixedDimuons.cxx:168
 AliAnalysisTaskCreateMixedDimuons.cxx:169
 AliAnalysisTaskCreateMixedDimuons.cxx:170
 AliAnalysisTaskCreateMixedDimuons.cxx:171
 AliAnalysisTaskCreateMixedDimuons.cxx:172
 AliAnalysisTaskCreateMixedDimuons.cxx:173
 AliAnalysisTaskCreateMixedDimuons.cxx:174
 AliAnalysisTaskCreateMixedDimuons.cxx:175
 AliAnalysisTaskCreateMixedDimuons.cxx:176
 AliAnalysisTaskCreateMixedDimuons.cxx:177
 AliAnalysisTaskCreateMixedDimuons.cxx:178
 AliAnalysisTaskCreateMixedDimuons.cxx:179
 AliAnalysisTaskCreateMixedDimuons.cxx:180
 AliAnalysisTaskCreateMixedDimuons.cxx:181
 AliAnalysisTaskCreateMixedDimuons.cxx:182
 AliAnalysisTaskCreateMixedDimuons.cxx:183
 AliAnalysisTaskCreateMixedDimuons.cxx:184
 AliAnalysisTaskCreateMixedDimuons.cxx:185
 AliAnalysisTaskCreateMixedDimuons.cxx:186
 AliAnalysisTaskCreateMixedDimuons.cxx:187
 AliAnalysisTaskCreateMixedDimuons.cxx:188
 AliAnalysisTaskCreateMixedDimuons.cxx:189
 AliAnalysisTaskCreateMixedDimuons.cxx:190
 AliAnalysisTaskCreateMixedDimuons.cxx:191
 AliAnalysisTaskCreateMixedDimuons.cxx:192
 AliAnalysisTaskCreateMixedDimuons.cxx:193
 AliAnalysisTaskCreateMixedDimuons.cxx:194
 AliAnalysisTaskCreateMixedDimuons.cxx:195
 AliAnalysisTaskCreateMixedDimuons.cxx:196
 AliAnalysisTaskCreateMixedDimuons.cxx:197
 AliAnalysisTaskCreateMixedDimuons.cxx:198
 AliAnalysisTaskCreateMixedDimuons.cxx:199
 AliAnalysisTaskCreateMixedDimuons.cxx:200
 AliAnalysisTaskCreateMixedDimuons.cxx:201
 AliAnalysisTaskCreateMixedDimuons.cxx:202
 AliAnalysisTaskCreateMixedDimuons.cxx:203
 AliAnalysisTaskCreateMixedDimuons.cxx:204
 AliAnalysisTaskCreateMixedDimuons.cxx:205
 AliAnalysisTaskCreateMixedDimuons.cxx:206
 AliAnalysisTaskCreateMixedDimuons.cxx:207
 AliAnalysisTaskCreateMixedDimuons.cxx:208
 AliAnalysisTaskCreateMixedDimuons.cxx:209
 AliAnalysisTaskCreateMixedDimuons.cxx:210
 AliAnalysisTaskCreateMixedDimuons.cxx:211
 AliAnalysisTaskCreateMixedDimuons.cxx:212
 AliAnalysisTaskCreateMixedDimuons.cxx:213
 AliAnalysisTaskCreateMixedDimuons.cxx:214
 AliAnalysisTaskCreateMixedDimuons.cxx:215
 AliAnalysisTaskCreateMixedDimuons.cxx:216
 AliAnalysisTaskCreateMixedDimuons.cxx:217
 AliAnalysisTaskCreateMixedDimuons.cxx:218
 AliAnalysisTaskCreateMixedDimuons.cxx:219
 AliAnalysisTaskCreateMixedDimuons.cxx:220
 AliAnalysisTaskCreateMixedDimuons.cxx:221
 AliAnalysisTaskCreateMixedDimuons.cxx:222
 AliAnalysisTaskCreateMixedDimuons.cxx:223
 AliAnalysisTaskCreateMixedDimuons.cxx:224
 AliAnalysisTaskCreateMixedDimuons.cxx:225
 AliAnalysisTaskCreateMixedDimuons.cxx:226
 AliAnalysisTaskCreateMixedDimuons.cxx:227
 AliAnalysisTaskCreateMixedDimuons.cxx:228
 AliAnalysisTaskCreateMixedDimuons.cxx:229
 AliAnalysisTaskCreateMixedDimuons.cxx:230
 AliAnalysisTaskCreateMixedDimuons.cxx:231
 AliAnalysisTaskCreateMixedDimuons.cxx:232
 AliAnalysisTaskCreateMixedDimuons.cxx:233
 AliAnalysisTaskCreateMixedDimuons.cxx:234
 AliAnalysisTaskCreateMixedDimuons.cxx:235
 AliAnalysisTaskCreateMixedDimuons.cxx:236