ROOT logo
class LMEECutLib {

  public:
	static  enum LMMECutSet {
   		kPbPb2011NoPID,
   		kPbPb2011TPCandTOF,
   		kPbPb2011TPCandTOFHPT,
		kPbPb2011TPC, //TOF required, more relaxed cut on TPC
		kPbPb2011TPCandTOFwide, //TOF required, more relaxed cut on TPC
		kPbPb2011TPCorTOF,
		kpp2010TPCandTOF,
		kpp2010TPCorTOF,
		kCUTSETMAX
	};

	static  enum LMMECentSel {
	  kPbPb2011Central,
		kPbPb2011SemiCentral,
		kPbPb2011Peripheral,
		kCENTSELMAX
	};

	//char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"};


	LMEECutLib() {}

	AliDielectronEventCuts*     GetEventCuts(Int_t cutSet);
	AliAnalysisCuts*            GetCentralityCuts(Int_t centSel);
	AliDielectronTrackRotator*  GetTrackRotator(Int_t cutSet);
	AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet);

	AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet);  
	AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet);  

	AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE);
	AliAnalysisCuts* GetPairCuts(Int_t cutSet);  

	AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet);  
	AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet);  




	AliDielectronEventCuts* GetEventCuts(Int_t cutSet) {
	  AliDielectronEventCuts* eventCuts = 0x0;
	  switch (cutSet) {
		case kPbPb2011NoPID:
		case kPbPb2011TPCandTOF :
   		case kPbPb2011TPCandTOFHPT:
		case kPbPb2011TPC :
		case kPbPb2011TPCandTOFwide :
		case kPbPb2011TPCorTOF  :
		case kpp2010TPCandTOF :
		case kpp2010TPCorTOF  :
		  //Basic Event Cuts for pp and Pb-Pb, additional cuts may be in the AddTask
		  eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
		  eventCuts->SetVertexType(AliDielectronEventCuts::kVtxSPD); // AOD
		  //eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD
		  //           eventCuts->SetCentralityRange(0.0,80.0);
		  eventCuts->SetRequireVertex();
		  eventCuts->SetMinVtxContributors(1);
		  eventCuts->SetVertexZ(-10.,10.);
		  break;
		default: cout << "No Event Cut defined" << endl;
	  }
	  return eventCuts;
	}


	//Selection of relatively 'flat' centralities
	AliAnalysisCuts* GetCentralityCuts(Int_t centSel) {
	  AliDielectronVarCuts* centCuts = 0x0;
	  switch (centSel) {
		case kPbPb2011Central:
		  centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central");
		  centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.);
		  break;
		case kPbPb2011SemiCentral:
		  centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral");
		  //Restrict to 50%, Trigger selction
		  centCuts->AddCut(AliDielectronVarManager::kCentrality,20.,50.);
		  break;
		case kPbPb2011Peripheral:
		  centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral");
		  centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.);
		  break;
			default: cout << "No Centrality selected" << endl;
	  }
	  return centCuts;
	}


	//Basic track rotator settings from J/Psi, more investigation needed
	AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) {
	  AliDielectronTrackRotator* trackRotator = 0x0;
	  switch (cutSet) {
		case kPbPb2011NoPID:
		case kPbPb2011TPCandTOF :
   		case kPbPb2011TPCandTOFHPT:
		case kPbPb2011TPC :
		case kPbPb2011TPCandTOFwide :
		case kPbPb2011TPCorTOF  :
		case kpp2010TPCandTOF :
		case kpp2010TPCorTOF  :
		  trackRotator = new AliDielectronTrackRotator();
		  trackRotator->SetIterations(20);
		  trackRotator->SetConeAnglePhi(TMath::Pi()/180*165);
		  trackRotator->SetStartAnglePhi(TMath::Pi());
		  break;
		default: cout << "No Rotator defined" << endl;
	  }
	  return trackRotator;
	}


	AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) {
	  AliDielectronMixingHandler* mixingHandler = 0x0;
	  switch (cutSet) {
		case kPbPb2011TPCorTOF  :
		case kPbPb2011NoPID:
		case kPbPb2011TPCandTOF :
   		case kPbPb2011TPCandTOFHPT:
		case kPbPb2011TPC :
		case kPbPb2011TPCandTOFwide :
		  mixingHandler = new AliDielectronMixingHandler;
		  mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
		  mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80");
		   mixingHandler->AddVariable(AliDielectronVarManager::kv0ACrpH2,"-6*(TMath::Pi()/6),-5*(TMath::Pi()/6),-4*(TMath::Pi()/6),-3*(TMath::Pi()/6),-2*(TMath::Pi()/6),-1*(TMath::Pi()/6),0,1*(TMath::Pi()/6),2*(TMath::Pi()/6),3*(TMath::Pi()/6),4*(TMath::Pi()/6),5*(TMath::Pi()/6),6*(TMath::Pi()/6)");
		  //mixingHandler->SetDepth(50);
		  mixingHandler->SetDepth(15);
		  mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
		  break;
		case kpp2010TPCandTOF :
		case kpp2010TPCorTOF  :
		  //ATTENTION: Trivial 1 Bin Variable on Nacc needed: Not understood bug, mixing breaks
		  //when just adding one variable *****************!!! 
		  mixingHandler = new AliDielectronMixingHandler;
		  mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
		  mixingHandler->AddVariable(AliDielectronVarManager::kNacc,"0,10000");
		  //might want to add multiplicity?
		  mixingHandler->SetDepth(50);
		  mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
		  break;
		default: cout << "No Rotator defined" << endl;
	  }
	  return mixingHandler;
	}


	AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) {
	  AliAnalysisCuts* anaCuts=0x0;

	  //-----------------------------------------------
	  //Define different PID Cuts, that are used later
	  //-----------------------------------------------
	  
      //TPC: UPPER HALF inclusion of electron
	  //     3sigma exclusion of Pions
	  //TOF: 3sigma inclusion of electrons
	  AliDielectronPID *pidTPCTOFeOnly = new AliDielectronPID("TPC-TOF","TPC-TOF");
	  pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.,3.,0.0,100.,kFALSE);
	  pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
	  pidTPCTOFeOnly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE );

      //TPC: 3sigma inclusion of electron
	  //     3sigma exclusion of Pions
	  //TOF: 3sigma inclusion of electrons in region where p,K cross electrons in TPC
	  AliDielectronPID *pidTPCandTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
	  pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
	  pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
	  pidTPCandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE );

	  //Apply ITS cuts (see Hongyan's talks):
	  //3 sigma inclusion of electrons in TPC
	  //3 sigma exclusion of pions in TPC
	  //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination
	  AliDielectronPID *pidTPCandITSandTOF = new AliDielectronPID("TPC-TOFANDITS","TPC-TOFANDITS");
	  pidTPCandITSandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
	  pidTPCandITSandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
	  pidTPCandITSandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE);
	  pidTPCandITSandTOF->AddCut(AliDielectronPID::kITS ,AliPID::kElectron , -6. , 3. , 0.0 , 1.5, kFALSE );

	  //Apply ITS cuts (see Hongyan's talks):
	  //3 sigma inclusion of electrons in TPC
	  //3 sigma exclusion of pions in TPC
	  //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination
	  //TOF only IF available!
	  AliDielectronPID *pidTPCandITSTOF = new AliDielectronPID("TPC-TOF-ITS","TPC-TOF-ITS");
	  pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
	  pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
	  pidTPCandITSTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE,AliDielectronPID::kIfAvailable );
	  pidTPCandITSTOF->AddCut(AliDielectronPID::kITS ,AliPID::kElectron , -6. , 3. , 0.0 , 1.5, kFALSE );

	  //___________________________________________
	  //Direct cuts on TPC signal used for QM12
	  AliDielectronVarCuts *pidTPCsignal = new AliDielectronVarCuts("pidTPCsignal","cut on the TPC signal");
	  if (MCenabled) {
	  pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.); 
	  }	
	  else {
	  pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.); 
	  }
	  //___________________________________________

	  //low pT cut-off 0.4 - Pb-Pb
	  AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4");
	  pTPC->AddCut(AliDielectronVarManager::kPt,.4,3.5);
	  
	  //low pT cut-off 0.4 - pp
	  AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2");
	  pMin->AddCut(AliDielectronVarManager::kPt,.2,2.5);


	  //Now see what Config actually loads and assemble final cuts
	  switch (cutSet) {
		case kPbPb2011NoPID:
		  AliDielectronCutGroup* cgSecondTrackFilterNoPID = new AliDielectronCutGroup("cgNoPID","cgNoPID",AliDielectronCutGroup::kCompAND);
		  cgSecondTrackFilterNoPID->AddCut(pTPC);
		  anaCuts= cgSecondTrackFilterNoPID;
		  break;
   		case kPbPb2011TPCandTOFHPT:
		  //test Hongyan's cut
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
		  cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
		  cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandITSTOF);
		  anaCuts = cgSecondTrackFilterPIDTPC1;
		  break;
		case kPbPb2011TPCandTOF :
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
		  cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
		  cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
		  anaCuts = cgSecondTrackFilterPIDTPC1;
		  break;
		case kPbPb2011TPC :
		  //Old, QM12
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
		  cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
		  cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
		  anaCuts = cgSecondTrackFilterPIDTPC1;
		  break;

		case kPbPb2011TPCandTOFwide :
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
		  cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
		  cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
		  cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
		  anaCuts = cgSecondTrackFilterPIDTPC1;
		  break;

		case kPbPb2011TPCorTOF  :
		  //unused
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC2 = new AliDielectronCutGroup("cgPIDTPC2","cgPIDTPC2",AliDielectronCutGroup::kCompAND);
		  cgSecondTrackFilterPIDTPC2->AddCut(pTPC);
//		  cgSecondTrackFilterPIDTPC2->AddCut(pidTT);
		  anaCuts = cgSecondTrackFilterPIDTPC2;
		  break;
		case kpp2010TPCandTOF :
		  //unused
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
		  cgSecondTrackFilterPIDTPC->AddCut(pTPC);
		  cgSecondTrackFilterPIDTPC->AddCut(pidTPCandTOF);
		  anaCuts = cgSecondTrackFilterPIDTPC;
		  break;
		case kpp2010TPCorTOF  :
		  //unused
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
		  cgSecondTrackFilterPIDTPC->AddCut(pTPC);
		  ///		  cgSecondTrackFilterPIDTPC->AddCut(pidTT);
		  anaCuts = cgSecondTrackFilterPIDTPC;
		  break;
		default: cout << "No Analysis PID Cut defined " << endl;
	  }
	  return anaCuts;
	}


	//Relaxed PID cuts for additional rejectin step, do not use blindly
	AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) {
	  AliAnalysisCuts* anaCuts=0x0;
	  switch (cutSet) {
		case kPbPb2011NoPID:
		case kPbPb2011TPCandTOF :
   		case kPbPb2011TPCandTOFHPT:
		case kPbPb2011TPC :
		case kPbPb2011TPCandTOFwide :
		case kpp2010TPCandTOF :
		case kpp2010TPCorTOF  :
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
		  AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND);
		  AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre");

		  pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
		  pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
		  pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,0.4,kTRUE);
		  pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,0.4,kTRUE);
		  pidITSTPC->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE );
		  cgITSTPC->AddCut(pidITSTPC);

		  AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
		  pTPCHPT->AddCut(AliDielectronVarManager::kPt,.2,3.5);
		  cgITSTPC->AddCut(pTPCHPT);

		  cgITSTPC->AddCut(GetTrackCutsAna(cutSet));


		  AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND);
		  AliDielectronPID *pidITSSA = new  AliDielectronPID("pidITSSA","pidITSSA");
		  pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.);
		  cgITSSA->AddCut(pidITSSA);
		  AliDielectronVarCuts *pITSPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
		  pITSPT->AddCut(AliDielectronVarManager::kPt,0.0,0.8);
		  cgITSSA->AddCut(pITSPT);
		  cgITSSA->AddCut(GetTrackCutsPre(cutSet));

		  AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);
		  cgInitialTrackFilter->AddCut(cgITSTPC);
		  cgInitialTrackFilter->AddCut(cgITSSA);
		  anaCuts = cgInitialTrackFilter;
		  break;


		case kPbPb2011TPCorTOF  :
		  AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
		  AliDielectronCutGroup* cgITSTPCalone = new AliDielectronCutGroup("cgITSTPCalone","cgITSTPCalone",AliDielectronCutGroup::kCompAND);
		  AliDielectronPID *pidITSTPCalone = new AliDielectronPID("TPCpre","TPCpre");

		  pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
		  pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
		  pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,0.4,kTRUE);
		  pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,0.4,kTRUE);
		  pidITSTPCalone->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE );
		  cgITSTPCalone->AddCut(pidITSTPCalone);

		  AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
		  pTPCHPT->AddCut(AliDielectronVarManager::kPt,.2,3.5);
		  cgITSTPCalone->AddCut(pTPCHPT);

		  cgITSTPCalone->AddCut(GetTrackCutsAna(cutSet));



		  anaCuts = cgITSTPCalone;
		  break;
		default: cout << "No Pre-PID Cut defined " << endl;
	  }
	  return anaCuts;
	}




	//Pair Cuts for Analysis step - take care of logic - inverted compared to other PairCuts!!
	AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/)  {
	   AliAnalysisCuts* pairCuts=0x0;
	   switch (cutSet) {
		  case kPbPb2011TPCorTOF  :
		  case kpp2010TPCandTOF :
			 AliDielectronVarCuts* pairCutsV= new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
			 pairCutsV->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
			 pairCuts = pairCutsV;
			 break;
		  case kPbPb2011NoPID:
		  case kPbPb2011TPCandTOF :
		  case kPbPb2011TPC :
		  case kPbPb2011TPCandTOFHPT:
		  case kPbPb2011TPCandTOFwide :
		  case kpp2010TPCorTOF  :
			 if (!togglePC) {

				AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);
				AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
				pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
				pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0); 
				pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
				pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.05); 
				pairCutsInvMgood =new AliDielectronVarCuts("InvM Cuts good","InvM>0.3");
				pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.05, 99999.); 
				pairCutsCG->AddCut(pairCutsPhiv);
				pairCutsCG->AddCut(pairCutsInvM);
				pairCutsCG2->AddCut(pairCutsInvMgood);
				pairCutsCG2->AddCut(pairCutsCG);
				pairCuts = pairCutsCG2;
			 }
			 else {
				AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
				pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE);
				pairCuts = pairCutsV;
			 }
			 break;
		  default: cout << "No Pair Cuts defined " << endl;
	   }
	   return pairCuts;
	}



	//Pair Cuts for PREFILTER step
	AliAnalysisCuts* GetPairCuts(Int_t cutSet)  {  
	   AliAnalysisCuts* pairCuts=0x0;
	   switch (cutSet) {
		  case kPbPb2011TPCorTOF  :
		  case kpp2010TPCandTOF :
			AliDielectronVarCuts* pairCutsM=0x0;
		  pairCutsM = new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
		  pairCutsM->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
		  pairCuts = pairCutsM;
		  break;
		case kPbPb2011NoPID:
		case kPbPb2011TPCandTOF :
		case kPbPb2011TPC :
		case kPbPb2011TPCandTOFwide :
   		case kPbPb2011TPCandTOFHPT:
/*		case kpp2010TPCorTOF  :

		  AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
		  //AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
		  //pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2); 
		  AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
		  pairCutsPhiv->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05); 
		  AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
		  pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.01); 
		  pairCutsCG->AddCut(pairCutsPhiv);
		  pairCutsCG->AddCut(pairCutsInvM);
*/
		  AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
		  AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
		  pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2); 
		  //AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
		  //pairCutsPhiv->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05); 
		  AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
		  pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.05); 
		  pairCutsCG->AddCut(pairCutsPhiv);
		  pairCutsCG->AddCut(pairCutsInvM);
		  		  pairCuts = pairCutsCG;


		//pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
		//pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
		break;
		default: cout << "No Pair Cuts defined " << endl;
	  } 
	  return pairCuts;
	}





	//*******************************************************************************
	//*******************************************************************************
	//** ESD TRACK CUTS TUNED FOR AGREEMENT BETWEEN AODS AND ESDS  ******************
	//** NOT NECESSARILY 100% OPTIMIZED FOR DIEL-ANALYSIS          ******************
	//*******************************************************************************
	//*******************************************************************************

	//WHEN RUNNING ON ESDs: LOAD Default Cuts for AODs
	AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) {
	  AliESDtrackCuts* esdTrackCutsH = 0x0;
	  switch (cutSet) {
		case kPbPb2011NoPID:
		case kPbPb2011TPCandTOF :
   		case kPbPb2011TPCandTOFHPT:
		case kPbPb2011TPC :
		case kPbPb2011TPCandTOFwide :
		case kPbPb2011TPCorTOF  :
		case kpp2010TPCandTOF :
		case kpp2010TPCorTOF  :
			// standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115

		  
			 esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE); 
			 esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
			 esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
			 esdTrackCutsH->SetDCAToVertex2D(kTRUE);

			 //The cuts below should be the onyl ones that are missing
			 //explicitely in the TrackCutsAna method
			 //To be sure, StandardITSTPCTrackCuts is loaded however
		/* 
		  esdTrackCutsH = new AliESDtrackCuts();
		  esdTrackCutsH->SetAcceptKinkDaughters(kFALSE);
		  //Not done so far via dielectron cuts:
		  */
		  /*
		  esdTrackCuts->SetDCAToVertex2D(kFALSE);
		  esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
		  esdTrackCuts->SetMaxChi2PerClusterITS(36);
		   */

		  break;
		default: cout << "No Analysis Track Cut defined " << endl;
	  }
	  return esdTrackCutsH;
	} 


	//Make/Tighten track Cuts that are *NOT* already
	//done in the AOD production
	//**IMPORTANT**: For AODs, select FilterBit
	//the method is ignored for ESDs
	
	AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) {
	  AliDielectronCutGroup* trackCuts=0x0;
	  switch (cutSet) {
		case kPbPb2011NoPID:
		case kPbPb2011TPCandTOF :
   		case kPbPb2011TPCandTOFHPT:
		case kPbPb2011TPC :
		case kPbPb2011TPCandTOFwide :
		case kPbPb2011TPCorTOF  :
		case kpp2010TPCandTOF :
		case kpp2010TPCorTOF  :
			trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);

			AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
			trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,6.);
			trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
			//DCA Cut
			trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0,   1.0);
			trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ,  -3.0,   3.0);
			trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS,     3.0, 100.0);
			trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl,    0.0,   3.5);
			AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
			trackCutsDiel->SetAODFilterBit(16); //does nothing for ESDs
			trackCutsDiel->SetRequireITSRefit(kTRUE);
			trackCutsDiel->SetRequireTPCRefit(kTRUE);

			trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
//			trackCutsAOD->AddCut(AliDielectronVarManager::kNclsTPC,     80., 140.0);
			trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr,     110.0, 160.0);
			trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross,     0.8, 1.0);//tighter than before,
																						 //due to AOD production
			trackCuts->AddCut(trackCutsDiel);
			trackCuts->AddCut(trackCutsAOD);
		  break;
		default: cout << "No Analysis Track Cut defined " << endl;
	  }
	  return trackCuts;
	} 


	//Possibly different cut sets for Prefilter step
	//Not used at the moment
	AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) {
	  AliDielectronCutGroup* trackCuts=0x0;
	  switch (cutSet) {
		case kPbPb2011NoPID:
		case kPbPb2011TPCandTOF :
   		case kPbPb2011TPCandTOFHPT:
		case kPbPb2011TPCorTOF  :
		case kpp2010TPCandTOF :
		case kpp2010TPCorTOF  :
		   trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);

		   AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
		   trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,0.2);
		   trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
		   //DCA Cut
		   trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0,   1.0);
		   trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ,  -3.0,   3.0);
		   trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS,     3.0, 100.0);
		   AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
		   trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA
		   trackCutsDiel->SetRequireITSRefit(kTRUE);

		   trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
		   trackCuts->AddCut(trackCutsDiel);
		   trackCuts->AddCut(trackCutsAOD);
		   //		  cout << "No Pre-Track Cut defined for AODs at the moment " << endl;
		  break;
		default: cout << "No Pre-Track Cut defined " << endl;
	  }
	  return trackCuts;
	}

};
 LMEECutLibAOD.C:1
 LMEECutLibAOD.C:2
 LMEECutLibAOD.C:3
 LMEECutLibAOD.C:4
 LMEECutLibAOD.C:5
 LMEECutLibAOD.C:6
 LMEECutLibAOD.C:7
 LMEECutLibAOD.C:8
 LMEECutLibAOD.C:9
 LMEECutLibAOD.C:10
 LMEECutLibAOD.C:11
 LMEECutLibAOD.C:12
 LMEECutLibAOD.C:13
 LMEECutLibAOD.C:14
 LMEECutLibAOD.C:15
 LMEECutLibAOD.C:16
 LMEECutLibAOD.C:17
 LMEECutLibAOD.C:18
 LMEECutLibAOD.C:19
 LMEECutLibAOD.C:20
 LMEECutLibAOD.C:21
 LMEECutLibAOD.C:22
 LMEECutLibAOD.C:23
 LMEECutLibAOD.C:24
 LMEECutLibAOD.C:25
 LMEECutLibAOD.C:26
 LMEECutLibAOD.C:27
 LMEECutLibAOD.C:28
 LMEECutLibAOD.C:29
 LMEECutLibAOD.C:30
 LMEECutLibAOD.C:31
 LMEECutLibAOD.C:32
 LMEECutLibAOD.C:33
 LMEECutLibAOD.C:34
 LMEECutLibAOD.C:35
 LMEECutLibAOD.C:36
 LMEECutLibAOD.C:37
 LMEECutLibAOD.C:38
 LMEECutLibAOD.C:39
 LMEECutLibAOD.C:40
 LMEECutLibAOD.C:41
 LMEECutLibAOD.C:42
 LMEECutLibAOD.C:43
 LMEECutLibAOD.C:44
 LMEECutLibAOD.C:45
 LMEECutLibAOD.C:46
 LMEECutLibAOD.C:47
 LMEECutLibAOD.C:48
 LMEECutLibAOD.C:49
 LMEECutLibAOD.C:50
 LMEECutLibAOD.C:51
 LMEECutLibAOD.C:52
 LMEECutLibAOD.C:53
 LMEECutLibAOD.C:54
 LMEECutLibAOD.C:55
 LMEECutLibAOD.C:56
 LMEECutLibAOD.C:57
 LMEECutLibAOD.C:58
 LMEECutLibAOD.C:59
 LMEECutLibAOD.C:60
 LMEECutLibAOD.C:61
 LMEECutLibAOD.C:62
 LMEECutLibAOD.C:63
 LMEECutLibAOD.C:64
 LMEECutLibAOD.C:65
 LMEECutLibAOD.C:66
 LMEECutLibAOD.C:67
 LMEECutLibAOD.C:68
 LMEECutLibAOD.C:69
 LMEECutLibAOD.C:70
 LMEECutLibAOD.C:71
 LMEECutLibAOD.C:72
 LMEECutLibAOD.C:73
 LMEECutLibAOD.C:74
 LMEECutLibAOD.C:75
 LMEECutLibAOD.C:76
 LMEECutLibAOD.C:77
 LMEECutLibAOD.C:78
 LMEECutLibAOD.C:79
 LMEECutLibAOD.C:80
 LMEECutLibAOD.C:81
 LMEECutLibAOD.C:82
 LMEECutLibAOD.C:83
 LMEECutLibAOD.C:84
 LMEECutLibAOD.C:85
 LMEECutLibAOD.C:86
 LMEECutLibAOD.C:87
 LMEECutLibAOD.C:88
 LMEECutLibAOD.C:89
 LMEECutLibAOD.C:90
 LMEECutLibAOD.C:91
 LMEECutLibAOD.C:92
 LMEECutLibAOD.C:93
 LMEECutLibAOD.C:94
 LMEECutLibAOD.C:95
 LMEECutLibAOD.C:96
 LMEECutLibAOD.C:97
 LMEECutLibAOD.C:98
 LMEECutLibAOD.C:99
 LMEECutLibAOD.C:100
 LMEECutLibAOD.C:101
 LMEECutLibAOD.C:102
 LMEECutLibAOD.C:103
 LMEECutLibAOD.C:104
 LMEECutLibAOD.C:105
 LMEECutLibAOD.C:106
 LMEECutLibAOD.C:107
 LMEECutLibAOD.C:108
 LMEECutLibAOD.C:109
 LMEECutLibAOD.C:110
 LMEECutLibAOD.C:111
 LMEECutLibAOD.C:112
 LMEECutLibAOD.C:113
 LMEECutLibAOD.C:114
 LMEECutLibAOD.C:115
 LMEECutLibAOD.C:116
 LMEECutLibAOD.C:117
 LMEECutLibAOD.C:118
 LMEECutLibAOD.C:119
 LMEECutLibAOD.C:120
 LMEECutLibAOD.C:121
 LMEECutLibAOD.C:122
 LMEECutLibAOD.C:123
 LMEECutLibAOD.C:124
 LMEECutLibAOD.C:125
 LMEECutLibAOD.C:126
 LMEECutLibAOD.C:127
 LMEECutLibAOD.C:128
 LMEECutLibAOD.C:129
 LMEECutLibAOD.C:130
 LMEECutLibAOD.C:131
 LMEECutLibAOD.C:132
 LMEECutLibAOD.C:133
 LMEECutLibAOD.C:134
 LMEECutLibAOD.C:135
 LMEECutLibAOD.C:136
 LMEECutLibAOD.C:137
 LMEECutLibAOD.C:138
 LMEECutLibAOD.C:139
 LMEECutLibAOD.C:140
 LMEECutLibAOD.C:141
 LMEECutLibAOD.C:142
 LMEECutLibAOD.C:143
 LMEECutLibAOD.C:144
 LMEECutLibAOD.C:145
 LMEECutLibAOD.C:146
 LMEECutLibAOD.C:147
 LMEECutLibAOD.C:148
 LMEECutLibAOD.C:149
 LMEECutLibAOD.C:150
 LMEECutLibAOD.C:151
 LMEECutLibAOD.C:152
 LMEECutLibAOD.C:153
 LMEECutLibAOD.C:154
 LMEECutLibAOD.C:155
 LMEECutLibAOD.C:156
 LMEECutLibAOD.C:157
 LMEECutLibAOD.C:158
 LMEECutLibAOD.C:159
 LMEECutLibAOD.C:160
 LMEECutLibAOD.C:161
 LMEECutLibAOD.C:162
 LMEECutLibAOD.C:163
 LMEECutLibAOD.C:164
 LMEECutLibAOD.C:165
 LMEECutLibAOD.C:166
 LMEECutLibAOD.C:167
 LMEECutLibAOD.C:168
 LMEECutLibAOD.C:169
 LMEECutLibAOD.C:170
 LMEECutLibAOD.C:171
 LMEECutLibAOD.C:172
 LMEECutLibAOD.C:173
 LMEECutLibAOD.C:174
 LMEECutLibAOD.C:175
 LMEECutLibAOD.C:176
 LMEECutLibAOD.C:177
 LMEECutLibAOD.C:178
 LMEECutLibAOD.C:179
 LMEECutLibAOD.C:180
 LMEECutLibAOD.C:181
 LMEECutLibAOD.C:182
 LMEECutLibAOD.C:183
 LMEECutLibAOD.C:184
 LMEECutLibAOD.C:185
 LMEECutLibAOD.C:186
 LMEECutLibAOD.C:187
 LMEECutLibAOD.C:188
 LMEECutLibAOD.C:189
 LMEECutLibAOD.C:190
 LMEECutLibAOD.C:191
 LMEECutLibAOD.C:192
 LMEECutLibAOD.C:193
 LMEECutLibAOD.C:194
 LMEECutLibAOD.C:195
 LMEECutLibAOD.C:196
 LMEECutLibAOD.C:197
 LMEECutLibAOD.C:198
 LMEECutLibAOD.C:199
 LMEECutLibAOD.C:200
 LMEECutLibAOD.C:201
 LMEECutLibAOD.C:202
 LMEECutLibAOD.C:203
 LMEECutLibAOD.C:204
 LMEECutLibAOD.C:205
 LMEECutLibAOD.C:206
 LMEECutLibAOD.C:207
 LMEECutLibAOD.C:208
 LMEECutLibAOD.C:209
 LMEECutLibAOD.C:210
 LMEECutLibAOD.C:211
 LMEECutLibAOD.C:212
 LMEECutLibAOD.C:213
 LMEECutLibAOD.C:214
 LMEECutLibAOD.C:215
 LMEECutLibAOD.C:216
 LMEECutLibAOD.C:217
 LMEECutLibAOD.C:218
 LMEECutLibAOD.C:219
 LMEECutLibAOD.C:220
 LMEECutLibAOD.C:221
 LMEECutLibAOD.C:222
 LMEECutLibAOD.C:223
 LMEECutLibAOD.C:224
 LMEECutLibAOD.C:225
 LMEECutLibAOD.C:226
 LMEECutLibAOD.C:227
 LMEECutLibAOD.C:228
 LMEECutLibAOD.C:229
 LMEECutLibAOD.C:230
 LMEECutLibAOD.C:231
 LMEECutLibAOD.C:232
 LMEECutLibAOD.C:233
 LMEECutLibAOD.C:234
 LMEECutLibAOD.C:235
 LMEECutLibAOD.C:236
 LMEECutLibAOD.C:237
 LMEECutLibAOD.C:238
 LMEECutLibAOD.C:239
 LMEECutLibAOD.C:240
 LMEECutLibAOD.C:241
 LMEECutLibAOD.C:242
 LMEECutLibAOD.C:243
 LMEECutLibAOD.C:244
 LMEECutLibAOD.C:245
 LMEECutLibAOD.C:246
 LMEECutLibAOD.C:247
 LMEECutLibAOD.C:248
 LMEECutLibAOD.C:249
 LMEECutLibAOD.C:250
 LMEECutLibAOD.C:251
 LMEECutLibAOD.C:252
 LMEECutLibAOD.C:253
 LMEECutLibAOD.C:254
 LMEECutLibAOD.C:255
 LMEECutLibAOD.C:256
 LMEECutLibAOD.C:257
 LMEECutLibAOD.C:258
 LMEECutLibAOD.C:259
 LMEECutLibAOD.C:260
 LMEECutLibAOD.C:261
 LMEECutLibAOD.C:262
 LMEECutLibAOD.C:263
 LMEECutLibAOD.C:264
 LMEECutLibAOD.C:265
 LMEECutLibAOD.C:266
 LMEECutLibAOD.C:267
 LMEECutLibAOD.C:268
 LMEECutLibAOD.C:269
 LMEECutLibAOD.C:270
 LMEECutLibAOD.C:271
 LMEECutLibAOD.C:272
 LMEECutLibAOD.C:273
 LMEECutLibAOD.C:274
 LMEECutLibAOD.C:275
 LMEECutLibAOD.C:276
 LMEECutLibAOD.C:277
 LMEECutLibAOD.C:278
 LMEECutLibAOD.C:279
 LMEECutLibAOD.C:280
 LMEECutLibAOD.C:281
 LMEECutLibAOD.C:282
 LMEECutLibAOD.C:283
 LMEECutLibAOD.C:284
 LMEECutLibAOD.C:285
 LMEECutLibAOD.C:286
 LMEECutLibAOD.C:287
 LMEECutLibAOD.C:288
 LMEECutLibAOD.C:289
 LMEECutLibAOD.C:290
 LMEECutLibAOD.C:291
 LMEECutLibAOD.C:292
 LMEECutLibAOD.C:293
 LMEECutLibAOD.C:294
 LMEECutLibAOD.C:295
 LMEECutLibAOD.C:296
 LMEECutLibAOD.C:297
 LMEECutLibAOD.C:298
 LMEECutLibAOD.C:299
 LMEECutLibAOD.C:300
 LMEECutLibAOD.C:301
 LMEECutLibAOD.C:302
 LMEECutLibAOD.C:303
 LMEECutLibAOD.C:304
 LMEECutLibAOD.C:305
 LMEECutLibAOD.C:306
 LMEECutLibAOD.C:307
 LMEECutLibAOD.C:308
 LMEECutLibAOD.C:309
 LMEECutLibAOD.C:310
 LMEECutLibAOD.C:311
 LMEECutLibAOD.C:312
 LMEECutLibAOD.C:313
 LMEECutLibAOD.C:314
 LMEECutLibAOD.C:315
 LMEECutLibAOD.C:316
 LMEECutLibAOD.C:317
 LMEECutLibAOD.C:318
 LMEECutLibAOD.C:319
 LMEECutLibAOD.C:320
 LMEECutLibAOD.C:321
 LMEECutLibAOD.C:322
 LMEECutLibAOD.C:323
 LMEECutLibAOD.C:324
 LMEECutLibAOD.C:325
 LMEECutLibAOD.C:326
 LMEECutLibAOD.C:327
 LMEECutLibAOD.C:328
 LMEECutLibAOD.C:329
 LMEECutLibAOD.C:330
 LMEECutLibAOD.C:331
 LMEECutLibAOD.C:332
 LMEECutLibAOD.C:333
 LMEECutLibAOD.C:334
 LMEECutLibAOD.C:335
 LMEECutLibAOD.C:336
 LMEECutLibAOD.C:337
 LMEECutLibAOD.C:338
 LMEECutLibAOD.C:339
 LMEECutLibAOD.C:340
 LMEECutLibAOD.C:341
 LMEECutLibAOD.C:342
 LMEECutLibAOD.C:343
 LMEECutLibAOD.C:344
 LMEECutLibAOD.C:345
 LMEECutLibAOD.C:346
 LMEECutLibAOD.C:347
 LMEECutLibAOD.C:348
 LMEECutLibAOD.C:349
 LMEECutLibAOD.C:350
 LMEECutLibAOD.C:351
 LMEECutLibAOD.C:352
 LMEECutLibAOD.C:353
 LMEECutLibAOD.C:354
 LMEECutLibAOD.C:355
 LMEECutLibAOD.C:356
 LMEECutLibAOD.C:357
 LMEECutLibAOD.C:358
 LMEECutLibAOD.C:359
 LMEECutLibAOD.C:360
 LMEECutLibAOD.C:361
 LMEECutLibAOD.C:362
 LMEECutLibAOD.C:363
 LMEECutLibAOD.C:364
 LMEECutLibAOD.C:365
 LMEECutLibAOD.C:366
 LMEECutLibAOD.C:367
 LMEECutLibAOD.C:368
 LMEECutLibAOD.C:369
 LMEECutLibAOD.C:370
 LMEECutLibAOD.C:371
 LMEECutLibAOD.C:372
 LMEECutLibAOD.C:373
 LMEECutLibAOD.C:374
 LMEECutLibAOD.C:375
 LMEECutLibAOD.C:376
 LMEECutLibAOD.C:377
 LMEECutLibAOD.C:378
 LMEECutLibAOD.C:379
 LMEECutLibAOD.C:380
 LMEECutLibAOD.C:381
 LMEECutLibAOD.C:382
 LMEECutLibAOD.C:383
 LMEECutLibAOD.C:384
 LMEECutLibAOD.C:385
 LMEECutLibAOD.C:386
 LMEECutLibAOD.C:387
 LMEECutLibAOD.C:388
 LMEECutLibAOD.C:389
 LMEECutLibAOD.C:390
 LMEECutLibAOD.C:391
 LMEECutLibAOD.C:392
 LMEECutLibAOD.C:393
 LMEECutLibAOD.C:394
 LMEECutLibAOD.C:395
 LMEECutLibAOD.C:396
 LMEECutLibAOD.C:397
 LMEECutLibAOD.C:398
 LMEECutLibAOD.C:399
 LMEECutLibAOD.C:400
 LMEECutLibAOD.C:401
 LMEECutLibAOD.C:402
 LMEECutLibAOD.C:403
 LMEECutLibAOD.C:404
 LMEECutLibAOD.C:405
 LMEECutLibAOD.C:406
 LMEECutLibAOD.C:407
 LMEECutLibAOD.C:408
 LMEECutLibAOD.C:409
 LMEECutLibAOD.C:410
 LMEECutLibAOD.C:411
 LMEECutLibAOD.C:412
 LMEECutLibAOD.C:413
 LMEECutLibAOD.C:414
 LMEECutLibAOD.C:415
 LMEECutLibAOD.C:416
 LMEECutLibAOD.C:417
 LMEECutLibAOD.C:418
 LMEECutLibAOD.C:419
 LMEECutLibAOD.C:420
 LMEECutLibAOD.C:421
 LMEECutLibAOD.C:422
 LMEECutLibAOD.C:423
 LMEECutLibAOD.C:424
 LMEECutLibAOD.C:425
 LMEECutLibAOD.C:426
 LMEECutLibAOD.C:427
 LMEECutLibAOD.C:428
 LMEECutLibAOD.C:429
 LMEECutLibAOD.C:430
 LMEECutLibAOD.C:431
 LMEECutLibAOD.C:432
 LMEECutLibAOD.C:433
 LMEECutLibAOD.C:434
 LMEECutLibAOD.C:435
 LMEECutLibAOD.C:436
 LMEECutLibAOD.C:437
 LMEECutLibAOD.C:438
 LMEECutLibAOD.C:439
 LMEECutLibAOD.C:440
 LMEECutLibAOD.C:441
 LMEECutLibAOD.C:442
 LMEECutLibAOD.C:443
 LMEECutLibAOD.C:444
 LMEECutLibAOD.C:445
 LMEECutLibAOD.C:446
 LMEECutLibAOD.C:447
 LMEECutLibAOD.C:448
 LMEECutLibAOD.C:449
 LMEECutLibAOD.C:450
 LMEECutLibAOD.C:451
 LMEECutLibAOD.C:452
 LMEECutLibAOD.C:453
 LMEECutLibAOD.C:454
 LMEECutLibAOD.C:455
 LMEECutLibAOD.C:456
 LMEECutLibAOD.C:457
 LMEECutLibAOD.C:458
 LMEECutLibAOD.C:459
 LMEECutLibAOD.C:460
 LMEECutLibAOD.C:461
 LMEECutLibAOD.C:462
 LMEECutLibAOD.C:463
 LMEECutLibAOD.C:464
 LMEECutLibAOD.C:465
 LMEECutLibAOD.C:466
 LMEECutLibAOD.C:467
 LMEECutLibAOD.C:468
 LMEECutLibAOD.C:469
 LMEECutLibAOD.C:470
 LMEECutLibAOD.C:471
 LMEECutLibAOD.C:472
 LMEECutLibAOD.C:473
 LMEECutLibAOD.C:474
 LMEECutLibAOD.C:475
 LMEECutLibAOD.C:476
 LMEECutLibAOD.C:477
 LMEECutLibAOD.C:478
 LMEECutLibAOD.C:479
 LMEECutLibAOD.C:480
 LMEECutLibAOD.C:481
 LMEECutLibAOD.C:482
 LMEECutLibAOD.C:483
 LMEECutLibAOD.C:484
 LMEECutLibAOD.C:485
 LMEECutLibAOD.C:486
 LMEECutLibAOD.C:487
 LMEECutLibAOD.C:488
 LMEECutLibAOD.C:489
 LMEECutLibAOD.C:490
 LMEECutLibAOD.C:491
 LMEECutLibAOD.C:492
 LMEECutLibAOD.C:493
 LMEECutLibAOD.C:494
 LMEECutLibAOD.C:495
 LMEECutLibAOD.C:496
 LMEECutLibAOD.C:497
 LMEECutLibAOD.C:498
 LMEECutLibAOD.C:499
 LMEECutLibAOD.C:500
 LMEECutLibAOD.C:501
 LMEECutLibAOD.C:502
 LMEECutLibAOD.C:503
 LMEECutLibAOD.C:504
 LMEECutLibAOD.C:505
 LMEECutLibAOD.C:506
 LMEECutLibAOD.C:507
 LMEECutLibAOD.C:508
 LMEECutLibAOD.C:509
 LMEECutLibAOD.C:510
 LMEECutLibAOD.C:511
 LMEECutLibAOD.C:512
 LMEECutLibAOD.C:513
 LMEECutLibAOD.C:514
 LMEECutLibAOD.C:515
 LMEECutLibAOD.C:516
 LMEECutLibAOD.C:517
 LMEECutLibAOD.C:518
 LMEECutLibAOD.C:519
 LMEECutLibAOD.C:520
 LMEECutLibAOD.C:521
 LMEECutLibAOD.C:522
 LMEECutLibAOD.C:523
 LMEECutLibAOD.C:524
 LMEECutLibAOD.C:525
 LMEECutLibAOD.C:526
 LMEECutLibAOD.C:527
 LMEECutLibAOD.C:528
 LMEECutLibAOD.C:529
 LMEECutLibAOD.C:530
 LMEECutLibAOD.C:531
 LMEECutLibAOD.C:532
 LMEECutLibAOD.C:533
 LMEECutLibAOD.C:534
 LMEECutLibAOD.C:535
 LMEECutLibAOD.C:536
 LMEECutLibAOD.C:537
 LMEECutLibAOD.C:538
 LMEECutLibAOD.C:539
 LMEECutLibAOD.C:540
 LMEECutLibAOD.C:541
 LMEECutLibAOD.C:542
 LMEECutLibAOD.C:543
 LMEECutLibAOD.C:544
 LMEECutLibAOD.C:545
 LMEECutLibAOD.C:546
 LMEECutLibAOD.C:547
 LMEECutLibAOD.C:548
 LMEECutLibAOD.C:549
 LMEECutLibAOD.C:550
 LMEECutLibAOD.C:551
 LMEECutLibAOD.C:552
 LMEECutLibAOD.C:553
 LMEECutLibAOD.C:554
 LMEECutLibAOD.C:555
 LMEECutLibAOD.C:556
 LMEECutLibAOD.C:557
 LMEECutLibAOD.C:558
 LMEECutLibAOD.C:559
 LMEECutLibAOD.C:560
 LMEECutLibAOD.C:561
 LMEECutLibAOD.C:562
 LMEECutLibAOD.C:563
 LMEECutLibAOD.C:564
 LMEECutLibAOD.C:565
 LMEECutLibAOD.C:566
 LMEECutLibAOD.C:567
 LMEECutLibAOD.C:568
 LMEECutLibAOD.C:569
 LMEECutLibAOD.C:570
 LMEECutLibAOD.C:571
 LMEECutLibAOD.C:572
 LMEECutLibAOD.C:573
 LMEECutLibAOD.C:574
 LMEECutLibAOD.C:575
 LMEECutLibAOD.C:576
 LMEECutLibAOD.C:577
 LMEECutLibAOD.C:578